PageSourceSearch

https://static.smm.cn/www.smm.cn/3.43.33/smm_price_confirmation/dist/js/price-confirmation.min.js

js smm.cn collected 2026-10-02 05:07:34 UTC 850,690 bytes, 17,801 lines download raw bytes

1(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
2"use strict";
3exports.__esModule = true;
4/// <reference path="../declaration/declare/declare.d.ts" />
5require("babel-polyfill");
6var price_confirm_1 = require("./script/price-confirm");
7var price_confirm_over_1 = require("./script/price-confirm-over");
8(function (window) {
9    ;
10    window.PriceConfirmation = price_confirm_1.PriceConfirmation;
11    window.PriceConfirmationOver = price_confirm_over_1.PriceConfirmationOver;
12})(window);
13
14},{"./script/price-confirm":8,"./script/price-confirm-over":7,"babel-polyfill":14}],2:[function(require,module,exports){
15/*TMODJS:{"version":1,"md5":"a052f6ab21581edabfe1622bc730f630"}*/
16var template=require('./tpl');module.exports=template('notice',function($data,$filename
17) {
18'use strict';var $utils=this,$helpers=$utils.$helpers,$escape=$utils.$escape,$out='';$out+='<div class="price-confirm-notice">\n    <img class="price-confirm-notice-icon" src="https://static.smm.cn/common.smm.cn/images/price-confirm/icon-success.png"/>\n    <span class="price-confirm-notice-text">';
19$out+=$escape($data.msg);
20$out+='</span>\n</div>';
21return new String($out);
22});
23},{"./tpl":9}],3:[function(require,module,exports){
24/*TMODJS:{"version":1,"md5":"e9c11a91fcf900daabc2b6e738eda716"}*/
25var template=require('./tpl');module.exports=template('price-confirm-over',function($data,$filename
26) {
27'use strict';var $utils=this,$helpers=$utils.$helpers,$escape=$utils.$escape,$out='';$out+='<div class="price-confirm-over" id="price_confirm_over">\n	<div class="price-confirm-over-header">\n		<img class="price-confirm-over-close" id="price_confirm_over_close" src="https://static.smm.cn/common.smm.cn/images/price-confirm/icon-close.png" />\n	</div>\n	<div class="price-confirm-pic-container">\n		<img\n			class="price_confirmation_pic"\n			contenteditable="true"\n			id="price_confirm_over_img"\n			src="';
28$out+=$escape($data.pic_url);
29$out+='"\n			alt="上海有色网价格确认单图"\n			id="price_confirmation_pic"\n		/>\n	</div>\n	<div class="price-confirm-over-option">\n		<div class="price-confirm-over-option-left">\n			<div class="price-confirm-over-option-primary" id="price_confirm_over_option_download">下载</div>\n			<div class="price-confirm-over-option-normal" id="price_confirm_over_option_print">打印</div>\n			<div class="price-confirm-over-option-wechat-wrap">\n				<div class="price-confirm-over-option-wechat">\n					<img\n						class="price-confirm-over-icon-wechat"\n						src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAgCAQAAADKpPKLAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\n					AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElN\n					RQfkBggMDRyjQPUdAAABnUlEQVRIx62Vb3WDMBTFLzsTEAlxsDgoDsABlYCD4WBzMKagnQJSBWUK\n					wEEzBXcfCiWhoUl2dr/xTvjx7vsTMqxEgR1yKAgoAAY9RvT4ykaki5JvvNCvjmUq7pUhdVSxMMFz\n					EEeSF+7/E3dVGMkuARdGsraOGuYAFY0V6ykB5o5x8ciu3ddmimorVnti7TZw75g5TB8ZPDF3oLZy\n					5HFVn4EHB3cf09TUzP28jGfEztYPWrQweLm90eOUmXWGsWooWXnGq2PlAk0EbKRiubmU5GBtkNM7\n					vwwFP4Kn5tlkG8SpCNyCpArWro7CkZw6/9C0obRqZ6goLE89BSX7pZZzjtuNaZ38NOAsYQMAbO5t\n					l5vAcpV/xcIanQsLFk73j/4FXBSq8FrDMj65z3jC4E96uu2gxrvvLopcy1nfT9ZD4TmgcEoCjs+3\n					XCQUgBOaTFNBQQIADI7YJQAXl6z9VxJl1LZbY7VkuKHoTTHxP9nQvl9VJpQm4grJE3CT8Ue1TMUB\n					AAUbjiG7WTJWIsfcwB4aAg0qfGb7P+S4/ZHlP/0LFcZF0hwDsj4AAAAldEVYdGRhdGU6Y3JlYXRl\n					ADIwMjAtMDYtMDhUMTI6MTM6MjgrMDA6MDBEc4tKAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTA2\n					LTA4VDEyOjEzOjI4KzAwOjAwNS4z9gAAAABJRU5ErkJggg=="\n						alt=""\n					/>\n					<span>扫码分享</span>\n				</div>\n				<div class="price-confirm-over-qrcode" id="price_confirm_over_qrcode"></div>\n			</div>\n		</div>\n		<div class="price-confirm-over-option-right">\n			<div class="price-confirm-over-option-right-content">\n				<div class="price-confirm-over-input-email-wrap">\n					<input class="price-confirm-over-input-email" id="price_confirm_over_input_email" value="[email protected]" style="color:#999;"/>\n					<div class="price-confirm-over-option-error" id="price_confirm_over_option_error"></div>\n				</div>\n				<div class="price-confirm-over-option-normal price-confirm-over-input-email-send" id="price_confirm_over_option_send_email">发送至客户邮箱</div>\n				<a href="https://user.smm.cn/price_confirm" class="price-confirm-over-input-price_history" target="_blank">价格确认单历史记录</a>\n			</div>\n		</div>\n	</div>\n</div>\n';
30return new String($out);
31});
32},{"./tpl":9}],4:[function(require,module,exports){
33/*TMODJS:{"version":1,"md5":"a5a34009348c917f06ff307215870dbd"}*/
34var template=require('./tpl');module.exports=template('price-confirm',function($data,$filename
35) {
36'use strict';var $utils=this,$helpers=$utils.$helpers,$escape=$utils.$escape,$out='';$out+='<div class="price-confirm" id="price_confirm">\n	<div class="price-confirm-header">\n		<div class="price-confirm-header-items">\n			';
37if($data.has_spot){
38$out+='\n			<span class="price-confirm-header-item price_confirm_header_item ';
39if($data.is_spot ){
40$out+='price-confirm-header-item-active';
41}
42$out+='" data-value="spot">SMM网价</span>\n			';
43}
44$out+='\n			';
45if($data.has_future){
46$out+='\n			<span class="price-confirm-header-item price_confirm_header_item ';
47if(!$data.is_spot ){
48$out+='price-confirm-header-item-active';
49}
50$out+='" data-value="future">期货点价</span>\n			';
51}
52$out+='\n		</div>\n		<img class="price-confirm-close" id="price_confirm_close" src="https://static.smm.cn/common.smm.cn/images/price-confirm/icon-close.png"/>\n	</div>\n	<div class="price-confirm-body-wrap" id="price_confirm_body_wrap">\n		<div class="price-confirm-body-background">\n			<div class="trial_modal">\n				<div class="close_icon">\n					<svg viewBox="64 64 896 896" focusable="false" class="" data-icon="close" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z"></path></svg>\n				</div>\n				<div class="err_tips">试用权限无法使用此功能</div>\n				<button class="goto_open"><a target="_blank" href="https://www.smm.cn/services/price">请开通正式服务</a></button>\n		</div>\n			<div class="price-confirm-body">\n				';
53if($data.is_in_draw ){
54$out+='\n				<div class="price-confirm-body-header">\n					<span class="price-confirm-body-header-bill-no">单号:';
55$out+=$escape($data.bill_no);
56$out+='</span>\n					<span class="price-confirm-body-header-print-time">打印时间:';
57$out+=$escape($data.now);
58$out+='</span>\n					<img class="price-confirm-body-header-smm-logo" src="https://static.smm.cn/common.smm.cn/images/price-confirm/price-smm-logo.png" alt="SMM">\n				</div>\n				';
59}
60$out+='\n				<div class="price-confirm-body-content">\n					<div class="price-confirm-title">';
61if($data.is_spot ){
62$out+='上海有色网价格确认单';
63}else{
64$out+='期货点价确认单';
65}
66$out+='\n						<div class="price_history">\n							<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAnxJREFUSEu1lstPE1EUh78zA7rBuNNoXJD4iIa2+IgL/wIlSAfxQcfHwgRWGqNx4cZYYGuIJrqDxIWPKRKxU0D0b9BEaYsP1MSFwegWNkpnrt7amhb6NOUu595zvnN+555zR6iwQmeebFOeaWFIJ4rtwNbc8QWEz/hqWkzPTT48/rWcGym1sS/ibl0WGRTUecCsFATgKeRes1LR1zFrYeXZVYBQxA0r4QGwQRsDzwUV93zzpblu+Zt24P1q3mIa3kGFdANHckEsiuJsMmYlCiFFgEAkfklEbgGGghcmcnXWCc9VyqDdTrR5qGGBw4CvkMtpJ3wnb/MPkIs8DgjIUMrpGgBRVeTJbSsJ2pMDoG5oiCiO5TPJArTmGeH9X1m083C0lONA78Qe/T091vOu1H7QTgzmIItNit26JllAwE6MCKpPy5J2wh3lIg9G3I8IknKsHaUzUxKwEzNaLoWMpp1wv2Svot/0RRsYSHslzasDQNfER81qf2JkWiUYiV9A5K4oppIxq6uS5rUAtH3QdqeATpS6KMHT7jMUHYLqTzrdo40AhOx4n0JGEGYkaLsfgF2+b+ydG+vKplZu1ZpBW+9ku2H4b4B5DVgEWqTJ25y83/OjEYDQuYlNKmN+B5b+B9DiZX7ufDt+aqlcMCsBtUtku+N/2uAEik8K7HTMelUKUixRHUUmGjUC8/uvCQwBusuvp5zwzZV9U1zk3DUFplOOdbSW0RC0Jw+B/whoBW6nHOtKoV3RNa2n0QqdHDj5eOOyuX5YD8fC5lzVaPWMiurZlRgV9Qy7aoCyw04b5sb10+xIavS4zke2pg9OHrKmT2YesqaPfmEhG/Hb8huY+IdcN8M2KgAAAABJRU5ErkJggg==">\n							<a href="https://user.smm.cn/price_confirm" target="_blank">\n								价格确认单历史记录\n							</a>\n						</div>\n					</div>\n					<div class="price-confirm-date">\n						';
67if($data.is_spot ){
68$out+='\n						<label class="price-confirm-date-label" for="" class="">';
69if(!$data.is_in_draw){
70$out+='*';
71}
72$out+='价格日期:</label>\n							';
73if($data.is_in_draw  ){
74$out+='\n							<span class="price-confirm-date-value" data-ss1="is_in_draw">';
75$out+=$escape($data.date);
76$out+='</span>\n							';
77}else{
78$out+='\n								';
79if($data.has_permission ){
80$out+='\n								<span class="price-confirm-date-input" id=\'date_picker\'>\n								';
81}else{
82$out+='\n								<span class="price-confirm-date-input no-permission" >\n								';
83}
84$out+='\n									<input class="date-picker-input" id=\'date_picker_input\' type=\'text\' readonly/>\n									<i class="date-picker"></i>\n								</span>\n								<div class="price-confirm-auth-tip">\n									<div class="price-confirm-auth-tip-content">\n										<span>选择日期需</span>\n										<a href="https://hq.smm.cn/service" target="_blank">开通历史价格服务</a>\n									</div>\n								</div>\n							';
85}
86$out+='\n						';
87}else{
88$out+='\n						<label class="price-confirm-date-label" for="" style="color: #333;">价格日期:</label>\n						<span class="price-confirm-date-value">';
89$out+=$escape($data.date);
90$out+='</span>\n						';
91}
92$out+='\n					</div>\n					<div class="price-confirm-table">\n						<div class="table-row">\n							<div class="table-line">';
93if(!$data.is_in_draw){
94$out+='*';
95}
96$out+='品名:</div>\n							<div class="table-line">';
97if(!$data.is_in_draw && $data.is_spot){
98$out+='*';
99}
100$out+='基准单价:</div>\n							<div class="table-line">';
101if($data.is_spot ){
102$out+='差价';
103}else{
104$out+='升贴水';
105}
106$out+=':</div>\n							<div class="table-line">单价:</div>\n							<div class="table-line">价格单位:</div>\n						</div>\n						<div class="table-row">\n							';
107if($data.is_spot ){
108$out+='\n							<div class="table-line">';
109$out+=$escape($data.constract);
110$out+='</div>\n							<div class="table-line">\n							';
111if($data.is_in_draw){
112$out+='\n								<span id="price_confirm_base_price">';
113$out+=$escape($data.base_price);
114$out+='</span>\n							';
115}else{
116$out+='\n								<span id="price_confirm_base_price">均:';
117$out+=$escape($data.base_price);
118$out+='</span>\n								<div class="option-arrow option_arrow" id="option_arrow">\n									<ul class="unit-price-select" id="unit_price_select">\n										<li class="unit_price_item" data-key="low">最低价(均值):<span>';
119$out+=$escape($data.low);
120$out+='</span></li>\n										<li class="unit_price_item" data-key="high">最高价(均值):<span>';
121$out+=$escape($data.high);
122$out+='</span></li>\n										<li class="unit_price_item" data-key="average">平均价(均值):<span>';
123$out+=$escape($data.average);
124$out+='</span></li>\n									</ul>\n								</div>\n							';
125}
126$out+='\n							</div>\n							';
127}else{
128$out+='\n							<div class="table-line">\n								';
129if($data.is_in_draw){
130$out+='\n								';
131$out+=$escape($data.constract);
132$out+='\n								';
133}else{
134$out+='\n								<input class="table-line-input" type="text" placeholder="请输入品名" id="price_confirm_constract_input" value="';
135$out+=$escape($data.constract);
136$out+='">\n								';
137}
138$out+='\n							</div>\n							<div class="table-line">\n								';
139if($data.is_in_draw){
140$out+='\n								<span id="price_confirm_base_price">';
141$out+=$escape($data.base_price);
142$out+='</span>\n								';
143}else{
144$out+='\n								<input class="table-line-input" type="text" placeholder="请输入基价" id="price_confirm_base_price_input">\n								';
145}
146$out+='\n							</div>\n							';
147}
148$out+='\n							<div class="table-line">\n								';
149if($data.is_spot ){
150$out+='\n									';
151if($data.is_in_draw){
152$out+='\n									<span>';
153$out+=$escape($data.spread);
154$out+='</span>\n									';
155}else{
156$out+='\n									<input class="table-line-input" id="price_confirm_spread" type="text" placeholder="如:+15、-5">\n									';
157}
158$out+='\n								';
159}else{
160$out+='\n									';
161if($data.is_in_draw){
162$out+='\n									<span>';
163$out+=$escape($data.spread);
164$out+='</span>\n									';
165}else{
166$out+='\n									<input class="table-line-input" id="price_confirm_spread" type="text" placeholder="如:+15、-5" style="display: none;">\n									<span id="price_confirm_spread_text">均:';
167$out+=$escape($data.spread);
168$out+='</span>\n									<div class="option-arrow option_arrow" id="option_arrow">\n										<ul class="unit-price-select ';
169if(!$data.is_spot){
170$out+='unit-price-select-high';
171}
172$out+='" id="unit_price_select">\n											<li class="unit_price_item" data-key="low">最低价(均值):<span>';
173$out+=$escape($data.low);
174$out+='</span></li>\n											<li class="unit_price_item" data-key="high">最高价(均值):<span>';
175$out+=$escape($data.high);
176$out+='</span></li>\n											<li class="unit_price_item" data-key="average">平均价(均值):<span>';
177$out+=$escape($data.average);
178$out+='</span></li>\n											<li class="unit_price_item unit-price-custom" data-key="custom">自定义</li>\n										</ul>\n									</div>\n									';
179}
180$out+='\n								';
181}
182$out+='\n							</div>\n								';
183if($data.is_in_draw){
184$out+='\n								<div class="table-line">';
185$out+=$escape($data.settlement_price);
186$out+='</div>\n								';
187}else{
188$out+='\n								<div class="table-line grey-line">\n									<input class="table-line-input" id="price_confirm_settlement_price" readonly type="text" placeholder="=基准单价+';
189if($data.is_spot ){
190$out+='差价';
191}else{
192$out+='升贴水';
193}
194$out+='">\n								</div>\n								';
195}
196$out+='\n							<div class="table-line">';
197$out+=$escape($data.unit);
198$out+='</div>\n						</div>\n						<div class="table-row">\n							<div class="table-line column-short">';
199if(!$data.is_in_draw){
200$out+='*';
201}
202$out+='数量:</div>\n							<div class="table-line column-long">备注:</div>\n						</div>\n						<div class="table-row">\n							';
203if($data.is_in_draw){
204$out+='\n							<div class="table-line" style="vertical-align: top;">';
205$out+=$escape($data.count);
206if($data.is_in_draw){
207$out+=$escape($data.count_unit);
208}
209$out+='\n							</div>\n							<div class="table-line column-long">';
210if($data.note != ''){
211$out+=$escape($data.note);
212}else{
213$out+='--';
214}
215$out+='</div>\n							';
216}else{
217$out+='\n							<div class="table-line" style="vertical-align: top;">\n								<input class="table-line-input" id="price_confirm_count" type="text" placeholder="请输入数量">\n							</div>\n							<textarea class="table-line table-line-input table-line-textarea" id="price_confirm_note" wrap="virtual" maxlength="300" style="resize:none;" placeholder="';
218if($data.is_spot){
219$out+='请输入备注,如:规格、品牌、仓库、合同编号等';
220}else{
221$out+='请输入备注,如:点价合约、规格、品牌、仓库、合同编号等';
222}
223$out+='"></textarea>\n							';
224}
225$out+='\n						</div>\n						<div class="table-row">\n							<div class="table-line column-whole">合计:</div>\n						</div>\n						<div class="table-row">\n							';
226if($data.is_in_draw){
227$out+='\n							<div class="table-line column-whole">';
228$out+=$escape($data.total);
229$out+='</div>\n							';
230}else{
231$out+='\n							<div class="table-line grey-line column-whole">\n									<input class="table-line-input" id="price_confirm_total" readonly type="text" placeholder="=单价x数量">\n							</div>\n							';
232}
233$out+='\n						</div>\n					</div>\n					<div class="price-confirm-tip">\n						<p class="price-confirm-tip-method">\n							<span class="price-confirm-evaluate-way">作价方式:';
234if($data.is_spot ){
235$out+='SMM网价结算';
236}else{
237$out+='期货点价';
238}
239$out+='</span>\n							<span class="price-confirm-data-error" id="price_confirm_data_error"></span>\n							<span class="price-confirm-option-create-error" ';
240if($data.global_form_error ==''){
241$out+=' style="display: none;"';
242}
243$out+=' id="price_confirm_option_create_error">';
244$out+=$escape($data.global_form_error);
245$out+='</span>\n						</p>\n						';
246if($data.is_spot ){
247$out+='\n						<p class="price-confirm-tip-declare">\n							上海有色网金属价格确认单所示价格,由上海有色网制作、发布,并拥有所有合法权益,未经书面授权,任何人不得以任何形式传播、发布、复制;上海有色网金属价格确认单由上海有色网官方出具,供有色金属企业现货交易结算时用作定价依据,该价格可在上海有色网(www.smm.cn)上查询核实;上海有色网金属价格确认单并不构成决策建议,客户所作出的任何决策与上海有色网无关。\n						</p>\n						';
248}
249$out+='\n					</div>\n				</div>\n				';
250if($data.is_in_draw ){
251$out+='\n				';
252if($data.is_spot){
253$out+='\n				<img class="price-confirm-body-stamp" src="https://static.smm.cn/common.smm.cn/images/price-confirm/price-smm-stamp.png" alt="SMM"/>\n				';
254}
255$out+='\n				';
256}
257$out+='\n			</div>\n		</div>\n	</div>\n	<div class="price-confirm-option">\n		<div class="price-confirm-option-create ';
258if($data.global_form_error !=''){
259$out+='disable';
260}
261$out+='" id="price_confirm_option_create">生成确认单</div>\n	</div>\n	<div class="price-confirm-background"></div>\n</div>';
262return new String($out);
263});
264},{"./tpl":9}],5:[function(require,module,exports){
265"use strict";
266exports.__esModule = true;
267var PriceConfirmationHelper = /** @class */ (function () {
268    function PriceConfirmationHelper() {
269    }
270    PriceConfirmationHelper._getCookie = function (name) {
271        var arr, reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)');
272        if ((arr = document.cookie.match(reg)))
273            return unescape(arr[2]);
274        else
275            return null;
276    };
277    PriceConfirmationHelper._getRequestUrl = function (url, is_dev) {
278        return "https://" + (is_dev ? 'test' : '') + "platform.smm.cn/spotcenter" + url;
279    };
280    PriceConfirmationHelper._getSiteUrl = function (url, is_dev) {
281        return "https://" + (is_dev ? 'test' : '') + url;
282    };
283    PriceConfirmationHelper._formatDate = function (timestamp) {
284        return new Date(timestamp);
285    };
286    PriceConfirmationHelper.isNumber = function (val) {
287        var regPos = /^\+{0,1}\d+(\.\d+)?$/; //非负浮点数
288        var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
289        if (regPos.test(val) || regNeg.test(val)) {
290            return true;
291        }
292        else {
293            return false;
294        }
295    };
296    PriceConfirmationHelper.isEmpty = function (obj) {
297        var flag = true;
298        for (var item in obj) {
299            if (obj[item] != null) {
300                flag = false;
301            }
302        }
303        return flag;
304    };
305    PriceConfirmationHelper.SMM_KEY = 'SMM_auth_token';
306    return PriceConfirmationHelper;
307}());
308exports.PriceConfirmationHelper = PriceConfirmationHelper;
309
310},{}],6:[function(require,module,exports){
311"use strict";
312exports.__esModule = true;
313var template = require('../tpl.js');
314var Notice = /** @class */ (function () {
315    function Notice() {
316    }
317    Notice.success = function (msg, append_to) {
318        if (append_to === void 0) { append_to = document.body; }
319        var notice = document.createElement('div');
320        notice.innerHTML = template('notice', {
321            msg: msg
322        });
323        $(append_to).append(notice);
324        window.setTimeout(function () {
325            $(notice).remove();
326        }, 2000);
327    };
328    return Notice;
329}());
330exports.Notice = Notice;
331
332},{"../tpl.js":9}],7:[function(require,module,exports){
333"use strict";
334var __assign = (this && this.__assign) || Object.assign || function(t) {
335    for (var s, i = 1, n = arguments.length; i < n; i++) {
336        s = arguments[i];
337        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
338            t[p] = s[p];
339    }
340    return t;
341};
342exports.__esModule = true;
343var template = require('../tpl.js');
344var helper_1 = require("./helper");
345var notion_1 = require("./notion");
346var QRCode = require("@keeex/qrcodejs-kx");
347require('../../lib/jquery-migrate-1.2.1.min');
348require('../../lib/jquery.jqprint-0.3');
349var PriceConfirmationOver = /** @class */ (function () {
350    function PriceConfirmationOver(bill_info, opt) {
351        if (opt === void 0) { opt = {}; }
352        this.opt = opt;
353        this.ticker = undefined;
354        this.dom = {
355            price_confirm_over: '#price_confirm_over',
356            price_confirm_over_close: '#price_confirm_over_close',
357            price_confirm_over_option_download: '#price_confirm_over_option_download',
358            price_confirm_over_option_print: '#price_confirm_over_option_print',
359            price_confirm_over_option_send_email: '#price_confirm_over_option_send_email',
360            price_confirm_over_input_email: '#price_confirm_over_input_email',
361            price_confirm_over_option_error: '#price_confirm_over_option_error',
362            price_confirmation_pic: '.price_confirmation_pic',
363            price_confirm_over_qrcode: '#price_confirm_over_qrcode'
364        };
365        this.receiver = '';
366        this.data = {
367            pic_url: bill_info.pic_url || '',
368            bill_no: bill_info.bill_no || '',
369            bill_id: bill_info.bill_id || '',
370            bill_type: bill_info.bill_type || '1'
371        };
372        this.opt = __assign({}, opt, { is_dev: opt.is_dev || false, over_page: opt.over_page || '/price-confirmation', create_method: opt.create_method || 'modal' });
373    }
374    PriceConfirmationOver.prototype._init = function () {
375        document.getElementById('price-confirm-over').innerHTML = template('price-confirm-over', this.data);
376    };
377    PriceConfirmationOver.prototype._bind = function () {
378        var _this_1 = this;
379        var _this = this;
380        $(this.dom.price_confirm_over_option_download).on('click', function () {
381            _this_1._download(_this_1.data.bill_no);
382        });
383        $(this.dom.price_confirm_over_option_print).on('click', function () {
384            _this_1._print();
385        });
386        $(this.dom.price_confirm_over_close).on('click', function () {
387            _this._close();
388        });
389        $(this.dom.price_confirm_over_input_email)
390            .on('focus', function (e) {
391            if (e.target.value == '[email protected]') {
392                $(this).css('color', '#333').val('');
393            }
394        })
395            .on('blur', function (e) {
396            if (e.target.value == '') {
397                $(this).val('[email protected]').css('color', '#999');
398            }
399        })
400            .on('change', function (e) {
401            var email = e.target.value.trim();
402            if (!_this._check_email(email))
403                return;
404            _this.receiver = email;
405        });
406        $(this.dom.price_confirm_over_option_send_email).on('click', function () {
407            if (!_this_1._check_email(_this_1.receiver))
408                return;
409            _this_1._send_email(_this_1.receiver);
410        });
411    };
412    PriceConfirmationOver.prototype._notice = function (text, is_show) {
413        var error_box = $(this.dom.price_confirm_over_option_error);
414        if (is_show) {
415            error_box.show();
416            error_box.text(text);
417        }
418        else {
419            error_box.hide();
420            error_box.text('');
421        }
422    };
423    PriceConfirmationOver.prototype._download = function (name) {
424        if (!!window.ActiveXObject || 'ActiveXObject' in window) {
425            // 不支持download时,可提示用户右键下载
426            alert('不支持自动下载,请使用右键下载');
427            return;
428        }
429        var image = new Image();
430        image.setAttribute('crossOrigin', 'anonymous');
431        image.onload = function () {
432            var canvas = document.createElement('canvas');
433            canvas.width = image.width;
434            canvas.height = image.height;
435            var context = canvas.getContext('2d');
436            context.drawImage(image, 0, 0, image.width, image.height);
437            var url = canvas.toDataURL('image/png');
438            var a = document.createElement('a');
439            var event = new MouseEvent('click');
440            a.download = name || 'download';
441            a.href = url;
442            a.dispatchEvent(event);
443        };
444        image.src = this.data.pic_url;
445    };
446    PriceConfirmationOver.prototype._print = function () {
447        ;
448        $(this.dom.price_confirmation_pic).jqprint();
449    };
450    PriceConfirmationOver.prototype._send_email = function (email) {
451        var _this_1 = this;
452        if (this.ticker != undefined)
453            return;
454        var sendData = new FormData();
455        sendData.append('auth_token', helper_1.PriceConfirmationHelper._getCookie(helper_1.PriceConfirmationHelper.SMM_KEY) || '');
456        sendData.append('bill_id', String(this.data.bill_id));
457        sendData.append('bill_type', this.data.bill_type);
458        sendData.append('receiver_email', email);
459        $.ajax(helper_1.PriceConfirmationHelper._getRequestUrl('/v3/confirm_bill/send_confirm_bill_to_email', this.opt.is_dev), {
460            method: 'POST',
461            data: sendData,
462            contentType: false,
463            processData: false,
464            success: function (res) {
465                if (res.code != 0) {
466                    _this_1._notice('*邮件发送失败,请重试', true);
467                }
468                else {
469                    notion_1.Notice.success('邮件已发送!', $(_this_1.dom.price_confirm_over)[0]);
470                    _this_1._set_captcha_btn_state(60);
471                }
472            },
473            error: function (err) {
474                _this_1._notice('*邮件发送失败,请重试', true);
475            }
476        });
477    };
478    PriceConfirmationOver.prototype._check_email = function (email) {
479        if (email == '' || !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(email)) {
480            this._notice('*请输入正确的邮箱', true);
481            return false;
482        }
483        this._notice('', false);
484        return true;
485    };
486    PriceConfirmationOver.prototype._set_captcha_btn_state = function (t) {
487        var _this_1 = this;
488        var time = t;
489        var btn_captcha = $(this.dom.price_confirm_over_option_send_email);
490        btn_captcha.addClass('disabled');
491        btn_captcha.text(time + 's重新发送');
492        this.ticker = window.setInterval(function () {
493            time--;
494            if (time >= 1) {
495                btn_captcha.text(time + 's重新发送');
496            }
497            else {
498                btn_captcha.removeClass('disabled');
499                btn_captcha.text('发送至客户邮箱');
500                window.clearInterval(_this_1.ticker);
501                _this_1.ticker = undefined;
502            }
503        }, 1000);
504    };
505    PriceConfirmationOver.prototype._close = function () {
506        $(this.dom.price_confirm_over).remove();
507        this.on_close && this.on_close();
508    };
509    PriceConfirmationOver.prototype._create = function () {
510        this._init();
511        this._bind();
512        new QRCode($(this.dom.price_confirm_over_qrcode)[0], {
513            text: this.data.pic_url,
514            typeNumber: 5,
515            width: 100,
516            height: 100
517        });
518        this.on_complete && this.on_complete();
519    };
520    PriceConfirmationOver.prototype.close = function () {
521        this._close();
522    };
523    PriceConfirmationOver.prototype.create = function () {
524        var _this_1 = this;
525        var _this = this;
526        if (this.opt.create_method == 'modal') {
527            var container_1 = $('<div id="price-confirm-over"></div>').css({
528                visibility: 'hidden'
529            });
530            $('body').append(container_1[0]);
531            this.on_close = function () {
532                $(container_1[0]).remove();
533                $('#price-confirm-over-whiteboard').remove();
534                document.body.style.overflow = 'auto';
535                _this_1.opt.on_close && _this_1.opt.on_close();
536            };
537            this.on_complete = function () {
538                container_1.css({
539                    position: 'fixed',
540                    top: '0',
541                    bottom: '0',
542                    left: '0',
543                    right: '0',
544                    margin: 'auto',
545                    zIndex: '421',
546                    width: '800px',
547                    height: '660px',
548                    overflowX: 'hidden',
549                    visibility: 'visible'
550                });
551                var mask = $("<div class=\"whiteboard\" id=\"price-confirm-over-whiteboard\"></div>").css({
552                    backgroundColor: '#000',
553                    opacity: '0.5',
554                    pointerEvents: 'auto'
555                })[0];
556                $('body').append(mask);
557                $('#price-confirm-over-whiteboard').on('click', function (e) {
558                    _this.on_close && _this.on_close();
559                    e.preventDefault();
560                    e.stopPropagation();
561                });
562                document.body.style.overflow = 'hidden';
563                _this_1.opt.on_complete && _this_1.opt.on_complete();
564            };
565            this._create();
566        }
567        else {
568            var container_2 = $('<div id="price-confirm-over"></div>').css({
569                visibility: 'hidden'
570            });
571            $('body').append(container_2[0]);
572            this.on_close = function () {
573                $(container_2[0]).remove();
574                document.body.style.overflow = 'auto';
575                _this_1.opt.on_close && _this_1.opt.on_close();
576            };
577            this.on_complete = function () {
578                container_2.css({
579                    position: 'fixed',
580                    top: '0',
581                    bottom: '0',
582                    left: '0',
583                    right: '0',
584                    margin: 'auto',
585                    zIndex: '421',
586                    width: '800px',
587                    height: '660px',
588                    overflowX: 'hidden',
589                    visibility: 'visible'
590                });
591                document.body.style.overflow = 'hidden';
592                _this_1.opt.on_complete && _this_1.opt.on_complete();
593            };
594            this._create();
595        }
596    };
597    return PriceConfirmationOver;
598}());
599exports.PriceConfirmationOver = PriceConfirmationOver;
600
601},{"../../lib/jquery-migrate-1.2.1.min":11,"../../lib/jquery.jqprint-0.3":12,"../tpl.js":9,"./helper":5,"./notion":6,"@keeex/qrcodejs-kx":13}],8:[function(require,module,exports){
602"use strict";
603var __assign = (this && this.__assign) || Object.assign || function(t) {
604    for (var s, i = 1, n = arguments.length; i < n; i++) {
605        s = arguments[i];
606        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
607            t[p] = s[p];
608    }
609    return t;
610};
611exports.__esModule = true;
612var template = require("../tpl.js");
613require("../../lib/canvas-toBlob.js");
614var html2canvas = require("html2canvas");
615var helper_1 = require("./helper");
616var price_confirm_over_1 = require("./price-confirm-over");
617var PriceType;
618(function (PriceType) {
619    PriceType["Spot"] = "spot";
620    PriceType["Future"] = "future";
621})(PriceType || (PriceType = {}));
622var permissionType;
623(function (permissionType) {
624    permissionType[permissionType["no_auth"] = -1] = "no_auth";
625    permissionType[permissionType["no_auth0"] = 0] = "no_auth0";
626    permissionType[permissionType["normal"] = 1] = "normal";
627    permissionType[permissionType["free"] = 2] = "free";
628    permissionType[permissionType["trial"] = 3] = "trial";
629})(permissionType || (permissionType = {}));
630var isValid = function (v) {
631    return v === undefined || v === null ? false : true;
632};
633var PriceConfirmation = /** @class */ (function () {
634    function PriceConfirmation(initial, initial_spot, initial_premium, opt, opt_over) {
635        if (initial_spot === void 0) { initial_spot = {}; }
636        if (initial_premium === void 0) { initial_premium = {}; }
637        if (opt === void 0) { opt = {}; }
638        if (opt_over === void 0) { opt_over = {}; }
639        this.dom = {
640            //id
641            price_confirm: "#price_confirm",
642            date_picker: "#date_picker",
643            date_picker_input: "#date_picker_input",
644            price_confirm_body_wrap: "#price_confirm_body_wrap",
645            price_confirm_img: "#price_confirm_img",
646            unit_price_select: "#unit_price_select",
647            option_arrow: "#option_arrow",
648            price_confirm_close: "#price_confirm_close",
649            price_confirm_spread: "#price_confirm_spread",
650            price_confirm_note: "#price_confirm_note",
651            price_confirm_count: "#price_confirm_count",
652            price_confirm_base_price: "#price_confirm_base_price",
653            price_confirm_option_create_error: "#price_confirm_option_create_error",
654            price_confirm_option_create: "#price_confirm_option_create",
655            price_confirm_base_price_input: "#price_confirm_base_price_input",
656            price_confirm_constract_input: "#price_confirm_constract_input",
657            price_confirm_data_error: "#price_confirm_data_error",
658            price_confirm_spread_text: "#price_confirm_spread_text",
659            price_confirm_total: "#price_confirm_total",
660            price_confirm_settlement_price: "#price_confirm_settlement_price",
661            //class
662            unit_price_item: ".unit_price_item",
663            price_confirm_header_item: ".price_confirm_header_item",
664            daterangepicker: ".daterangepicker"
665        };
666        this.type = PriceType.Spot;
667        this.has_permission = false;
668        this.permission_data = [];
669        this.has_spot_price = true;
670        this.is_origin_today = false;
671        this.global_form_error = "";
672        this._checkingProductAuth = false; // 新增锁变量
673        // 初始化option
674        this.opt = {
675            init_tab: opt.init_tab || [PriceType.Spot, PriceType.Future],
676            is_dev: opt.is_dev != undefined && opt.is_dev != null ? opt.is_dev : false,
677            is_check_date: opt.is_check_date != undefined && opt.is_check_date != null
678                ? opt.is_check_date
679                : true,
680            create_method: opt.create_method || "modal",
681            on_close: opt.on_close,
682            on_complete: opt.on_complete
683        };
684        this.opt_over = opt_over;
685        // 初始化值
686        var checkDate = function (date) {
687            return date != "Invalid date";
688        };
689        var sdate = moment(initial.sdate, PriceConfirmation.DATE_DEFAULT_FORMAT);
690        var edate = moment(initial.edate, PriceConfirmation.DATE_DEFAULT_FORMAT);
691        var today = moment().format(PriceConfirmation.DATE_DEFAULT_FORMAT);
692        if (checkDate(sdate) && checkDate(edate)) {
693            var sdate_stamp = sdate.format(PriceConfirmation.DATE_TIMESTAMP_FORMAT);
694            var edate_stamp = edate
695                .add(1, "days")
696                .format(PriceConfirmation.DATE_TIMESTAMP_FORMAT);
697            var today_stamp = moment().format(PriceConfirmation.DATE_TIMESTAMP_FORMAT);
698            this.is_origin_today =
699                sdate_stamp <= today_stamp && edate_stamp >= today_stamp ? true : false;
700        }
701        else {
702            this.is_origin_today = false;
703        }
704        var is_valid_date = !this.opt.is_check_date || this.is_origin_today;
705        this.initial = __assign({}, initial, { sdate: !is_valid_date ? today : checkDate(sdate) ? initial.sdate : "", edate: !is_valid_date ? today : checkDate(edate) ? initial.edate : "" });
706        // 有效日 && 有效值
707        this.initial_spot = {
708            low: is_valid_date && isValid(initial_spot.low) ? initial_spot.low : null,
709            high: is_valid_date && isValid(initial_spot.high) ? initial_spot.high : null,
710            average: is_valid_date && isValid(initial_spot.average)
711                ? initial_spot.average
712                : null,
713            count: initial_spot.count || null,
714            spread: initial_spot.spread || null
715        };
716        this.initial_premium = {
717            low: is_valid_date && isValid(initial_premium.low)
718                ? initial_premium.low
719                : null,
720            high: is_valid_date && isValid(initial_premium.high)
721                ? initial_premium.high
722                : null,
723            average: is_valid_date && isValid(initial_premium.average)
724                ? initial_premium.average
725                : null,
726            count: initial_premium.count || null,
727            spread: initial_premium.spread || null
728        };
729        this.type = this.opt.init_tab[0];
730    }
731    // *********************************   模块方法    *********************************
732    // 构造 {初始值, 计算值} 的初值
733    PriceConfirmation.prototype._initData = function (data) {
734        if (data === void 0) { data = {}; }
735        var initial = {
736            constract: this.initial.constract,
737            constract_id: this.initial.constract_id,
738            unit: this.initial.unit,
739            start_date: this.initial.sdate,
740            end_date: this.initial.edate
741        };
742        var initial_type = this.type == PriceType.Spot
743            ? __assign({}, this.initial_spot, this.initial) : __assign({}, this.initial_premium, this.initial);
744        var common = {
745            count: "",
746            note: "",
747            settlement_price: "",
748            total: "",
749            date: "",
750            bill_id: null,
751            bill_no: null
752        };
753        var special = this.type == PriceType.Spot
754            ? {
755                base_price: !isValid(this.initial_spot.average)
756                    ? null
757                    : this.initial_spot.average != 0
758                        ? this.initial_spot.average
759                        : "",
760                spread: ""
761            }
762            : {
763                base_price: "",
764                spread: !isValid(this.initial_premium.average)
765                    ? null
766                    : this.initial_premium.average != 0
767                        ? this.initial_premium.average
768                        : ""
769            };
770        this.data = __assign({}, initial, initial_type, common, special, data);
771    };
772    PriceConfirmation.prototype._init = function (is_in_draw) {
773        if (is_in_draw === void 0) { is_in_draw = false; }
774        var sdate = moment(this.data.start_date).format(PriceConfirmation.DATE_SHOW_FORMAT);
775        var edate = moment(this.data.end_date).format(PriceConfirmation.DATE_SHOW_FORMAT);
776        var common = {
777            count_unit: this.data.unit.split("/").length > 1
778                ? this.data.unit.split("/")[1]
779                : "",
780            is_in_draw: is_in_draw,
781            now: moment().format(PriceConfirmation.DATE_TIME_FORMAT),
782            has_future: this.opt.init_tab.some(function (v) { return v == PriceType.Future; }),
783            has_spot: this.opt.init_tab.some(function (v) { return v == PriceType.Spot; }),
784            date: sdate != edate ? sdate + " ~ " + edate : sdate,
785            global_form_error: this.global_form_error
786        };
787        if (this.type == PriceType.Spot) {
788            document.getElementById("price-confirm").innerHTML = template("price-confirm", __assign({}, this.data, common, { low: this._toRender(this.data.low), high: this._toRender(this.data.high), average: this._toRender(this.data.average), base_price: this._toRender(isValid(this.data.base_price) ? Number(this.data.base_price) : null), spread: this.data.spread === ""
789                    ? PriceConfirmation.INVALID_VALUE
790                    : this._toRender(isValid(this.data.spread) ? Number(this.data.spread) : null), is_spot: true, has_permission: this.has_permission, today: moment().format(PriceConfirmation.DATE_SHOW_FORMAT) }));
791        }
792        else if (this.type == PriceType.Future) {
793            document.getElementById("price-confirm").innerHTML = template("price-confirm", __assign({}, this.data, common, { low: this._toRender(this.data.low), high: this._toRender(this.data.high), average: this._toRender(this.data.average), base_price: this.data.base_price === ""
794                    ? PriceConfirmation.INVALID_VALUE // future 空值也显示 INVALID_VALUE
795                    : this._toRender(isValid(this.data.base_price)
796                        ? Number(this.data.base_price)
797                        : null), spread: this._toRender(isValid(this.data.spread) ? Number(this.data.spread) : null), is_spot: false, today: moment().format(PriceConfirmation.DATE_SHOW_FORMAT) }));
798        }
799    };
800    PriceConfirmation.prototype._bind = function () {
801        var _this_1 = this;
802        var _this = this;
803        $(".trial_modal .close_icon").on("click", function () {
804            $(".trial_modal").css({ display: "none" });
805        });
806        var checkCount = function () {
807            var is_empty = _this._checkEmptyWithEffect($(_this.dom.price_confirm_count), _this.data.count != "");
808            var is_right = _this._checkValueWithEffect("count", (function () {
809                var v = _this_1.data.count;
810                if (v == "")
811                    return true;
812                if (new RegExp(/^\d+(\.\d+)?$/g).test(v)) {
813                    return true;
814                }
815                return false;
816            })());
817            return is_empty && is_right;
818        };
819        var checkBasePrice = function () {
820            var is_right = _this._checkValueWithEffect("base_price", (function () {
821                var v = _this_1.data.base_price;
822                if (isValid(v) && v == "")
823                    return true;
824                if (!new RegExp(/\D+/g).test(v)) {
825                    return true;
826                }
827                return false;
828            })());
829            return is_right;
830        };
831        var checkConstract = function () {
832            return _this._checkEmptyWithEffect($(_this.dom.price_confirm_constract_input), _this.data.constract != "");
833        };
834        var checkSpread = function () {
835            return _this._checkValueWithEffect("spread", (function () {
836                var v = _this_1.data.spread;
837                if (isValid(v) && v == "")
838                    return true;
839                if (helper_1.PriceConfirmationHelper.isNumber(v)) {
840                    return true;
841                }
842                return false;
843            })());
844        };
845        $(this.dom.price_confirm_close).on("click", function () {
846            _this._close();
847        });
848        $(this.dom.price_confirm_header_item).on("mouseenter", function () {
849            var type = $(this).data("value");
850            if (type == PriceType.Spot || type == PriceType.Future) {
851                if (type != _this.type) {
852                    _this._changeType(type);
853                }
854            }
855        });
856        $(this.dom.price_confirm_spread)
857            .on("change", function (e) {
858            var v = e.target.value.trim();
859            _this.data.spread = v;
860        })
861            .on("blur", function (e) {
862            var settlement_price = PriceConfirmation.INVALID_VALUE;
863            if (checkSpread()) {
864                _this._calcFinalData();
865                settlement_price = String(_this.data.settlement_price);
866            }
867            $(_this.dom.price_confirm_settlement_price).val(settlement_price);
868        });
869        $(this.dom.price_confirm_count)
870            .on("change", function (e) {
871            var v = e.target.value.trim();
872            _this.data.count = v;
873        })
874            .on("blur", function () {
875            var total = PriceConfirmation.INVALID_VALUE;
876            if (checkCount()) {
877                _this._calcFinalData();
878                total = _this
879                    ._floatNum(_this.data.total, _this.data.point_precision || 2)
880                    .toString();
881            }
882            $(_this.dom.price_confirm_total).val(total);
883        });
884        $(this.dom.price_confirm_note)
885            .on("change", function (e) {
886            var v = e.target.value.trim();
887            _this.data.note = v;
888        })
889            .on("input", function () {
890            this.style.height = "auto";
891            this.style.height = this.scrollHeight + "px";
892        });
893        // 价格选择框
894        $(this.dom.price_confirm).on("click", function (e) {
895            if ($(e.target).closest(_this.dom.option_arrow).length == 0) {
896                $(_this.dom.option_arrow).hasClass("option-arrow-active") &&
897                    $(_this.dom.option_arrow).removeClass("option-arrow-active");
898                $(_this.dom.unit_price_select).hide();
899            }
900        });
901        $(this.dom.option_arrow).on("click", function () {
902            $(this).hasClass("option-arrow-active")
903                ? $(this).removeClass("option-arrow-active")
904                : $(this).addClass("option-arrow-active");
905            $(_this.dom.unit_price_select).toggle();
906        });
907        $(this.dom.unit_price_select)
908            .find(_this.dom.unit_price_item)
909            .on("click", function (e) {
910            var key = $(this).data("key");
911            if (key == "low" || key == "high" || key == "average") {
912                var value = _this.data[key];
913                var label_map = {
914                    low: "低",
915                    high: "高",
916                    average: "均"
917                };
918                if (_this.type == PriceType.Spot) {
919                    _this.data.base_price = value;
920                    $(_this.dom.price_confirm_base_price).text(label_map[key] + "\uFF1A" + _this._toRender(value));
921                }
922                else {
923                    _this.data.spread = String(value);
924                    $(_this.dom.price_confirm_spread_text).show();
925                    $(_this.dom.price_confirm_spread).hide();
926                    $(_this.dom.price_confirm_spread_text).text(label_map[key] + "\uFF1A" + _this._toRender(value));
927                }
928            }
929            else if (key == "custom") {
930                $(_this.dom.price_confirm_spread_text).hide();
931                $(_this.dom.price_confirm_spread).show();
932            }
933        });
934        //  spot/future
935        if (this.type == PriceType.Spot) {
936            var date_pickerEvent_1 = $(_this.dom.date_picker).daterangepicker({
937                startDate: moment().subtract(30, "days"),
938                endDate: new Date(),
939                autoApply: true,
940                linkedCalendars: false,
941                minDate: moment()
942                    .year(moment().year() - 3)
943                    .month(0)
944                    .date(1),
945                maxDate: new Date(),
946                locale: {
947                    format: "YYYY-MM-DD",
948                    separator: " - ",
949                    daysOfWeek: ["日", "一", "二", "三", "四", "五", "六"],
950                    monthNames: [
951                        "一月",
952                        "二月",
953                        "三月",
954                        "四月",
955                        "五月",
956                        "六月",
957                        "七月",
958                        "八月",
959                        "九月",
960                        "十月",
961                        "十一月",
962                        "十二月",
963                    ]
964                }
965            });
966            $(_this.dom.date_picker_input).val(_this.data.start_date == _this.data.end_date
967                ? _this.data.start_date
968                : _this.data.start_date + " - " + _this.data.end_date);
969            $(".price-confirm-date-input").on("click", function () {
970                if (_this.permission_data[0].permission_state === permissionType.trial) {
971                    // 试用权限隐藏日期选择器 弹出去开通弹窗
972                    $(".trial_modal").css({ display: "block" });
973                    date_pickerEvent_1.data("daterangepicker").hide();
974                }
975            });
976            date_pickerEvent_1.on("apply.daterangepicker", function (ev, picker) {
977                var start_date = picker.startDate.format(PriceConfirmation.DATE_DEFAULT_FORMAT);
978                var end_date = picker.endDate.format(PriceConfirmation.DATE_DEFAULT_FORMAT);
979                _this.data.start_date = start_date;
980                _this.data.end_date = end_date;
981                $(_this.dom.date_picker_input).val(start_date + " - " + end_date);
982                _this._queryConstractData(_this.data.constract_id, start_date, end_date, function () {
983                    var base_price_options = {
984                        low: _this.data.low,
985                        high: _this.data.high,
986                        average: _this.data.average
987                    };
988                    for (var key in base_price_options) {
989                        $(_this.dom.unit_price_item + "[data-key=" + key + "]")
990                            .find("span")
991                            .text(_this._toRender(base_price_options[key]));
992                        $(_this.dom.price_confirm_base_price).text("\u5747\uFF1A" + _this._toRender(isValid(_this.data.base_price)
993                            ? Number(_this.data.base_price)
994                            : null));
995                    }
996                });
997            });
998            $(this.dom.price_confirm_option_create).on("click", function (e) {
999                $(".price_history").hide();
1000                if (_this.global_form_error != "")
1001                    return;
1002                if (!(checkCount() && checkSpread()))
1003                    return;
1004                if (!_this.has_spot_price) {
1005                    _this._notice($(_this.dom.price_confirm_data_error), "当日无数据,暂不支持生成确认单", true);
1006                    return;
1007                }
1008                else if (!isValid(_this.data.base_price)) {
1009                    _this._notice($(_this.dom.price_confirm_data_error), "无效的基准单价", true);
1010                    return;
1011                }
1012                else {
1013                    _this._notice($(_this.dom.price_confirm_data_error), "", false);
1014                }
1015                _this._calcFinalData();
1016                _this._checkProductAuth(function () {
1017                    _this._init(true);
1018                    _this._createCanvas(10, function (canvas) {
1019                        canvas.toBlob(function (blob) {
1020                            if (typeof File == "object") {
1021                                _this._uploadConfirmation(blob, function () {
1022                                    _this._close();
1023                                }, String(_this.data.bill_no));
1024                            }
1025                            else {
1026                                var files = new File([blob], String(_this.data.bill_no));
1027                                _this._uploadConfirmation(files, function () {
1028                                    _this._close();
1029                                });
1030                            }
1031                        }, "image/png");
1032                    });
1033                });
1034            });
1035        }
1036        else if (this.type == PriceType.Future) {
1037            $(this.dom.price_confirm_base_price_input)
1038                .on("change", function (e) {
1039                var v = e.target.value.trim();
1040                _this.data.base_price = v;
1041            })
1042                .on("blur", function () {
1043                var settlement_price = PriceConfirmation.INVALID_VALUE;
1044                if (checkBasePrice()) {
1045                    _this._calcFinalData();
1046                    settlement_price = String(_this.data.settlement_price);
1047                }
1048                $(_this.dom.price_confirm_settlement_price).val(settlement_price);
1049            });
1050            $(this.dom.price_confirm_constract_input)
1051                .on("change", function (e) {
1052                var v = e.target.value.trim();
1053                _this.data.constract = v;
1054            })
1055                .on("blur", function () {
1056                checkConstract();
1057            });
1058            $(this.dom.price_confirm_option_create).on("click", function (e) {
1059                if (_this.global_form_error != "")
1060                    return;
1061                if (!(checkBasePrice() &&
1062                    checkCount() &&
1063                    checkConstract() &&
1064                    checkSpread()))
1065                    return;
1066                _this._calcFinalData();
1067                _this._checkProductAuth(function () {
1068                    _this._init(true);
1069                    _this._createCanvas(-10, function (canvas) {
1070                        canvas.toBlob(function (blob) {
1071                            if (typeof File == "object") {
1072                                _this._uploadConfirmation(blob, function () {
1073                                    _this._close();
1074                                }, String(_this.data.bill_no));
1075                            }
1076                            else {
1077                                var files = new File([blob], String(_this.data.bill_no));
1078                                _this._uploadConfirmation(files, function () {
1079                                    _this._close();
1080                                });
1081                            }
1082                        });
1083                    });
1084                });
1085            });
1086        }
1087    };
1088    PriceConfirmation.prototype._bindBase = function () {
1089        var _this = this;
1090        $(this.dom.price_confirm_close).on("click", function () {
1091            _this._close();
1092        });
1093    };
1094    PriceConfirmation.prototype._changeType = function (type) {
1095        this.type = type;
1096        this._initData({
1097            bill_id: this.data.bill_id,
1098            bill_no: this.data.bill_no
1099        });
1100        this._init();
1101        this._bind();
1102    };
1103    // 查询权限
1104    /**
1105     *  没权限无法更改日期
1106     * 	试用权限 点击日期提示弹窗去开通
1107     */
1108    PriceConfirmation.prototype._queryAuth = function (constract_id, next) {
1109        var _this_1 = this;
1110        var _this = this;
1111        var url = helper_1.PriceConfirmationHelper._getRequestUrl("/v3/permission_check2?check_ids=" + constract_id + "&id_type=product&auth_token=" + (helper_1.PriceConfirmationHelper._getCookie(helper_1.PriceConfirmationHelper.SMM_KEY) ||
1112            ""), this.opt.is_dev);
1113        $.ajax(url, {
1114            method: "GET",
1115            success: function (res) {
1116                if (res.code == 0) {
1117                    if (res.data.length != 0) {
1118                        var data = res.data;
1119                        // 	无权限禁止选择 -1 0
1120                        if (data[0].permission_state == permissionType.no_auth ||
1121                            data[0].permission_state == permissionType.no_auth0) {
1122                            _this.has_permission = false;
1123                        }
1124                        else {
1125                            _this.has_permission = true;
1126                        }
1127                        // 保存具体的权限 ,用作判断是否展示弹窗
1128                        _this.permission_data = data;
1129                    }
1130                }
1131            },
1132            error: function (err) {
1133                _this_1._notice($(_this_1.dom.price_confirm_option_create_error), "*网络错误", true);
1134            },
1135            complete: function () {
1136                next && next();
1137            }
1138        });
1139    };
1140    PriceConfirmation.prototype._close = function () {
1141        $(this.dom.price_confirm).remove();
1142        $(this.dom.daterangepicker).remove();
1143        this.on_close && this.on_close();
1144    };
1145    PriceConfirmation.prototype._create = function () {
1146        var _this_1 = this;
1147        var init = function () {
1148            _this_1._init();
1149            _this_1._bind();
1150            _this_1._createConfirmation();
1151            _this_1.on_complete && _this_1.on_complete();
1152        };
1153        var initWithQuery = function (sdate, edate) {
1154            _this_1._queryConstractData(_this_1.initial.constract_id, sdate, edate, function () {
1155                _this_1._init();
1156                _this_1._bind();
1157                _this_1._createConfirmation();
1158                _this_1.on_complete && _this_1.on_complete();
1159            });
1160        };
1161        this._queryAuth(this.initial.constract_id, function () {
1162            _this_1._initData();
1163            if (_this_1.opt.is_check_date) {
1164                if (_this_1.is_origin_today) {
1165                    init();
1166                }
1167                else {
1168                    // 不是当日则价格不会被信任,该属性用以标识。
1169                    // WAIT 优化
1170                    _this_1.has_spot_price = false;
1171                    // 不是当日的,若有权限则查询数据
1172                    if (_this_1.type == PriceType.Spot && _this_1.has_permission) {
1173                        initWithQuery(_this_1.initial.sdate, _this_1.initial.edate);
1174                    }
1175                    else {
1176                        init();
1177                    }
1178                }
1179            }
1180            else {
1181                init();
1182            }
1183        });
1184    };
1185    PriceConfirmation.prototype._createWithDraw = function () {
1186        var isSpot = this.type == "spot";
1187        this._initData({
1188            count: String((isSpot ? this.initial_spot.count : this.initial_premium.count) || 0),
1189            spread: String((isSpot ? this.initial_spot.spread : this.initial_premium.spread) || 0),
1190            base_price: String((isSpot ? this.initial_spot.average : this.initial_premium.average) || 0),
1191            note: this.initial.note,
1192            bill_no: this.initial.bill_no
1193        });
1194        this._calcFinalData();
1195        this._init(true);
1196        this.on_complete && this.on_complete();
1197    };
1198    PriceConfirmation.prototype.close = function () {
1199        this._close();
1200    };
1201    PriceConfirmation.prototype.create = function () {
1202        var _this_1 = this;
1203        var _this = this;
1204        if (this.opt.create_method == "modal") {
1205            var container_1 = $('<div id="price-confirm"></div>').css({
1206                visibility: "hidden"
1207            });
1208            $("body").append(container_1[0]);
1209            this.on_close = function () {
1210                $(container_1[0]).remove();
1211                $("#price-confirm-whiteboard").remove();
1212                document.body.style.overflow = "auto";
1213                _this_1.opt.on_close && _this_1.opt.on_close();
1214            };
1215            this.on_complete = function () {
1216                container_1.css({
1217                    position: "fixed",
1218                    top: "0",
1219                    bottom: "0",
1220                    left: "0",
1221                    right: "0",
1222                    margin: "auto",
1223                    zIndex: "421",
1224                    width: "800px",
1225                    height: "550px",
1226                    overflowX: "hidden",
1227                    visibility: "visible"
1228                });
1229                var mask = $("<div class=\"whiteboard\" id=\"price-confirm-whiteboard\"></div>").css({
1230                    backgroundColor: "#000",
1231                    opacity: "0.5",
1232                    pointerEvents: "auto"
1233                })[0];
1234                $("body").append(mask);
1235                $("#price-confirm-whiteboard").on("click", function (e) {
1236                    _this.on_close && _this.on_close();
1237                    e.preventDefault();
1238                    e.stopPropagation();
1239                });
1240                document.body.style.overflow = "hidden";
1241                _this_1.opt.on_complete && _this_1.opt.on_complete();
1242            };
1243            this._create();
1244        }
1245        else if (this.opt.create_method == "page") {
1246            var container_2 = $('<div id="price-confirm"></div>').css({
1247                visibility: "hidden"
1248            });
1249            $("body").append(container_2[0]);
1250            this.on_close = function () {
1251                $(container_2[0]).remove();
1252                document.body.style.overflow = "auto";
1253                _this_1.opt.on_close && _this_1.opt.on_close();
1254            };
1255            this.on_complete = function () {
1256                container_2.css({
1257                    position: "fixed",
1258                    top: "0",
1259                    bottom: "0",
1260                    left: "0",
1261                    right: "0",
1262                    margin: "auto",
1263                    zIndex: "421",
1264                    width: "800px",
1265                    height: "550px",
1266                    overflowX: "hidden",
1267                    visibility: "visible"
1268                });
1269                document.body.style.overflow = "hidden";
1270                _this_1.opt.on_complete && _this_1.opt.on_complete();
1271            };
1272            this._create();
1273        }
1274        else if (this.opt.create_method == "pic") {
1275            var container_3 = $('<div id="price-confirm"></div>').css({
1276                visibility: "hidden"
1277            });
1278            $("body").append(container_3[0]);
1279            this.on_close = function () {
1280                $(container_3[0]).remove();
1281                document.body.style.overflow = "auto";
1282                _this_1.opt.on_close && _this_1.opt.on_close();
1283            };
1284            this.on_complete = function () {
1285                container_3.css({
1286                    position: "fixed",
1287                    top: "0",
1288                    bottom: "0",
1289                    left: "0",
1290                    right: "0",
1291                    margin: "auto",
1292                    zIndex: "421",
1293                    width: "800px",
1294                    height: "550px",
1295                    overflowX: "hidden",
1296                    visibility: "visible"
1297                });
1298                document.body.style.overflow = "hidden";
1299                _this_1.opt.on_complete && _this_1.opt.on_complete();
1300            };
1301            this._createWithDraw();
1302        }
1303    };
1304    PriceConfirmation.prototype._floatNum = function (num, precision) {
1305        if (precision === void 0) { precision = 2; }
1306        return Number(new Intl.NumberFormat("en", {
1307            useGrouping: false,
1308            minimumFractionDigits: 0,
1309            maximumFractionDigits: precision
1310        }).format(Number(num)));
1311    };
1312    // *********************************   表单方法    *********************************
1313    PriceConfirmation.prototype._toRender = function (num) {
1314        return num === null || num === undefined ? "-" : num;
1315    };
1316    PriceConfirmation.prototype._notice = function (error_box, text, is_show) {
1317        if (is_show) {
1318            error_box.show();
1319            error_box.text(text);
1320        }
1321        else {
1322            error_box.hide();
1323            error_box.text("");
1324        }
1325    };
1326    PriceConfirmation.prototype._calcFinalData = function () {
1327        //base_price 、spread 可能为 null
1328        if (isValid(this.data.base_price) && isValid(this.data.spread)) {
1329            this.data.settlement_price =
1330                Number(this.data.base_price) + Number(this.data.spread);
1331        }
1332        this.data.total = this._floatNum(Number(this.data.settlement_price) * Number(this.data.count), this.data.point_precision || 2).toString();
1333    };
1334    PriceConfirmation.prototype._createCanvas = function (offset, next) {
1335        // 该方法会使用期货和现货里最小的高度作为y,因此 offset = 顶部增加的距离(美化)+ 现货的补偿截图距离
1336        $(".price_history").hide();
1337        var ele = $(this.dom.price_confirm_body_wrap)[0];
1338        html2canvas(ele, {
1339            allowTaint: false,
1340            useCORS: true,
1341            scale: 2
1342        })
1343            .then(function (canvas) {
1344            next(canvas);
1345        })["catch"](function (err) {
1346            console.log(err);
1347        })
1348            .then(function (canvas) {
1349            next(canvas);
1350        })["catch"](function (err) {
1351            console.log(err);
1352        });
1353    };
1354    PriceConfirmation.prototype._createConfirmation = function (cb) {
1355        var _this = this;
1356        $.ajax(helper_1.PriceConfirmationHelper._getRequestUrl("/v3/confirm_bill/create_confirm_bill", this.opt.is_dev), {
1357            method: "POST",
1358            data: {
1359                product_name: this.initial.constract,
1360                product_id: this.initial.constract_id,
1361                auth_token: helper_1.PriceConfirmationHelper._getCookie(helper_1.PriceConfirmationHelper.SMM_KEY) || ""
1362            },
1363            success: function (res) {
1364                if (res.code == 0) {
1365                    _this.data.bill_id = res.data.bill_id;
1366                    _this.data.bill_no = res.data.bill_no;
1367                    _this.data.point_precision = res.data.point_precision;
1368                    cb && cb();
1369                }
1370                else {
1371                    _this._toggleSubmitUsable(res.msg);
1372                }
1373            },
1374            error: function (err) {
1375                _this._toggleSubmitUsable("*网络错误,请重试");
1376            }
1377        });
1378    };
1379    PriceConfirmation.prototype._toggleSubmitUsable = function (msg) {
1380        if (msg != "") {
1381            // 当前
1382            $(this.dom.price_confirm_option_create)
1383                .removeClass("disable")
1384                .addClass("disable");
1385            this._notice($(this.dom.price_confirm_option_create_error), msg, true);
1386            // 切换后扔保存的状态
1387            this.global_form_error = msg;
1388        }
1389        else {
1390            $(this.dom.price_confirm_option_create).removeClass("disable");
1391            this._notice($(this.dom.price_confirm_option_create_error), "", false);
1392            this.global_form_error = "";
1393        }
1394    };
1395    PriceConfirmation.prototype._checkProductAuth = function (next) {
1396        var _this_1 = this;
1397        if (this._checkingProductAuth)
1398            return; // 正在请求中,直接返回
1399        this._checkingProductAuth = true; // 加锁
1400        if (this.data.bill_no && this.data.bill_id) {
1401            $.ajax(helper_1.PriceConfirmationHelper._getRequestUrl("/v3/confirm_bill/check_product_auth", this.opt.is_dev), {
1402                method: "POST",
1403                data: {
1404                    product_id: this.initial.constract_id,
1405                    start_date: this.data.start_date,
1406                    end_date: this.data.end_date,
1407                    auth_token: helper_1.PriceConfirmationHelper._getCookie(helper_1.PriceConfirmationHelper.SMM_KEY) || ""
1408                },
1409                success: function (res) {
1410                    _this_1._checkingProductAuth = false; // 解锁
1411                    if (res.code == 0) {
1412                        if (res.data.has_auth) {
1413                            next && next();
1414                        }
1415                        else {
1416                            _this_1._notice($(_this_1.dom.price_confirm_option_create_error), "无当前价格点历史权限", true);
1417                            _this_1._bindBase();
1418                        }
1419                    }
1420                    else {
1421                        _this_1._notice($(_this_1.dom.price_confirm_option_create_error), res.msg, true);
1422                        _this_1._bindBase();
1423                    }
1424                },
1425                error: function (err) {
1426                    _this_1._checkingProductAuth = false; // 解锁
1427                    _this_1._notice($(_this_1.dom.price_confirm_option_create_error), "*网络错误", true);
1428                }
1429            });
1430        }
1431        else {
1432            this._checkingProductAuth = false; // 解锁
1433            this._notice($(this.dom.price_confirm_option_create_error), "单号错误", true);
1434        }
1435    };
1436    // 1
1437    PriceConfirmation.prototype._uploadConfirmation = function (bill_img, cb, file_name) {
1438        var _this_1 = this;
1439        var url = helper_1.PriceConfirmationHelper._getRequestUrl("/v3/confirm_bill/upload_confirm_bill_info", this.opt.is_dev);
1440        if (this.data.bill_no && this.data.bill_id) {
1441            var sendData = new FormData();
1442            sendData.append("auth_token", helper_1.PriceConfirmationHelper._getCookie(helper_1.PriceConfirmationHelper.SMM_KEY) ||
1443                "");
1444            sendData.append("bill_id", String(this.data.bill_id));
1445            sendData.append("bill_type", this.type == PriceType.Spot ? "1" : "2");
1446            sendData.append("start_date", this.data.start_date);
1447            sendData.append("end_date", this.data.end_date);
1448            sendData.append("product_name", encodeURIComponent(this.data.constract));
1449            sendData.append("margin_price", String(this.data.spread));
1450            sendData.append("settlement_price", String(this.data.settlement_price));
1451            sendData.append("price_unit", this.data.unit);
1452            sendData.append("num", String(this.data.count));
1453            sendData.append("remark", this.data.note);
1454            sendData.append("total", String(this.data.total));
1455            sendData.append("evaluate_way", this.type == PriceType.Spot ? "1" : "2");
1456            sendData.append("is_no_width", "1");
1457            if (this.data.base_price) {
1458                sendData.append("base_price", String(this.data.base_price));
1459            }
1460            if (file_name) {
1461                sendData.append("bill_img", bill_img, file_name);
1462            }
1463            else {
1464                sendData.append("bill_img", bill_img);
1465            }
1466            $.ajax(url, {
1467                method: "POST",
1468                data: sendData,
1469                contentType: false,
1470                processData: false,
1471                success: function (res) {
1472                    if (res.code != 0) {
1473                        _this_1._notice($(_this_1.dom.price_confirm_option_create_error), res.msg, true);
1474                        _this_1._bindBase();
1475                    }
1476                    else {
1477                        new price_confirm_over_1.PriceConfirmationOver({
1478                            pic_url: res.data.img_url,
1479                            bill_id: String(_this_1.data.bill_id),
1480                            bill_no: String(_this_1.data.bill_no),
1481                            bill_type: _this_1.type == PriceType.Spot ? "1" : "2"
1482                        }, __assign({ is_dev: _this_1.opt.is_dev, create_method: _this_1.opt_over.over_create_method, over_page: _this_1.opt_over.over_page }, _this_1.opt_over)).create();
1483                        cb && cb();
1484                    }
1485                },
1486                error: function (err) {
1487                    _this_1._notice($(_this_1.dom.price_confirm_option_create_error), "*网络错误", true);
1488                    console.log("/v3/confirm_bill/upload_confirm_bill_info", err);
1489                }
1490            });
1491        }
1492        else {
1493            this._notice($(this.dom.price_confirm_option_create_error), "单号错误", true);
1494        }
1495    };
1496    // 1
1497    PriceConfirmation.prototype._logWithQueryConstractData = function (constract_id, begin_date, end_date) {
1498        var url = helper_1.PriceConfirmationHelper._getRequestUrl("/v3/confirm_bill/query_log", this.opt.is_dev);
1499        $.ajax(url, {
1500            method: "POST",
1501            data: {
1502                auth_token: helper_1.PriceConfirmationHelper._getCookie(helper_1.PriceConfirmationHelper.SMM_KEY) ||
1503                    "",
1504                begin_date: begin_date,
1505                end_date: end_date,
1506                product_id: constract_id,
1507                confirm_bill_id: this.data.bill_id,
1508                confirrm_bill_no: this.data.bill_no
1509            }
1510        });
1511    };
1512    PriceConfirmation.prototype._checkEmptyWithEffect = function (target, is_pass) {
1513        var class_error = "error-input-empty";
1514        if (!is_pass) {
1515            !target.parent().hasClass(class_error) &&
1516                target.parent().addClass(class_error);
1517            return false;
1518        }
1519        else {
1520            target.parent().removeClass(class_error);
1521            return true;
1522        }
1523    };
1524    PriceConfirmation.prototype._checkValueWithEffect = function (type, is_pass) {
1525        if (!is_pass) {
1526            var text = "";
1527            switch (type) {
1528                case "spread":
1529                    text =
1530                        this.type == PriceType.Spot
1531                            ? "请填写正确的差价"
1532                            : "请填写正确的升贴水";
1533                    break;
1534                case "base_price":
1535                    text = "请填写正确的基价";
1536                    break;
1537                case "count":
1538                    text = "请填写正确的数量";
1539                    break;
1540                default:
1541                    break;
1542            }
1543            this._notice($(this.dom.price_confirm_data_error), text, true);
1544            return false;
1545        }
1546        else {
1547            this._notice($(this.dom.price_confirm_data_error), "", false);
1548            return true;
1549        }
1550    };
1551    PriceConfirmation.prototype._queryConstractData = function (constract_id, begin_date, end_date, next) {
1552        var _this_1 = this;
1553        var url = helper_1.PriceConfirmationHelper._getRequestUrl("/v2/prices/products/" + constract_id + "/dates?begin_date=" + begin_date + "&end_date=" + end_date + "&auth_token=" + (helper_1.PriceConfirmationHelper._getCookie(helper_1.PriceConfirmationHelper.SMM_KEY) ||
1554            ""), this.opt.is_dev);
1555        $.ajax(url, {
1556            method: "GET",
1557            success: function (res) {
1558                if (res.Code == 200) {
1559                    var sum = {
1560                        average: 0,
1561                        low: 0,
1562                        high: 0
1563                    };
1564                    if (res.Data && res.Data.length != 0) {
1565                        _this_1.has_spot_price = true;
1566                        sum = res.Data.reduce(function (data, current) {
1567                            return {
1568                                average: data.average + current.Average,
1569                                low: data.low + current.Low,
1570                                high: data.high + current.Highs
1571                            };
1572                        }, sum);
1573                        _this_1.data.average = _this_1._floatNum(sum.average / res.Data.length, _this_1.data.point_precision || 2);
1574                        _this_1.data.high = _this_1._floatNum(sum.high / res.Data.length, _this_1.data.point_precision || 2);
1575                        _this_1.data.low = _this_1._floatNum(sum.low / res.Data.length, _this_1.data.point_precision || 2);
1576                        _this_1.data.base_price = _this_1.data.average;
1577                    }
1578                    else {
1579                        _this_1.has_spot_price = false;
1580                        _this_1.data.high = null;
1581                        _this_1.data.low = null;
1582                        _this_1.data.average = null;
1583                        _this_1.data.base_price = null;
1584                    }
1585                }
1586            },
1587            error: function (err) {
1588                _this_1._notice($(_this_1.dom.price_confirm_option_create_error), "*网络错误", true);
1589            },
1590            complete: function () {
1591                _this_1._logWithQueryConstractData(constract_id, begin_date, end_date);
1592                next && next();
1593            }
1594        });
1595    };
1596    PriceConfirmation.DATE_DEFAULT_FORMAT = "YYYY-MM-DD";
1597    PriceConfirmation.DATE_TIME_FORMAT = "YYYY年MM月DD日 kk:mm:ss";
1598    PriceConfirmation.DATE_SHOW_FORMAT = "YYYY年MM月DD日";
1599    PriceConfirmation.DATE_TIMESTAMP_FORMAT = "X";
1600    PriceConfirmation.INVALID_VALUE = "-";
1601    return PriceConfirmation;
1602}());
1603exports.PriceConfirmation = PriceConfirmation;
1604
1605},{"../../lib/canvas-toBlob.js":10,"../tpl.js":9,"./helper":5,"./price-confirm-over":7,"html2canvas":344}],9:[function(require,module,exports){
1606/*TMODJS:{}*/
1607!function () {
1608
1609    function template (filename, content) {
1610        return (
1611            /string|function/.test(typeof content)
1612            ? compile : renderFile
1613        )(filename, content);
1614    };
1615
1616
1617    var cache = template.cache = {};
1618    var String = window.String;
1619
1620    function toString (value, type) {
1621
1622        if (typeof value !== 'string') {
1623
1624            type = typeof value;
1625            if (type === 'number') {
1626                value += '';
1627            } else if (type === 'function') {
1628                value = toString(value.call(value));
1629            } else {
1630                value = '';
1631            }
1632        }
1633
1634        return value;
1635
1636    };
1637
1638
1639    var escapeMap = {
1640        "<": "&#60;",
1641        ">": "&#62;",
1642        '"': "&#34;",
1643        "'": "&#39;",
1644        "&": "&#38;"
1645    };
1646
1647
1648    function escapeFn (s) {
1649        return escapeMap[s];
1650    }
1651
1652
1653    function escapeHTML (content) {
1654        return toString(content)
1655        .replace(/&(?![\w#]+;)|[<>"']/g, escapeFn);
1656    };
1657
1658
1659    var isArray = Array.isArray || function(obj) {
1660        return ({}).toString.call(obj) === '[object Array]';
1661    };
1662
1663
1664    function each (data, callback) {
1665        if (isArray(data)) {
1666            for (var i = 0, len = data.length; i < len; i++) {
1667                callback.call(data, data[i], i, data);
1668            }
1669        } else {
1670            for (i in data) {
1671                callback.call(data, data[i], i);
1672            }
1673        }
1674    };
1675
1676
1677    function resolve (from, to) {
1678        var DOUBLE_DOT_RE = /(\/)[^/]+\1\.\.\1/;
1679        var dirname = ('./' + from).replace(/[^/]+$/, "");
1680        var filename = dirname + to;
1681        filename = filename.replace(/\/\.\//g, "/");
1682        while (filename.match(DOUBLE_DOT_RE)) {
1683            filename = filename.replace(DOUBLE_DOT_RE, "/");
1684        }
1685        return filename;
1686    };
1687
1688
1689    var utils = template.utils = {
1690
1691        $helpers: {},
1692
1693        $include: function (filename, data, from) {
1694            filename = resolve(from, filename);
1695            return renderFile(filename, data);
1696        },
1697
1698        $string: toString,
1699
1700        $escape: escapeHTML,
1701
1702        $each: each
1703        
1704    };
1705
1706
1707    var helpers = template.helpers = utils.$helpers;
1708
1709
1710    function renderFile (filename, data) {
1711        var fn = template.get(filename) || showDebugInfo({
1712            filename: filename,
1713            name: 'Render Error',
1714            message: 'Template not found'
1715        });
1716        return data ? fn(data) : fn; 
1717    };
1718
1719
1720    function compile (filename, fn) {
1721
1722        if (typeof fn === 'string') {
1723            var string = fn;
1724            fn = function () {
1725                return new String(string);
1726            };
1727        }
1728
1729        var render = cache[filename] = function (data) {
1730            try {
1731                return new fn(data, filename) + '';
1732            } catch (e) {
1733                return showDebugInfo(e)();
1734            }
1735        };
1736
1737        render.prototype = fn.prototype = utils;
1738        render.toString = function () {
1739            return fn + '';
1740        };
1741
1742        return render;
1743    };
1744
1745
1746    function showDebugInfo (e) {
1747
1748        var type = "{Template Error}";
1749        var message = e.stack || '';
1750
1751        if (message) {
1752            // 利用报错堆栈信息
1753            message = message.split('\n').slice(0,2).join('\n');
1754        } else {
1755            // 调试版本,直接给出模板语句行
1756            for (var name in e) {
1757                message += "<" + name + ">\n" + e[name] + "\n\n";
1758            }  
1759        }
1760
1761        return function () {
1762            if (typeof console === "object") {
1763                console.error(type + "\n\n" + message);
1764            }
1765            return type;
1766        };
1767    };
1768
1769
1770    template.get = function (filename) {
1771        return cache[filename.replace(/^\.\//, '')];
1772    };
1773
1774
1775    template.helper = function (name, helper) {
1776        helpers[name] = helper;
1777    };
1778
1779
1780    module.exports = template;
1781    
1782    
1783
1784}()
1785},{}],10:[function(require,module,exports){
1786/* canvas-toBlob.js
1787 * A canvas.toBlob() implementation.
1788 * 2016-05-26
1789 * 
1790 * By Eli Grey, http://eligrey.com and Devin Samarin, https://github.com/eboyjr
1791 * License: MIT
1792 *   See https://github.com/eligrey/canvas-toBlob.js/blob/master/LICENSE.md
1793 */
1794
1795/*global self */
1796/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
1797  plusplus: true */
1798
1799/*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */
1800
1801(function(view) {
1802    "use strict";
1803    var
1804          Uint8Array = view.Uint8Array
1805        , HTMLCanvasElement = view.HTMLCanvasElement
1806        , canvas_proto = HTMLCanvasElement && HTMLCanvasElement.prototype
1807        , is_base64_regex = /\s*;\s*base64\s*(?:;|$)/i
1808        , to_data_url = "toDataURL"
1809        , base64_ranks
1810        , decode_base64 = function(base64) {
1811            var
1812                  len = base64.length
1813                , buffer = new Uint8Array(len / 4 * 3 | 0)
1814                , i = 0
1815                , outptr = 0
1816                , last = [0, 0]
1817                , state = 0
1818                , save = 0
1819                , rank
1820                , code
1821                , undef
1822            ;
1823            while (len--) {
1824                code = base64.charCodeAt(i++);
1825                rank = base64_ranks[code-43];
1826                if (rank !== 255 && rank !== undef) {
1827                    last[1] = last[0];
1828                    last[0] = code;
1829                    save = (save << 6) | rank;
1830                    state++;
1831                    if (state === 4) {
1832                        buffer[outptr++] = save >>> 16;
1833                        if (last[1] !== 61 /* padding character */) {
1834                            buffer[outptr++] = save >>> 8;
1835                        }
1836                        if (last[0] !== 61 /* padding character */) {
1837                            buffer[outptr++] = save;
1838                        }
1839                        state = 0;
1840                    }
1841                }
1842            }
1843            // 2/3 chance there's going to be some null bytes at the end, but that
1844            // doesn't really matter with most image formats.
1845            // If it somehow matters for you, truncate the buffer up outptr.
1846            return buffer;
1847        }
1848    ;
1849    if (Uint8Array) {
1850        base64_ranks = new Uint8Array([
1851              62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1
1852            , -1, -1,  0, -1, -1, -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9
1853            , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
1854            , -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
1855            , 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51
1856        ]);
1857    }
1858    if (HTMLCanvasElement && (!canvas_proto.toBlob || !canvas_proto.toBlobHD)) {
1859        if (!canvas_proto.toBlob)
1860        canvas_proto.toBlob = function(callback, type /*, ...args*/) {
1861              if (!type) {
1862                type = "image/png";
1863            } if (this.mozGetAsFile) {
1864                callback(this.mozGetAsFile("canvas", type));
1865                return;
1866            } if (this.msToBlob && /^\s*image\/png\s*(?:$|;)/i.test(type)) {
1867                callback(this.msToBlob());
1868                return;
1869            }
1870    
1871            var
1872                  args = Array.prototype.slice.call(arguments, 1)
1873                , dataURI = this[to_data_url].apply(this, args)
1874                , header_end = dataURI.indexOf(",")
1875                , data = dataURI.substring(header_end + 1)
1876                , is_base64 = is_base64_regex.test(dataURI.substring(0, header_end))
1877                , blob
1878            ;
1879            if (Blob.fake) {
1880                // no reason to decode a data: URI that's just going to become a data URI again
1881                blob = new Blob
1882                if (is_base64) {
1883                    blob.encoding = "base64";
1884                } else {
1885                    blob.encoding = "URI";
1886                }
1887                blob.data = data;
1888                blob.size = data.length;
1889            } else if (Uint8Array) {
1890                if (is_base64) {
1891                    blob = new Blob([decode_base64(data)], {type: type});
1892                } else {
1893                    blob = new Blob([decodeURIComponent(data)], {type: type});
1894                }
1895            }
1896            callback(blob);
1897        };
1898    
1899        if (!canvas_proto.toBlobHD && canvas_proto.toDataURLHD) {
1900            canvas_proto.toBlobHD = function() {
1901                to_data_url = "toDataURLHD";
1902                var blob = this.toBlob();
1903                to_data_url = "toDataURL";
1904                return blob;
1905            }
1906        } else {
1907            canvas_proto.toBlobHD = canvas_proto.toBlob;
1908        }
1909    }
1910    }(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));
1911},{}],11:[function(require,module,exports){
1912/*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */
1913jQuery.migrateMute===void 0&&(jQuery.migrateMute=!0),function(e,t,n){function r(n){var r=t.console;i[n]||(i[n]=!0,e.migrateWarnings.push(n),r&&r.warn&&!e.migrateMute&&(r.warn("JQMIGRATE: "+n),e.migrateTrace&&r.trace&&r.trace()))}function a(t,a,i,o){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(o),i},set:function(e){r(o),i=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=i}var i={};e.migrateWarnings=[],!e.migrateMute&&t.console&&t.console.log&&t.console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){i={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQuery is not compatible with Quirks Mode");var o=e("<input/>",{size:1}).attr("size")&&e.attrFn,s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",o||{},"jQuery.attrFn is deprecated"),e.attr=function(t,a,i,u){var c=a.toLowerCase(),g=t&&t.nodeType;return u&&(4>s.length&&r("jQuery.fn.attr( props, pass ) is deprecated"),t&&!d.test(g)&&(o?a in o:e.isFunction(e.fn[a])))?e(t)[a](i):("type"===a&&i!==n&&l.test(t.no
vendor: 5,797 bytes, lines 1913-1915
1913deName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[c]&&p.test(c)&&(e.attrHooks[c]={get:function(t,r){var a,i=e.prop(t,r);return i===!0||"boolean"!=typeof i&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(c)&&r("jQuery.fn.attr('"+c+"') may use property instead of attribute")),s.call(e,t,a,i))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQuery.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQuery.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^([^<]*)(<[\w\W]+>)([^>]*)$/;e.fn.init=function(t,n,a){var i;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(i=y.exec(e.trim(t)))&&i[0]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),i[3]&&r("$(html) HTML text after last tag is ignored"),"#"===i[0].charAt(0)&&(r("HTML string cannot start with a '#' character"),e.error("JQMIGRATE: Invalid selector string (XSS)")),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(i[2],n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQuery.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e.browser||(g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h),a(e,"browser",e.browser,"jQuery.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQuery.sub() is deprecated"),t},e.ajaxSetup({converters:{"text json":e.parseJSON}});var b=e.fn.data;e.fn.data=function(t){var a,i,o=this[0];return!o||"events"!==t||1!==arguments.length||(a=e.data(o,t),i=e._data(o,t),a!==n&&a!==i||i===n)?b.apply(this,arguments):(r("Use of jQuery.fn.data('events') is deprecated"),i)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,i,o){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQuery.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),i)for(c=function(e){return!e.type||j.test(e.type)?o?o.push(e.parentNode?e.parentNode.removeChild(e):e):i.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(i.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,T=e.fn.live,M=e.fn.die,S="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",C=RegExp("\\b(?:"+S+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,i){e!==document&&C.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,i)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQuery.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQuery.fn.toggle(handler, handler...) is deprecated");var a=arguments,i=t.guid||e.guid++,o=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%o;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=i;a.length>o;)a[o++].guid=i;return this.click(s)},e.fn.live=function(t,n,a){return r("jQuery.fn.live() is deprecated"),T?T.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQuery.fn.die() is deprecated"),M?M.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return n||C.test(e)||r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(S.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQuery,window);
1914},{}],12:[function(require,module,exports){
1915// -----------------------------------------------------------------------
1916// Eros Fratini - [email protected]
1917// jqprint 0.3
1918//
1919// - 19/06/2009 - some new implementations, added Opera support
1920// - 11/05/2009 - first sketch
1921//
1922// Printing plug-in for jQuery, evolution of jPrintArea: http://plugins.jquery.com/project/jPrintArea
1923// requires jQuery 1.3.x
1924//
1925// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
1926//------------------------------------------------------------------------
1927
1928(function($) {
1929    var opt;
1930
1931    $.fn.jqprint = function (options) {
1932        opt = $.extend({}, $.fn.jqprint.defaults, options);
1933
1934        var $element = (this instanceof jQuery) ? this : $(this);
1935        
1936        if (opt.operaSupport && $.browser.opera) 
1937        { 
1938            var tab = window.open("","jqPrint-preview");
1939            tab.document.open();
1940
1941            var doc = tab.document;
1942        }
1943        else 
1944        {
1945            var $iframe = $("<iframe  />");
1946        
1947            if (!opt.debug) { $iframe.css({ position: "absolute", width: "0px", height: "0px", left: "-600px", top: "-600px" }); }
1948
1949            $iframe.appendTo("body");
1950            var doc = $iframe[0].contentWindow.document;
1951        }
1952        
1953        if (opt.importCSS)
1954        {
1955            if ($("link[media=print]").length > 0) 
1956            {
1957                $("link[media=print]").each( function() {
1958                    doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' media='print' />");
1959                });
1960            }
1961            else 
1962            {
1963                $("link").each( function() {
1964                    doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' />");
1965                });
1966            }
1967        }
1968        
1969        if (opt.printContainer) { doc.write($element.outer()); }
1970        else { $element.each( function() { doc.write($(this).html()); }); }
1971        
1972        doc.close();
1973        
1974        (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).focus();
1975        setTimeout( function() { (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print(); if (tab) { tab.close(); } }, 1000);
1976    }
1977    
1978    $.fn.jqprint.defaults = {
1979		debug: false,
1980		importCSS: true, 
1981		printContainer: true,
1982		operaSupport: true
1983	};
1984
1985    // Thanks to 9__, found at http://users.livejournal.com/9__/380664.html
1986    jQuery.fn.outer = function() {
1987      return $($('<div></div>').html(this.clone())).html();
1988    } 
1989})(jQuery);
1990},{}],13:[function(require,module,exports){
1991var QRCode;!function(){function t(t){this.mode=r.MODE_8BIT_BYTE,this.data=t,this.parsedData=[];for(var e=0,o=this.data.length;e<o;e++){var i=[],n=this.data.charCodeAt(e);n>65536?(i[0]=240|(1835008&n)>>>18,i[1]=128|(258048&n)>>>12,i[2]=128|(4032&n)>>>6,i[3]=128|63&n):n>2048?(i[0]=224|(61440&n)>>>12,i[1]=128|(4032&n)>>>6,i[2]=128|63&n):n>128?(i[0]=192|(1984&n)>>>6,i[1]=128|63&n):i[0]=n,this.parsedData.push(i)}this.parsedData=Array.prototype.concat.apply([],this.parsedData),this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function e(t,e){this.typeNumber=t,this.errorCorrectLevel=e,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}t.prototype={getLength:function(t){return this.parsedData.length},write:function(t){for(var e=0,r=this.parsedData.length;e<r;e++)t.put(this.parsedData[e],8)}},e.prototype={addData:function(e){var r=new t(e);this.dataList.push(r),this.dataCache=null},isDark:function(t,e){if(t<0||this.moduleCount<=t||e<0||this.moduleCount<=e)throw new Error(t+","+e);return this.modules[t][e]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(t,r){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++){this.modules[o]=new Array(this.moduleCount);for(var i=0;i<this.moduleCount;i++)this.modules[o][i]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(t,r),this.typeNumber>=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=e.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,r)},setupPositionProbePattern:function(t,e){for(var r=-1;r<=7;r++)if(!(t+r<=-1||this.moduleCount<=t+r))for(var o=-1;o<=7;o++)e+o<=-1||this.moduleCount<=e+o||(this.modules[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},getBestMaskPattern:function(){for(var t=0,e=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=g.getLostPoint(this);(0==r||t>o)&&(t=o,e=r)}return e},createMovieClip:function(t,e,r){var o=t.createEmptyMovieClip(e,r);this.make();for(var i=0;i<this.modules.length;i++)for(var n=1*i,a=0;a<this.modules[i].length;a++){var s=1*a;this.modules[i][a]&&(o.beginFill(0,100),o.moveTo(s,n),o.lineTo(s+1,n),o.lineTo(s+1,n+1),o.lineTo(s,n+1),o.endFill())}return o},setupTimingPattern:function(){for(var t=8;t<this.moduleCount-8;t++)null==this.modules[t][6]&&(this.modules[t][6]=t%2==0);for(var e=8;e<this.moduleCount-8;e++)null==this.modules[6][e]&&(this.modules[6][e]=e%2==0)},setupPositionAdjustPattern:function(){for(var t=g.getPatternPosition(this.typeNumber),e=0;e<t.length;e++)for(var r=0;r<t.length;r++){var o=t[e],i=t[r];
vendor: 4,143 bytes, line 1991
1991if(null==this.modules[o][i])for(var n=-2;n<=2;n++)for(var a=-2;a<=2;a++)this.modules[o+n][i+a]=-2==n||2==n||-2==a||2==a||0==n&&0==a}},setupTypeNumber:function(t){for(var e=g.getBCHTypeNumber(this.typeNumber),r=0;r<18;r++){var o=!t&&1==(e>>r&1);this.modules[Math.floor(r/3)][r%3+this.moduleCount-8-3]=o}for(r=0;r<18;r++){o=!t&&1==(e>>r&1);this.modules[r%3+this.moduleCount-8-3][Math.floor(r/3)]=o}},setupTypeInfo:function(t,e){for(var r=this.errorCorrectLevel<<3|e,o=g.getBCHTypeInfo(r),i=0;i<15;i++){var n=!t&&1==(o>>i&1);i<6?this.modules[i][8]=n:i<8?this.modules[i+1][8]=n:this.modules[this.moduleCount-15+i][8]=n}for(i=0;i<15;i++){n=!t&&1==(o>>i&1);i<8?this.modules[8][this.moduleCount-i-1]=n:i<9?this.modules[8][15-i-1+1]=n:this.modules[8][15-i-1]=n}this.modules[this.moduleCount-8][8]=!t},mapData:function(t,e){for(var r=-1,o=this.moduleCount-1,i=7,n=0,a=this.moduleCount-1;a>0;a-=2)for(6==a&&a--;;){for(var s=0;s<2;s++)if(null==this.modules[o][a-s]){var h=!1;n<t.length&&(h=1==(t[n]>>>i&1)),g.getMask(e,o,a-s)&&(h=!h),this.modules[o][a-s]=h,-1==--i&&(n++,i=7)}if((o+=r)<0||this.moduleCount<=o){o-=r,r=-r;break}}}},e.PAD0=236,e.PAD1=17,e.createData=function(t,r,o){for(var i=m.getRSBlocks(t,r),n=new _,a=0;a<o.length;a++){var s=o[a];n.put(s.mode,4),n.put(s.getLength(),g.getLengthInBits(s.mode,t)),s.write(n)}var h=0;for(a=0;a<i.length;a++)h+=i[a].dataCount;if(n.getLengthInBits()>8*h)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+8*h+")");for(n.getLengthInBits()+4<=8*h&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*h||(n.put(e.PAD0,8),n.getLengthInBits()>=8*h));)n.put(e.PAD1,8);return e.createBytes(n,i)},e.createBytes=function(t,e){for(var r=0,o=0,i=0,n=new Array(e.length),a=new Array(e.length),s=0;s<e.length;s++){var h=e[s].dataCount,l=e[s].totalCount-h;o=Math.max(o,h),i=Math.max(i,l),n[s]=new Array(h);for(var u=0;u<n[s].length;u++)n[s][u]=255&t.buffer[u+r];r+=h;var f=g.getErrorCorrectPolynomial(l),d=new p(n[s],f.getLength()-1).mod(f);a[s]=new Array(f.getLength()-1);for(u=0;u<a[s].length;u++){var c=u+d.getLength()-a[s].length;a[s][u]=c>=0?d.get(c):0}}var m=0;for(u=0;u<e.length;u++)m+=e[u].totalCount;var _=new Array(m),v=0;for(u=0;u<o;u++)for(s=0;s<e.length;s++)u<n[s].length&&(_[v++]=n[s][u]);for(u=0;u<i;u++)for(s=0;s<e.length;s++)u<a[s].length&&(_[v++]=a[s][u]);return _};for(var r={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},o={L:1,M:0,Q:3,H:2},i=0,n=1,a=2,s=3,h=4,l=5,u=6,f=7,g={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(t){for(var e=t<<10;g.getBCHDigit(e)-g.getBCHDigit(g.G15)>=0;)e^=g.G15<<g.getBCHDigit(e)-g.getBCHDigit(g.G15);return(t<<10|e)^g.G15_MASK},getBCHTypeNumber:function(t){for(var e=t<<12;g.getBCHDigit(e)-g.getBCHDigit(g.G18)>=0;)e^=g.G18<<g.getBCHDigit(e)-g.getBCHDigit(g.G18);return t<<12|e},getBCHDigit:function(t){for(var e=0;0!=t;)e++,t>>>=1;return e},getPatternPosition:function(t){return g.PATTERN_POSITION_TABLE[t-1]},getMask:function(t,e,r){switch(t){case i:return(e+r)%2==0;case n:return e%2==0;case a:return r%3==0;case s:return(e+r)%3==0;case h:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case l:return e*r%2+e*r%3==0;case u:return(e*r%2+e*r%3)%2==0;case f:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}},getErrorCorrectPolynomial:function(t){for(var e=new p([1],0),r=0;r<t;r++)e=e.multiply(new p([1,d.gexp(r)],0));return e},getLengthInBits:function(t,e){if(1<=e&&e<10)switch(t){case r.MODE_NUMBER:return 10;case r.MODE_ALPHA_NUM:return 9;
vendor: 6,366 bytes, line 1991
1991case r.MODE_8BIT_BYTE:case r.MODE_KANJI:return 8;default:throw new Error("mode:"+t)}else if(e<27)switch(t){case r.MODE_NUMBER:return 12;case r.MODE_ALPHA_NUM:return 11;case r.MODE_8BIT_BYTE:return 16;case r.MODE_KANJI:return 10;default:throw new Error("mode:"+t)}else{if(!(e<41))throw new Error("type:"+e);switch(t){case r.MODE_NUMBER:return 14;case r.MODE_ALPHA_NUM:return 13;case r.MODE_8BIT_BYTE:return 16;case r.MODE_KANJI:return 12;default:throw new Error("mode:"+t)}}},getLostPoint:function(t){for(var e=t.getModuleCount(),r=0,o=0;o<e;o++)for(var i=0;i<e;i++){for(var n=0,a=t.isDark(o,i),s=-1;s<=1;s++)if(!(o+s<0||e<=o+s))for(var h=-1;h<=1;h++)i+h<0||e<=i+h||0==s&&0==h||a==t.isDark(o+s,i+h)&&n++;n>5&&(r+=3+n-5)}for(o=0;o<e-1;o++)for(i=0;i<e-1;i++){var l=0;t.isDark(o,i)&&l++,t.isDark(o+1,i)&&l++,t.isDark(o,i+1)&&l++,t.isDark(o+1,i+1)&&l++,0!=l&&4!=l||(r+=3)}for(o=0;o<e;o++)for(i=0;i<e-6;i++)t.isDark(o,i)&&!t.isDark(o,i+1)&&t.isDark(o,i+2)&&t.isDark(o,i+3)&&t.isDark(o,i+4)&&!t.isDark(o,i+5)&&t.isDark(o,i+6)&&(r+=40);for(i=0;i<e;i++)for(o=0;o<e-6;o++)t.isDark(o,i)&&!t.isDark(o+1,i)&&t.isDark(o+2,i)&&t.isDark(o+3,i)&&t.isDark(o+4,i)&&!t.isDark(o+5,i)&&t.isDark(o+6,i)&&(r+=40);var u=0;for(i=0;i<e;i++)for(o=0;o<e;o++)t.isDark(o,i)&&u++;return r+=10*(Math.abs(100*u/e/e-50)/5)}},d={glog:function(t){if(t<1)throw new Error("glog("+t+")");return d.LOG_TABLE[t]},gexp:function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return d.EXP_TABLE[t]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},c=0;c<8;c++)d.EXP_TABLE[c]=1<<c;for(c=8;c<256;c++)d.EXP_TABLE[c]=d.EXP_TABLE[c-4]^d.EXP_TABLE[c-5]^d.EXP_TABLE[c-6]^d.EXP_TABLE[c-8];for(c=0;c<255;c++)d.LOG_TABLE[d.EXP_TABLE[c]]=c;function p(t,e){if(void 0==t.length)throw new Error(t.length+"/"+e);for(var r=0;r<t.length&&0==t[r];)r++;this.num=new Array(t.length-r+e);for(var o=0;o<t.length-r;o++)this.num[o]=t[o+r]}function m(t,e){this.totalCount=t,this.dataCount=e}function _(){this.buffer=[],this.length=0}p.prototype={get:function(t){return this.num[t]},getLength:function(){return this.num.length},multiply:function(t){for(var e=new Array(this.getLength()+t.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<t.getLength();o++)e[r+o]^=d.gexp(d.glog(this.get(r))+d.glog(t.get(o)));return new p(e,0)},mod:function(t){if(this.getLength()-t.getLength()<0)return this;for(var e=d.glog(this.get(0))-d.glog(t.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(o=0;o<t.getLength();o++)r[o]^=d.gexp(d.glog(t.get(o))+e);return new p(r,0).mod(t)}},m.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],m.getRSBlocks=function(t,e){var r=m.getRsBlockTable(t,e);if(void 0==r)throw new Error("bad rs block @ typeNumber:"+t+"/errorCorrectLevel:"+e);for(var o=r.length/3,i=[],n=0;n<o;n++)for(var a=r[3*n+0],s=r[3*n+1],h=r[3*n+2],l=0;l<a;l++)i.push(new m(s,h));return i},m.getRsBlockTable=function(t,e){switch(e){case o.L:return m.RS_BLOCK_TABLE[4*(t-1)+0];case o.M:return m.RS_BLOCK_TABLE[4*(t-1)+1];case o.Q:return m.RS_BLOCK_TABLE[4*(t-1)+2];case o.H:return m.RS_BLOCK_TABLE[4*(t-1)+3];default:return}},_.prototype={get:function(t){var e=Math.floor(t/8);return 1==(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(var r=0;r<e;r++)this.putBit(1==(t>>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};var v=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,8
19916,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];function C(){var t=!1,e=navigator.userAgent;if(/android/i.test(e)){t=!0;var r=e.toString().match(/android ([0-9]\.[0-9])/i);r&&r[1]&&(t=parseFloat(r[1]))}return t}var w=function(){var t=function(t,e){this._el=t,this._htOption=e};return t.prototype.draw=function(t){var e=this._htOption,r=this._el,o=t.getModuleCount();Math.floor(e.width/o),Math.floor(e.height/o);function i(t,e){var r=document.createElementNS("http://www.w3.org/2000/svg",t);for(var o in e)e.hasOwnProperty(o)&&r.setAttribute(o,e[o]);return r}this.clear();var n=i("svg",{viewBox:"0 0 "+String(o)+" "+String(o),width:"100%",height:"100%",fill:e.colorLight});n.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),r.appendChild(n),n.appendChild(i("rect",{fill:e.colorLight,width:"100%",height:"100%"})),n.appendChild(i("rect",{fill:e.colorDark,width:"1",height:"1",id:"template"}));for(var a=0;a<o;a++)for(var s=0;s<o;s++)if(t.isDark(a,s)){var h=i("use",{x:String(s),y:String(a)});h.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),n.appendChild(h)}},t.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},t}(),D="svg"===document.documentElement.tagName.toLowerCase()?w:"undefined"==typeof CanvasRenderingContext2D?function(){var t=function(t,e){this._el=t,this._htOption=e};return t.prototype.draw=function(t){for(var e=this._htOption,r=this._el,o=t.getModuleCount(),i=Math.floor(e.width/o),n=Math.floor(e.height/o),a=['<table style="border:0;border-collapse:collapse;">'],s=0;s<o;s++){a.push("<tr>");for(var h=0;h<o;h++)a.push('<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:'+i+"px;height:"+n+"px;background-color:"+(t.isDark(s,h)?e.colorDark:e.colorLight)+';"></td>');a.push("</tr>")}a.push("</table>"),r.innerHTML=a.join("");var l=r.childNodes[0],u=(e.width-l.offsetWidth)/2,f=(e.height-l.offsetHeight)/2;u>0&&f>0&&(l.style.margin=f+"px "+u+"px")},t.prototype.clear=function(){this._el.innerHTML=""},t}():function(){function t(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}if(this._android&&this._android<=2.1){var e=1/window.devicePixelRatio,r=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(t,o,i,n,a,s,h,l,u){if("nodeName"in t&&/img/i.test(t.nodeName))for(var f=arguments.length-1;f>=1;f--)arguments[f]=arguments[f]*e;else void 0===l&&(arguments[1]*=e,arguments[2]*=e,arguments[3]*=e,arguments[4]*=e);r.apply(this,arguments)}}var o=function(t,e){this._bIsPainted=!1,this._android=C(),this._htOption=e,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=e.width,this._elCanvas.height=e.height,t.appendChild(this._elCanvas),this._el=t,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.alt="Scan me!",this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return o.prototype.draw=function(t){var e=this._elImage,r=this._oContext,o=this._htOption,i=t.getModuleCount(),n=o.width/i,a=o.height/i,s=Math.round(n),h=Math.round(a);e.style.display="none",this.clear();for(var l=0;l<i;l++)for(var u=0;u<i;u++){var f=t.isDark(l,u),g=u*n,d=l*a;r.strokeStyle=f?o.colorDark:o.colorLight,r.lineWidth=1,r.fillStyle=f?o.colorDark:o.colorLight,r.fillRect(g,d,n,a),r.strokeRect(Math.floor(g)+.5,Math.floor(d)+.5,s,h),r.strokeRect(Math.ceil(g)-.5,Math.ceil(d)-.5,s,h)}this._bIsPainted=!0},o.prototype.makeImage=function(){this._bIsPainted&&function(t,e){var r=this;if(r._fFail=e,r._fSuccess=t,null===r._bSupportDataURI){var o=document.createElement("img"),i=function(){r._bSupportDataURI=!1,r._fFail&&r._fFail.call(r)};return o.onabort=i,o.onerror=i,o.onload=function(){r._bSupportDataURI=!0,r._fSuccess&&r._fSuccess.call(r)},void(o.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==")}!0===r._bSupportDataURI&&r._fSuccess?r._fSuccess.call(r):!1===r._bSupportDataURI&&r._fFail&&r._fFail.call(r)}.call(this,t)},o.prototype.isPainted=function(){return this._bIsPainted},o.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},o.prototype.round=function(t){return t?Math.floor(1e3*t)/1e3:t},o}();function A(t,e){for(var r=1,i=function(t){var e=encodeURI(t).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return e.length+(e.length!=t?3:0)}(t),n=0,a=v.length;n<=a;n++){var s=0;switch(e){case o.L:s=v[n][0];break;case o.M:s=v[n][1];break;case o.Q:s=v[n][2];break;case o.H:s=v[n][3]}if(i<=s)break;r++}if(r>v.length)throw new Error("Too long data");return r}(QRCode=function(t,e){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:o.H},"string"==typeof e&&(e={text:e}),e)for(var r in e)this._htOption[r]=e[r];"string"==typeof t&&(t=document.getElementById(t)),this._htOption.useSVG&&(D=w),this._android=C(),this._el=t,this._oQRCode=null,this._oDrawing=new D(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)}).prototype.makeCode=function(t){this._oQRCode=new e(A(t,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(t),this._oQRCode.make(),this._el.title=t,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=o}(),"undefined"!=typeof module&&(module.exports=QRCode);
1992
1993},{}],14:[function(require,module,exports){
1994(function (global){(function (){
1995"use strict";
1996
1997require("core-js/shim");
1998
1999require("regenerator-runtime/runtime");
2000
2001require("core-js/fn/regexp/escape");
2002
2003if (global._babelPolyfill) {
2004  throw new Error("only one instance of babel-polyfill is allowed");
2005}
2006global._babelPolyfill = true;
2007
2008var DEFINE_PROPERTY = "defineProperty";
2009function define(O, key, value) {
2010  O[key] || Object[DEFINE_PROPERTY](O, key, {
2011    writable: true,
2012    configurable: true,
2013    value: value
2014  });
2015}
2016
2017define(String.prototype, "padLeft", "".padStart);
2018define(String.prototype, "padRight", "".padEnd);
2019
2020"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function (key) {
2021  [][key] && define(Array, key, Function.call.bind([][key]));
2022});
2023}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
2024},{"core-js/fn/regexp/escape":15,"core-js/shim":343,"regenerator-runtime/runtime":345}],15:[function(require,module,exports){
2025require('../../modules/core.regexp.escape');
2026module.exports = require('../../modules/_core').RegExp.escape;
2027
2028},{"../../modules/_core":37,"../../modules/core.regexp.escape":145}],16:[function(require,module,exports){
2029module.exports = function (it) {
2030  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
2031  return it;
2032};
2033
2034},{}],17:[function(require,module,exports){
2035var cof = require('./_cof');
2036module.exports = function (it, msg) {
2037  if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);
2038  return +it;
2039};
2040
2041},{"./_cof":32}],18:[function(require,module,exports){
2042// 22.1.3.31 Array.prototype[@@unscopables]
2043var UNSCOPABLES = require('./_wks')('unscopables');
2044var ArrayProto = Array.prototype;
2045if (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});
2046module.exports = function (key) {
2047  ArrayProto[UNSCOPABLES][key] = true;
2048};
2049
2050},{"./_hide":57,"./_wks":143}],19:[function(require,module,exports){
2051'use strict';
2052var at = require('./_string-at')(true);
2053
2054 // `AdvanceStringIndex` abstract operation
2055// https://tc39.github.io/ecma262/#sec-advancestringindex
2056module.exports = function (S, index, unicode) {
2057  return index + (unicode ? at(S, index).length : 1);
2058};
2059
2060},{"./_string-at":120}],20:[function(require,module,exports){
2061module.exports = function (it, Constructor, name, forbiddenField) {
vendor: 5,184 bytes, lines 2062-2202
2062  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
2063    throw TypeError(name + ': incorrect invocation!');
2064  } return it;
2065};
2066
2067},{}],21:[function(require,module,exports){
2068var isObject = require('./_is-object');
2069module.exports = function (it) {
2070  if (!isObject(it)) throw TypeError(it + ' is not an object!');
2071  return it;
2072};
2073
2074},{"./_is-object":66}],22:[function(require,module,exports){
2075// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
2076'use strict';
2077var toObject = require('./_to-object');
2078var toAbsoluteIndex = require('./_to-absolute-index');
2079var toLength = require('./_to-length');
2080
2081module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
2082  var O = toObject(this);
2083  var len = toLength(O.length);
2084  var to = toAbsoluteIndex(target, len);
2085  var from = toAbsoluteIndex(start, len);
2086  var end = arguments.length > 2 ? arguments[2] : undefined;
2087  var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
2088  var inc = 1;
2089  if (from < to && to < from + count) {
2090    inc = -1;
2091    from += count - 1;
2092    to += count - 1;
2093  }
2094  while (count-- > 0) {
2095    if (from in O) O[to] = O[from];
2096    else delete O[to];
2097    to += inc;
2098    from += inc;
2099  } return O;
2100};
2101
2102},{"./_to-absolute-index":128,"./_to-length":132,"./_to-object":133}],23:[function(require,module,exports){
2103// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
2104'use strict';
2105var toObject = require('./_to-object');
2106var toAbsoluteIndex = require('./_to-absolute-index');
2107var toLength = require('./_to-length');
2108module.exports = function fill(value /* , start = 0, end = @length */) {
2109  var O = toObject(this);
2110  var length = toLength(O.length);
2111  var aLen = arguments.length;
2112  var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);
2113  var end = aLen > 2 ? arguments[2] : undefined;
2114  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);
2115  while (endPos > index) O[index++] = value;
2116  return O;
2117};
2118
2119},{"./_to-absolute-index":128,"./_to-length":132,"./_to-object":133}],24:[function(require,module,exports){
2120var forOf = require('./_for-of');
2121
2122module.exports = function (iter, ITERATOR) {
2123  var result = [];
2124  forOf(iter, false, result.push, result, ITERATOR);
2125  return result;
2126};
2127
2128},{"./_for-of":53}],25:[function(require,module,exports){
2129// false -> Array#indexOf
2130// true  -> Array#includes
2131var toIObject = require('./_to-iobject');
2132var toLength = require('./_to-length');
2133var toAbsoluteIndex = require('./_to-absolute-index');
2134module.exports = function (IS_INCLUDES) {
2135  return function ($this, el, fromIndex) {
2136    var O = toIObject($this);
2137    var length = toLength(O.length);
2138    var index = toAbsoluteIndex(fromIndex, length);
2139    var value;
2140    // Array#includes uses SameValueZero equality algorithm
2141    // eslint-disable-next-line no-self-compare
2142    if (IS_INCLUDES && el != el) while (length > index) {
2143      value = O[index++];
2144      // eslint-disable-next-line no-self-compare
2145      if (value != value) return true;
2146    // Array#indexOf ignores holes, Array#includes - not
2147    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
2148      if (O[index] === el) return IS_INCLUDES || index || 0;
2149    } return !IS_INCLUDES && -1;
2150  };
2151};
2152
2153},{"./_to-absolute-index":128,"./_to-iobject":131,"./_to-length":132}],26:[function(require,module,exports){
2154// 0 -> Array#forEach
2155// 1 -> Array#map
2156// 2 -> Array#filter
2157// 3 -> Array#some
2158// 4 -> Array#every
2159// 5 -> Array#find
2160// 6 -> Array#findIndex
2161var ctx = require('./_ctx');
2162var IObject = require('./_iobject');
2163var toObject = require('./_to-object');
2164var toLength = require('./_to-length');
2165var asc = require('./_array-species-create');
2166module.exports = function (TYPE, $create) {
2167  var IS_MAP = TYPE == 1;
2168  var IS_FILTER = TYPE == 2;
2169  var IS_SOME = TYPE == 3;
2170  var IS_EVERY = TYPE == 4;
2171  var IS_FIND_INDEX = TYPE == 6;
2172  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
2173  var create = $create || asc;
2174  return function ($this, callbackfn, that) {
2175    var O = toObject($this);
2176    var self = IObject(O);
2177    var f = ctx(callbackfn, that, 3);
2178    var length = toLength(self.length);
2179    var index = 0;
2180    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
2181    var val, res;
2182    for (;length > index; index++) if (NO_HOLES || index in self) {
2183      val = self[index];
2184      res = f(val, index, O);
2185      if (TYPE) {
2186        if (IS_MAP) result[index] = res;   // map
2187        else if (res) switch (TYPE) {
2188          case 3: return true;             // some
2189          case 5: return val;              // find
2190          case 6: return index;            // findIndex
2191          case 2: result.push(val);        // filter
2192        } else if (IS_EVERY) return false; // every
2193      }
2194    }
2195    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
2196  };
2197};
2198
2199},{"./_array-species-create":29,"./_ctx":39,"./_iobject":62,"./_to-length":132,"./_to-object":133}],27:[function(require,module,exports){
2200var aFunction = require('./_a-function');
2201var toObject = require('./_to-object');
2202var IObject = require('./_iobject');
vendor: 4,773 bytes, lines 2203-2348
2203var toLength = require('./_to-length');
2204
2205module.exports = function (that, callbackfn, aLen, memo, isRight) {
2206  aFunction(callbackfn);
2207  var O = toObject(that);
2208  var self = IObject(O);
2209  var length = toLength(O.length);
2210  var index = isRight ? length - 1 : 0;
2211  var i = isRight ? -1 : 1;
2212  if (aLen < 2) for (;;) {
2213    if (index in self) {
2214      memo = self[index];
2215      index += i;
2216      break;
2217    }
2218    index += i;
2219    if (isRight ? index < 0 : length <= index) {
2220      throw TypeError('Reduce of empty array with no initial value');
2221    }
2222  }
2223  for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {
2224    memo = callbackfn(memo, self[index], index, O);
2225  }
2226  return memo;
2227};
2228
2229},{"./_a-function":16,"./_iobject":62,"./_to-length":132,"./_to-object":133}],28:[function(require,module,exports){
2230var isObject = require('./_is-object');
2231var isArray = require('./_is-array');
2232var SPECIES = require('./_wks')('species');
2233
2234module.exports = function (original) {
2235  var C;
2236  if (isArray(original)) {
2237    C = original.constructor;
2238    // cross-realm fallback
2239    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
2240    if (isObject(C)) {
2241      C = C[SPECIES];
2242      if (C === null) C = undefined;
2243    }
2244  } return C === undefined ? Array : C;
2245};
2246
2247},{"./_is-array":64,"./_is-object":66,"./_wks":143}],29:[function(require,module,exports){
2248// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
2249var speciesConstructor = require('./_array-species-constructor');
2250
2251module.exports = function (original, length) {
2252  return new (speciesConstructor(original))(length);
2253};
2254
2255},{"./_array-species-constructor":28}],30:[function(require,module,exports){
2256'use strict';
2257var aFunction = require('./_a-function');
2258var isObject = require('./_is-object');
2259var invoke = require('./_invoke');
2260var arraySlice = [].slice;
2261var factories = {};
2262
2263var construct = function (F, len, args) {
2264  if (!(len in factories)) {
2265    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
2266    // eslint-disable-next-line no-new-func
2267    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
2268  } return factories[len](F, args);
2269};
2270
2271module.exports = Function.bind || function bind(that /* , ...args */) {
2272  var fn = aFunction(this);
2273  var partArgs = arraySlice.call(arguments, 1);
2274  var bound = function (/* args... */) {
2275    var args = partArgs.concat(arraySlice.call(arguments));
2276    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
2277  };
2278  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
2279  return bound;
2280};
2281
2282},{"./_a-function":16,"./_invoke":61,"./_is-object":66}],31:[function(require,module,exports){
2283// getting tag from 19.1.3.6 Object.prototype.toString()
2284var cof = require('./_cof');
2285var TAG = require('./_wks')('toStringTag');
2286// ES3 wrong here
2287var ARG = cof(function () { return arguments; }()) == 'Arguments';
2288
2289// fallback for IE11 Script Access Denied error
2290var tryGet = function (it, key) {
2291  try {
2292    return it[key];
2293  } catch (e) { /* empty */ }
2294};
2295
2296module.exports = function (it) {
2297  var O, T, B;
2298  return it === undefined ? 'Undefined' : it === null ? 'Null'
2299    // @@toStringTag case
2300    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
2301    // builtinTag case
2302    : ARG ? cof(O)
2303    // ES3 arguments fallback
2304    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
2305};
2306
2307},{"./_cof":32,"./_wks":143}],32:[function(require,module,exports){
2308var toString = {}.toString;
2309
2310module.exports = function (it) {
2311  return toString.call(it).slice(8, -1);
2312};
2313
2314},{}],33:[function(require,module,exports){
2315'use strict';
2316var dP = require('./_object-dp').f;
2317var create = require('./_object-create');
2318var redefineAll = require('./_redefine-all');
2319var ctx = require('./_ctx');
2320var anInstance = require('./_an-instance');
2321var forOf = require('./_for-of');
2322var $iterDefine = require('./_iter-define');
2323var step = require('./_iter-step');
2324var setSpecies = require('./_set-species');
2325var DESCRIPTORS = require('./_descriptors');
2326var fastKey = require('./_meta').fastKey;
2327var validate = require('./_validate-collection');
2328var SIZE = DESCRIPTORS ? '_s' : 'size';
2329
2330var getEntry = function (that, key) {
2331  // fast case
2332  var index = fastKey(key);
2333  var entry;
2334  if (index !== 'F') return that._i[index];
2335  // frozen object case
2336  for (entry = that._f; entry; entry = entry.n) {
2337    if (entry.k == key) return entry;
2338  }
2339};
2340
2341module.exports = {
2342  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
2343    var C = wrapper(function (that, iterable) {
2344      anInstance(that, C, NAME, '_i');
2345      that._t = NAME;         // collection type
2346      that._i = create(null); // index
2347      that._f = undefined;    // first entry
2348      that._l = undefined;    // last entry
vendor: 5,036 bytes, lines 2349-2485
2349      that[SIZE] = 0;         // size
2350      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
2351    });
2352    redefineAll(C.prototype, {
2353      // 23.1.3.1 Map.prototype.clear()
2354      // 23.2.3.2 Set.prototype.clear()
2355      clear: function clear() {
2356        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
2357          entry.r = true;
2358          if (entry.p) entry.p = entry.p.n = undefined;
2359          delete data[entry.i];
2360        }
2361        that._f = that._l = undefined;
2362        that[SIZE] = 0;
2363      },
2364      // 23.1.3.3 Map.prototype.delete(key)
2365      // 23.2.3.4 Set.prototype.delete(value)
2366      'delete': function (key) {
2367        var that = validate(this, NAME);
2368        var entry = getEntry(that, key);
2369        if (entry) {
2370          var next = entry.n;
2371          var prev = entry.p;
2372          delete that._i[entry.i];
2373          entry.r = true;
2374          if (prev) prev.n = next;
2375          if (next) next.p = prev;
2376          if (that._f == entry) that._f = next;
2377          if (that._l == entry) that._l = prev;
2378          that[SIZE]--;
2379        } return !!entry;
2380      },
2381      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
2382      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
2383      forEach: function forEach(callbackfn /* , that = undefined */) {
2384        validate(this, NAME);
2385        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
2386        var entry;
2387        while (entry = entry ? entry.n : this._f) {
2388          f(entry.v, entry.k, this);
2389          // revert to the last existing entry
2390          while (entry && entry.r) entry = entry.p;
2391        }
2392      },
2393      // 23.1.3.7 Map.prototype.has(key)
2394      // 23.2.3.7 Set.prototype.has(value)
2395      has: function has(key) {
2396        return !!getEntry(validate(this, NAME), key);
2397      }
2398    });
2399    if (DESCRIPTORS) dP(C.prototype, 'size', {
2400      get: function () {
2401        return validate(this, NAME)[SIZE];
2402      }
2403    });
2404    return C;
2405  },
2406  def: function (that, key, value) {
2407    var entry = getEntry(that, key);
2408    var prev, index;
2409    // change existing entry
2410    if (entry) {
2411      entry.v = value;
2412    // create new entry
2413    } else {
2414      that._l = entry = {
2415        i: index = fastKey(key, true), // <- index
2416        k: key,                        // <- key
2417        v: value,                      // <- value
2418        p: prev = that._l,             // <- previous entry
2419        n: undefined,                  // <- next entry
2420        r: false                       // <- removed
2421      };
2422      if (!that._f) that._f = entry;
2423      if (prev) prev.n = entry;
2424      that[SIZE]++;
2425      // add to index
2426      if (index !== 'F') that._i[index] = entry;
2427    } return that;
2428  },
2429  getEntry: getEntry,
2430  setStrong: function (C, NAME, IS_MAP) {
2431    // add .keys, .values, .entries, [@@iterator]
2432    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
2433    $iterDefine(C, NAME, function (iterated, kind) {
2434      this._t = validate(iterated, NAME); // target
2435      this._k = kind;                     // kind
2436      this._l = undefined;                // previous
2437    }, function () {
2438      var that = this;
2439      var kind = that._k;
2440      var entry = that._l;
2441      // revert to the last existing entry
2442      while (entry && entry.r) entry = entry.p;
2443      // get next entry
2444      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
2445        // or finish the iteration
2446        that._t = undefined;
2447        return step(1);
2448      }
2449      // return step by kind
2450      if (kind == 'keys') return step(0, entry.k);
2451      if (kind == 'values') return step(0, entry.v);
2452      return step(0, [entry.k, entry.v]);
2453    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
2454
2455    // add [@@species], 23.1.2.2, 23.2.2.2
2456    setSpecies(NAME);
2457  }
2458};
2459
2460},{"./_an-instance":20,"./_ctx":39,"./_descriptors":43,"./_for-of":53,"./_iter-define":70,"./_iter-step":72,"./_meta":80,"./_object-create":85,"./_object-dp":86,"./_redefine-all":105,"./_set-species":114,"./_validate-collection":140}],34:[function(require,module,exports){
2461// https://github.com/DavidBruant/Map-Set.prototype.toJSON
2462var classof = require('./_classof');
2463var from = require('./_array-from-iterable');
2464module.exports = function (NAME) {
2465  return function toJSON() {
2466    if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
2467    return from(this);
2468  };
2469};
2470
2471},{"./_array-from-iterable":24,"./_classof":31}],35:[function(require,module,exports){
2472'use strict';
2473var redefineAll = require('./_redefine-all');
2474var getWeak = require('./_meta').getWeak;
2475var anObject = require('./_an-object');
2476var isObject = require('./_is-object');
2477var anInstance = require('./_an-instance');
2478var forOf = require('./_for-of');
2479var createArrayMethod = require('./_array-methods');
2480var $has = require('./_has');
2481var validate = require('./_validate-collection');
2482var arrayFind = createArrayMethod(5);
2483var arrayFindIndex = createArrayMethod(6);
2484var id = 0;
2485
vendor: 20,110 bytes, lines 2486-3041
2486// fallback for uncaught frozen keys
2487var uncaughtFrozenStore = function (that) {
2488  return that._l || (that._l = new UncaughtFrozenStore());
2489};
2490var UncaughtFrozenStore = function () {
2491  this.a = [];
2492};
2493var findUncaughtFrozen = function (store, key) {
2494  return arrayFind(store.a, function (it) {
2495    return it[0] === key;
2496  });
2497};
2498UncaughtFrozenStore.prototype = {
2499  get: function (key) {
2500    var entry = findUncaughtFrozen(this, key);
2501    if (entry) return entry[1];
2502  },
2503  has: function (key) {
2504    return !!findUncaughtFrozen(this, key);
2505  },
2506  set: function (key, value) {
2507    var entry = findUncaughtFrozen(this, key);
2508    if (entry) entry[1] = value;
2509    else this.a.push([key, value]);
2510  },
2511  'delete': function (key) {
2512    var index = arrayFindIndex(this.a, function (it) {
2513      return it[0] === key;
2514    });
2515    if (~index) this.a.splice(index, 1);
2516    return !!~index;
2517  }
2518};
2519
2520module.exports = {
2521  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
2522    var C = wrapper(function (that, iterable) {
2523      anInstance(that, C, NAME, '_i');
2524      that._t = NAME;      // collection type
2525      that._i = id++;      // collection id
2526      that._l = undefined; // leak store for uncaught frozen objects
2527      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
2528    });
2529    redefineAll(C.prototype, {
2530      // 23.3.3.2 WeakMap.prototype.delete(key)
2531      // 23.4.3.3 WeakSet.prototype.delete(value)
2532      'delete': function (key) {
2533        if (!isObject(key)) return false;
2534        var data = getWeak(key);
2535        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
2536        return data && $has(data, this._i) && delete data[this._i];
2537      },
2538      // 23.3.3.4 WeakMap.prototype.has(key)
2539      // 23.4.3.4 WeakSet.prototype.has(value)
2540      has: function has(key) {
2541        if (!isObject(key)) return false;
2542        var data = getWeak(key);
2543        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
2544        return data && $has(data, this._i);
2545      }
2546    });
2547    return C;
2548  },
2549  def: function (that, key, value) {
2550    var data = getWeak(anObject(key), true);
2551    if (data === true) uncaughtFrozenStore(that).set(key, value);
2552    else data[that._i] = value;
2553    return that;
2554  },
2555  ufstore: uncaughtFrozenStore
2556};
2557
2558},{"./_an-instance":20,"./_an-object":21,"./_array-methods":26,"./_for-of":53,"./_has":56,"./_is-object":66,"./_meta":80,"./_redefine-all":105,"./_validate-collection":140}],36:[function(require,module,exports){
2559'use strict';
2560var global = require('./_global');
2561var $export = require('./_export');
2562var redefine = require('./_redefine');
2563var redefineAll = require('./_redefine-all');
2564var meta = require('./_meta');
2565var forOf = require('./_for-of');
2566var anInstance = require('./_an-instance');
2567var isObject = require('./_is-object');
2568var fails = require('./_fails');
2569var $iterDetect = require('./_iter-detect');
2570var setToStringTag = require('./_set-to-string-tag');
2571var inheritIfRequired = require('./_inherit-if-required');
2572
2573module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
2574  var Base = global[NAME];
2575  var C = Base;
2576  var ADDER = IS_MAP ? 'set' : 'add';
2577  var proto = C && C.prototype;
2578  var O = {};
2579  var fixMethod = function (KEY) {
2580    var fn = proto[KEY];
2581    redefine(proto, KEY,
2582      KEY == 'delete' ? function (a) {
2583        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
2584      } : KEY == 'has' ? function has(a) {
2585        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
2586      } : KEY == 'get' ? function get(a) {
2587        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
2588      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }
2589        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }
2590    );
2591  };
2592  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
2593    new C().entries().next();
2594  }))) {
2595    // create collection constructor
2596    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
2597    redefineAll(C.prototype, methods);
2598    meta.NEED = true;
2599  } else {
2600    var instance = new C();
2601    // early implementations not supports chaining
2602    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
2603    // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false
2604    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
2605    // most early implementations doesn't supports iterables, most modern - not close it correctly
2606    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new
2607    // for early implementations -0 and +0 not the same
2608    var BUGGY_ZERO = !IS_WEAK && fails(function () {
2609      // V8 ~ Chromium 42- fails only with 5+ elements
2610      var $instance = new C();
2611      var index = 5;
2612      while (index--) $instance[ADDER](index, index);
2613      return !$instance.has(-0);
2614    });
2615    if (!ACCEPT_ITERABLES) {
2616      C = wrapper(function (target, iterable) {
2617        anInstance(target, C, NAME);
2618        var that = inheritIfRequired(new Base(), target, C);
2619        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
2620        return that;
2621      });
2622      C.prototype = proto;
2623      proto.constructor = C;
2624    }
2625    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
2626      fixMethod('delete');
2627      fixMethod('has');
2628      IS_MAP && fixMethod('get');
2629    }
2630    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
2631    // weak collections should not contains .clear method
2632    if (IS_WEAK && proto.clear) delete proto.clear;
2633  }
2634
2635  setToStringTag(C, NAME);
2636
2637  O[NAME] = C;
2638  $export($export.G + $export.W + $export.F * (C != Base), O);
2639
2640  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
2641
2642  return C;
2643};
2644
2645},{"./_an-instance":20,"./_export":47,"./_fails":49,"./_for-of":53,"./_global":55,"./_inherit-if-required":60,"./_is-object":66,"./_iter-detect":71,"./_meta":80,"./_redefine":106,"./_redefine-all":105,"./_set-to-string-tag":115}],37:[function(require,module,exports){
2646var core = module.exports = { version: '2.6.12' };
2647if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
2648
2649},{}],38:[function(require,module,exports){
2650'use strict';
2651var $defineProperty = require('./_object-dp');
2652var createDesc = require('./_property-desc');
2653
2654module.exports = function (object, index, value) {
2655  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
2656  else object[index] = value;
2657};
2658
2659},{"./_object-dp":86,"./_property-desc":104}],39:[function(require,module,exports){
2660// optional / simple context binding
2661var aFunction = require('./_a-function');
2662module.exports = function (fn, that, length) {
2663  aFunction(fn);
2664  if (that === undefined) return fn;
2665  switch (length) {
2666    case 1: return function (a) {
2667      return fn.call(that, a);
2668    };
2669    case 2: return function (a, b) {
2670      return fn.call(that, a, b);
2671    };
2672    case 3: return function (a, b, c) {
2673      return fn.call(that, a, b, c);
2674    };
2675  }
2676  return function (/* ...args */) {
2677    return fn.apply(that, arguments);
2678  };
2679};
2680
2681},{"./_a-function":16}],40:[function(require,module,exports){
2682'use strict';
2683// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
2684var fails = require('./_fails');
2685var getTime = Date.prototype.getTime;
2686var $toISOString = Date.prototype.toISOString;
2687
2688var lz = function (num) {
2689  return num > 9 ? num : '0' + num;
2690};
2691
2692// PhantomJS / old WebKit has a broken implementations
2693module.exports = (fails(function () {
2694  return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
2695}) || !fails(function () {
2696  $toISOString.call(new Date(NaN));
2697})) ? function toISOString() {
2698  if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');
2699  var d = this;
2700  var y = d.getUTCFullYear();
2701  var m = d.getUTCMilliseconds();
2702  var s = y < 0 ? '-' : y > 9999 ? '+' : '';
2703  return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
2704    '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
2705    'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
2706    ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
2707} : $toISOString;
2708
2709},{"./_fails":49}],41:[function(require,module,exports){
2710'use strict';
2711var anObject = require('./_an-object');
2712var toPrimitive = require('./_to-primitive');
2713var NUMBER = 'number';
2714
2715module.exports = function (hint) {
2716  if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');
2717  return toPrimitive(anObject(this), hint != NUMBER);
2718};
2719
2720},{"./_an-object":21,"./_to-primitive":134}],42:[function(require,module,exports){
2721// 7.2.1 RequireObjectCoercible(argument)
2722module.exports = function (it) {
2723  if (it == undefined) throw TypeError("Can't call method on  " + it);
2724  return it;
2725};
2726
2727},{}],43:[function(require,module,exports){
2728// Thank's IE8 for his funny defineProperty
2729module.exports = !require('./_fails')(function () {
2730  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
2731});
2732
2733},{"./_fails":49}],44:[function(require,module,exports){
2734var isObject = require('./_is-object');
2735var document = require('./_global').document;
2736// typeof document.createElement is 'object' in old IE
2737var is = isObject(document) && isObject(document.createElement);
2738module.exports = function (it) {
2739  return is ? document.createElement(it) : {};
2740};
2741
2742},{"./_global":55,"./_is-object":66}],45:[function(require,module,exports){
2743// IE 8- don't enum bug keys
2744module.exports = (
2745  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
2746).split(',');
2747
2748},{}],46:[function(require,module,exports){
2749// all enumerable object keys, includes symbols
2750var getKeys = require('./_object-keys');
2751var gOPS = require('./_object-gops');
2752var pIE = require('./_object-pie');
2753module.exports = function (it) {
2754  var result = getKeys(it);
2755  var getSymbols = gOPS.f;
2756  if (getSymbols) {
2757    var symbols = getSymbols(it);
2758    var isEnum = pIE.f;
2759    var i = 0;
2760    var key;
2761    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
2762  } return result;
2763};
2764
2765},{"./_object-gops":92,"./_object-keys":95,"./_object-pie":96}],47:[function(require,module,exports){
2766var global = require('./_global');
2767var core = require('./_core');
2768var hide = require('./_hide');
2769var redefine = require('./_redefine');
2770var ctx = require('./_ctx');
2771var PROTOTYPE = 'prototype';
2772
2773var $export = function (type, name, source) {
2774  var IS_FORCED = type & $export.F;
2775  var IS_GLOBAL = type & $export.G;
2776  var IS_STATIC = type & $export.S;
2777  var IS_PROTO = type & $export.P;
2778  var IS_BIND = type & $export.B;
2779  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
2780  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
2781  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
2782  var key, own, out, exp;
2783  if (IS_GLOBAL) source = name;
2784  for (key in source) {
2785    // contains in native
2786    own = !IS_FORCED && target && target[key] !== undefined;
2787    // export native or passed
2788    out = (own ? target : source)[key];
2789    // bind timers to global for call from export context
2790    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
2791    // extend global
2792    if (target) redefine(target, key, out, type & $export.U);
2793    // export
2794    if (exports[key] != out) hide(exports, key, exp);
2795    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
2796  }
2797};
2798global.core = core;
2799// type bitmap
2800$export.F = 1;   // forced
2801$export.G = 2;   // global
2802$export.S = 4;   // static
2803$export.P = 8;   // proto
2804$export.B = 16;  // bind
2805$export.W = 32;  // wrap
2806$export.U = 64;  // safe
2807$export.R = 128; // real proto method for `library`
2808module.exports = $export;
2809
2810},{"./_core":37,"./_ctx":39,"./_global":55,"./_hide":57,"./_redefine":106}],48:[function(require,module,exports){
2811var MATCH = require('./_wks')('match');
2812module.exports = function (KEY) {
2813  var re = /./;
2814  try {
2815    '/./'[KEY](re);
2816  } catch (e) {
2817    try {
2818      re[MATCH] = false;
2819      return !'/./'[KEY](re);
2820    } catch (f) { /* empty */ }
2821  } return true;
2822};
2823
2824},{"./_wks":143}],49:[function(require,module,exports){
2825module.exports = function (exec) {
2826  try {
2827    return !!exec();
2828  } catch (e) {
2829    return true;
2830  }
2831};
2832
2833},{}],50:[function(require,module,exports){
2834'use strict';
2835require('./es6.regexp.exec');
2836var redefine = require('./_redefine');
2837var hide = require('./_hide');
2838var fails = require('./_fails');
2839var defined = require('./_defined');
2840var wks = require('./_wks');
2841var regexpExec = require('./_regexp-exec');
2842
2843var SPECIES = wks('species');
2844
2845var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
2846  // #replace needs built-in support for named groups.
2847  // #match works fine because it just return the exec results, even if it has
2848  // a "grops" property.
2849  var re = /./;
2850  re.exec = function () {
2851    var result = [];
2852    result.groups = { a: '7' };
2853    return result;
2854  };
2855  return ''.replace(re, '$<a>') !== '7';
2856});
2857
2858var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
2859  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
2860  var re = /(?:)/;
2861  var originalExec = re.exec;
2862  re.exec = function () { return originalExec.apply(this, arguments); };
2863  var result = 'ab'.split(re);
2864  return result.length === 2 && result[0] === 'a' && result[1] === 'b';
2865})();
2866
2867module.exports = function (KEY, length, exec) {
2868  var SYMBOL = wks(KEY);
2869
2870  var DELEGATES_TO_SYMBOL = !fails(function () {
2871    // String methods call symbol-named RegEp methods
2872    var O = {};
2873    O[SYMBOL] = function () { return 7; };
2874    return ''[KEY](O) != 7;
2875  });
2876
2877  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
2878    // Symbol-named RegExp methods call .exec
2879    var execCalled = false;
2880    var re = /a/;
2881    re.exec = function () { execCalled = true; return null; };
2882    if (KEY === 'split') {
2883      // RegExp[@@split] doesn't call the regex's exec method, but first creates
2884      // a new one. We need to return the patched regex when creating the new one.
2885      re.constructor = {};
2886      re.constructor[SPECIES] = function () { return re; };
2887    }
2888    re[SYMBOL]('');
2889    return !execCalled;
2890  }) : undefined;
2891
2892  if (
2893    !DELEGATES_TO_SYMBOL ||
2894    !DELEGATES_TO_EXEC ||
2895    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
2896    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
2897  ) {
2898    var nativeRegExpMethod = /./[SYMBOL];
2899    var fns = exec(
2900      defined,
2901      SYMBOL,
2902      ''[KEY],
2903      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
2904        if (regexp.exec === regexpExec) {
2905          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
2906            // The native String method already delegates to @@method (this
2907            // polyfilled function), leasing to infinite recursion.
2908            // We avoid it by directly calling the native @@method method.
2909            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
2910          }
2911          return { done: true, value: nativeMethod.call(str, regexp, arg2) };
2912        }
2913        return { done: false };
2914      }
2915    );
2916    var strfn = fns[0];
2917    var rxfn = fns[1];
2918
2919    redefine(String.prototype, KEY, strfn);
2920    hide(RegExp.prototype, SYMBOL, length == 2
2921      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
2922      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
2923      ? function (string, arg) { return rxfn.call(string, this, arg); }
2924      // 21.2.5.6 RegExp.prototype[@@match](string)
2925      // 21.2.5.9 RegExp.prototype[@@search](string)
2926      : function (string) { return rxfn.call(string, this); }
2927    );
2928  }
2929};
2930
2931},{"./_defined":42,"./_fails":49,"./_hide":57,"./_redefine":106,"./_regexp-exec":108,"./_wks":143,"./es6.regexp.exec":240}],51:[function(require,module,exports){
2932'use strict';
2933// 21.2.5.3 get RegExp.prototype.flags
2934var anObject = require('./_an-object');
2935module.exports = function () {
2936  var that = anObject(this);
2937  var result = '';
2938  if (that.global) result += 'g';
2939  if (that.ignoreCase) result += 'i';
2940  if (that.multiline) result += 'm';
2941  if (that.unicode) result += 'u';
2942  if (that.sticky) result += 'y';
2943  return result;
2944};
2945
2946},{"./_an-object":21}],52:[function(require,module,exports){
2947'use strict';
2948// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
2949var isArray = require('./_is-array');
2950var isObject = require('./_is-object');
2951var toLength = require('./_to-length');
2952var ctx = require('./_ctx');
2953var IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');
2954
2955function flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {
2956  var targetIndex = start;
2957  var sourceIndex = 0;
2958  var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;
2959  var element, spreadable;
2960
2961  while (sourceIndex < sourceLen) {
2962    if (sourceIndex in source) {
2963      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
2964
2965      spreadable = false;
2966      if (isObject(element)) {
2967        spreadable = element[IS_CONCAT_SPREADABLE];
2968        spreadable = spreadable !== undefined ? !!spreadable : isArray(element);
2969      }
2970
2971      if (spreadable && depth > 0) {
2972        targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;
2973      } else {
2974        if (targetIndex >= 0x1fffffffffffff) throw TypeError();
2975        target[targetIndex] = element;
2976      }
2977
2978      targetIndex++;
2979    }
2980    sourceIndex++;
2981  }
2982  return targetIndex;
2983}
2984
2985module.exports = flattenIntoArray;
2986
2987},{"./_ctx":39,"./_is-array":64,"./_is-object":66,"./_to-length":132,"./_wks":143}],53:[function(require,module,exports){
2988var ctx = require('./_ctx');
2989var call = require('./_iter-call');
2990var isArrayIter = require('./_is-array-iter');
2991var anObject = require('./_an-object');
2992var toLength = require('./_to-length');
2993var getIterFn = require('./core.get-iterator-method');
2994var BREAK = {};
2995var RETURN = {};
2996var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
2997  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
2998  var f = ctx(fn, that, entries ? 2 : 1);
2999  var index = 0;
3000  var length, step, iterator, result;
3001  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
3002  // fast case for arrays with default iterator
3003  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
3004    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
3005    if (result === BREAK || result === RETURN) return result;
3006  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
3007    result = call(iterator, f, step.value, entries);
3008    if (result === BREAK || result === RETURN) return result;
3009  }
3010};
3011exports.BREAK = BREAK;
3012exports.RETURN = RETURN;
3013
3014},{"./_an-object":21,"./_ctx":39,"./_is-array-iter":63,"./_iter-call":68,"./_to-length":132,"./core.get-iterator-method":144}],54:[function(require,module,exports){
3015module.exports = require('./_shared')('native-function-to-string', Function.toString);
3016
3017},{"./_shared":117}],55:[function(require,module,exports){
3018// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
3019var global = module.exports = typeof window != 'undefined' && window.Math == Math
3020  ? window : typeof self != 'undefined' && self.Math == Math ? self
3021  // eslint-disable-next-line no-new-func
3022  : Function('return this')();
3023if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
3024
3025},{}],56:[function(require,module,exports){
3026var hasOwnProperty = {}.hasOwnProperty;
3027module.exports = function (it, key) {
3028  return hasOwnProperty.call(it, key);
3029};
3030
3031},{}],57:[function(require,module,exports){
3032var dP = require('./_object-dp');
3033var createDesc = require('./_property-desc');
3034module.exports = require('./_descriptors') ? function (object, key, value) {
3035  return dP.f(object, key, createDesc(1, value));
3036} : function (object, key, value) {
3037  object[key] = value;
3038  return object;
3039};
3040
3041}
3041,{"./_descriptors":43,"./_object-dp":86,"./_property-desc":104}],58:[function(require,module,exports){
3042var document = require('./_global').document;
3043module.exports = document && document.documentElement;
3044
3045},{"./_global":55}],59:[function(require,module,exports){
3046module.exports = !require('./_descriptors') && !require('./_fails')(function () {
3047  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;
3048});
3049
3050},{"./_descriptors":43,"./_dom-create":44,"./_fails":49}],60:[function(require,module,exports){
3051var isObject = require('./_is-object');
3052var setPrototypeOf = require('./_set-proto').set;
3053module.exports = function (that, target, C) {
3054  var S = target.constructor;
3055  var P;
3056  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
3057    setPrototypeOf(that, P);
3058  } return that;
3059};
3060
3061},{"./_is-object":66,"./_set-proto":113}],61:[function(require,module,exports){
3062// fast apply, http://jsperf.lnkit.com/fast-apply/5
3063module.exports = function (fn, args, that) {
3064  var un = that === undefined;
3065  switch (args.length) {
3066    case 0: return un ? fn()
3067                      : fn.call(that);
3068    case 1: return un ? fn(args[0])
3069                      : fn.call(that, args[0]);
3070    case 2: return un ? fn(args[0], args[1])
3071                      : fn.call(that, args[0], args[1]);
3072    case 3: return un ? fn(args[0], args[1], args[2])
3073                      : fn.call(that, args[0], args[1], args[2]);
3074    case 4: return un ? fn(args[0], args[1], args[2], args[3])
3075                      : fn.call(that, args[0], args[1], args[2], args[3]);
3076  } return fn.apply(that, args);
3077};
3078
3079},{}],62:[function(require,module,exports){
3080// fallback for non-array-like ES3 and non-enumerable old V8 strings
3081var cof = require('./_cof');
3082// eslint-disable-next-line no-prototype-builtins
3083module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
3084  return cof(it) == 'String' ? it.split('') : Object(it);
3085};
3086
3087},{"./_cof":32}],63:[function(require,module,exports){
3088// check on default Array iterator
3089var Iterators = require('./_iterators');
3090var ITERATOR = require('./_wks')('iterator');
3091var ArrayProto = Array.prototype;
3092
3093module.exports = function (it) {
3094  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
3095};
3096
3097},{"./_iterators":73,"./_wks":143}],64:[function(require,module,exports){
3098// 7.2.2 IsArray(argument)
3099var cof = require('./_cof');
3100module.exports = Array.isArray || function isArray(arg) {
3101  return cof(arg) == 'Array';
3102};
3103
3104},{"./_cof":32}],65:[function(require,module,exports){
3105// 20.1.2.3 Number.isInteger(number)
3106var isObject = require('./_is-object');
3107var floor = Math.floor;
3108module.exports = function isInteger(it) {
3109  return !isObject(it) && isFinite(it) && floor(it) === it;
3110};
3111
3112},{"./_is-object":66}],66:[function(require,module,exports){
3113module.exports = function (it) {
3114  return typeof it === 'object' ? it !== null : typeof it === 'function';
3115};
3116
3117},{}],67:[function(require,module,exports){
3118// 7.2.8 IsRegExp(argument)
3119var isObject = require('./_is-object');
3120var cof = require('./_cof');
3121var MATCH = require('./_wks')('match');
3122module.exports = function (it) {
3123  var isRegExp;
3124  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
3125};
3126
3127},{"./_cof":32,"./_is-object":66,"./_wks":143}],68:[function(require,module,exports){
3128// call something on iterator step with safe closing on error
3129var anObject = require('./_an-object');
3130module.exports = function (iterator, fn, value, entries) {
3131  try {
3132    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
3133  // 7.4.6 IteratorClose(iterator, completion)
3134  } catch (e) {
3135    var ret = iterator['return'];
3136    if (ret !== undefined) anObject(ret.call(iterator));
3137    throw e;
3138  }
3139};
3140
3141},{"./_an-object":21}],69:[function(require,module,exports){
3142'use strict';
3143var create = require('./_object-create');
3144var descriptor = require('./_property-desc');
3145var setToStringTag = require('./_set-to-string-tag');
3146var IteratorPrototype = {};
3147
3148// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
3149require('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });
3150
3151module.exports = function (Constructor, NAME, next) {
3152  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
3153  setToStringTag(Constructor, NAME + ' Iterator');
3154};
3155
3156},{"./_hide":57,"./_object-create":85,"./_property-desc":104,"./_set-to-string-tag":115,"./_wks":143}],70:[function(require,module,exports){
3157'use strict';
3158var LIBRARY = require('./_library');
vendor: 4,497 bytes, lines 3159-3282
3159var $export = require('./_export');
3160var redefine = require('./_redefine');
3161var hide = require('./_hide');
3162var Iterators = require('./_iterators');
3163var $iterCreate = require('./_iter-create');
3164var setToStringTag = require('./_set-to-string-tag');
3165var getPrototypeOf = require('./_object-gpo');
3166var ITERATOR = require('./_wks')('iterator');
3167var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
3168var FF_ITERATOR = '@@iterator';
3169var KEYS = 'keys';
3170var VALUES = 'values';
3171
3172var returnThis = function () { return this; };
3173
3174module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
3175  $iterCreate(Constructor, NAME, next);
3176  var getMethod = function (kind) {
3177    if (!BUGGY && kind in proto) return proto[kind];
3178    switch (kind) {
3179      case KEYS: return function keys() { return new Constructor(this, kind); };
3180      case VALUES: return function values() { return new Constructor(this, kind); };
3181    } return function entries() { return new Constructor(this, kind); };
3182  };
3183  var TAG = NAME + ' Iterator';
3184  var DEF_VALUES = DEFAULT == VALUES;
3185  var VALUES_BUG = false;
3186  var proto = Base.prototype;
3187  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
3188  var $default = $native || getMethod(DEFAULT);
3189  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
3190  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
3191  var methods, key, IteratorPrototype;
3192  // Fix native
3193  if ($anyNative) {
3194    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
3195    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
3196      // Set @@toStringTag to native iterators
3197      setToStringTag(IteratorPrototype, TAG, true);
3198      // fix for some old engines
3199      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
3200    }
3201  }
3202  // fix Array#{values, @@iterator}.name in V8 / FF
3203  if (DEF_VALUES && $native && $native.name !== VALUES) {
3204    VALUES_BUG = true;
3205    $default = function values() { return $native.call(this); };
3206  }
3207  // Define iterator
3208  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
3209    hide(proto, ITERATOR, $default);
3210  }
3211  // Plug for library
3212  Iterators[NAME] = $default;
3213  Iterators[TAG] = returnThis;
3214  if (DEFAULT) {
3215    methods = {
3216      values: DEF_VALUES ? $default : getMethod(VALUES),
3217      keys: IS_SET ? $default : getMethod(KEYS),
3218      entries: $entries
3219    };
3220    if (FORCED) for (key in methods) {
3221      if (!(key in proto)) redefine(proto, key, methods[key]);
3222    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
3223  }
3224  return methods;
3225};
3226
3227},{"./_export":47,"./_hide":57,"./_iter-create":69,"./_iterators":73,"./_library":74,"./_object-gpo":93,"./_redefine":106,"./_set-to-string-tag":115,"./_wks":143}],71:[function(require,module,exports){
3228var ITERATOR = require('./_wks')('iterator');
3229var SAFE_CLOSING = false;
3230
3231try {
3232  var riter = [7][ITERATOR]();
3233  riter['return'] = function () { SAFE_CLOSING = true; };
3234  // eslint-disable-next-line no-throw-literal
3235  Array.from(riter, function () { throw 2; });
3236} catch (e) { /* empty */ }
3237
3238module.exports = function (exec, skipClosing) {
3239  if (!skipClosing && !SAFE_CLOSING) return false;
3240  var safe = false;
3241  try {
3242    var arr = [7];
3243    var iter = arr[ITERATOR]();
3244    iter.next = function () { return { done: safe = true }; };
3245    arr[ITERATOR] = function () { return iter; };
3246    exec(arr);
3247  } catch (e) { /* empty */ }
3248  return safe;
3249};
3250
3251},{"./_wks":143}],72:[function(require,module,exports){
3252module.exports = function (done, value) {
3253  return { value: value, done: !!done };
3254};
3255
3256},{}],73:[function(require,module,exports){
3257module.exports = {};
3258
3259},{}],74:[function(require,module,exports){
3260module.exports = false;
3261
3262},{}],75:[function(require,module,exports){
3263// 20.2.2.14 Math.expm1(x)
3264var $expm1 = Math.expm1;
3265module.exports = (!$expm1
3266  // Old FF bug
3267  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168
3268  // Tor Browser bug
3269  || $expm1(-2e-17) != -2e-17
3270) ? function expm1(x) {
3271  return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
3272} : $expm1;
3273
3274},{}],76:[function(require,module,exports){
3275// 20.2.2.16 Math.fround(x)
3276var sign = require('./_math-sign');
3277var pow = Math.pow;
3278var EPSILON = pow(2, -52);
3279var EPSILON32 = pow(2, -23);
3280var MAX32 = pow(2, 127) * (2 - EPSILON32);
3281var MIN32 = pow(2, -126);
3282
vendor: 4,706 bytes, lines 3283-3418
3283var roundTiesToEven = function (n) {
3284  return n + 1 / EPSILON - 1 / EPSILON;
3285};
3286
3287module.exports = Math.fround || function fround(x) {
3288  var $abs = Math.abs(x);
3289  var $sign = sign(x);
3290  var a, result;
3291  if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
3292  a = (1 + EPSILON32 / EPSILON) * $abs;
3293  result = a - (a - $abs);
3294  // eslint-disable-next-line no-self-compare
3295  if (result > MAX32 || result != result) return $sign * Infinity;
3296  return $sign * result;
3297};
3298
3299},{"./_math-sign":79}],77:[function(require,module,exports){
3300// 20.2.2.20 Math.log1p(x)
3301module.exports = Math.log1p || function log1p(x) {
3302  return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
3303};
3304
3305},{}],78:[function(require,module,exports){
3306// https://rwaldron.github.io/proposal-math-extensions/
3307module.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {
3308  if (
3309    arguments.length === 0
3310      // eslint-disable-next-line no-self-compare
3311      || x != x
3312      // eslint-disable-next-line no-self-compare
3313      || inLow != inLow
3314      // eslint-disable-next-line no-self-compare
3315      || inHigh != inHigh
3316      // eslint-disable-next-line no-self-compare
3317      || outLow != outLow
3318      // eslint-disable-next-line no-self-compare
3319      || outHigh != outHigh
3320  ) return NaN;
3321  if (x === Infinity || x === -Infinity) return x;
3322  return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;
3323};
3324
3325},{}],79:[function(require,module,exports){
3326// 20.2.2.28 Math.sign(x)
3327module.exports = Math.sign || function sign(x) {
3328  // eslint-disable-next-line no-self-compare
3329  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
3330};
3331
3332},{}],80:[function(require,module,exports){
3333var META = require('./_uid')('meta');
3334var isObject = require('./_is-object');
3335var has = require('./_has');
3336var setDesc = require('./_object-dp').f;
3337var id = 0;
3338var isExtensible = Object.isExtensible || function () {
3339  return true;
3340};
3341var FREEZE = !require('./_fails')(function () {
3342  return isExtensible(Object.preventExtensions({}));
3343});
3344var setMeta = function (it) {
3345  setDesc(it, META, { value: {
3346    i: 'O' + ++id, // object ID
3347    w: {}          // weak collections IDs
3348  } });
3349};
3350var fastKey = function (it, create) {
3351  // return primitive with prefix
3352  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
3353  if (!has(it, META)) {
3354    // can't set metadata to uncaught frozen object
3355    if (!isExtensible(it)) return 'F';
3356    // not necessary to add metadata
3357    if (!create) return 'E';
3358    // add missing metadata
3359    setMeta(it);
3360  // return object ID
3361  } return it[META].i;
3362};
3363var getWeak = function (it, create) {
3364  if (!has(it, META)) {
3365    // can't set metadata to uncaught frozen object
3366    if (!isExtensible(it)) return true;
3367    // not necessary to add metadata
3368    if (!create) return false;
3369    // add missing metadata
3370    setMeta(it);
3371  // return hash weak collections IDs
3372  } return it[META].w;
3373};
3374// add metadata on freeze-family methods calling
3375var onFreeze = function (it) {
3376  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
3377  return it;
3378};
3379var meta = module.exports = {
3380  KEY: META,
3381  NEED: false,
3382  fastKey: fastKey,
3383  getWeak: getWeak,
3384  onFreeze: onFreeze
3385};
3386
3387},{"./_fails":49,"./_has":56,"./_is-object":66,"./_object-dp":86,"./_uid":138}],81:[function(require,module,exports){
3388var Map = require('./es6.map');
3389var $export = require('./_export');
3390var shared = require('./_shared')('metadata');
3391var store = shared.store || (shared.store = new (require('./es6.weak-map'))());
3392
3393var getOrCreateMetadataMap = function (target, targetKey, create) {
3394  var targetMetadata = store.get(target);
3395  if (!targetMetadata) {
3396    if (!create) return undefined;
3397    store.set(target, targetMetadata = new Map());
3398  }
3399  var keyMetadata = targetMetadata.get(targetKey);
3400  if (!keyMetadata) {
3401    if (!create) return undefined;
3402    targetMetadata.set(targetKey, keyMetadata = new Map());
3403  } return keyMetadata;
3404};
3405var ordinaryHasOwnMetadata = function (MetadataKey, O, P) {
3406  var metadataMap = getOrCreateMetadataMap(O, P, false);
3407  return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
3408};
3409var ordinaryGetOwnMetadata = function (MetadataKey, O, P) {
3410  var metadataMap = getOrCreateMetadataMap(O, P, false);
3411  return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
3412};
3413var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {
3414  getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
3415};
3416var ordinaryOwnMetadataKeys = function (target, targetKey) {
3417  var metadataMap = getOrCreateMetadataMap(target, targetKey, false);
3418  var keys = [];
vendor: 8,633 bytes, lines 3419-3676
3419  if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });
3420  return keys;
3421};
3422var toMetaKey = function (it) {
3423  return it === undefined || typeof it == 'symbol' ? it : String(it);
3424};
3425var exp = function (O) {
3426  $export($export.S, 'Reflect', O);
3427};
3428
3429module.exports = {
3430  store: store,
3431  map: getOrCreateMetadataMap,
3432  has: ordinaryHasOwnMetadata,
3433  get: ordinaryGetOwnMetadata,
3434  set: ordinaryDefineOwnMetadata,
3435  keys: ordinaryOwnMetadataKeys,
3436  key: toMetaKey,
3437  exp: exp
3438};
3439
3440},{"./_export":47,"./_shared":117,"./es6.map":175,"./es6.weak-map":282}],82:[function(require,module,exports){
3441var global = require('./_global');
3442var macrotask = require('./_task').set;
3443var Observer = global.MutationObserver || global.WebKitMutationObserver;
3444var process = global.process;
3445var Promise = global.Promise;
3446var isNode = require('./_cof')(process) == 'process';
3447
3448module.exports = function () {
3449  var head, last, notify;
3450
3451  var flush = function () {
3452    var parent, fn;
3453    if (isNode && (parent = process.domain)) parent.exit();
3454    while (head) {
3455      fn = head.fn;
3456      head = head.next;
3457      try {
3458        fn();
3459      } catch (e) {
3460        if (head) notify();
3461        else last = undefined;
3462        throw e;
3463      }
3464    } last = undefined;
3465    if (parent) parent.enter();
3466  };
3467
3468  // Node.js
3469  if (isNode) {
3470    notify = function () {
3471      process.nextTick(flush);
3472    };
3473  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
3474  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
3475    var toggle = true;
3476    var node = document.createTextNode('');
3477    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
3478    notify = function () {
3479      node.data = toggle = !toggle;
3480    };
3481  // environments with maybe non-completely correct, but existent Promise
3482  } else if (Promise && Promise.resolve) {
3483    // Promise.resolve without an argument throws an error in LG WebOS 2
3484    var promise = Promise.resolve(undefined);
3485    notify = function () {
3486      promise.then(flush);
3487    };
3488  // for other environments - macrotask based on:
3489  // - setImmediate
3490  // - MessageChannel
3491  // - window.postMessag
3492  // - onreadystatechange
3493  // - setTimeout
3494  } else {
3495    notify = function () {
3496      // strange IE + webpack dev server bug - use .call(global)
3497      macrotask.call(global, flush);
3498    };
3499  }
3500
3501  return function (fn) {
3502    var task = { fn: fn, next: undefined };
3503    if (last) last.next = task;
3504    if (!head) {
3505      head = task;
3506      notify();
3507    } last = task;
3508  };
3509};
3510
3511},{"./_cof":32,"./_global":55,"./_task":127}],83:[function(require,module,exports){
3512'use strict';
3513// 25.4.1.5 NewPromiseCapability(C)
3514var aFunction = require('./_a-function');
3515
3516function PromiseCapability(C) {
3517  var resolve, reject;
3518  this.promise = new C(function ($$resolve, $$reject) {
3519    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
3520    resolve = $$resolve;
3521    reject = $$reject;
3522  });
3523  this.resolve = aFunction(resolve);
3524  this.reject = aFunction(reject);
3525}
3526
3527module.exports.f = function (C) {
3528  return new PromiseCapability(C);
3529};
3530
3531},{"./_a-function":16}],84:[function(require,module,exports){
3532'use strict';
3533// 19.1.2.1 Object.assign(target, source, ...)
3534var DESCRIPTORS = require('./_descriptors');
3535var getKeys = require('./_object-keys');
3536var gOPS = require('./_object-gops');
3537var pIE = require('./_object-pie');
3538var toObject = require('./_to-object');
3539var IObject = require('./_iobject');
3540var $assign = Object.assign;
3541
3542// should work with symbols and should have deterministic property order (V8 bug)
3543module.exports = !$assign || require('./_fails')(function () {
3544  var A = {};
3545  var B = {};
3546  // eslint-disable-next-line no-undef
3547  var S = Symbol();
3548  var K = 'abcdefghijklmnopqrst';
3549  A[S] = 7;
3550  K.split('').forEach(function (k) { B[k] = k; });
3551  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
3552}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
3553  var T = toObject(target);
3554  var aLen = arguments.length;
3555  var index = 1;
3556  var getSymbols = gOPS.f;
3557  var isEnum = pIE.f;
3558  while (aLen > index) {
3559    var S = IObject(arguments[index++]);
3560    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
3561    var length = keys.length;
3562    var j = 0;
3563    var key;
3564    while (length > j) {
3565      key = keys[j++];
3566      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
3567    }
3568  } return T;
3569} : $assign;
3570
3571},{"./_descriptors":43,"./_fails":49,"./_iobject":62,"./_object-gops":92,"./_object-keys":95,"./_object-pie":96,"./_to-object":133}],85:[function(require,module,exports){
3572// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
3573var anObject = require('./_an-object');
3574var dPs = require('./_object-dps');
3575var enumBugKeys = require('./_enum-bug-keys');
3576var IE_PROTO = require('./_shared-key')('IE_PROTO');
3577var Empty = function () { /* empty */ };
3578var PROTOTYPE = 'prototype';
3579
3580// Create object with fake `null` prototype: use iframe Object with cleared prototype
3581var createDict = function () {
3582  // Thrash, waste and sodomy: IE GC bug
3583  var iframe = require('./_dom-create')('iframe');
3584  var i = enumBugKeys.length;
3585  var lt = '<';
3586  var gt = '>';
3587  var iframeDocument;
3588  iframe.style.display = 'none';
3589  require('./_html').appendChild(iframe);
3590  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
3591  // createDict = iframe.contentWindow.Object;
3592  // html.removeChild(iframe);
3593  iframeDocument = iframe.contentWindow.document;
3594  iframeDocument.open();
3595  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
3596  iframeDocument.close();
3597  createDict = iframeDocument.F;
3598  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
3599  return createDict();
3600};
3601
3602module.exports = Object.create || function create(O, Properties) {
3603  var result;
3604  if (O !== null) {
3605    Empty[PROTOTYPE] = anObject(O);
3606    result = new Empty();
3607    Empty[PROTOTYPE] = null;
3608    // add "__proto__" for Object.getPrototypeOf polyfill
3609    result[IE_PROTO] = O;
3610  } else result = createDict();
3611  return Properties === undefined ? result : dPs(result, Properties);
3612};
3613
3614},{"./_an-object":21,"./_dom-create":44,"./_enum-bug-keys":45,"./_html":58,"./_object-dps":87,"./_shared-key":116}],86:[function(require,module,exports){
3615var anObject = require('./_an-object');
3616var IE8_DOM_DEFINE = require('./_ie8-dom-define');
3617var toPrimitive = require('./_to-primitive');
3618var dP = Object.defineProperty;
3619
3620exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {
3621  anObject(O);
3622  P = toPrimitive(P, true);
3623  anObject(Attributes);
3624  if (IE8_DOM_DEFINE) try {
3625    return dP(O, P, Attributes);
3626  } catch (e) { /* empty */ }
3627  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
3628  if ('value' in Attributes) O[P] = Attributes.value;
3629  return O;
3630};
3631
3632},{"./_an-object":21,"./_descriptors":43,"./_ie8-dom-define":59,"./_to-primitive":134}],87:[function(require,module,exports){
3633var dP = require('./_object-dp');
3634var anObject = require('./_an-object');
3635var getKeys = require('./_object-keys');
3636
3637module.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {
3638  anObject(O);
3639  var keys = getKeys(Properties);
3640  var length = keys.length;
3641  var i = 0;
3642  var P;
3643  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
3644  return O;
3645};
3646
3647},{"./_an-object":21,"./_descriptors":43,"./_object-dp":86,"./_object-keys":95}],88:[function(require,module,exports){
3648'use strict';
3649// Forced replacement prototype accessors methods
3650module.exports = require('./_library') || !require('./_fails')(function () {
3651  var K = Math.random();
3652  // In FF throws only define methods
3653  // eslint-disable-next-line no-undef, no-useless-call
3654  __defineSetter__.call(null, K, function () { /* empty */ });
3655  delete require('./_global')[K];
3656});
3657
3658},{"./_fails":49,"./_global":55,"./_library":74}],89:[function(require,module,exports){
3659var pIE = require('./_object-pie');
3660var createDesc = require('./_property-desc');
3661var toIObject = require('./_to-iobject');
3662var toPrimitive = require('./_to-primitive');
3663var has = require('./_has');
3664var IE8_DOM_DEFINE = require('./_ie8-dom-define');
3665var gOPD = Object.getOwnPropertyDescriptor;
3666
3667exports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {
3668  O = toIObject(O);
3669  P = toPrimitive(P, true);
3670  if (IE8_DOM_DEFINE) try {
3671    return gOPD(O, P);
3672  } catch (e) { /* empty */ }
3673  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
3674};
3675
3676}
vendor: 10,980 bytes, lines 3676-3998
3676,{"./_descriptors":43,"./_has":56,"./_ie8-dom-define":59,"./_object-pie":96,"./_property-desc":104,"./_to-iobject":131,"./_to-primitive":134}],90:[function(require,module,exports){
3677// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
3678var toIObject = require('./_to-iobject');
3679var gOPN = require('./_object-gopn').f;
3680var toString = {}.toString;
3681
3682var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
3683  ? Object.getOwnPropertyNames(window) : [];
3684
3685var getWindowNames = function (it) {
3686  try {
3687    return gOPN(it);
3688  } catch (e) {
3689    return windowNames.slice();
3690  }
3691};
3692
3693module.exports.f = function getOwnPropertyNames(it) {
3694  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
3695};
3696
3697},{"./_object-gopn":91,"./_to-iobject":131}],91:[function(require,module,exports){
3698// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
3699var $keys = require('./_object-keys-internal');
3700var hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');
3701
3702exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
3703  return $keys(O, hiddenKeys);
3704};
3705
3706},{"./_enum-bug-keys":45,"./_object-keys-internal":94}],92:[function(require,module,exports){
3707exports.f = Object.getOwnPropertySymbols;
3708
3709},{}],93:[function(require,module,exports){
3710// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
3711var has = require('./_has');
3712var toObject = require('./_to-object');
3713var IE_PROTO = require('./_shared-key')('IE_PROTO');
3714var ObjectProto = Object.prototype;
3715
3716module.exports = Object.getPrototypeOf || function (O) {
3717  O = toObject(O);
3718  if (has(O, IE_PROTO)) return O[IE_PROTO];
3719  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
3720    return O.constructor.prototype;
3721  } return O instanceof Object ? ObjectProto : null;
3722};
3723
3724},{"./_has":56,"./_shared-key":116,"./_to-object":133}],94:[function(require,module,exports){
3725var has = require('./_has');
3726var toIObject = require('./_to-iobject');
3727var arrayIndexOf = require('./_array-includes')(false);
3728var IE_PROTO = require('./_shared-key')('IE_PROTO');
3729
3730module.exports = function (object, names) {
3731  var O = toIObject(object);
3732  var i = 0;
3733  var result = [];
3734  var key;
3735  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
3736  // Don't enum bug & hidden keys
3737  while (names.length > i) if (has(O, key = names[i++])) {
3738    ~arrayIndexOf(result, key) || result.push(key);
3739  }
3740  return result;
3741};
3742
3743},{"./_array-includes":25,"./_has":56,"./_shared-key":116,"./_to-iobject":131}],95:[function(require,module,exports){
3744// 19.1.2.14 / 15.2.3.14 Object.keys(O)
3745var $keys = require('./_object-keys-internal');
3746var enumBugKeys = require('./_enum-bug-keys');
3747
3748module.exports = Object.keys || function keys(O) {
3749  return $keys(O, enumBugKeys);
3750};
3751
3752},{"./_enum-bug-keys":45,"./_object-keys-internal":94}],96:[function(require,module,exports){
3753exports.f = {}.propertyIsEnumerable;
3754
3755},{}],97:[function(require,module,exports){
3756// most Object methods by ES6 should accept primitives
3757var $export = require('./_export');
3758var core = require('./_core');
3759var fails = require('./_fails');
3760module.exports = function (KEY, exec) {
3761  var fn = (core.Object || {})[KEY] || Object[KEY];
3762  var exp = {};
3763  exp[KEY] = exec(fn);
3764  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
3765};
3766
3767},{"./_core":37,"./_export":47,"./_fails":49}],98:[function(require,module,exports){
3768var DESCRIPTORS = require('./_descriptors');
3769var getKeys = require('./_object-keys');
3770var toIObject = require('./_to-iobject');
3771var isEnum = require('./_object-pie').f;
3772module.exports = function (isEntries) {
3773  return function (it) {
3774    var O = toIObject(it);
3775    var keys = getKeys(O);
3776    var length = keys.length;
3777    var i = 0;
3778    var result = [];
3779    var key;
3780    while (length > i) {
3781      key = keys[i++];
3782      if (!DESCRIPTORS || isEnum.call(O, key)) {
3783        result.push(isEntries ? [key, O[key]] : O[key]);
3784      }
3785    }
3786    return result;
3787  };
3788};
3789
3790},{"./_descriptors":43,"./_object-keys":95,"./_object-pie":96,"./_to-iobject":131}],99:[function(require,module,exports){
3791// all object keys, includes non-enumerable and symbols
3792var gOPN = require('./_object-gopn');
3793var gOPS = require('./_object-gops');
3794var anObject = require('./_an-object');
3795var Reflect = require('./_global').Reflect;
3796module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
3797  var keys = gOPN.f(anObject(it));
3798  var getSymbols = gOPS.f;
3799  return getSymbols ? keys.concat(getSymbols(it)) : keys;
3800};
3801
3802},{"./_an-object":21,"./_global":55,"./_object-gopn":91,"./_object-gops":92}],100:[function(require,module,exports){
3803var $parseFloat = require('./_global').parseFloat;
3804var $trim = require('./_string-trim').trim;
3805
3806module.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {
3807  var string = $trim(String(str), 3);
3808  var result = $parseFloat(string);
3809  return result === 0 && string.charAt(0) == '-' ? -0 : result;
3810} : $parseFloat;
3811
3812},{"./_global":55,"./_string-trim":125,"./_string-ws":126}],101:[function(require,module,exports){
3813var $parseInt = require('./_global').parseInt;
3814var $trim = require('./_string-trim').trim;
3815var ws = require('./_string-ws');
3816var hex = /^[-+]?0[xX]/;
3817
3818module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
3819  var string = $trim(String(str), 3);
3820  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
3821} : $parseInt;
3822
3823},{"./_global":55,"./_string-trim":125,"./_string-ws":126}],102:[function(require,module,exports){
3824module.exports = function (exec) {
3825  try {
3826    return { e: false, v: exec() };
3827  } catch (e) {
3828    return { e: true, v: e };
3829  }
3830};
3831
3832},{}],103:[function(require,module,exports){
3833var anObject = require('./_an-object');
3834var isObject = require('./_is-object');
3835var newPromiseCapability = require('./_new-promise-capability');
3836
3837module.exports = function (C, x) {
3838  anObject(C);
3839  if (isObject(x) && x.constructor === C) return x;
3840  var promiseCapability = newPromiseCapability.f(C);
3841  var resolve = promiseCapability.resolve;
3842  resolve(x);
3843  return promiseCapability.promise;
3844};
3845
3846},{"./_an-object":21,"./_is-object":66,"./_new-promise-capability":83}],104:[function(require,module,exports){
3847module.exports = function (bitmap, value) {
3848  return {
3849    enumerable: !(bitmap & 1),
3850    configurable: !(bitmap & 2),
3851    writable: !(bitmap & 4),
3852    value: value
3853  };
3854};
3855
3856},{}],105:[function(require,module,exports){
3857var redefine = require('./_redefine');
3858module.exports = function (target, src, safe) {
3859  for (var key in src) redefine(target, key, src[key], safe);
3860  return target;
3861};
3862
3863},{"./_redefine":106}],106:[function(require,module,exports){
3864var global = require('./_global');
3865var hide = require('./_hide');
3866var has = require('./_has');
3867var SRC = require('./_uid')('src');
3868var $toString = require('./_function-to-string');
3869var TO_STRING = 'toString';
3870var TPL = ('' + $toString).split(TO_STRING);
3871
3872require('./_core').inspectSource = function (it) {
3873  return $toString.call(it);
3874};
3875
3876(module.exports = function (O, key, val, safe) {
3877  var isFunction = typeof val == 'function';
3878  if (isFunction) has(val, 'name') || hide(val, 'name', key);
3879  if (O[key] === val) return;
3880  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
3881  if (O === global) {
3882    O[key] = val;
3883  } else if (!safe) {
3884    delete O[key];
3885    hide(O, key, val);
3886  } else if (O[key]) {
3887    O[key] = val;
3888  } else {
3889    hide(O, key, val);
3890  }
3891// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
3892})(Function.prototype, TO_STRING, function toString() {
3893  return typeof this == 'function' && this[SRC] || $toString.call(this);
3894});
3895
3896},{"./_core":37,"./_function-to-string":54,"./_global":55,"./_has":56,"./_hide":57,"./_uid":138}],107:[function(require,module,exports){
3897'use strict';
3898
3899var classof = require('./_classof');
3900var builtinExec = RegExp.prototype.exec;
3901
3902 // `RegExpExec` abstract operation
3903// https://tc39.github.io/ecma262/#sec-regexpexec
3904module.exports = function (R, S) {
3905  var exec = R.exec;
3906  if (typeof exec === 'function') {
3907    var result = exec.call(R, S);
3908    if (typeof result !== 'object') {
3909      throw new TypeError('RegExp exec method returned something other than an Object or null');
3910    }
3911    return result;
3912  }
3913  if (classof(R) !== 'RegExp') {
3914    throw new TypeError('RegExp#exec called on incompatible receiver');
3915  }
3916  return builtinExec.call(R, S);
3917};
3918
3919},{"./_classof":31}],108:[function(require,module,exports){
3920'use strict';
3921
3922var regexpFlags = require('./_flags');
3923
3924var nativeExec = RegExp.prototype.exec;
3925// This always refers to the native implementation, because the
3926// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
3927// which loads this file before patching the method.
3928var nativeReplace = String.prototype.replace;
3929
3930var patchedExec = nativeExec;
3931
3932var LAST_INDEX = 'lastIndex';
3933
3934var UPDATES_LAST_INDEX_WRONG = (function () {
3935  var re1 = /a/,
3936      re2 = /b*/g;
3937  nativeExec.call(re1, 'a');
3938  nativeExec.call(re2, 'a');
3939  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
3940})();
3941
3942// nonparticipating capturing group, copied from es5-shim's String#split patch.
3943var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
3944
3945var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;
3946
3947if (PATCH) {
3948  patchedExec = function exec(str) {
3949    var re = this;
3950    var lastIndex, reCopy, match, i;
3951
3952    if (NPCG_INCLUDED) {
3953      reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
3954    }
3955    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];
3956
3957    match = nativeExec.call(re, str);
3958
3959    if (UPDATES_LAST_INDEX_WRONG && match) {
3960      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;
3961    }
3962    if (NPCG_INCLUDED && match && match.length > 1) {
3963      // Fix browsers whose `exec` methods don't consistently return `undefined`
3964      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
3965      // eslint-disable-next-line no-loop-func
3966      nativeReplace.call(match[0], reCopy, function () {
3967        for (i = 1; i < arguments.length - 2; i++) {
3968          if (arguments[i] === undefined) match[i] = undefined;
3969        }
3970      });
3971    }
3972
3973    return match;
3974  };
3975}
3976
3977module.exports = patchedExec;
3978
3979},{"./_flags":51}],109:[function(require,module,exports){
3980module.exports = function (regExp, replace) {
3981  var replacer = replace === Object(replace) ? function (part) {
3982    return replace[part];
3983  } : replace;
3984  return function (it) {
3985    return String(it).replace(regExp, replacer);
3986  };
3987};
3988
3989},{}],110:[function(require,module,exports){
3990// 7.2.9 SameValue(x, y)
3991module.exports = Object.is || function is(x, y) {
3992  // eslint-disable-next-line no-self-compare
3993  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
3994};
3995
3996},{}],111:[function(require,module,exports){
3997'use strict';
3998// https://tc39.github.io/proposal-setmap-offrom/
3999var $export = require('./_export');
4000var aFunction = require('./_a-function');
4001var ctx = require('./_ctx');
4002var forOf = require('./_for-of');
4003
4004module.exports = function (COLLECTION) {
4005  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
4006    var mapFn = arguments[1];
4007    var mapping, A, n, cb;
4008    aFunction(this);
4009    mapping = mapFn !== undefined;
4010    if (mapping) aFunction(mapFn);
4011    if (source == undefined) return new this();
4012    A = [];
4013    if (mapping) {
4014      n = 0;
4015      cb = ctx(mapFn, arguments[2], 2);
4016      forOf(source, false, function (nextItem) {
4017        A.push(cb(nextItem, n++));
4018      });
4019    } else {
4020      forOf(source, false, A.push, A);
4021    }
4022    return new this(A);
4023  } });
4024};
4025
4026},{"./_a-function":16,"./_ctx":39,"./_export":47,"./_for-of":53}],112:[function(require,module,exports){
4027'use strict';
4028// https://tc39.github.io/proposal-setmap-offrom/
4029var $export = require('./_export');
4030
4031module.exports = function (COLLECTION) {
4032  $export($export.S, COLLECTION, { of: function of() {
4033    var length = arguments.length;
4034    var A = new Array(length);
4035    while (length--) A[length] = arguments[length];
4036    return new this(A);
4037  } });
4038};
4039
4040},{"./_export":47}],113:[function(require,module,exports){
4041// Works with __proto__ only. Old v8 can't work with null proto objects.
4042/* eslint-disable no-proto */
4043var isObject = require('./_is-object');
4044var anObject = require('./_an-object');
4045var check = function (O, proto) {
4046  anObject(O);
4047  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
4048};
4049module.exports = {
4050  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
4051    function (test, buggy, set) {
4052      try {
4053        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);
4054        set(test, []);
4055        buggy = !(test instanceof Array);
4056      } catch (e) { buggy = true; }
4057      return function setPrototypeOf(O, proto) {
4058        check(O, proto);
4059        if (buggy) O.__proto__ = proto;
4060        else set(O, proto);
4061        return O;
4062      };
4063    }({}, false) : undefined),
4064  check: check
4065};
4066
4067},{"./_an-object":21,"./_ctx":39,"./_is-object":66,"./_object-gopd":89}],114:[function(require,module,exports){
4068'use strict';
4069var global = require('./_global');
4070var dP = require('./_object-dp');
4071var DESCRIPTORS = require('./_descriptors');
4072var SPECIES = require('./_wks')('species');
4073
4074module.exports = function (KEY) {
4075  var C = global[KEY];
4076  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
4077    configurable: true,
4078    get: function () { return this; }
4079  });
4080};
4081
4082},{"./_descriptors":43,"./_global":55,"./_object-dp":86,"./_wks":143}],115:[function(require,module,exports){
4083var def = require('./_object-dp').f;
4084var has = require('./_has');
4085var TAG = require('./_wks')('toStringTag');
4086
4087module.exports = function (it, tag, stat) {
4088  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
4089};
4090
4091},{"./_has":56,"./_object-dp":86,"./_wks":143}],116:[function(require,module,exports){
4092var shared = require('./_shared')('keys');
4093var uid = require('./_uid');
4094module.exports = function (key) {
vendor: 8,818 bytes, lines 4095-4349
4095  return shared[key] || (shared[key] = uid(key));
4096};
4097
4098},{"./_shared":117,"./_uid":138}],117:[function(require,module,exports){
4099var core = require('./_core');
4100var global = require('./_global');
4101var SHARED = '__core-js_shared__';
4102var store = global[SHARED] || (global[SHARED] = {});
4103
4104(module.exports = function (key, value) {
4105  return store[key] || (store[key] = value !== undefined ? value : {});
4106})('versions', []).push({
4107  version: core.version,
4108  mode: require('./_library') ? 'pure' : 'global',
4109  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
4110});
4111
4112},{"./_core":37,"./_global":55,"./_library":74}],118:[function(require,module,exports){
4113// 7.3.20 SpeciesConstructor(O, defaultConstructor)
4114var anObject = require('./_an-object');
4115var aFunction = require('./_a-function');
4116var SPECIES = require('./_wks')('species');
4117module.exports = function (O, D) {
4118  var C = anObject(O).constructor;
4119  var S;
4120  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
4121};
4122
4123},{"./_a-function":16,"./_an-object":21,"./_wks":143}],119:[function(require,module,exports){
4124'use strict';
4125var fails = require('./_fails');
4126
4127module.exports = function (method, arg) {
4128  return !!method && fails(function () {
4129    // eslint-disable-next-line no-useless-call
4130    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
4131  });
4132};
4133
4134},{"./_fails":49}],120:[function(require,module,exports){
4135var toInteger = require('./_to-integer');
4136var defined = require('./_defined');
4137// true  -> String#at
4138// false -> String#codePointAt
4139module.exports = function (TO_STRING) {
4140  return function (that, pos) {
4141    var s = String(defined(that));
4142    var i = toInteger(pos);
4143    var l = s.length;
4144    var a, b;
4145    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
4146    a = s.charCodeAt(i);
4147    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
4148      ? TO_STRING ? s.charAt(i) : a
4149      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
4150  };
4151};
4152
4153},{"./_defined":42,"./_to-integer":130}],121:[function(require,module,exports){
4154// helper for String#{startsWith, endsWith, includes}
4155var isRegExp = require('./_is-regexp');
4156var defined = require('./_defined');
4157
4158module.exports = function (that, searchString, NAME) {
4159  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
4160  return String(defined(that));
4161};
4162
4163},{"./_defined":42,"./_is-regexp":67}],122:[function(require,module,exports){
4164var $export = require('./_export');
4165var fails = require('./_fails');
4166var defined = require('./_defined');
4167var quot = /"/g;
4168// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
4169var createHTML = function (string, tag, attribute, value) {
4170  var S = String(defined(string));
4171  var p1 = '<' + tag;
4172  if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
4173  return p1 + '>' + S + '</' + tag + '>';
4174};
4175module.exports = function (NAME, exec) {
4176  var O = {};
4177  O[NAME] = exec(createHTML);
4178  $export($export.P + $export.F * fails(function () {
4179    var test = ''[NAME]('"');
4180    return test !== test.toLowerCase() || test.split('"').length > 3;
4181  }), 'String', O);
4182};
4183
4184},{"./_defined":42,"./_export":47,"./_fails":49}],123:[function(require,module,exports){
4185// https://github.com/tc39/proposal-string-pad-start-end
4186var toLength = require('./_to-length');
4187var repeat = require('./_string-repeat');
4188var defined = require('./_defined');
4189
4190module.exports = function (that, maxLength, fillString, left) {
4191  var S = String(defined(that));
4192  var stringLength = S.length;
4193  var fillStr = fillString === undefined ? ' ' : String(fillString);
4194  var intMaxLength = toLength(maxLength);
4195  if (intMaxLength <= stringLength || fillStr == '') return S;
4196  var fillLen = intMaxLength - stringLength;
4197  var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
4198  if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
4199  return left ? stringFiller + S : S + stringFiller;
4200};
4201
4202},{"./_defined":42,"./_string-repeat":124,"./_to-length":132}],124:[function(require,module,exports){
4203'use strict';
4204var toInteger = require('./_to-integer');
4205var defined = require('./_defined');
4206
4207module.exports = function repeat(count) {
4208  var str = String(defined(this));
4209  var res = '';
4210  var n = toInteger(count);
4211  if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
4212  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;
4213  return res;
4214};
4215
4216},{"./_defined":42,"./_to-integer":130}],125:[function(require,module,exports){
4217var $export = require('./_export');
4218var defined = require('./_defined');
4219var fails = require('./_fails');
4220var spaces = require('./_string-ws');
4221var space = '[' + spaces + ']';
4222var non = '\u200b\u0085';
4223var ltrim = RegExp('^' + space + space + '*');
4224var rtrim = RegExp(space + space + '*$');
4225
4226var exporter = function (KEY, exec, ALIAS) {
4227  var exp = {};
4228  var FORCE = fails(function () {
4229    return !!spaces[KEY]() || non[KEY]() != non;
4230  });
4231  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
4232  if (ALIAS) exp[ALIAS] = fn;
4233  $export($export.P + $export.F * FORCE, 'String', exp);
4234};
4235
4236// 1 -> String#trimLeft
4237// 2 -> String#trimRight
4238// 3 -> String#trim
4239var trim = exporter.trim = function (string, TYPE) {
4240  string = String(defined(string));
4241  if (TYPE & 1) string = string.replace(ltrim, '');
4242  if (TYPE & 2) string = string.replace(rtrim, '');
4243  return string;
4244};
4245
4246module.exports = exporter;
4247
4248},{"./_defined":42,"./_export":47,"./_fails":49,"./_string-ws":126}],126:[function(require,module,exports){
4249module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
4250  '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
4251
4252},{}],127:[function(require,module,exports){
4253var ctx = require('./_ctx');
4254var invoke = require('./_invoke');
4255var html = require('./_html');
4256var cel = require('./_dom-create');
4257var global = require('./_global');
4258var process = global.process;
4259var setTask = global.setImmediate;
4260var clearTask = global.clearImmediate;
4261var MessageChannel = global.MessageChannel;
4262var Dispatch = global.Dispatch;
4263var counter = 0;
4264var queue = {};
4265var ONREADYSTATECHANGE = 'onreadystatechange';
4266var defer, channel, port;
4267var run = function () {
4268  var id = +this;
4269  // eslint-disable-next-line no-prototype-builtins
4270  if (queue.hasOwnProperty(id)) {
4271    var fn = queue[id];
4272    delete queue[id];
4273    fn();
4274  }
4275};
4276var listener = function (event) {
4277  run.call(event.data);
4278};
4279// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
4280if (!setTask || !clearTask) {
4281  setTask = function setImmediate(fn) {
4282    var args = [];
4283    var i = 1;
4284    while (arguments.length > i) args.push(arguments[i++]);
4285    queue[++counter] = function () {
4286      // eslint-disable-next-line no-new-func
4287      invoke(typeof fn == 'function' ? fn : Function(fn), args);
4288    };
4289    defer(counter);
4290    return counter;
4291  };
4292  clearTask = function clearImmediate(id) {
4293    delete queue[id];
4294  };
4295  // Node.js 0.8-
4296  if (require('./_cof')(process) == 'process') {
4297    defer = function (id) {
4298      process.nextTick(ctx(run, id, 1));
4299    };
4300  // Sphere (JS game engine) Dispatch API
4301  } else if (Dispatch && Dispatch.now) {
4302    defer = function (id) {
4303      Dispatch.now(ctx(run, id, 1));
4304    };
4305  // Browsers with MessageChannel, includes WebWorkers
4306  } else if (MessageChannel) {
4307    channel = new MessageChannel();
4308    port = channel.port2;
4309    channel.port1.onmessage = listener;
4310    defer = ctx(port.postMessage, port, 1);
4311  // Browsers with postMessage, skip WebWorkers
4312  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
4313  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
4314    defer = function (id) {
4315      global.postMessage(id + '', '*');
4316    };
4317    global.addEventListener('message', listener, false);
4318  // IE8-
4319  } else if (ONREADYSTATECHANGE in cel('script')) {
4320    defer = function (id) {
4321      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
4322        html.removeChild(this);
4323        run.call(id);
4324      };
4325    };
4326  // Rest old browsers
4327  } else {
4328    defer = function (id) {
4329      setTimeout(ctx(run, id, 1), 0);
4330    };
4331  }
4332}
4333module.exports = {
4334  set: setTask,
4335  clear: clearTask
4336};
4337
4338},{"./_cof":32,"./_ctx":39,"./_dom-create":44,"./_global":55,"./_html":58,"./_invoke":61}],128:[function(require,module,exports){
4339var toInteger = require('./_to-integer');
4340var max = Math.max;
4341var min = Math.min;
4342module.exports = function (index, length) {
4343  index = toInteger(index);
4344  return index < 0 ? max(index + length, 0) : min(index, length);
4345};
4346
4347},{"./_to-integer":130}],129:[function(require,module,exports){
4348// https://tc39.github.io/ecma262/#sec-toindex
4349var toInteger = require('./_to-integer');
4350var toLength = require('./_to-length');
4351module.exports = function (it) {
4352  if (it === undefined) return 0;
4353  var number = toInteger(it);
4354  var length = toLength(number);
4355  if (number !== length) throw RangeError('Wrong length!');
4356  return length;
4357};
4358
4359},{"./_to-integer":130,"./_to-length":132}],130:[function(require,module,exports){
4360// 7.1.4 ToInteger
4361var ceil = Math.ceil;
4362var floor = Math.floor;
4363module.exports = function (it) {
4364  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
4365};
4366
4367},{}],131:[function(require,module,exports){
4368// to indexed object, toObject with fallback for non-array-like ES3 strings
4369var IObject = require('./_iobject');
4370var defined = require('./_defined');
4371module.exports = function (it) {
4372  return IObject(defined(it));
4373};
4374
4375},{"./_defined":42,"./_iobject":62}],132:[function(require,module,exports){
4376// 7.1.15 ToLength
4377var toInteger = require('./_to-integer');
4378var min = Math.min;
4379module.exports = function (it) {
4380  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
4381};
4382
4383},{"./_to-integer":130}],133:[function(require,module,exports){
4384// 7.1.13 ToObject(argument)
4385var defined = require('./_defined');
4386module.exports = function (it) {
4387  return Object(defined(it));
4388};
4389
4390},{"./_defined":42}],134:[function(require,module,exports){
4391// 7.1.1 ToPrimitive(input [, PreferredType])
4392var isObject = require('./_is-object');
4393// instead of the ES6 spec version, we didn't implement @@toPrimitive case
4394// and the second argument - flag - preferred type is a string
4395module.exports = function (it, S) {
4396  if (!isObject(it)) return it;
4397  var fn, val;
4398  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
4399  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
4400  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
4401  throw TypeError("Can't convert object to primitive value");
4402};
4403
4404},{"./_is-object":66}],135:[function(require,module,exports){
4405'use strict';
4406if (require('./_descriptors')) {
4407  var LIBRARY = require('./_library');
4408  var global = require('./_global');
4409  var fails = require('./_fails');
4410  var $export = require('./_export');
4411  var $typed = require('./_typed');
4412  var $buffer = require('./_typed-buffer');
4413  var ctx = require('./_ctx');
4414  var anInstance = require('./_an-instance');
4415  var propertyDesc = require('./_property-desc');
4416  var hide = require('./_hide');
4417  var redefineAll = require('./_redefine-all');
4418  var toInteger = require('./_to-integer');
4419  var toLength = require('./_to-length');
4420  var toIndex = require('./_to-index');
4421  var toAbsoluteIndex = require('./_to-absolute-index');
4422  var toPrimitive = require('./_to-primitive');
4423  var has = require('./_has');
4424  var classof = require('./_classof');
4425  var isObject = require('./_is-object');
4426  var toObject = require('./_to-object');
4427  var isArrayIter = require('./_is-array-iter');
4428  var create = require('./_object-create');
4429  var getPrototypeOf = require('./_object-gpo');
4430  var gOPN = require('./_object-gopn').f;
4431  var getIterFn = require('./core.get-iterator-method');
4432  var uid = require('./_uid');
4433  var wks = require('./_wks');
4434  var createArrayMethod = require('./_array-methods');
4435  var createArrayIncludes = require('./_array-includes');
4436  var speciesConstructor = require('./_species-constructor');
4437  var ArrayIterators = require('./es6.array.iterator');
4438  var Iterators = require('./_iterators');
4439  var $iterDetect = require('./_iter-detect');
4440  var setSpecies = require('./_set-species');
4441  var arrayFill = require('./_array-fill');
4442  var arrayCopyWithin = require('./_array-copy-within');
4443  var $DP = require('./_object-dp');
4444  var $GOPD = require('./_object-gopd'
vendor: 8,586 bytes, lines 4444-4672
4444);
4445  var dP = $DP.f;
4446  var gOPD = $GOPD.f;
4447  var RangeError = global.RangeError;
4448  var TypeError = global.TypeError;
4449  var Uint8Array = global.Uint8Array;
4450  var ARRAY_BUFFER = 'ArrayBuffer';
4451  var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;
4452  var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
4453  var PROTOTYPE = 'prototype';
4454  var ArrayProto = Array[PROTOTYPE];
4455  var $ArrayBuffer = $buffer.ArrayBuffer;
4456  var $DataView = $buffer.DataView;
4457  var arrayForEach = createArrayMethod(0);
4458  var arrayFilter = createArrayMethod(2);
4459  var arraySome = createArrayMethod(3);
4460  var arrayEvery = createArrayMethod(4);
4461  var arrayFind = createArrayMethod(5);
4462  var arrayFindIndex = createArrayMethod(6);
4463  var arrayIncludes = createArrayIncludes(true);
4464  var arrayIndexOf = createArrayIncludes(false);
4465  var arrayValues = ArrayIterators.values;
4466  var arrayKeys = ArrayIterators.keys;
4467  var arrayEntries = ArrayIterators.entries;
4468  var arrayLastIndexOf = ArrayProto.lastIndexOf;
4469  var arrayReduce = ArrayProto.reduce;
4470  var arrayReduceRight = ArrayProto.reduceRight;
4471  var arrayJoin = ArrayProto.join;
4472  var arraySort = ArrayProto.sort;
4473  var arraySlice = ArrayProto.slice;
4474  var arrayToString = ArrayProto.toString;
4475  var arrayToLocaleString = ArrayProto.toLocaleString;
4476  var ITERATOR = wks('iterator');
4477  var TAG = wks('toStringTag');
4478  var TYPED_CONSTRUCTOR = uid('typed_constructor');
4479  var DEF_CONSTRUCTOR = uid('def_constructor');
4480  var ALL_CONSTRUCTORS = $typed.CONSTR;
4481  var TYPED_ARRAY = $typed.TYPED;
4482  var VIEW = $typed.VIEW;
4483  var WRONG_LENGTH = 'Wrong length!';
4484
4485  var $map = createArrayMethod(1, function (O, length) {
4486    return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
4487  });
4488
4489  var LITTLE_ENDIAN = fails(function () {
4490    // eslint-disable-next-line no-undef
4491    return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
4492  });
4493
4494  var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {
4495    new Uint8Array(1).set({});
4496  });
4497
4498  var toOffset = function (it, BYTES) {
4499    var offset = toInteger(it);
4500    if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');
4501    return offset;
4502  };
4503
4504  var validate = function (it) {
4505    if (isObject(it) && TYPED_ARRAY in it) return it;
4506    throw TypeError(it + ' is not a typed array!');
4507  };
4508
4509  var allocate = function (C, length) {
4510    if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {
4511      throw TypeError('It is not a typed array constructor!');
4512    } return new C(length);
4513  };
4514
4515  var speciesFromList = function (O, list) {
4516    return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
4517  };
4518
4519  var fromList = function (C, list) {
4520    var index = 0;
4521    var length = list.length;
4522    var result = allocate(C, length);
4523    while (length > index) result[index] = list[index++];
4524    return result;
4525  };
4526
4527  var addGetter = function (it, key, internal) {
4528    dP(it, key, { get: function () { return this._d[internal]; } });
4529  };
4530
4531  var $from = function from(source /* , mapfn, thisArg */) {
4532    var O = toObject(source);
4533    var aLen = arguments.length;
4534    var mapfn = aLen > 1 ? arguments[1] : undefined;
4535    var mapping = mapfn !== undefined;
4536    var iterFn = getIterFn(O);
4537    var i, length, values, result, step, iterator;
4538    if (iterFn != undefined && !isArrayIter(iterFn)) {
4539      for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {
4540        values.push(step.value);
4541      } O = values;
4542    }
4543    if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);
4544    for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {
4545      result[i] = mapping ? mapfn(O[i], i) : O[i];
4546    }
4547    return result;
4548  };
4549
4550  var $of = function of(/* ...items */) {
4551    var index = 0;
4552    var length = arguments.length;
4553    var result = allocate(this, length);
4554    while (length > index) result[index] = arguments[index++];
4555    return result;
4556  };
4557
4558  // iOS Safari 6.x fails here
4559  var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });
4560
4561  var $toLocaleString = function toLocaleString() {
4562    return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
4563  };
4564
4565  var proto = {
4566    copyWithin: function copyWithin(target, start /* , end */) {
4567      return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
4568    },
4569    every: function every(callbackfn /* , thisArg */) {
4570      return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
4571    },
4572    fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars
4573      return arrayFill.apply(validate(this), arguments);
4574    },
4575    filter: function filter(callbackfn /* , thisArg */) {
4576      return speciesFromList(this, arrayFilter(validate(this), callbackfn,
4577        arguments.length > 1 ? arguments[1] : undefined));
4578    },
4579    find: function find(predicate /* , thisArg */) {
4580      return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
4581    },
4582    findIndex: function findIndex(predicate /* , thisArg */) {
4583      return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
4584    },
4585    forEach: function forEach(callbackfn /* , thisArg */) {
4586      arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
4587    },
4588    indexOf: function indexOf(searchElement /* , fromIndex */) {
4589      return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
4590    },
4591    includes: function includes(searchElement /* , fromIndex */) {
4592      return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
4593    },
4594    join: function join(separator) { // eslint-disable-line no-unused-vars
4595      return arrayJoin.apply(validate(this), arguments);
4596    },
4597    lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars
4598      return arrayLastIndexOf.apply(validate(this), arguments);
4599    },
4600    map: function map(mapfn /* , thisArg */) {
4601      return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
4602    },
4603    reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
4604      return arrayReduce.apply(validate(this), arguments);
4605    },
4606    reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
4607      return arrayReduceRight.apply(validate(this), arguments);
4608    },
4609    reverse: function reverse() {
4610      var that = this;
4611      var length = validate(that).length;
4612      var middle = Math.floor(length / 2);
4613      var index = 0;
4614      var value;
4615      while (index < middle) {
4616        value = that[index];
4617        that[index++] = that[--length];
4618        that[length] = value;
4619      } return that;
4620    },
4621    some: function some(callbackfn /* , thisArg */) {
4622      return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
4623    },
4624    sort: function sort(comparefn) {
4625      return arraySort.call(validate(this), comparefn);
4626    },
4627    subarray: function subarray(begin, end) {
4628      var O = validate(this);
4629      var length = O.length;
4630      var $begin = toAbsoluteIndex(begin, length);
4631      return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
4632        O.buffer,
4633        O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
4634        toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)
4635      );
4636    }
4637  };
4638
4639  var $slice = function slice(start, end) {
4640    return speciesFromList(this, arraySlice.call(validate(this), start, end));
4641  };
4642
4643  var $set = function set(arrayLike /* , offset */) {
4644    validate(this);
4645    var offset = toOffset(arguments[1], 1);
4646    var length = this.length;
4647    var src = toObject(arrayLike);
4648    var len = toLength(src.length);
4649    var index = 0;
4650    if (len + offset > length) throw RangeError(WRONG_LENGTH);
4651    while (index < len) this[offset + index] = src[index++];
4652  };
4653
4654  var $iterators = {
4655    entries: function entries() {
4656      return arrayEntries.call(validate(this));
4657    },
4658    keys: function keys() {
4659      return arrayKeys.call(validate(this));
4660    },
4661    values: function values() {
4662      return arrayValues.call(validate(this));
4663    }
4664  };
4665
4666  var isTAIndex = function (target, key) {
4667    return isObject(target)
4668      && target[TYPED_ARRAY]
4669      && typeof key != 'symbol'
4670      && key in target
4671      && String(+key) == String(key);
4672  };
vendor: 7,985 bytes, lines 4673-4884
4673  var $getDesc = function getOwnPropertyDescriptor(target, key) {
4674    return isTAIndex(target, key = toPrimitive(key, true))
4675      ? propertyDesc(2, target[key])
4676      : gOPD(target, key);
4677  };
4678  var $setDesc = function defineProperty(target, key, desc) {
4679    if (isTAIndex(target, key = toPrimitive(key, true))
4680      && isObject(desc)
4681      && has(desc, 'value')
4682      && !has(desc, 'get')
4683      && !has(desc, 'set')
4684      // TODO: add validation descriptor w/o calling accessors
4685      && !desc.configurable
4686      && (!has(desc, 'writable') || desc.writable)
4687      && (!has(desc, 'enumerable') || desc.enumerable)
4688    ) {
4689      target[key] = desc.value;
4690      return target;
4691    } return dP(target, key, desc);
4692  };
4693
4694  if (!ALL_CONSTRUCTORS) {
4695    $GOPD.f = $getDesc;
4696    $DP.f = $setDesc;
4697  }
4698
4699  $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
4700    getOwnPropertyDescriptor: $getDesc,
4701    defineProperty: $setDesc
4702  });
4703
4704  if (fails(function () { arrayToString.call({}); })) {
4705    arrayToString = arrayToLocaleString = function toString() {
4706      return arrayJoin.call(this);
4707    };
4708  }
4709
4710  var $TypedArrayPrototype$ = redefineAll({}, proto);
4711  redefineAll($TypedArrayPrototype$, $iterators);
4712  hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
4713  redefineAll($TypedArrayPrototype$, {
4714    slice: $slice,
4715    set: $set,
4716    constructor: function () { /* noop */ },
4717    toString: arrayToString,
4718    toLocaleString: $toLocaleString
4719  });
4720  addGetter($TypedArrayPrototype$, 'buffer', 'b');
4721  addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
4722  addGetter($TypedArrayPrototype$, 'byteLength', 'l');
4723  addGetter($TypedArrayPrototype$, 'length', 'e');
4724  dP($TypedArrayPrototype$, TAG, {
4725    get: function () { return this[TYPED_ARRAY]; }
4726  });
4727
4728  // eslint-disable-next-line max-statements
4729  module.exports = function (KEY, BYTES, wrapper, CLAMPED) {
4730    CLAMPED = !!CLAMPED;
4731    var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';
4732    var GETTER = 'get' + KEY;
4733    var SETTER = 'set' + KEY;
4734    var TypedArray = global[NAME];
4735    var Base = TypedArray || {};
4736    var TAC = TypedArray && getPrototypeOf(TypedArray);
4737    var FORCED = !TypedArray || !$typed.ABV;
4738    var O = {};
4739    var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
4740    var getter = function (that, index) {
4741      var data = that._d;
4742      return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
4743    };
4744    var setter = function (that, index, value) {
4745      var data = that._d;
4746      if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
4747      data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
4748    };
4749    var addElement = function (that, index) {
4750      dP(that, index, {
4751        get: function () {
4752          return getter(this, index);
4753        },
4754        set: function (value) {
4755          return setter(this, index, value);
4756        },
4757        enumerable: true
4758      });
4759    };
4760    if (FORCED) {
4761      TypedArray = wrapper(function (that, data, $offset, $length) {
4762        anInstance(that, TypedArray, NAME, '_d');
4763        var index = 0;
4764        var offset = 0;
4765        var buffer, byteLength, length, klass;
4766        if (!isObject(data)) {
4767          length = toIndex(data);
4768          byteLength = length * BYTES;
4769          buffer = new $ArrayBuffer(byteLength);
4770        } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
4771          buffer = data;
4772          offset = toOffset($offset, BYTES);
4773          var $len = data.byteLength;
4774          if ($length === undefined) {
4775            if ($len % BYTES) throw RangeError(WRONG_LENGTH);
4776            byteLength = $len - offset;
4777            if (byteLength < 0) throw RangeError(WRONG_LENGTH);
4778          } else {
4779            byteLength = toLength($length) * BYTES;
4780            if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);
4781          }
4782          length = byteLength / BYTES;
4783        } else if (TYPED_ARRAY in data) {
4784          return fromList(TypedArray, data);
4785        } else {
4786          return $from.call(TypedArray, data);
4787        }
4788        hide(that, '_d', {
4789          b: buffer,
4790          o: offset,
4791          l: byteLength,
4792          e: length,
4793          v: new $DataView(buffer)
4794        });
4795        while (index < length) addElement(that, index++);
4796      });
4797      TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
4798      hide(TypedArrayPrototype, 'constructor', TypedArray);
4799    } else if (!fails(function () {
4800      TypedArray(1);
4801    }) || !fails(function () {
4802      new TypedArray(-1); // eslint-disable-line no-new
4803    }) || !$iterDetect(function (iter) {
4804      new TypedArray(); // eslint-disable-line no-new
4805      new TypedArray(null); // eslint-disable-line no-new
4806      new TypedArray(1.5); // eslint-disable-line no-new
4807      new TypedArray(iter); // eslint-disable-line no-new
4808    }, true)) {
4809      TypedArray = wrapper(function (that, data, $offset, $length) {
4810        anInstance(that, TypedArray, NAME);
4811        var klass;
4812        // `ws` module bug, temporarily remove validation length for Uint8Array
4813        // https://github.com/websockets/ws/pull/645
4814        if (!isObject(data)) return new Base(toIndex(data));
4815        if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
4816          return $length !== undefined
4817            ? new Base(data, toOffset($offset, BYTES), $length)
4818            : $offset !== undefined
4819              ? new Base(data, toOffset($offset, BYTES))
4820              : new Base(data);
4821        }
4822        if (TYPED_ARRAY in data) return fromList(TypedArray, data);
4823        return $from.call(TypedArray, data);
4824      });
4825      arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {
4826        if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);
4827      });
4828      TypedArray[PROTOTYPE] = TypedArrayPrototype;
4829      if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;
4830    }
4831    var $nativeIterator = TypedArrayPrototype[ITERATOR];
4832    var CORRECT_ITER_NAME = !!$nativeIterator
4833      && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);
4834    var $iterator = $iterators.values;
4835    hide(TypedArray, TYPED_CONSTRUCTOR, true);
4836    hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
4837    hide(TypedArrayPrototype, VIEW, true);
4838    hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
4839
4840    if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {
4841      dP(TypedArrayPrototype, TAG, {
4842        get: function () { return NAME; }
4843      });
4844    }
4845
4846    O[NAME] = TypedArray;
4847
4848    $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
4849
4850    $export($export.S, NAME, {
4851      BYTES_PER_ELEMENT: BYTES
4852    });
4853
4854    $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {
4855      from: $from,
4856      of: $of
4857    });
4858
4859    if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
4860
4861    $export($export.P, NAME, proto);
4862
4863    setSpecies(NAME);
4864
4865    $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });
4866
4867    $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
4868
4869    if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;
4870
4871    $export($export.P + $export.F * fails(function () {
4872      new TypedArray(1).slice();
4873    }), NAME, { slice: $slice });
4874
4875    $export($export.P + $export.F * (fails(function () {
4876      return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();
4877    }) || !fails(function () {
4878      TypedArrayPrototype.toLocaleString.call([1, 2]);
4879    })), NAME, { toLocaleString: $toLocaleString });
4880
4881    Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
4882    if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);
4883  };
4884} else module.exports = function () { /* empty */ };
vendor: 3,394 bytes, lines 4885-4972
4885
4886},{"./_an-instance":20,"./_array-copy-within":22,"./_array-fill":23,"./_array-includes":25,"./_array-methods":26,"./_classof":31,"./_ctx":39,"./_descriptors":43,"./_export":47,"./_fails":49,"./_global":55,"./_has":56,"./_hide":57,"./_is-array-iter":63,"./_is-object":66,"./_iter-detect":71,"./_iterators":73,"./_library":74,"./_object-create":85,"./_object-dp":86,"./_object-gopd":89,"./_object-gopn":91,"./_object-gpo":93,"./_property-desc":104,"./_redefine-all":105,"./_set-species":114,"./_species-constructor":118,"./_to-absolute-index":128,"./_to-index":129,"./_to-integer":130,"./_to-length":132,"./_to-object":133,"./_to-primitive":134,"./_typed":137,"./_typed-buffer":136,"./_uid":138,"./_wks":143,"./core.get-iterator-method":144,"./es6.array.iterator":156}],136:[function(require,module,exports){
4887'use strict';
4888var global = require('./_global');
4889var DESCRIPTORS = require('./_descriptors');
4890var LIBRARY = require('./_library');
4891var $typed = require('./_typed');
4892var hide = require('./_hide');
4893var redefineAll = require('./_redefine-all');
4894var fails = require('./_fails');
4895var anInstance = require('./_an-instance');
4896var toInteger = require('./_to-integer');
4897var toLength = require('./_to-length');
4898var toIndex = require('./_to-index');
4899var gOPN = require('./_object-gopn').f;
4900var dP = require('./_object-dp').f;
4901var arrayFill = require('./_array-fill');
4902var setToStringTag = require('./_set-to-string-tag');
4903var ARRAY_BUFFER = 'ArrayBuffer';
4904var DATA_VIEW = 'DataView';
4905var PROTOTYPE = 'prototype';
4906var WRONG_LENGTH = 'Wrong length!';
4907var WRONG_INDEX = 'Wrong index!';
4908var $ArrayBuffer = global[ARRAY_BUFFER];
4909var $DataView = global[DATA_VIEW];
4910var Math = global.Math;
4911var RangeError = global.RangeError;
4912// eslint-disable-next-line no-shadow-restricted-names
4913var Infinity = global.Infinity;
4914var BaseBuffer = $ArrayBuffer;
4915var abs = Math.abs;
4916var pow = Math.pow;
4917var floor = Math.floor;
4918var log = Math.log;
4919var LN2 = Math.LN2;
4920var BUFFER = 'buffer';
4921var BYTE_LENGTH = 'byteLength';
4922var BYTE_OFFSET = 'byteOffset';
4923var $BUFFER = DESCRIPTORS ? '_b' : BUFFER;
4924var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;
4925var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
4926
4927// IEEE754 conversions based on https://github.com/feross/ieee754
4928function packIEEE754(value, mLen, nBytes) {
4929  var buffer = new Array(nBytes);
4930  var eLen = nBytes * 8 - mLen - 1;
4931  var eMax = (1 << eLen) - 1;
4932  var eBias = eMax >> 1;
4933  var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;
4934  var i = 0;
4935  var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
4936  var e, m, c;
4937  value = abs(value);
4938  // eslint-disable-next-line no-self-compare
4939  if (value != value || value === Infinity) {
4940    // eslint-disable-next-line no-self-compare
4941    m = value != value ? 1 : 0;
4942    e = eMax;
4943  } else {
4944    e = floor(log(value) / LN2);
4945    if (value * (c = pow(2, -e)) < 1) {
4946      e--;
4947      c *= 2;
4948    }
4949    if (e + eBias >= 1) {
4950      value += rt / c;
4951    } else {
4952      value += rt * pow(2, 1 - eBias);
4953    }
4954    if (value * c >= 2) {
4955      e++;
4956      c /= 2;
4957    }
4958    if (e + eBias >= eMax) {
4959      m = 0;
4960      e = eMax;
4961    } else if (e + eBias >= 1) {
4962      m = (value * c - 1) * pow(2, mLen);
4963      e = e + eBias;
4964    } else {
4965      m = value * pow(2, eBias - 1) * pow(2, mLen);
4966      e = 0;
4967    }
4968  }
4969  for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
4970  e = e << mLen | m;
4971  eLen += mLen;
4972  for (; eLen > 0;
vendor: 6,964 bytes, lines 4972-5164
4972 buffer[i++] = e & 255, e /= 256, eLen -= 8);
4973  buffer[--i] |= s * 128;
4974  return buffer;
4975}
4976function unpackIEEE754(buffer, mLen, nBytes) {
4977  var eLen = nBytes * 8 - mLen - 1;
4978  var eMax = (1 << eLen) - 1;
4979  var eBias = eMax >> 1;
4980  var nBits = eLen - 7;
4981  var i = nBytes - 1;
4982  var s = buffer[i--];
4983  var e = s & 127;
4984  var m;
4985  s >>= 7;
4986  for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
4987  m = e & (1 << -nBits) - 1;
4988  e >>= -nBits;
4989  nBits += mLen;
4990  for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
4991  if (e === 0) {
4992    e = 1 - eBias;
4993  } else if (e === eMax) {
4994    return m ? NaN : s ? -Infinity : Infinity;
4995  } else {
4996    m = m + pow(2, mLen);
4997    e = e - eBias;
4998  } return (s ? -1 : 1) * m * pow(2, e - mLen);
4999}
5000
5001function unpackI32(bytes) {
5002  return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
5003}
5004function packI8(it) {
5005  return [it & 0xff];
5006}
5007function packI16(it) {
5008  return [it & 0xff, it >> 8 & 0xff];
5009}
5010function packI32(it) {
5011  return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
5012}
5013function packF64(it) {
5014  return packIEEE754(it, 52, 8);
5015}
5016function packF32(it) {
5017  return packIEEE754(it, 23, 4);
5018}
5019
5020function addGetter(C, key, internal) {
5021  dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });
5022}
5023
5024function get(view, bytes, index, isLittleEndian) {
5025  var numIndex = +index;
5026  var intIndex = toIndex(numIndex);
5027  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
5028  var store = view[$BUFFER]._b;
5029  var start = intIndex + view[$OFFSET];
5030  var pack = store.slice(start, start + bytes);
5031  return isLittleEndian ? pack : pack.reverse();
5032}
5033function set(view, bytes, index, conversion, value, isLittleEndian) {
5034  var numIndex = +index;
5035  var intIndex = toIndex(numIndex);
5036  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
5037  var store = view[$BUFFER]._b;
5038  var start = intIndex + view[$OFFSET];
5039  var pack = conversion(+value);
5040  for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
5041}
5042
5043if (!$typed.ABV) {
5044  $ArrayBuffer = function ArrayBuffer(length) {
5045    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);
5046    var byteLength = toIndex(length);
5047    this._b = arrayFill.call(new Array(byteLength), 0);
5048    this[$LENGTH] = byteLength;
5049  };
5050
5051  $DataView = function DataView(buffer, byteOffset, byteLength) {
5052    anInstance(this, $DataView, DATA_VIEW);
5053    anInstance(buffer, $ArrayBuffer, DATA_VIEW);
5054    var bufferLength = buffer[$LENGTH];
5055    var offset = toInteger(byteOffset);
5056    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');
5057    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
5058    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);
5059    this[$BUFFER] = buffer;
5060    this[$OFFSET] = offset;
5061    this[$LENGTH] = byteLength;
5062  };
5063
5064  if (DESCRIPTORS) {
5065    addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
5066    addGetter($DataView, BUFFER, '_b');
5067    addGetter($DataView, BYTE_LENGTH, '_l');
5068    addGetter($DataView, BYTE_OFFSET, '_o');
5069  }
5070
5071  redefineAll($DataView[PROTOTYPE], {
5072    getInt8: function getInt8(byteOffset) {
5073      return get(this, 1, byteOffset)[0] << 24 >> 24;
5074    },
5075    getUint8: function getUint8(byteOffset) {
5076      return get(this, 1, byteOffset)[0];
5077    },
5078    getInt16: function getInt16(byteOffset /* , littleEndian */) {
5079      var bytes = get(this, 2, byteOffset, arguments[1]);
5080      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
5081    },
5082    getUint16: function getUint16(byteOffset /* , littleEndian */) {
5083      var bytes = get(this, 2, byteOffset, arguments[1]);
5084      return bytes[1] << 8 | bytes[0];
5085    },
5086    getInt32: function getInt32(byteOffset /* , littleEndian */) {
5087      return unpackI32(get(this, 4, byteOffset, arguments[1]));
5088    },
5089    getUint32: function getUint32(byteOffset /* , littleEndian */) {
5090      return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
5091    },
5092    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {
5093      return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
5094    },
5095    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {
5096      return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
5097    },
5098    setInt8: function setInt8(byteOffset, value) {
5099      set(this, 1, byteOffset, packI8, value);
5100    },
5101    setUint8: function setUint8(byteOffset, value) {
5102      set(this, 1, byteOffset, packI8, value);
5103    },
5104    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {
5105      set(this, 2, byteOffset, packI16, value, arguments[2]);
5106    },
5107    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {
5108      set(this, 2, byteOffset, packI16, value, arguments[2]);
5109    },
5110    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {
5111      set(this, 4, byteOffset, packI32, value, arguments[2]);
5112    },
5113    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {
5114      set(this, 4, byteOffset, packI32, value, arguments[2]);
5115    },
5116    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {
5117      set(this, 4, byteOffset, packF32, value, arguments[2]);
5118    },
5119    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {
5120      set(this, 8, byteOffset, packF64, value, arguments[2]);
5121    }
5122  });
5123} else {
5124  if (!fails(function () {
5125    $ArrayBuffer(1);
5126  }) || !fails(function () {
5127    new $ArrayBuffer(-1); // eslint-disable-line no-new
5128  }) || fails(function () {
5129    new $ArrayBuffer(); // eslint-disable-line no-new
5130    new $ArrayBuffer(1.5); // eslint-disable-line no-new
5131    new $ArrayBuffer(NaN); // eslint-disable-line no-new
5132    return $ArrayBuffer.name != ARRAY_BUFFER;
5133  })) {
5134    $ArrayBuffer = function ArrayBuffer(length) {
5135      anInstance(this, $ArrayBuffer);
5136      return new BaseBuffer(toIndex(length));
5137    };
5138    var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
5139    for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {
5140      if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);
5141    }
5142    if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;
5143  }
5144  // iOS Safari 7.x bug
5145  var view = new $DataView(new $ArrayBuffer(2));
5146  var $setInt8 = $DataView[PROTOTYPE].setInt8;
5147  view.setInt8(0, 2147483648);
5148  view.setInt8(1, 2147483649);
5149  if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {
5150    setInt8: function setInt8(byteOffset, value) {
5151      $setInt8.call(this, byteOffset, value << 24 >> 24);
5152    },
5153    setUint8: function setUint8(byteOffset, value) {
5154      $setInt8.call(this, byteOffset, value << 24 >> 24);
5155    }
5156  }, true);
5157}
5158setToStringTag($ArrayBuffer, ARRAY_BUFFER);
5159setToStringTag($DataView, DATA_VIEW);
5160hide($DataView[PROTOTYPE], $typed.VIEW, true);
5161exports[ARRAY_BUFFER] = $ArrayBuffer;
5162exports[DATA_VIEW] = $DataView;
5163
5164},{"./_an-instance":20,"./_array-fill":23,"./_descriptors":43,"./_fail
5164s":49,"./_global":55,"./_hide":57,"./_library":74,"./_object-dp":86,"./_object-gopn":91,"./_redefine-all":105,"./_set-to-string-tag":115,"./_to-index":129,"./_to-integer":130,"./_to-length":132,"./_typed":137}],137:[function(require,module,exports){
5165var global = require('./_global');
5166var hide = require('./_hide');
5167var uid = require('./_uid');
5168var TYPED = uid('typed_array');
5169var VIEW = uid('view');
5170var ABV = !!(global.ArrayBuffer && global.DataView);
5171var CONSTR = ABV;
5172var i = 0;
5173var l = 9;
5174var Typed;
5175
5176var TypedArrayConstructors = (
5177  'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
5178).split(',');
5179
5180while (i < l) {
5181  if (Typed = global[TypedArrayConstructors[i++]]) {
5182    hide(Typed.prototype, TYPED, true);
5183    hide(Typed.prototype, VIEW, true);
5184  } else CONSTR = false;
5185}
5186
5187module.exports = {
5188  ABV: ABV,
5189  CONSTR: CONSTR,
5190  TYPED: TYPED,
5191  VIEW: VIEW
5192};
5193
5194},{"./_global":55,"./_hide":57,"./_uid":138}],138:[function(require,module,exports){
5195var id = 0;
5196var px = Math.random();
5197module.exports = function (key) {
5198  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
5199};
5200
5201},{}],139:[function(require,module,exports){
5202var global = require('./_global');
5203var navigator = global.navigator;
5204
5205module.exports = navigator && navigator.userAgent || '';
5206
5207},{"./_global":55}],140:[function(require,module,exports){
5208var isObject = require('./_is-object');
5209module.exports = function (it, TYPE) {
5210  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
5211  return it;
5212};
5213
5214},{"./_is-object":66}],141:[function(require,module,exports){
5215var global = require('./_global');
5216var core = require('./_core');
5217var LIBRARY = require('./_library');
5218var wksExt = require('./_wks-ext');
5219var defineProperty = require('./_object-dp').f;
5220module.exports = function (name) {
5221  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
5222  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
5223};
5224
5225},{"./_core":37,"./_global":55,"./_library":74,"./_object-dp":86,"./_wks-ext":142}],142:[function(require,module,exports){
5226exports.f = require('./_wks');
5227
5228},{"./_wks":143}],143:[function(require,module,exports){
5229var store = require('./_shared')('wks');
5230var uid = require('./_uid');
5231var Symbol = require('./_global').Symbol;
5232var USE_SYMBOL = typeof Symbol == 'function';
5233
5234var $exports = module.exports = function (name) {
5235  return store[name] || (store[name] =
5236    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
5237};
5238
5239$exports.store = store;
5240
5241},{"./_global":55,"./_shared":117,"./_uid":138}],144:[function(require,module,exports){
5242var classof = require('./_classof');
5243var ITERATOR = require('./_wks')('iterator');
5244var Iterators = require('./_iterators');
5245module.exports = require('./_core').getIteratorMethod = function (it) {
5246  if (it != undefined) return it[ITERATOR]
5247    || it['@@iterator']
5248    || Iterators[classof(it)];
5249};
5250
5251},{"./_classof":31,"./_core":37,"./_iterators":73,"./_wks":143}],145:[function(require,module,exports){
5252// https://github.com/benjamingr/RexExp.escape
5253var $export = require('./_export');
5254var $re = require('./_replacer')(/[\\^$*+?.()|[\]{}]/g, '\\$&');
5255
5256$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });
5257
5258},{"./_export":47,"./_replacer":109}],146:[function(require,module,exports){
5259// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
5260var $export = require('./_export');
5261
5262$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });
5263
5264require('./_add-to-unscopables')('copyWithin');
5265
5266},{"./_add-to-unscopables":18,"./_array-copy-within":22,"./_export":47}],147:[function(require,module,exports){
5267'use strict';
5268var $export = require('./_export');
5269var $every = require('./_array-methods')(4);
5270
5271$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {
5272  // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
5273  every: function every(callbackfn /* , thisArg */) {
5274    return $every(this, callbackfn, arguments[1]);
5275  }
5276});
5277
5278},{"./_array-methods":26,"./_export":47,"./_strict-method":119}],148:[function(require,module,exports){
5279// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
5280var $export = require('./_export');
5281
5282$export($export.P, 'Array', { fill: require('./_array-fill') });
5283
5284require('./_add-to-unscopables')('fill');
5285
5286},{"./_add-to-unscopables":18,"./_array-fill":23,"./_export":47}],149:[function(require,module,exports){
5287'use strict';
5288var $export = require('./_export');
5289var $filter = require('./_array-methods')(2);
5290
5291$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {
5292  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
5293  filter: function filter(callbackfn /* , thisArg */) {
5294    return $filter(this, callbackfn, arguments[1]);
5295  }
5296});
5297
5298},{"./_array-methods":26,"./_export":47,"./_strict-method":119}],150:[function(require,module,exports){
5299'use strict';
5300// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
5301var $export = require('./_export');
5302var $find = require('./_array-methods')(6);
5303var KEY = 'findIndex';
5304var forced = true;
5305// Shouldn't skip holes
5306if (KEY in []) Array(1)[KEY](function () { forced = false; });
5307$export($export.P + $export.F * forced, 'Array', {
5308  findIndex: function findIndex(callbackfn /* , that = undefined */) {
5309    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
5310  }
5311});
5312require('./_add-to-unscopables')(KEY);
5313
5314},{"./_add-to-unscopables":18,"./_array-methods":26,"./_export":47}],151:[function(require,module,exports){
5315'use strict';
5316// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
vendor: 5,173 bytes, lines 5317-5443
5317var $export = require('./_export');
5318var $find = require('./_array-methods')(5);
5319var KEY = 'find';
5320var forced = true;
5321// Shouldn't skip holes
5322if (KEY in []) Array(1)[KEY](function () { forced = false; });
5323$export($export.P + $export.F * forced, 'Array', {
5324  find: function find(callbackfn /* , that = undefined */) {
5325    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
5326  }
5327});
5328require('./_add-to-unscopables')(KEY);
5329
5330},{"./_add-to-unscopables":18,"./_array-methods":26,"./_export":47}],152:[function(require,module,exports){
5331'use strict';
5332var $export = require('./_export');
5333var $forEach = require('./_array-methods')(0);
5334var STRICT = require('./_strict-method')([].forEach, true);
5335
5336$export($export.P + $export.F * !STRICT, 'Array', {
5337  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
5338  forEach: function forEach(callbackfn /* , thisArg */) {
5339    return $forEach(this, callbackfn, arguments[1]);
5340  }
5341});
5342
5343},{"./_array-methods":26,"./_export":47,"./_strict-method":119}],153:[function(require,module,exports){
5344'use strict';
5345var ctx = require('./_ctx');
5346var $export = require('./_export');
5347var toObject = require('./_to-object');
5348var call = require('./_iter-call');
5349var isArrayIter = require('./_is-array-iter');
5350var toLength = require('./_to-length');
5351var createProperty = require('./_create-property');
5352var getIterFn = require('./core.get-iterator-method');
5353
5354$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {
5355  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
5356  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
5357    var O = toObject(arrayLike);
5358    var C = typeof this == 'function' ? this : Array;
5359    var aLen = arguments.length;
5360    var mapfn = aLen > 1 ? arguments[1] : undefined;
5361    var mapping = mapfn !== undefined;
5362    var index = 0;
5363    var iterFn = getIterFn(O);
5364    var length, result, step, iterator;
5365    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
5366    // if object isn't iterable or it's array with default iterator - use simple case
5367    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
5368      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
5369        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
5370      }
5371    } else {
5372      length = toLength(O.length);
5373      for (result = new C(length); length > index; index++) {
5374        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
5375      }
5376    }
5377    result.length = index;
5378    return result;
5379  }
5380});
5381
5382},{"./_create-property":38,"./_ctx":39,"./_export":47,"./_is-array-iter":63,"./_iter-call":68,"./_iter-detect":71,"./_to-length":132,"./_to-object":133,"./core.get-iterator-method":144}],154:[function(require,module,exports){
5383'use strict';
5384var $export = require('./_export');
5385var $indexOf = require('./_array-includes')(false);
5386var $native = [].indexOf;
5387var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;
5388
5389$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {
5390  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
5391  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
5392    return NEGATIVE_ZERO
5393      // convert -0 to +0
5394      ? $native.apply(this, arguments) || 0
5395      : $indexOf(this, searchElement, arguments[1]);
5396  }
5397});
5398
5399},{"./_array-includes":25,"./_export":47,"./_strict-method":119}],155:[function(require,module,exports){
5400// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
5401var $export = require('./_export');
5402
5403$export($export.S, 'Array', { isArray: require('./_is-array') });
5404
5405},{"./_export":47,"./_is-array":64}],156:[function(require,module,exports){
5406'use strict';
5407var addToUnscopables = require('./_add-to-unscopables');
5408var step = require('./_iter-step');
5409var Iterators = require('./_iterators');
5410var toIObject = require('./_to-iobject');
5411
5412// 22.1.3.4 Array.prototype.entries()
5413// 22.1.3.13 Array.prototype.keys()
5414// 22.1.3.29 Array.prototype.values()
5415// 22.1.3.30 Array.prototype[@@iterator]()
5416module.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {
5417  this._t = toIObject(iterated); // target
5418  this._i = 0;                   // next index
5419  this._k = kind;                // kind
5420// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
5421}, function () {
5422  var O = this._t;
5423  var kind = this._k;
5424  var index = this._i++;
5425  if (!O || index >= O.length) {
5426    this._t = undefined;
5427    return step(1);
5428  }
5429  if (kind == 'keys') return step(0, index);
5430  if (kind == 'values') return step(0, O[index]);
5431  return step(0, [index, O[index]]);
5432}, 'values');
5433
5434// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
5435Iterators.Arguments = Iterators.Array;
5436
5437addToUnscopables('keys');
5438addToUnscopables('values');
5439addToUnscopables('entries');
5440
5441},{"./_add-to-unscopables":18,"./_iter-define":70,"./_iter-step":72,"./_iterators":73,"./_to-iobject":131}],157:[function(require,module,exports){
5442'use strict';
5443// 22.1.3.13 Array.prototype.join(separator)
5444var $export = require('./_export');
5445var toIObject = require('./_to-iobject');
5446var arrayJoin = [].join;
5447
5448// fallback for not array-like strings
5449$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {
5450  join: function join(separator) {
5451    return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
5452  }
5453});
5454
5455},{"./_export":47,"./_iobject":62,"./_strict-method":119,"./_to-iobject":131}],158:[function(require,module,exports){
5456'use strict';
5457var $export = require('./_export');
5458var toIObject = require('./_to-iobject');
5459var toInteger = require('./_to-integer');
5460var toLength = require('./_to-length');
5461var $native = [].lastIndexOf;
5462var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;
5463
5464$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {
5465  // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
5466  lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
5467    // convert -0 to +0
5468    if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;
5469    var O = toIObject(this);
5470    var length = toLength(O.length);
5471    var index = length - 1;
5472    if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));
5473    if (index < 0) index = length + index;
5474    for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;
5475    return -1;
5476  }
5477});
5478
5479},{"./_export":47,"./_strict-method":119,"./_to-integer":130,"./_to-iobject":131,"./_to-length":132}],159:[function(require,module,exports){
5480'use strict';
5481var $export = require('./_export');
5482var $map = require('./_array-methods')(1);
5483
5484$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {
5485  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
5486  map: function map(callbackfn /* , thisArg */) {
5487    return $map(this, callbackfn, arguments[1]);
5488  }
5489});
5490
5491},{"./_array-methods":26,"./_export":47,"./_strict-method":119}],160:[function(require,module,exports){
5492'use strict';
5493var $export = require('./_export');
5494var createProperty = require('./_create-property');
5495
5496// WebKit Array.of isn't generic
5497$export($export.S + $export.F * require('./_fails')(function () {
5498  function F() { /* empty */ }
5499  return !(Array.of.call(F) instanceof F);
5500}), 'Array', {
5501  // 22.1.2.3 Array.of( ...items)
5502  of: function of(/* ...args */) {
5503    var index = 0;
5504    var aLen = arguments.length;
5505    var result = new (typeof this == 'function' ? this : Array)(aLen);
5506    while (aLen > index) createProperty(result, index, arguments[index++]);
5507    result.length = aLen;
5508    return result;
5509  }
5510});
5511
5512},{"./_create-property":38,"./_export":47,"./_fails":49}],161:[function(require,module,exports){
5513'use strict';
5514var $export = require('./_export');
5515var $reduce = require('./_array-reduce');
5516
5517$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {
5518  // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
5519  reduceRight: function reduceRight(callbackfn /* , initialValue */) {
5520    return $reduce(this, callbackfn, arguments.length, arguments[1], true);
5521  }
5522});
5523
5524},{"./_array-reduce":27,"./_export":47,"./_strict-method":119}],162:[function(require,module,exports){
5525'use strict';
5526var $export = require('./_export');
5527var $reduce = require('./_array-reduce');
5528
5529$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {
5530  // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
5531  reduce: function reduce(callbackfn /* , initialValue */) {
5532    return $reduce(this, callbackfn, arguments.length, arguments[1], false);
5533  }
5534});
5535
5536},{"./_array-reduce":27,"./_export":47,"./_strict-method":119}],163:[function(require,module,exports){
5537'use strict';
5538var $export = require('./_export');
5539var html = require('./_html');
5540var cof = require('./_cof');
5541var toAbsoluteIndex = require('./_to-absolute-index');
5542var toLength = require('./_to-length');
5543var arraySlice = [].slice;
5544
5545// fallback for not array-like ES3 strings and DOM objects
5546$export($export.P + $export.F * require('./_fails')(function () {
5547  if (html) arraySlice.call(html);
5548}), 'Array', {
5549  slice: function slice(begin, end) {
5550    var len = toLength(this.length);
5551    var klass = cof(this);
5552    end = end === undefined ? len : end;
5553    if (klass == 'Array') return arraySlice.call(this, begin, end);
5554    var start = toAbsoluteIndex(begin, len);
5555    var upTo = toAbsoluteIndex(end, len);
5556    var size = toLength(upTo - start);
5557    var cloned = new Array(size);
5558    var i = 0;
5559    for (; i < size; i++) cloned[i] = klass == 'String'
5560      ? this.charAt(start + i)
5561      : this[start + i];
5562    return cloned;
5563  }
5564});
5565
5566}
5566,{"./_cof":32,"./_export":47,"./_fails":49,"./_html":58,"./_to-absolute-index":128,"./_to-length":132}],164:[function(require,module,exports){
5567'use strict';
5568var $export = require('./_export');
5569var $some = require('./_array-methods')(3);
5570
5571$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {
5572  // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
5573  some: function some(callbackfn /* , thisArg */) {
5574    return $some(this, callbackfn, arguments[1]);
5575  }
5576});
5577
5578},{"./_array-methods":26,"./_export":47,"./_strict-method":119}],165:[function(require,module,exports){
5579'use strict';
5580var $export = require('./_export');
5581var aFunction = require('./_a-function');
5582var toObject = require('./_to-object');
5583var fails = require('./_fails');
5584var $sort = [].sort;
5585var test = [1, 2, 3];
5586
5587$export($export.P + $export.F * (fails(function () {
5588  // IE8-
5589  test.sort(undefined);
5590}) || !fails(function () {
5591  // V8 bug
5592  test.sort(null);
5593  // Old WebKit
5594}) || !require('./_strict-method')($sort)), 'Array', {
5595  // 22.1.3.25 Array.prototype.sort(comparefn)
5596  sort: function sort(comparefn) {
5597    return comparefn === undefined
5598      ? $sort.call(toObject(this))
5599      : $sort.call(toObject(this), aFunction(comparefn));
5600  }
5601});
5602
5603},{"./_a-function":16,"./_export":47,"./_fails":49,"./_strict-method":119,"./_to-object":133}],166:[function(require,module,exports){
5604require('./_set-species')('Array');
5605
5606},{"./_set-species":114}],167:[function(require,module,exports){
5607// 20.3.3.1 / 15.9.4.4 Date.now()
5608var $export = require('./_export');
5609
5610$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });
5611
5612},{"./_export":47}],168:[function(require,module,exports){
5613// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
5614var $export = require('./_export');
5615var toISOString = require('./_date-to-iso-string');
5616
5617// PhantomJS / old WebKit has a broken implementations
5618$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {
5619  toISOString: toISOString
5620});
5621
5622},{"./_date-to-iso-string":40,"./_export":47}],169:[function(require,module,exports){
5623'use strict';
5624var $export = require('./_export');
5625var toObject = require('./_to-object');
5626var toPrimitive = require('./_to-primitive');
5627
5628$export($export.P + $export.F * require('./_fails')(function () {
5629  return new Date(NaN).toJSON() !== null
5630    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;
5631}), 'Date', {
5632  // eslint-disable-next-line no-unused-vars
5633  toJSON: function toJSON(key) {
5634    var O = toObject(this);
5635    var pv = toPrimitive(O);
5636    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
5637  }
5638});
5639
5640},{"./_export":47,"./_fails":49,"./_to-object":133,"./_to-primitive":134}],170:[function(require,module,exports){
5641var TO_PRIMITIVE = require('./_wks')('toPrimitive');
5642var proto = Date.prototype;
5643
5644if (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));
5645
5646},{"./_date-to-primitive":41,"./_hide":57,"./_wks":143}],171:[function(require,module,exports){
5647var DateProto = Date.prototype;
5648var INVALID_DATE = 'Invalid Date';
5649var TO_STRING = 'toString';
5650var $toString = DateProto[TO_STRING];
5651var getTime = DateProto.getTime;
5652if (new Date(NaN) + '' != INVALID_DATE) {
5653  require('./_redefine')(DateProto, TO_STRING, function toString() {
5654    var value = getTime.call(this);
5655    // eslint-disable-next-line no-self-compare
5656    return value === value ? $toString.call(this) : INVALID_DATE;
5657  });
5658}
5659
5660},{"./_redefine":106}],172:[function(require,module,exports){
5661// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
5662var $export = require('./_export');
5663
5664$export($export.P, 'Function', { bind: require('./_bind') });
5665
5666},{"./_bind":30,"./_export":47}],173:[function(require,module,exports){
5667'use strict';
5668var isObject = require('./_is-object');
5669var getPrototypeOf = require('./_object-gpo');
5670var HAS_INSTANCE = require('./_wks')('hasInstance');
5671var FunctionProto = Function.prototype;
5672// 19.2.3.6 Function.prototype[@@hasInstance](V)
5673if (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {
5674  if (typeof this != 'function' || !isObject(O)) return false;
5675  if (!isObject(this.prototype)) return O instanceof this;
5676  // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
5677  while (O = getPrototypeOf(O)) if (this.prototype === O) return true;
5678  return false;
5679} });
5680
5681},{"./_is-object":66,"./_object-dp":86,"./_object-gpo":93,"./_wks":143}],174:[function(require,module,exports){
5682var dP = require('./_object-dp').f;
5683var FProto = Function.prototype;
5684var nameRE = /^\s*function ([^ (]*)/;
5685var NAME = 'name';
5686
5687// 19.2.4.2 name
5688NAME in FProto || require('./_descriptors') && dP(FProto, NAME, {
5689  configurable: true,
5690  get: function () {
5691    try {
5692      return ('' + this).match(nameRE)[1];
5693    } catch (e) {
5694      return '';
5695    }
5696  }
5697});
5698
5699},{"./_descriptors":43,"./_object-dp":86}],175:[function(require,module,exports){
5700'use strict';
5701var strong = require('./_collection-strong');
5702var validate = require('./_validate-collection');
5703var MAP = 'Map';
5704
5705// 23.1 Map Objects
5706module.exports = require('./_collection')(MAP, function (get) {
5707  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
5708}, {
5709  // 23.1.3.6 Map.prototype.get(key)
5710  get: function get(key) {
5711    var entry = strong.getEntry(validate(this, MAP), key);
5712    return entry && entry.v;
5713  },
5714  // 23.1.3.9 Map.prototype.set(key, value)
5715  set: function set(key, value) {
5716    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
5717  }
5718}, strong, true);
5719
5720},{"./_collection":36,"./_collection-strong":33,"./_validate-collection":140}],176:[function(require,module,exports){
5721// 20.2.2.3 Math.acosh(x)
5722var $export = require('./_export');
5723var log1p = require('./_math-log1p');
5724var sqrt = Math.sqrt;
5725var $acosh = Math.acosh;
5726
5727$export($export.S + $export.F * !($acosh
5728  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
5729  && Math.floor($acosh(Number.MAX_VALUE)) == 710
5730  // Tor Browser bug: Math.acosh(Infinity) -> NaN
5731  && $acosh(Infinity) == Infinity
5732), 'Math', {
5733  acosh: function acosh(x) {
5734    return (x = +x) < 1 ? NaN : x > 94906265.62425156
5735      ? Math.log(x) + Math.LN2
5736      : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
5737  }
5738});
5739
5740},{"./_export":47,"./_math-log1p":77}],177:[function(require,module,exports){
5741// 20.2.2.5 Math.asinh(x)
5742var $export = require('./_export');
5743var $asinh = Math.asinh;
5744
5745function asinh(x) {
5746  return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
5747}
5748
5749// Tor Browser bug: Math.asinh(0) -> -0
5750$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });
5751
5752},{"./_export":47}],178:[function(require,module,exports){
5753// 20.2.2.7 Math.atanh(x)
5754var $export = require('./_export');
5755var $atanh = Math.atanh;
5756
5757// Tor Browser bug: Math.atanh(-0) -> 0
5758$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {
5759  atanh: function atanh(x) {
5760    return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
5761  }
5762});
5763
5764},{"./_export":47}],179:[function(require,module,exports){
5765// 20.2.2.9 Math.cbrt(x)
5766var $export = require('./_export');
5767var sign = require('./_math-sign');
5768
5769$export($export.S, 'Math', {
5770  cbrt: function cbrt(x) {
5771    return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
5772  }
5773});
5774
5775},{"./_export":47,"./_math-sign":79}],180:[function(require,module,exports){
5776// 20.2.2.11 Math.clz32(x)
5777var $export = require('./_export');
5778
5779$export($export.S, 'Math', {
5780  clz32: function clz32(x) {
5781    return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
5782  }
5783});
5784
5785},{"./_export":47}],181:[function(require,module,exports){
5786// 20.2.2.12 Math.cosh(x)
5787var $export = require('./_export');
5788var exp = Math.exp;
5789
5790$export($export.S, 'Math', {
5791  cosh: function cosh(x) {
5792    return (exp(x = +x) + exp(-x)) / 2;
5793  }
5794});
5795
5796},{"./_export":47}],182:[function(require,module,exports){
5797// 20.2.2.14 Math.expm1(x)
5798var $export = require('./_export');
5799var $expm1 = require('./_math-expm1');
5800
5801$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });
5802
5803},{"./_export":47,"./_math-expm1":75}],183:[function(require,module,exports){
5804// 20.2.2.16 Math.fround(x)
5805var $export = require('./_export');
5806
5807$export($export.S, 'Math', { fround: require('./_math-fround') });
5808
5809},{"./_export":47,"./_math-fround":76}],184:[function(require,module,exports){
5810// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
vendor: 4,775 bytes, lines 5811-5964
5811var $export = require('./_export');
5812var abs = Math.abs;
5813
5814$export($export.S, 'Math', {
5815  hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars
5816    var sum = 0;
5817    var i = 0;
5818    var aLen = arguments.length;
5819    var larg = 0;
5820    var arg, div;
5821    while (i < aLen) {
5822      arg = abs(arguments[i++]);
5823      if (larg < arg) {
5824        div = larg / arg;
5825        sum = sum * div * div + 1;
5826        larg = arg;
5827      } else if (arg > 0) {
5828        div = arg / larg;
5829        sum += div * div;
5830      } else sum += arg;
5831    }
5832    return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
5833  }
5834});
5835
5836},{"./_export":47}],185:[function(require,module,exports){
5837// 20.2.2.18 Math.imul(x, y)
5838var $export = require('./_export');
5839var $imul = Math.imul;
5840
5841// some WebKit versions fails with big numbers, some has wrong arity
5842$export($export.S + $export.F * require('./_fails')(function () {
5843  return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
5844}), 'Math', {
5845  imul: function imul(x, y) {
5846    var UINT16 = 0xffff;
5847    var xn = +x;
5848    var yn = +y;
5849    var xl = UINT16 & xn;
5850    var yl = UINT16 & yn;
5851    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
5852  }
5853});
5854
5855},{"./_export":47,"./_fails":49}],186:[function(require,module,exports){
5856// 20.2.2.21 Math.log10(x)
5857var $export = require('./_export');
5858
5859$export($export.S, 'Math', {
5860  log10: function log10(x) {
5861    return Math.log(x) * Math.LOG10E;
5862  }
5863});
5864
5865},{"./_export":47}],187:[function(require,module,exports){
5866// 20.2.2.20 Math.log1p(x)
5867var $export = require('./_export');
5868
5869$export($export.S, 'Math', { log1p: require('./_math-log1p') });
5870
5871},{"./_export":47,"./_math-log1p":77}],188:[function(require,module,exports){
5872// 20.2.2.22 Math.log2(x)
5873var $export = require('./_export');
5874
5875$export($export.S, 'Math', {
5876  log2: function log2(x) {
5877    return Math.log(x) / Math.LN2;
5878  }
5879});
5880
5881},{"./_export":47}],189:[function(require,module,exports){
5882// 20.2.2.28 Math.sign(x)
5883var $export = require('./_export');
5884
5885$export($export.S, 'Math', { sign: require('./_math-sign') });
5886
5887},{"./_export":47,"./_math-sign":79}],190:[function(require,module,exports){
5888// 20.2.2.30 Math.sinh(x)
5889var $export = require('./_export');
5890var expm1 = require('./_math-expm1');
5891var exp = Math.exp;
5892
5893// V8 near Chromium 38 has a problem with very small numbers
5894$export($export.S + $export.F * require('./_fails')(function () {
5895  return !Math.sinh(-2e-17) != -2e-17;
5896}), 'Math', {
5897  sinh: function sinh(x) {
5898    return Math.abs(x = +x) < 1
5899      ? (expm1(x) - expm1(-x)) / 2
5900      : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
5901  }
5902});
5903
5904},{"./_export":47,"./_fails":49,"./_math-expm1":75}],191:[function(require,module,exports){
5905// 20.2.2.33 Math.tanh(x)
5906var $export = require('./_export');
5907var expm1 = require('./_math-expm1');
5908var exp = Math.exp;
5909
5910$export($export.S, 'Math', {
5911  tanh: function tanh(x) {
5912    var a = expm1(x = +x);
5913    var b = expm1(-x);
5914    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
5915  }
5916});
5917
5918},{"./_export":47,"./_math-expm1":75}],192:[function(require,module,exports){
5919// 20.2.2.34 Math.trunc(x)
5920var $export = require('./_export');
5921
5922$export($export.S, 'Math', {
5923  trunc: function trunc(it) {
5924    return (it > 0 ? Math.floor : Math.ceil)(it);
5925  }
5926});
5927
5928},{"./_export":47}],193:[function(require,module,exports){
5929'use strict';
5930var global = require('./_global');
5931var has = require('./_has');
5932var cof = require('./_cof');
5933var inheritIfRequired = require('./_inherit-if-required');
5934var toPrimitive = require('./_to-primitive');
5935var fails = require('./_fails');
5936var gOPN = require('./_object-gopn').f;
5937var gOPD = require('./_object-gopd').f;
5938var dP = require('./_object-dp').f;
5939var $trim = require('./_string-trim').trim;
5940var NUMBER = 'Number';
5941var $Number = global[NUMBER];
5942var Base = $Number;
5943var proto = $Number.prototype;
5944// Opera ~12 has broken Object#toString
5945var BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;
5946var TRIM = 'trim' in String.prototype;
5947
5948// 7.1.3 ToNumber(argument)
5949var toNumber = function (argument) {
5950  var it = toPrimitive(argument, false);
5951  if (typeof it == 'string' && it.length > 2) {
5952    it = TRIM ? it.trim() : $trim(it, 3);
5953    var first = it.charCodeAt(0);
5954    var third, radix, maxCode;
5955    if (first === 43 || first === 45) {
5956      third = it.charCodeAt(2);
5957      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
5958    } else if (first === 48) {
5959      switch (it.charCodeAt(1)) {
5960        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
5961        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
5962        default: return +it;
5963      }
5964      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {
vendor: 1,663 bytes, lines 5965-6000
5965        code = digits.charCodeAt(i);
5966        // parseInt parses a string to a first unavailable symbol
5967        // but ToNumber should return NaN if a string contains unavailable symbols
5968        if (code < 48 || code > maxCode) return NaN;
5969      } return parseInt(digits, radix);
5970    }
5971  } return +it;
5972};
5973
5974if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {
5975  $Number = function Number(value) {
5976    var it = arguments.length < 1 ? 0 : value;
5977    var that = this;
5978    return that instanceof $Number
5979      // check on 1..constructor(foo) case
5980      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)
5981        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
5982  };
5983  for (var keys = require('./_descriptors') ? gOPN(Base) : (
5984    // ES3:
5985    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
5986    // ES6 (in case, if modules with ES6 Number statics required before):
5987    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
5988    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
5989  ).split(','), j = 0, key; keys.length > j; j++) {
5990    if (has(Base, key = keys[j]) && !has($Number, key)) {
5991      dP($Number, key, gOPD(Base, key));
5992    }
5993  }
5994  $Number.prototype = proto;
5995  proto.constructor = $Number;
5996  require('./_redefine')(global, NUMBER, $Number);
5997}
5998
5999},{"./_cof":32,"./_descriptors":43,"./_fails":49,"./_global":55,"./_has":56,"./_inherit-if-required":60,"./_object-create":85,"./_object-dp":86,"./_object-gopd":89,"./_object-gopn":91,"./_redefine":106,"./_string-trim":125,"./_to-primitive":134}],194:[function(require,module,exports){
6000// 20.1.2.1 Number.EPSILON
vendor: 4,583 bytes, lines 6001-6159
6001var $export = require('./_export');
6002
6003$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });
6004
6005},{"./_export":47}],195:[function(require,module,exports){
6006// 20.1.2.2 Number.isFinite(number)
6007var $export = require('./_export');
6008var _isFinite = require('./_global').isFinite;
6009
6010$export($export.S, 'Number', {
6011  isFinite: function isFinite(it) {
6012    return typeof it == 'number' && _isFinite(it);
6013  }
6014});
6015
6016},{"./_export":47,"./_global":55}],196:[function(require,module,exports){
6017// 20.1.2.3 Number.isInteger(number)
6018var $export = require('./_export');
6019
6020$export($export.S, 'Number', { isInteger: require('./_is-integer') });
6021
6022},{"./_export":47,"./_is-integer":65}],197:[function(require,module,exports){
6023// 20.1.2.4 Number.isNaN(number)
6024var $export = require('./_export');
6025
6026$export($export.S, 'Number', {
6027  isNaN: function isNaN(number) {
6028    // eslint-disable-next-line no-self-compare
6029    return number != number;
6030  }
6031});
6032
6033},{"./_export":47}],198:[function(require,module,exports){
6034// 20.1.2.5 Number.isSafeInteger(number)
6035var $export = require('./_export');
6036var isInteger = require('./_is-integer');
6037var abs = Math.abs;
6038
6039$export($export.S, 'Number', {
6040  isSafeInteger: function isSafeInteger(number) {
6041    return isInteger(number) && abs(number) <= 0x1fffffffffffff;
6042  }
6043});
6044
6045},{"./_export":47,"./_is-integer":65}],199:[function(require,module,exports){
6046// 20.1.2.6 Number.MAX_SAFE_INTEGER
6047var $export = require('./_export');
6048
6049$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });
6050
6051},{"./_export":47}],200:[function(require,module,exports){
6052// 20.1.2.10 Number.MIN_SAFE_INTEGER
6053var $export = require('./_export');
6054
6055$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });
6056
6057},{"./_export":47}],201:[function(require,module,exports){
6058var $export = require('./_export');
6059var $parseFloat = require('./_parse-float');
6060// 20.1.2.12 Number.parseFloat(string)
6061$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });
6062
6063},{"./_export":47,"./_parse-float":100}],202:[function(require,module,exports){
6064var $export = require('./_export');
6065var $parseInt = require('./_parse-int');
6066// 20.1.2.13 Number.parseInt(string, radix)
6067$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });
6068
6069},{"./_export":47,"./_parse-int":101}],203:[function(require,module,exports){
6070'use strict';
6071var $export = require('./_export');
6072var toInteger = require('./_to-integer');
6073var aNumberValue = require('./_a-number-value');
6074var repeat = require('./_string-repeat');
6075var $toFixed = 1.0.toFixed;
6076var floor = Math.floor;
6077var data = [0, 0, 0, 0, 0, 0];
6078var ERROR = 'Number.toFixed: incorrect invocation!';
6079var ZERO = '0';
6080
6081var multiply = function (n, c) {
6082  var i = -1;
6083  var c2 = c;
6084  while (++i < 6) {
6085    c2 += n * data[i];
6086    data[i] = c2 % 1e7;
6087    c2 = floor(c2 / 1e7);
6088  }
6089};
6090var divide = function (n) {
6091  var i = 6;
6092  var c = 0;
6093  while (--i >= 0) {
6094    c += data[i];
6095    data[i] = floor(c / n);
6096    c = (c % n) * 1e7;
6097  }
6098};
6099var numToString = function () {
6100  var i = 6;
6101  var s = '';
6102  while (--i >= 0) {
6103    if (s !== '' || i === 0 || data[i] !== 0) {
6104      var t = String(data[i]);
6105      s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
6106    }
6107  } return s;
6108};
6109var pow = function (x, n, acc) {
6110  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
6111};
6112var log = function (x) {
6113  var n = 0;
6114  var x2 = x;
6115  while (x2 >= 4096) {
6116    n += 12;
6117    x2 /= 4096;
6118  }
6119  while (x2 >= 2) {
6120    n += 1;
6121    x2 /= 2;
6122  } return n;
6123};
6124
6125$export($export.P + $export.F * (!!$toFixed && (
6126  0.00008.toFixed(3) !== '0.000' ||
6127  0.9.toFixed(0) !== '1' ||
6128  1.255.toFixed(2) !== '1.25' ||
6129  1000000000000000128.0.toFixed(0) !== '1000000000000000128'
6130) || !require('./_fails')(function () {
6131  // V8 ~ Android 4.3-
6132  $toFixed.call({});
6133})), 'Number', {
6134  toFixed: function toFixed(fractionDigits) {
6135    var x = aNumberValue(this, ERROR);
6136    var f = toInteger(fractionDigits);
6137    var s = '';
6138    var m = ZERO;
6139    var e, z, j, k;
6140    if (f < 0 || f > 20) throw RangeError(ERROR);
6141    // eslint-disable-next-line no-self-compare
6142    if (x != x) return 'NaN';
6143    if (x <= -1e21 || x >= 1e21) return String(x);
6144    if (x < 0) {
6145      s = '-';
6146      x = -x;
6147    }
6148    if (x > 1e-21) {
6149      e = log(x * pow(2, 69, 1)) - 69;
6150      z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
6151      z *= 0x10000000000000;
6152      e = 52 - e;
6153      if (e > 0) {
6154        multiply(0, z);
6155        j = f;
6156        while (j >= 7) {
6157          multiply(1e7, 0);
6158          j -= 7;
6159        }
6160        multiply(pow(10, j, 1), 0);
6161        j = e - 1;
6162        while (j >= 23) {
6163          divide(1 << 23);
6164          j -= 23;
6165        }
6166        divide(1 << j);
6167        multiply(1, 1);
6168        divide(2);
6169        m = numToString();
6170      } else {
6171        multiply(0, z);
6172        multiply(1 << -e, 0);
6173        m = numToString() + repeat.call(ZERO, f);
6174      }
6175    }
6176    if (f > 0) {
6177      k = m.length;
6178      m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
6179    } else {
6180      m = s + m;
6181    } return m;
6182  }
6183});
6184
6185},{"./_a-number-value":17,"./_export":47,"./_fails":49,"./_string-repeat":124,"./_to-integer":130}],204:[function(require,module,exports){
6186'use strict';
6187var $export = require('./_export');
6188var $fails = require('./_fails');
6189var aNumberValue = require('./_a-number-value');
6190var $toPrecision = 1.0.toPrecision;
6191
6192$export($export.P + $export.F * ($fails(function () {
6193  // IE7-
6194  return $toPrecision.call(1, undefined) !== '1';
6195}) || !$fails(function () {
6196  // V8 ~ Android 4.3-
6197  $toPrecision.call({});
6198})), 'Number', {
6199  toPrecision: function toPrecision(precision) {
6200    var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
6201    return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
6202  }
6203});
6204
6205},{"./_a-number-value":17,"./_export":47,"./_fails":49}],205:[function(require,module,exports){
6206// 19.1.3.1 Object.assign(target, source)
6207var $export = require('./_export');
6208
6209$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });
6210
6211},{"./_export":47,"./_object-assign":84}],206:[function(require,module,exports){
6212var $export = require('./_export');
6213// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
6214$export($export.S, 'Object', { create: require('./_object-create') });
6215
6216},{"./_export":47,"./_object-create":85}],207:[function(require,module,exports){
6217var $export = require('./_export');
6218// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
6219$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });
6220
6221},{"./_descriptors":43,"./_export":47,"./_object-dps":87}],208:[function(require,module,exports){
6222var $export = require('./_export');
6223// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
6224$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });
6225
6226},{"./_descriptors":43,"./_export":47,"./_object-dp":86}],209:[function(require,module,exports){
6227// 19.1.2.5 Object.freeze(O)
6228var isObject = require('./_is-object');
6229var meta = require('./_meta').onFreeze;
6230
6231require('./_object-sap')('freeze', function ($freeze) {
6232  return function freeze(it) {
6233    return $freeze && isObject(it) ? $freeze(meta(it)) : it;
6234  };
6235});
6236
6237},{"./_is-object":66,"./_meta":80,"./_object-sap":97}],210:[function(require,module,exports){
6238// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
6239var toIObject = require('./_to-iobject');
6240var $getOwnPropertyDescriptor = require('./_object-gopd').f;
6241
6242require('./_object-sap')('getOwnPropertyDescriptor', function () {
6243  return function getOwnPropertyDescriptor(it, key) {
6244    return $getOwnPropertyDescriptor(toIObject(it), key);
6245  };
6246});
6247
6248},{"./_object-gopd":89,"./_object-sap":97,"./_to-iobject":131}],211:[function(require,module,exports){
6249// 19.1.2.7 Object.getOwnPropertyNames(O)
6250require('./_object-sap')('getOwnPropertyNames', function () {
6251  return require('./_object-gopn-ext').f;
6252});
6253
6254},{"./_object-gopn-ext":90,"./_object-sap":97}],212:[function(require,module,exports){
6255// 19.1.2.9 Object.getPrototypeOf(O)
6256var toObject = require('./_to-object');
6257var $getPrototypeOf = require('./_object-gpo');
6258
6259require('./_object-sap')('getPrototypeOf', function () {
6260  return function getPrototypeOf(it) {
6261    return $getPrototypeOf(toObject(it));
6262  };
6263});
6264
6265},{"./_object-gpo":93,"./_object-sap":97,"./_to-object":133}],213:[function(require,module,exports){
6266// 19.1.2.11 Object.isExtensible(O)
6267var isObject = require('./_is-object');
6268
6269require('./_object-sap')('isExtensible', function ($isExtensible) {
6270  return function isExtensible(it) {
6271    return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
6272  };
6273});
6274
6275},{"./_is-object":66,"./_object-sap":97}],214:[function(require,module,exports){
6276// 19.1.2.12 Object.isFrozen(O)
6277var isObject = require('./_is-object');
6278
6279require('./_object-sap')('isFrozen', function ($isFrozen) {
6280  return function isFrozen(it) {
6281    return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
6282  };
6283});
6284
6285},{"./_is-object":66,"./_object-sap":97}],215:[function(require,module,exports){
6286// 19.1.2.13 Object.isSealed(O)
6287var isObject = require('./_is-object');
6288
6289require('./_object-sap')('isSealed', function ($isSealed) {
6290  return function isSealed(it) {
6291    return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
6292  };
6293});
6294
6295},{"./_is-object":66,"./_object-sap":97}],216:[function(require,module,exports){
6296// 19.1.3.10 Object.is(value1, value2)
6297var $export = require('./_export');
6298$export($export.S, 'Object', { is: require('./_same-value') });
6299
6300},{"./_export":47,"./_same-value":110}],217:[function(require,module,exports){
6301// 19.1.2.14 Object.keys(O)
6302var toObject = require('./_to-object');
6303var $keys = require('./_object-keys');
6304
6305require('./_object-sap')('keys', function () {
6306  return function keys(it) {
6307    return $keys(toObject(it));
6308  };
6309});
6310
6311},{"./_object-keys":95,"./_object-sap":97,"./_to-object":133}],218:[function(require,module,exports){
6312// 19.1.2.15 Object.preventExtensions(O)
6313var isObject = require('./_is-object');
6314var meta = require('./_meta').onFreeze;
6315
6316require('./_object-sap')('preventExtensions', function ($preventExtensions) {
6317  return function preventExtensions(it) {
6318    return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
6319  };
6320});
6321
6322},{"./_is-object":66,"./_meta":80,"./_object-sap":97}],219:[function(require,module,exports){
6323// 19.1.2.17 Object.seal(O)
6324var isObject = require('./_is-object');
6325var meta = require('./_meta').onFreeze;
6326
6327require('./_object-sap')('seal', function ($seal) {
6328  return function seal(it) {
6329    return $seal && isObject(it) ? $seal(meta(it)) : it;
6330  };
6331});
6332
6333},{"./_is-object":66,"./_meta":80,"./_object-sap":97}],220:[function(require,module,exports){
6334// 19.1.3.19 Object.setPrototypeOf(O, proto)
6335var $export = require('./_export');
6336$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });
6337
6338},{"./_export":47,"./_set-proto":113}],221:[function(require,module,exports){
6339'use strict';
6340// 19.1.3.6 Object.prototype.toString()
6341var classof = require('./_classof');
6342var test = {};
6343test[require('./_wks')('toStringTag')] = 'z';
6344if (test + '' != '[object z]') {
6345  require('./_redefine')(Object.prototype, 'toString', function toString() {
6346    return '[object ' + classof(this) + ']';
6347  }, true);
6348}
6349
6350},{"./_classof":31,"./_redefine":106,"./_wks":143}],222:[function(require,module,exports){
6351var $export = require('./_export');
6352var $parseFloat = require('./_parse-float');
6353// 18.2.4 parseFloat(string)
6354$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });
6355
6356},{"./_export":47,"./_parse-float":100}],223:[function(require,module,exports){
6357var $export = require('./_export');
6358var $parseInt = require('./_parse-int');
6359// 18.2.5 parseInt(string, radix)
6360$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });
6361
6362},{"./_export":47,"./_parse-int":101}],224:[function(require,module,exports){
6363'use strict';
6364var LIBRARY = require('./_library');
6365var global = require('./_global');
6366var ctx = require('./_ctx');
6367var classof = require('./_classof');
6368var $export = require('./_export');
6369var isObject = require('./_is-object');
6370var aFunction = require('./_a-function');
6371var anInstance = require('./_an-instance');
6372var forOf = require('./_for-of');
6373var speciesConstructor = require('./_species-constructor');
6374var task = require('./_task').set;
6375var microtask = require('./_microtask')();
6376var newPromiseCapabilityModule = require('./_new-promise-capability');
6377var perform = require('./_perform');
6378var userAgent = require('./_user-agent');
6379var promiseResolve = require('./_promise-resolve');
6380var PROMISE = 'Promise';
6381var TypeError = global.TypeError;
6382var process = global.process;
6383var versions = process && process.versions;
6384var v8 = versions && versions.v8 || '';
6385var $Promise = global[PROMISE];
6386var isNode = classof(process) == 'process';
6387var empty = function () { /* empty */ };
6388var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
6389var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
6390
6391var USE_NATIVE = !!function () {
6392  try {
6393    // correct subclassing with @@species support
6394    var promise = $Promise.resolve(1);
6395    var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {
6396      exec(empty, empty);
6397    };
6398    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
6399    return (isNode || typeof PromiseRejectionEvent == 'function')
6400      && promise.then(empty) instanceof FakePromise
6401      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
6402      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
6403      // we can't detect it synchronously, so just check versions
6404      && v8.indexOf('6.6') !== 0
6405      && userAgent.indexOf('Chrome/66') === -1;
6406  } catch (e) { /* empty */ }
6407}();
6408
6409// helpers
6410var isThenable = function (it) {
6411  var then;
6412  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
vendor: 11,040 bytes, lines 6413-6717
6413};
6414var notify = function (promise, isReject) {
6415  if (promise._n) return;
6416  promise._n = true;
6417  var chain = promise._c;
6418  microtask(function () {
6419    var value = promise._v;
6420    var ok = promise._s == 1;
6421    var i = 0;
6422    var run = function (reaction) {
6423      var handler = ok ? reaction.ok : reaction.fail;
6424      var resolve = reaction.resolve;
6425      var reject = reaction.reject;
6426      var domain = reaction.domain;
6427      var result, then, exited;
6428      try {
6429        if (handler) {
6430          if (!ok) {
6431            if (promise._h == 2) onHandleUnhandled(promise);
6432            promise._h = 1;
6433          }
6434          if (handler === true) result = value;
6435          else {
6436            if (domain) domain.enter();
6437            result = handler(value); // may throw
6438            if (domain) {
6439              domain.exit();
6440              exited = true;
6441            }
6442          }
6443          if (result === reaction.promise) {
6444            reject(TypeError('Promise-chain cycle'));
6445          } else if (then = isThenable(result)) {
6446            then.call(result, resolve, reject);
6447          } else resolve(result);
6448        } else reject(value);
6449      } catch (e) {
6450        if (domain && !exited) domain.exit();
6451        reject(e);
6452      }
6453    };
6454    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
6455    promise._c = [];
6456    promise._n = false;
6457    if (isReject && !promise._h) onUnhandled(promise);
6458  });
6459};
6460var onUnhandled = function (promise) {
6461  task.call(global, function () {
6462    var value = promise._v;
6463    var unhandled = isUnhandled(promise);
6464    var result, handler, console;
6465    if (unhandled) {
6466      result = perform(function () {
6467        if (isNode) {
6468          process.emit('unhandledRejection', value, promise);
6469        } else if (handler = global.onunhandledrejection) {
6470          handler({ promise: promise, reason: value });
6471        } else if ((console = global.console) && console.error) {
6472          console.error('Unhandled promise rejection', value);
6473        }
6474      });
6475      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
6476      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
6477    } promise._a = undefined;
6478    if (unhandled && result.e) throw result.v;
6479  });
6480};
6481var isUnhandled = function (promise) {
6482  return promise._h !== 1 && (promise._a || promise._c).length === 0;
6483};
6484var onHandleUnhandled = function (promise) {
6485  task.call(global, function () {
6486    var handler;
6487    if (isNode) {
6488      process.emit('rejectionHandled', promise);
6489    } else if (handler = global.onrejectionhandled) {
6490      handler({ promise: promise, reason: promise._v });
6491    }
6492  });
6493};
6494var $reject = function (value) {
6495  var promise = this;
6496  if (promise._d) return;
6497  promise._d = true;
6498  promise = promise._w || promise; // unwrap
6499  promise._v = value;
6500  promise._s = 2;
6501  if (!promise._a) promise._a = promise._c.slice();
6502  notify(promise, true);
6503};
6504var $resolve = function (value) {
6505  var promise = this;
6506  var then;
6507  if (promise._d) return;
6508  promise._d = true;
6509  promise = promise._w || promise; // unwrap
6510  try {
6511    if (promise === value) throw TypeError("Promise can't be resolved itself");
6512    if (then = isThenable(value)) {
6513      microtask(function () {
6514        var wrapper = { _w: promise, _d: false }; // wrap
6515        try {
6516          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
6517        } catch (e) {
6518          $reject.call(wrapper, e);
6519        }
6520      });
6521    } else {
6522      promise._v = value;
6523      promise._s = 1;
6524      notify(promise, false);
6525    }
6526  } catch (e) {
6527    $reject.call({ _w: promise, _d: false }, e); // wrap
6528  }
6529};
6530
6531// constructor polyfill
6532if (!USE_NATIVE) {
6533  // 25.4.3.1 Promise(executor)
6534  $Promise = function Promise(executor) {
6535    anInstance(this, $Promise, PROMISE, '_h');
6536    aFunction(executor);
6537    Internal.call(this);
6538    try {
6539      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
6540    } catch (err) {
6541      $reject.call(this, err);
6542    }
6543  };
6544  // eslint-disable-next-line no-unused-vars
6545  Internal = function Promise(executor) {
6546    this._c = [];             // <- awaiting reactions
6547    this._a = undefined;      // <- checked in isUnhandled reactions
6548    this._s = 0;              // <- state
6549    this._d = false;          // <- done
6550    this._v = undefined;      // <- value
6551    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
6552    this._n = false;          // <- notify
6553  };
6554  Internal.prototype = require('./_redefine-all')($Promise.prototype, {
6555    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
6556    then: function then(onFulfilled, onRejected) {
6557      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
6558      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
6559      reaction.fail = typeof onRejected == 'function' && onRejected;
6560      reaction.domain = isNode ? process.domain : undefined;
6561      this._c.push(reaction);
6562      if (this._a) this._a.push(reaction);
6563      if (this._s) notify(this, false);
6564      return reaction.promise;
6565    },
6566    // 25.4.5.1 Promise.prototype.catch(onRejected)
6567    'catch': function (onRejected) {
6568      return this.then(undefined, onRejected);
6569    }
6570  });
6571  OwnPromiseCapability = function () {
6572    var promise = new Internal();
6573    this.promise = promise;
6574    this.resolve = ctx($resolve, promise, 1);
6575    this.reject = ctx($reject, promise, 1);
6576  };
6577  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
6578    return C === $Promise || C === Wrapper
6579      ? new OwnPromiseCapability(C)
6580      : newGenericPromiseCapability(C);
6581  };
6582}
6583
6584$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
6585require('./_set-to-string-tag')($Promise, PROMISE);
6586require('./_set-species')(PROMISE);
6587Wrapper = require('./_core')[PROMISE];
6588
6589// statics
6590$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
6591  // 25.4.4.5 Promise.reject(r)
6592  reject: function reject(r) {
6593    var capability = newPromiseCapability(this);
6594    var $$reject = capability.reject;
6595    $$reject(r);
6596    return capability.promise;
6597  }
6598});
6599$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
6600  // 25.4.4.6 Promise.resolve(x)
6601  resolve: function resolve(x) {
6602    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
6603  }
6604});
6605$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {
6606  $Promise.all(iter)['catch'](empty);
6607})), PROMISE, {
6608  // 25.4.4.1 Promise.all(iterable)
6609  all: function all(iterable) {
6610    var C = this;
6611    var capability = newPromiseCapability(C);
6612    var resolve = capability.resolve;
6613    var reject = capability.reject;
6614    var result = perform(function () {
6615      var values = [];
6616      var index = 0;
6617      var remaining = 1;
6618      forOf(iterable, false, function (promise) {
6619        var $index = index++;
6620        var alreadyCalled = false;
6621        values.push(undefined);
6622        remaining++;
6623        C.resolve(promise).then(function (value) {
6624          if (alreadyCalled) return;
6625          alreadyCalled = true;
6626          values[$index] = value;
6627          --remaining || resolve(values);
6628        }, reject);
6629      });
6630      --remaining || resolve(values);
6631    });
6632    if (result.e) reject(result.v);
6633    return capability.promise;
6634  },
6635  // 25.4.4.4 Promise.race(iterable)
6636  race: function race(iterable) {
6637    var C = this;
6638    var capability = newPromiseCapability(C);
6639    var reject = capability.reject;
6640    var result = perform(function () {
6641      forOf(iterable, false, function (promise) {
6642        C.resolve(promise).then(capability.resolve, reject);
6643      });
6644    });
6645    if (result.e) reject(result.v);
6646    return capability.promise;
6647  }
6648});
6649
6650},{"./_a-function":16,"./_an-instance":20,"./_classof":31,"./_core":37,"./_ctx":39,"./_export":47,"./_for-of":53,"./_global":55,"./_is-object":66,"./_iter-detect":71,"./_library":74,"./_microtask":82,"./_new-promise-capability":83,"./_perform":102,"./_promise-resolve":103,"./_redefine-all":105,"./_set-species":114,"./_set-to-string-tag":115,"./_species-constructor":118,"./_task":127,"./_user-agent":139,"./_wks":143}],225:[function(require,module,exports){
6651// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
6652var $export = require('./_export');
6653var aFunction = require('./_a-function');
6654var anObject = require('./_an-object');
6655var rApply = (require('./_global').Reflect || {}).apply;
6656var fApply = Function.apply;
6657// MS Edge argumentsList argument is optional
6658$export($export.S + $export.F * !require('./_fails')(function () {
6659  rApply(function () { /* empty */ });
6660}), 'Reflect', {
6661  apply: function apply(target, thisArgument, argumentsList) {
6662    var T = aFunction(target);
6663    var L = anObject(argumentsList);
6664    return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);
6665  }
6666});
6667
6668},{"./_a-function":16,"./_an-object":21,"./_export":47,"./_fails":49,"./_global":55}],226:[function(require,module,exports){
6669// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
6670var $export = require('./_export');
6671var create = require('./_object-create');
6672var aFunction = require('./_a-function');
6673var anObject = require('./_an-object');
6674var isObject = require('./_is-object');
6675var fails = require('./_fails');
6676var bind = require('./_bind');
6677var rConstruct = (require('./_global').Reflect || {}).construct;
6678
6679// MS Edge supports only 2 arguments and argumentsList argument is optional
6680// FF Nightly sets third argument as `new.target`, but does not create `this` from it
6681var NEW_TARGET_BUG = fails(function () {
6682  function F() { /* empty */ }
6683  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
6684});
6685var ARGS_BUG = !fails(function () {
6686  rConstruct(function () { /* empty */ });
6687});
6688
6689$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
6690  construct: function construct(Target, args /* , newTarget */) {
6691    aFunction(Target);
6692    anObject(args);
6693    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
6694    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
6695    if (Target == newTarget) {
6696      // w/o altered newTarget, optimization for 0-4 arguments
6697      switch (args.length) {
6698        case 0: return new Target();
6699        case 1: return new Target(args[0]);
6700        case 2: return new Target(args[0], args[1]);
6701        case 3: return new Target(args[0], args[1], args[2]);
6702        case 4: return new Target(args[0], args[1], args[2], args[3]);
6703      }
6704      // w/o altered newTarget, lot of arguments case
6705      var $args = [null];
6706      $args.push.apply($args, args);
6707      return new (bind.apply(Target, $args))();
6708    }
6709    // with altered newTarget, not support built-in constructors
6710    var proto = newTarget.prototype;
6711    var instance = create(isObject(proto) ? proto : Object.prototype);
6712    var result = Function.apply.call(Target, instance, args);
6713    return isObject(result) ? result : instance;
6714  }
6715});
6716
6717},{"./_a-function":16,"./_an-object":21,"./_bind":30,"./_export":47,"./_fail
6717s":49,"./_global":55,"./_is-object":66,"./_object-create":85}],227:[function(require,module,exports){
6718// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
6719var dP = require('./_object-dp');
6720var $export = require('./_export');
6721var anObject = require('./_an-object');
6722var toPrimitive = require('./_to-primitive');
6723
6724// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
6725$export($export.S + $export.F * require('./_fails')(function () {
6726  // eslint-disable-next-line no-undef
6727  Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });
6728}), 'Reflect', {
6729  defineProperty: function defineProperty(target, propertyKey, attributes) {
6730    anObject(target);
6731    propertyKey = toPrimitive(propertyKey, true);
6732    anObject(attributes);
6733    try {
6734      dP.f(target, propertyKey, attributes);
6735      return true;
6736    } catch (e) {
6737      return false;
6738    }
6739  }
6740});
6741
6742},{"./_an-object":21,"./_export":47,"./_fails":49,"./_object-dp":86,"./_to-primitive":134}],228:[function(require,module,exports){
6743// 26.1.4 Reflect.deleteProperty(target, propertyKey)
6744var $export = require('./_export');
6745var gOPD = require('./_object-gopd').f;
6746var anObject = require('./_an-object');
6747
6748$export($export.S, 'Reflect', {
6749  deleteProperty: function deleteProperty(target, propertyKey) {
6750    var desc = gOPD(anObject(target), propertyKey);
6751    return desc && !desc.configurable ? false : delete target[propertyKey];
6752  }
6753});
6754
6755},{"./_an-object":21,"./_export":47,"./_object-gopd":89}],229:[function(require,module,exports){
6756'use strict';
6757// 26.1.5 Reflect.enumerate(target)
6758var $export = require('./_export');
6759var anObject = require('./_an-object');
6760var Enumerate = function (iterated) {
6761  this._t = anObject(iterated); // target
6762  this._i = 0;                  // next index
6763  var keys = this._k = [];      // keys
6764  var key;
6765  for (key in iterated) keys.push(key);
6766};
6767require('./_iter-create')(Enumerate, 'Object', function () {
6768  var that = this;
6769  var keys = that._k;
6770  var key;
6771  do {
6772    if (that._i >= keys.length) return { value: undefined, done: true };
6773  } while (!((key = keys[that._i++]) in that._t));
6774  return { value: key, done: false };
6775});
6776
6777$export($export.S, 'Reflect', {
6778  enumerate: function enumerate(target) {
6779    return new Enumerate(target);
6780  }
6781});
6782
6783},{"./_an-object":21,"./_export":47,"./_iter-create":69}],230:[function(require,module,exports){
6784// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
6785var gOPD = require('./_object-gopd');
6786var $export = require('./_export');
6787var anObject = require('./_an-object');
6788
6789$export($export.S, 'Reflect', {
6790  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
6791    return gOPD.f(anObject(target), propertyKey);
6792  }
6793});
6794
6795},{"./_an-object":21,"./_export":47,"./_object-gopd":89}],231:[function(require,module,exports){
6796// 26.1.8 Reflect.getPrototypeOf(target)
6797var $export = require('./_export');
6798var getProto = require('./_object-gpo');
6799var anObject = require('./_an-object');
6800
6801$export($export.S, 'Reflect', {
6802  getPrototypeOf: function getPrototypeOf(target) {
6803    return getProto(anObject(target));
6804  }
6805});
6806
6807},{"./_an-object":21,"./_export":47,"./_object-gpo":93}],232:[function(require,module,exports){
6808// 26.1.6 Reflect.get(target, propertyKey [, receiver])
6809var gOPD = require('./_object-gopd');
6810var getPrototypeOf = require('./_object-gpo');
6811var has = require('./_has');
6812var $export = require('./_export');
6813var isObject = require('./_is-object');
6814var anObject = require('./_an-object');
6815
6816function get(target, propertyKey /* , receiver */) {
6817  var receiver = arguments.length < 3 ? target : arguments[2];
6818  var desc, proto;
6819  if (anObject(target) === receiver) return target[propertyKey];
6820  if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
6821    ? desc.value
6822    : desc.get !== undefined
6823      ? desc.get.call(receiver)
6824      : undefined;
6825  if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
6826}
6827
6828$export($export.S, 'Reflect', { get: get });
6829
6830},{"./_an-object":21,"./_export":47,"./_has":56,"./_is-object":66,"./_object-gopd":89,"./_object-gpo":93}],233:[function(require,module,exports){
6831// 26.1.9 Reflect.has(target, propertyKey)
vendor: 2,912 bytes, lines 6832-6921
6832var $export = require('./_export');
6833
6834$export($export.S, 'Reflect', {
6835  has: function has(target, propertyKey) {
6836    return propertyKey in target;
6837  }
6838});
6839
6840},{"./_export":47}],234:[function(require,module,exports){
6841// 26.1.10 Reflect.isExtensible(target)
6842var $export = require('./_export');
6843var anObject = require('./_an-object');
6844var $isExtensible = Object.isExtensible;
6845
6846$export($export.S, 'Reflect', {
6847  isExtensible: function isExtensible(target) {
6848    anObject(target);
6849    return $isExtensible ? $isExtensible(target) : true;
6850  }
6851});
6852
6853},{"./_an-object":21,"./_export":47}],235:[function(require,module,exports){
6854// 26.1.11 Reflect.ownKeys(target)
6855var $export = require('./_export');
6856
6857$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });
6858
6859},{"./_export":47,"./_own-keys":99}],236:[function(require,module,exports){
6860// 26.1.12 Reflect.preventExtensions(target)
6861var $export = require('./_export');
6862var anObject = require('./_an-object');
6863var $preventExtensions = Object.preventExtensions;
6864
6865$export($export.S, 'Reflect', {
6866  preventExtensions: function preventExtensions(target) {
6867    anObject(target);
6868    try {
6869      if ($preventExtensions) $preventExtensions(target);
6870      return true;
6871    } catch (e) {
6872      return false;
6873    }
6874  }
6875});
6876
6877},{"./_an-object":21,"./_export":47}],237:[function(require,module,exports){
6878// 26.1.14 Reflect.setPrototypeOf(target, proto)
6879var $export = require('./_export');
6880var setProto = require('./_set-proto');
6881
6882if (setProto) $export($export.S, 'Reflect', {
6883  setPrototypeOf: function setPrototypeOf(target, proto) {
6884    setProto.check(target, proto);
6885    try {
6886      setProto.set(target, proto);
6887      return true;
6888    } catch (e) {
6889      return false;
6890    }
6891  }
6892});
6893
6894},{"./_export":47,"./_set-proto":113}],238:[function(require,module,exports){
6895// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
6896var dP = require('./_object-dp');
6897var gOPD = require('./_object-gopd');
6898var getPrototypeOf = require('./_object-gpo');
6899var has = require('./_has');
6900var $export = require('./_export');
6901var createDesc = require('./_property-desc');
6902var anObject = require('./_an-object');
6903var isObject = require('./_is-object');
6904
6905function set(target, propertyKey, V /* , receiver */) {
6906  var receiver = arguments.length < 4 ? target : arguments[3];
6907  var ownDesc = gOPD.f(anObject(target), propertyKey);
6908  var existingDescriptor, proto;
6909  if (!ownDesc) {
6910    if (isObject(proto = getPrototypeOf(target))) {
6911      return set(proto, propertyKey, V, receiver);
6912    }
6913    ownDesc = createDesc(0);
6914  }
6915  if (has(ownDesc, 'value')) {
6916    if (ownDesc.writable === false || !isObject(receiver)) return false;
6917    if (existingDescriptor = gOPD.f(receiver, propertyKey)) {
6918      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
6919      existingDescriptor.value = V;
6920      dP.f(receiver, propertyKey, existingDescriptor);
6921    }
vendor: 4,096 bytes, lines 6921-7026
6921 else dP.f(receiver, propertyKey, createDesc(0, V));
6922    return true;
6923  }
6924  return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
6925}
6926
6927$export($export.S, 'Reflect', { set: set });
6928
6929},{"./_an-object":21,"./_export":47,"./_has":56,"./_is-object":66,"./_object-dp":86,"./_object-gopd":89,"./_object-gpo":93,"./_property-desc":104}],239:[function(require,module,exports){
6930var global = require('./_global');
6931var inheritIfRequired = require('./_inherit-if-required');
6932var dP = require('./_object-dp').f;
6933var gOPN = require('./_object-gopn').f;
6934var isRegExp = require('./_is-regexp');
6935var $flags = require('./_flags');
6936var $RegExp = global.RegExp;
6937var Base = $RegExp;
6938var proto = $RegExp.prototype;
6939var re1 = /a/g;
6940var re2 = /a/g;
6941// "new" creates a new object, old webkit buggy here
6942var CORRECT_NEW = new $RegExp(re1) !== re1;
6943
6944if (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {
6945  re2[require('./_wks')('match')] = false;
6946  // RegExp constructor can alter flags and IsRegExp works correct with @@match
6947  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
6948}))) {
6949  $RegExp = function RegExp(p, f) {
6950    var tiRE = this instanceof $RegExp;
6951    var piRE = isRegExp(p);
6952    var fiU = f === undefined;
6953    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
6954      : inheritIfRequired(CORRECT_NEW
6955        ? new Base(piRE && !fiU ? p.source : p, f)
6956        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
6957      , tiRE ? this : proto, $RegExp);
6958  };
6959  var proxy = function (key) {
6960    key in $RegExp || dP($RegExp, key, {
6961      configurable: true,
6962      get: function () { return Base[key]; },
6963      set: function (it) { Base[key] = it; }
6964    });
6965  };
6966  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
6967  proto.constructor = $RegExp;
6968  $RegExp.prototype = proto;
6969  require('./_redefine')(global, 'RegExp', $RegExp);
6970}
6971
6972require('./_set-species')('RegExp');
6973
6974},{"./_descriptors":43,"./_fails":49,"./_flags":51,"./_global":55,"./_inherit-if-required":60,"./_is-regexp":67,"./_object-dp":86,"./_object-gopn":91,"./_redefine":106,"./_set-species":114,"./_wks":143}],240:[function(require,module,exports){
6975'use strict';
6976var regexpExec = require('./_regexp-exec');
6977require('./_export')({
6978  target: 'RegExp',
6979  proto: true,
6980  forced: regexpExec !== /./.exec
6981}, {
6982  exec: regexpExec
6983});
6984
6985},{"./_export":47,"./_regexp-exec":108}],241:[function(require,module,exports){
6986// 21.2.5.3 get RegExp.prototype.flags()
6987if (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {
6988  configurable: true,
6989  get: require('./_flags')
6990});
6991
6992},{"./_descriptors":43,"./_flags":51,"./_object-dp":86}],242:[function(require,module,exports){
6993'use strict';
6994
6995var anObject = require('./_an-object');
6996var toLength = require('./_to-length');
6997var advanceStringIndex = require('./_advance-string-index');
6998var regExpExec = require('./_regexp-exec-abstract');
6999
7000// @@match logic
7001require('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {
7002  return [
7003    // `String.prototype.match` method
7004    // https://tc39.github.io/ecma262/#sec-string.prototype.match
7005    function match(regexp) {
7006      var O = defined(this);
7007      var fn = regexp == undefined ? undefined : regexp[MATCH];
7008      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
7009    },
7010    // `RegExp.prototype[@@match]` method
7011    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match
7012    function (regexp) {
7013      var res = maybeCallNative($match, regexp, this);
7014      if (res.done) return res.value;
7015      var rx = anObject(regexp);
7016      var S = String(this);
7017      if (!rx.global) return regExpExec(rx, S);
7018      var fullUnicode = rx.unicode;
7019      rx.lastIndex = 0;
7020      var A = [];
7021      var n = 0;
7022      var result;
7023      while ((result = regExpExec(rx, S)) !== null) {
7024        var matchStr = String(result[0]);
7025        A[n] = matchStr;
7026        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLe
vendor: 4,345 bytes, lines 7026-7133
7026ngth(rx.lastIndex), fullUnicode);
7027        n++;
7028      }
7029      return n === 0 ? null : A;
7030    }
7031  ];
7032});
7033
7034},{"./_advance-string-index":19,"./_an-object":21,"./_fix-re-wks":50,"./_regexp-exec-abstract":107,"./_to-length":132}],243:[function(require,module,exports){
7035'use strict';
7036
7037var anObject = require('./_an-object');
7038var toObject = require('./_to-object');
7039var toLength = require('./_to-length');
7040var toInteger = require('./_to-integer');
7041var advanceStringIndex = require('./_advance-string-index');
7042var regExpExec = require('./_regexp-exec-abstract');
7043var max = Math.max;
7044var min = Math.min;
7045var floor = Math.floor;
7046var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
7047var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;
7048
7049var maybeToString = function (it) {
7050  return it === undefined ? it : String(it);
7051};
7052
7053// @@replace logic
7054require('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
7055  return [
7056    // `String.prototype.replace` method
7057    // https://tc39.github.io/ecma262/#sec-string.prototype.replace
7058    function replace(searchValue, replaceValue) {
7059      var O = defined(this);
7060      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
7061      return fn !== undefined
7062        ? fn.call(searchValue, O, replaceValue)
7063        : $replace.call(String(O), searchValue, replaceValue);
7064    },
7065    // `RegExp.prototype[@@replace]` method
7066    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
7067    function (regexp, replaceValue) {
7068      var res = maybeCallNative($replace, regexp, this, replaceValue);
7069      if (res.done) return res.value;
7070
7071      var rx = anObject(regexp);
7072      var S = String(this);
7073      var functionalReplace = typeof replaceValue === 'function';
7074      if (!functionalReplace) replaceValue = String(replaceValue);
7075      var global = rx.global;
7076      if (global) {
7077        var fullUnicode = rx.unicode;
7078        rx.lastIndex = 0;
7079      }
7080      var results = [];
7081      while (true) {
7082        var result = regExpExec(rx, S);
7083        if (result === null) break;
7084        results.push(result);
7085        if (!global) break;
7086        var matchStr = String(result[0]);
7087        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
7088      }
7089      var accumulatedResult = '';
7090      var nextSourcePosition = 0;
7091      for (var i = 0; i < results.length; i++) {
7092        result = results[i];
7093        var matched = String(result[0]);
7094        var position = max(min(toInteger(result.index), S.length), 0);
7095        var captures = [];
7096        // NOTE: This is equivalent to
7097        //   captures = result.slice(1).map(maybeToString)
7098        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
7099        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
7100        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
7101        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
7102        var namedCaptures = result.groups;
7103        if (functionalReplace) {
7104          var replacerArgs = [matched].concat(captures, position, S);
7105          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
7106          var replacement = String(replaceValue.apply(undefined, replacerArgs));
7107        } else {
7108          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
7109        }
7110        if (position >= nextSourcePosition) {
7111          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
7112          nextSourcePosition = position + matched.length;
7113        }
7114      }
7115      return accumulatedResult + S.slice(nextSourcePosition);
7116    }
7117  ];
7118
7119    // https://tc39.github.io/ecma262/#sec-getsubstitution
7120  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
7121    var tailPos = position + matched.length;
7122    var m = captures.length;
7123    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
7124    if (namedCaptures !== undefined) {
7125      namedCaptures = toObject(namedCaptures);
7126      symbols = SUBSTITUTION_SYMBOLS;
7127    }
7128    return $replace.call(replacement, symbols, function (match, ch) {
7129      var capture;
7130      switch (ch.charAt(0)) {
7131        case '$': return '$';
7132        case '&': return matched;
7133        case '`': return str.slice(0, position);
vendor: 5,519 bytes, lines 7134-7269
7134        case "'": return str.slice(tailPos);
7135        case '<':
7136          capture = namedCaptures[ch.slice(1, -1)];
7137          break;
7138        default: // \d\d?
7139          var n = +ch;
7140          if (n === 0) return match;
7141          if (n > m) {
7142            var f = floor(n / 10);
7143            if (f === 0) return match;
7144            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
7145            return match;
7146          }
7147          capture = captures[n - 1];
7148      }
7149      return capture === undefined ? '' : capture;
7150    });
7151  }
7152});
7153
7154},{"./_advance-string-index":19,"./_an-object":21,"./_fix-re-wks":50,"./_regexp-exec-abstract":107,"./_to-integer":130,"./_to-length":132,"./_to-object":133}],244:[function(require,module,exports){
7155'use strict';
7156
7157var anObject = require('./_an-object');
7158var sameValue = require('./_same-value');
7159var regExpExec = require('./_regexp-exec-abstract');
7160
7161// @@search logic
7162require('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {
7163  return [
7164    // `String.prototype.search` method
7165    // https://tc39.github.io/ecma262/#sec-string.prototype.search
7166    function search(regexp) {
7167      var O = defined(this);
7168      var fn = regexp == undefined ? undefined : regexp[SEARCH];
7169      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
7170    },
7171    // `RegExp.prototype[@@search]` method
7172    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search
7173    function (regexp) {
7174      var res = maybeCallNative($search, regexp, this);
7175      if (res.done) return res.value;
7176      var rx = anObject(regexp);
7177      var S = String(this);
7178      var previousLastIndex = rx.lastIndex;
7179      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
7180      var result = regExpExec(rx, S);
7181      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
7182      return result === null ? -1 : result.index;
7183    }
7184  ];
7185});
7186
7187},{"./_an-object":21,"./_fix-re-wks":50,"./_regexp-exec-abstract":107,"./_same-value":110}],245:[function(require,module,exports){
7188'use strict';
7189
7190var isRegExp = require('./_is-regexp');
7191var anObject = require('./_an-object');
7192var speciesConstructor = require('./_species-constructor');
7193var advanceStringIndex = require('./_advance-string-index');
7194var toLength = require('./_to-length');
7195var callRegExpExec = require('./_regexp-exec-abstract');
7196var regexpExec = require('./_regexp-exec');
7197var fails = require('./_fails');
7198var $min = Math.min;
7199var $push = [].push;
7200var $SPLIT = 'split';
7201var LENGTH = 'length';
7202var LAST_INDEX = 'lastIndex';
7203var MAX_UINT32 = 0xffffffff;
7204
7205// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
7206var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });
7207
7208// @@split logic
7209require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
7210  var internalSplit;
7211  if (
7212    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
7213    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
7214    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
7215    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
7216    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
7217    ''[$SPLIT](/.?/)[LENGTH]
7218  ) {
7219    // based on es5-shim implementation, need to rework it
7220    internalSplit = function (separator, limit) {
7221      var string = String(this);
7222      if (separator === undefined && limit === 0) return [];
7223      // If `separator` is not a regex, use native split
7224      if (!isRegExp(separator)) return $split.call(string, separator, limit);
7225      var output = [];
7226      var flags = (separator.ignoreCase ? 'i' : '') +
7227                  (separator.multiline ? 'm' : '') +
7228                  (separator.unicode ? 'u' : '') +
7229                  (separator.sticky ? 'y' : '');
7230      var lastLastIndex = 0;
7231      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;
7232      // Make `global` and avoid `lastIndex` issues by working with a copy
7233      var separatorCopy = new RegExp(separator.source, flags + 'g');
7234      var match, lastIndex, lastLength;
7235      while (match = regexpExec.call(separatorCopy, string)) {
7236        lastIndex = separatorCopy[LAST_INDEX];
7237        if (lastIndex > lastLastIndex) {
7238          output.push(string.slice(lastLastIndex, match.index));
7239          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
7240          lastLength = match[0][LENGTH];
7241          lastLastIndex = lastIndex;
7242          if (output[LENGTH] >= splitLimit) break;
7243        }
7244        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
7245      }
7246      if (lastLastIndex === string[LENGTH]) {
7247        if (lastLength || !separatorCopy.test('')) output.push('');
7248      } else output.push(string.slice(lastLastIndex));
7249      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
7250    };
7251  // Chakra, V8
7252  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
7253    internalSplit = function (separator, limit) {
7254      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
7255    };
7256  } else {
7257    internalSplit = $split;
7258  }
7259
7260  return [
7261    // `String.prototype.split` method
7262    // https://tc39.github.io/ecma262/#sec-string.prototype.split
7263    function split(separator, limit) {
7264      var O = defined(this);
7265      var splitter = separator == undefined ? undefined : separator[SPLIT];
7266      return splitter !== undefined
7267        ? splitter.call(separator, O, limit)
7268        : internalSplit.call(String(O), separator, limit);
7269    },
vendor: 4,163 bytes, lines 7270-7385
7270    // `RegExp.prototype[@@split]` method
7271    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
7272    //
7273    // NOTE: This cannot be properly polyfilled in engines that don't support
7274    // the 'y' flag.
7275    function (regexp, limit) {
7276      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
7277      if (res.done) return res.value;
7278
7279      var rx = anObject(regexp);
7280      var S = String(this);
7281      var C = speciesConstructor(rx, RegExp);
7282
7283      var unicodeMatching = rx.unicode;
7284      var flags = (rx.ignoreCase ? 'i' : '') +
7285                  (rx.multiline ? 'm' : '') +
7286                  (rx.unicode ? 'u' : '') +
7287                  (SUPPORTS_Y ? 'y' : 'g');
7288
7289      // ^(? + rx + ) is needed, in combination with some S slicing, to
7290      // simulate the 'y' flag.
7291      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
7292      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
7293      if (lim === 0) return [];
7294      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
7295      var p = 0;
7296      var q = 0;
7297      var A = [];
7298      while (q < S.length) {
7299        splitter.lastIndex = SUPPORTS_Y ? q : 0;
7300        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
7301        var e;
7302        if (
7303          z === null ||
7304          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
7305        ) {
7306          q = advanceStringIndex(S, q, unicodeMatching);
7307        } else {
7308          A.push(S.slice(p, q));
7309          if (A.length === lim) return A;
7310          for (var i = 1; i <= z.length - 1; i++) {
7311            A.push(z[i]);
7312            if (A.length === lim) return A;
7313          }
7314          q = p = e;
7315        }
7316      }
7317      A.push(S.slice(p));
7318      return A;
7319    }
7320  ];
7321});
7322
7323},{"./_advance-string-index":19,"./_an-object":21,"./_fails":49,"./_fix-re-wks":50,"./_is-regexp":67,"./_regexp-exec":108,"./_regexp-exec-abstract":107,"./_species-constructor":118,"./_to-length":132}],246:[function(require,module,exports){
7324'use strict';
7325require('./es6.regexp.flags');
7326var anObject = require('./_an-object');
7327var $flags = require('./_flags');
7328var DESCRIPTORS = require('./_descriptors');
7329var TO_STRING = 'toString';
7330var $toString = /./[TO_STRING];
7331
7332var define = function (fn) {
7333  require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);
7334};
7335
7336// 21.2.5.14 RegExp.prototype.toString()
7337if (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
7338  define(function toString() {
7339    var R = anObject(this);
7340    return '/'.concat(R.source, '/',
7341      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
7342  });
7343// FF44- RegExp#toString has a wrong name
7344} else if ($toString.name != TO_STRING) {
7345  define(function toString() {
7346    return $toString.call(this);
7347  });
7348}
7349
7350},{"./_an-object":21,"./_descriptors":43,"./_fails":49,"./_flags":51,"./_redefine":106,"./es6.regexp.flags":241}],247:[function(require,module,exports){
7351'use strict';
7352var strong = require('./_collection-strong');
7353var validate = require('./_validate-collection');
7354var SET = 'Set';
7355
7356// 23.2 Set Objects
7357module.exports = require('./_collection')(SET, function (get) {
7358  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
7359}, {
7360  // 23.2.3.1 Set.prototype.add(value)
7361  add: function add(value) {
7362    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
7363  }
7364}, strong);
7365
7366},{"./_collection":36,"./_collection-strong":33,"./_validate-collection":140}],248:[function(require,module,exports){
7367'use strict';
7368// B.2.3.2 String.prototype.anchor(name)
7369require('./_string-html')('anchor', function (createHTML) {
7370  return function anchor(name) {
7371    return createHTML(this, 'a', 'name', name);
7372  };
7373});
7374
7375},{"./_string-html":122}],249:[function(require,module,exports){
7376'use strict';
7377// B.2.3.3 String.prototype.big()
7378require('./_string-html')('big', function (createHTML) {
7379  return function big() {
7380    return createHTML(this, 'big', '', '');
7381  };
7382});
7383
7384},{"./_string-html":122}],250:[function(require,module,exports){
7385'use strict';
vendor: 5,289 bytes, lines 7386-7538
7386// B.2.3.4 String.prototype.blink()
7387require('./_string-html')('blink', function (createHTML) {
7388  return function blink() {
7389    return createHTML(this, 'blink', '', '');
7390  };
7391});
7392
7393},{"./_string-html":122}],251:[function(require,module,exports){
7394'use strict';
7395// B.2.3.5 String.prototype.bold()
7396require('./_string-html')('bold', function (createHTML) {
7397  return function bold() {
7398    return createHTML(this, 'b', '', '');
7399  };
7400});
7401
7402},{"./_string-html":122}],252:[function(require,module,exports){
7403'use strict';
7404var $export = require('./_export');
7405var $at = require('./_string-at')(false);
7406$export($export.P, 'String', {
7407  // 21.1.3.3 String.prototype.codePointAt(pos)
7408  codePointAt: function codePointAt(pos) {
7409    return $at(this, pos);
7410  }
7411});
7412
7413},{"./_export":47,"./_string-at":120}],253:[function(require,module,exports){
7414// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
7415'use strict';
7416var $export = require('./_export');
7417var toLength = require('./_to-length');
7418var context = require('./_string-context');
7419var ENDS_WITH = 'endsWith';
7420var $endsWith = ''[ENDS_WITH];
7421
7422$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {
7423  endsWith: function endsWith(searchString /* , endPosition = @length */) {
7424    var that = context(this, searchString, ENDS_WITH);
7425    var endPosition = arguments.length > 1 ? arguments[1] : undefined;
7426    var len = toLength(that.length);
7427    var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
7428    var search = String(searchString);
7429    return $endsWith
7430      ? $endsWith.call(that, search, end)
7431      : that.slice(end - search.length, end) === search;
7432  }
7433});
7434
7435},{"./_export":47,"./_fails-is-regexp":48,"./_string-context":121,"./_to-length":132}],254:[function(require,module,exports){
7436'use strict';
7437// B.2.3.6 String.prototype.fixed()
7438require('./_string-html')('fixed', function (createHTML) {
7439  return function fixed() {
7440    return createHTML(this, 'tt', '', '');
7441  };
7442});
7443
7444},{"./_string-html":122}],255:[function(require,module,exports){
7445'use strict';
7446// B.2.3.7 String.prototype.fontcolor(color)
7447require('./_string-html')('fontcolor', function (createHTML) {
7448  return function fontcolor(color) {
7449    return createHTML(this, 'font', 'color', color);
7450  };
7451});
7452
7453},{"./_string-html":122}],256:[function(require,module,exports){
7454'use strict';
7455// B.2.3.8 String.prototype.fontsize(size)
7456require('./_string-html')('fontsize', function (createHTML) {
7457  return function fontsize(size) {
7458    return createHTML(this, 'font', 'size', size);
7459  };
7460});
7461
7462},{"./_string-html":122}],257:[function(require,module,exports){
7463var $export = require('./_export');
7464var toAbsoluteIndex = require('./_to-absolute-index');
7465var fromCharCode = String.fromCharCode;
7466var $fromCodePoint = String.fromCodePoint;
7467
7468// length should be 1, old FF problem
7469$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
7470  // 21.1.2.2 String.fromCodePoint(...codePoints)
7471  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars
7472    var res = [];
7473    var aLen = arguments.length;
7474    var i = 0;
7475    var code;
7476    while (aLen > i) {
7477      code = +arguments[i++];
7478      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
7479      res.push(code < 0x10000
7480        ? fromCharCode(code)
7481        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
7482      );
7483    } return res.join('');
7484  }
7485});
7486
7487},{"./_export":47,"./_to-absolute-index":128}],258:[function(require,module,exports){
7488// 21.1.3.7 String.prototype.includes(searchString, position = 0)
7489'use strict';
7490var $export = require('./_export');
7491var context = require('./_string-context');
7492var INCLUDES = 'includes';
7493
7494$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {
7495  includes: function includes(searchString /* , position = 0 */) {
7496    return !!~context(this, searchString, INCLUDES)
7497      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
7498  }
7499});
7500
7501},{"./_export":47,"./_fails-is-regexp":48,"./_string-context":121}],259:[function(require,module,exports){
7502'use strict';
7503// B.2.3.9 String.prototype.italics()
7504require('./_string-html')('italics', function (createHTML) {
7505  return function italics() {
7506    return createHTML(this, 'i', '', '');
7507  };
7508});
7509
7510},{"./_string-html":122}],260:[function(require,module,exports){
7511'use strict';
7512var $at = require('./_string-at')(true);
7513
7514// 21.1.3.27 String.prototype[@@iterator]()
7515require('./_iter-define')(String, 'String', function (iterated) {
7516  this._t = String(iterated); // target
7517  this._i = 0;                // next index
7518// 21.1.5.2.1 %StringIteratorPrototype%.next()
7519}, function () {
7520  var O = this._t;
7521  var index = this._i;
7522  var point;
7523  if (index >= O.length) return { value: undefined, done: true };
7524  point = $at(O, index);
7525  this._i += point.length;
7526  return { value: point, done: false };
7527});
7528
7529},{"./_iter-define":70,"./_string-at":120}],261:[function(require,module,exports){
7530'use strict';
7531// B.2.3.10 String.prototype.link(url)
7532require('./_string-html')('link', function (createHTML) {
7533  return function link(url) {
7534    return createHTML(this, 'a', 'href', url);
7535  };
7536});
7537
7538},{"./_string-html":122}],262:[function(require,module,exports){
vendor: 8,730 bytes, lines 7539-7787
7539var $export = require('./_export');
7540var toIObject = require('./_to-iobject');
7541var toLength = require('./_to-length');
7542
7543$export($export.S, 'String', {
7544  // 21.1.2.4 String.raw(callSite, ...substitutions)
7545  raw: function raw(callSite) {
7546    var tpl = toIObject(callSite.raw);
7547    var len = toLength(tpl.length);
7548    var aLen = arguments.length;
7549    var res = [];
7550    var i = 0;
7551    while (len > i) {
7552      res.push(String(tpl[i++]));
7553      if (i < aLen) res.push(String(arguments[i]));
7554    } return res.join('');
7555  }
7556});
7557
7558},{"./_export":47,"./_to-iobject":131,"./_to-length":132}],263:[function(require,module,exports){
7559var $export = require('./_export');
7560
7561$export($export.P, 'String', {
7562  // 21.1.3.13 String.prototype.repeat(count)
7563  repeat: require('./_string-repeat')
7564});
7565
7566},{"./_export":47,"./_string-repeat":124}],264:[function(require,module,exports){
7567'use strict';
7568// B.2.3.11 String.prototype.small()
7569require('./_string-html')('small', function (createHTML) {
7570  return function small() {
7571    return createHTML(this, 'small', '', '');
7572  };
7573});
7574
7575},{"./_string-html":122}],265:[function(require,module,exports){
7576// 21.1.3.18 String.prototype.startsWith(searchString [, position ])
7577'use strict';
7578var $export = require('./_export');
7579var toLength = require('./_to-length');
7580var context = require('./_string-context');
7581var STARTS_WITH = 'startsWith';
7582var $startsWith = ''[STARTS_WITH];
7583
7584$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {
7585  startsWith: function startsWith(searchString /* , position = 0 */) {
7586    var that = context(this, searchString, STARTS_WITH);
7587    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
7588    var search = String(searchString);
7589    return $startsWith
7590      ? $startsWith.call(that, search, index)
7591      : that.slice(index, index + search.length) === search;
7592  }
7593});
7594
7595},{"./_export":47,"./_fails-is-regexp":48,"./_string-context":121,"./_to-length":132}],266:[function(require,module,exports){
7596'use strict';
7597// B.2.3.12 String.prototype.strike()
7598require('./_string-html')('strike', function (createHTML) {
7599  return function strike() {
7600    return createHTML(this, 'strike', '', '');
7601  };
7602});
7603
7604},{"./_string-html":122}],267:[function(require,module,exports){
7605'use strict';
7606// B.2.3.13 String.prototype.sub()
7607require('./_string-html')('sub', function (createHTML) {
7608  return function sub() {
7609    return createHTML(this, 'sub', '', '');
7610  };
7611});
7612
7613},{"./_string-html":122}],268:[function(require,module,exports){
7614'use strict';
7615// B.2.3.14 String.prototype.sup()
7616require('./_string-html')('sup', function (createHTML) {
7617  return function sup() {
7618    return createHTML(this, 'sup', '', '');
7619  };
7620});
7621
7622},{"./_string-html":122}],269:[function(require,module,exports){
7623'use strict';
7624// 21.1.3.25 String.prototype.trim()
7625require('./_string-trim')('trim', function ($trim) {
7626  return function trim() {
7627    return $trim(this, 3);
7628  };
7629});
7630
7631},{"./_string-trim":125}],270:[function(require,module,exports){
7632'use strict';
7633// ECMAScript 6 symbols shim
7634var global = require('./_global');
7635var has = require('./_has');
7636var DESCRIPTORS = require('./_descriptors');
7637var $export = require('./_export');
7638var redefine = require('./_redefine');
7639var META = require('./_meta').KEY;
7640var $fails = require('./_fails');
7641var shared = require('./_shared');
7642var setToStringTag = require('./_set-to-string-tag');
7643var uid = require('./_uid');
7644var wks = require('./_wks');
7645var wksExt = require('./_wks-ext');
7646var wksDefine = require('./_wks-define');
7647var enumKeys = require('./_enum-keys');
7648var isArray = require('./_is-array');
7649var anObject = require('./_an-object');
7650var isObject = require('./_is-object');
7651var toObject = require('./_to-object');
7652var toIObject = require('./_to-iobject');
7653var toPrimitive = require('./_to-primitive');
7654var createDesc = require('./_property-desc');
7655var _create = require('./_object-create');
7656var gOPNExt = require('./_object-gopn-ext');
7657var $GOPD = require('./_object-gopd');
7658var $GOPS = require('./_object-gops');
7659var $DP = require('./_object-dp');
7660var $keys = require('./_object-keys');
7661var gOPD = $GOPD.f;
7662var dP = $DP.f;
7663var gOPN = gOPNExt.f;
7664var $Symbol = global.Symbol;
7665var $JSON = global.JSON;
7666var _stringify = $JSON && $JSON.stringify;
7667var PROTOTYPE = 'prototype';
7668var HIDDEN = wks('_hidden');
7669var TO_PRIMITIVE = wks('toPrimitive');
7670var isEnum = {}.propertyIsEnumerable;
7671var SymbolRegistry = shared('symbol-registry');
7672var AllSymbols = shared('symbols');
7673var OPSymbols = shared('op-symbols');
7674var ObjectProto = Object[PROTOTYPE];
7675var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
7676var QObject = global.QObject;
7677// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
7678var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
7679
7680// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
7681var setSymbolDesc = DESCRIPTORS && $fails(function () {
7682  return _create(dP({}, 'a', {
7683    get: function () { return dP(this, 'a', { value: 7 }).a; }
7684  })).a != 7;
7685}) ? function (it, key, D) {
7686  var protoDesc = gOPD(ObjectProto, key);
7687  if (protoDesc) delete ObjectProto[key];
7688  dP(it, key, D);
7689  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
7690} : dP;
7691
7692var wrap = function (tag) {
7693  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
7694  sym._k = tag;
7695  return sym;
7696};
7697
7698var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
7699  return typeof it == 'symbol';
7700} : function (it) {
7701  return it instanceof $Symbol;
7702};
7703
7704var $defineProperty = function defineProperty(it, key, D) {
7705  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
7706  anObject(it);
7707  key = toPrimitive(key, true);
7708  anObject(D);
7709  if (has(AllSymbols, key)) {
7710    if (!D.enumerable) {
7711      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
7712      it[HIDDEN][key] = true;
7713    } else {
7714      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
7715      D = _create(D, { enumerable: createDesc(0, false) });
7716    } return setSymbolDesc(it, key, D);
7717  } return dP(it, key, D);
7718};
7719var $defineProperties = function defineProperties(it, P) {
7720  anObject(it);
7721  var keys = enumKeys(P = toIObject(P));
7722  var i = 0;
7723  var l = keys.length;
7724  var key;
7725  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
7726  return it;
7727};
7728var $create = function create(it, P) {
7729  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
7730};
7731var $propertyIsEnumerable = function propertyIsEnumerable(key) {
7732  var E = isEnum.call(this, key = toPrimitive(key, true));
7733  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
7734  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
7735};
7736var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
7737  it = toIObject(it);
7738  key = toPrimitive(key, true);
7739  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
7740  var D = gOPD(it, key);
7741  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
7742  return D;
7743};
7744var $getOwnPropertyNames = function getOwnPropertyNames(it) {
7745  var names = gOPN(toIObject(it));
7746  var result = [];
7747  var i = 0;
7748  var key;
7749  while (names.length > i) {
7750    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
7751  } return result;
7752};
7753var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
7754  var IS_OP = it === ObjectProto;
7755  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
7756  var result = [];
7757  var i = 0;
7758  var key;
7759  while (names.length > i) {
7760    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
7761  } return result;
7762};
7763
7764// 19.4.1.1 Symbol([description])
7765if (!USE_NATIVE) {
7766  $Symbol = function Symbol() {
7767    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
7768    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
7769    var $set = function (value) {
7770      if (this === ObjectProto) $set.call(OPSymbols, value);
7771      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
7772      setSymbolDesc(this, tag, createDesc(1, value));
7773    };
7774    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
7775    return wrap(tag);
7776  };
7777  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
7778    return this._k;
7779  });
7780
7781  $GOPD.f = $getOwnPropertyDescriptor;
7782  $DP.f = $defineProperty;
7783  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;
7784  require('./_object-pie').f = $propertyIsEnumerable;
7785  $GOPS.f = $getOwnPropertySymbols;
7786
7787  if (DESCRIPTORS && !require('./_library'
vendor: 3,255 bytes, lines 7787-7871
7787)) {
7788    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
7789  }
7790
7791  wksExt.f = function (name) {
7792    return wrap(wks(name));
7793  };
7794}
7795
7796$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
7797
7798for (var es6Symbols = (
7799  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
7800  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
7801).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);
7802
7803for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
7804
7805$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
7806  // 19.4.2.1 Symbol.for(key)
7807  'for': function (key) {
7808    return has(SymbolRegistry, key += '')
7809      ? SymbolRegistry[key]
7810      : SymbolRegistry[key] = $Symbol(key);
7811  },
7812  // 19.4.2.5 Symbol.keyFor(sym)
7813  keyFor: function keyFor(sym) {
7814    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
7815    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
7816  },
7817  useSetter: function () { setter = true; },
7818  useSimple: function () { setter = false; }
7819});
7820
7821$export($export.S + $export.F * !USE_NATIVE, 'Object', {
7822  // 19.1.2.2 Object.create(O [, Properties])
7823  create: $create,
7824  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
7825  defineProperty: $defineProperty,
7826  // 19.1.2.3 Object.defineProperties(O, Properties)
7827  defineProperties: $defineProperties,
7828  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
7829  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
7830  // 19.1.2.7 Object.getOwnPropertyNames(O)
7831  getOwnPropertyNames: $getOwnPropertyNames,
7832  // 19.1.2.8 Object.getOwnPropertySymbols(O)
7833  getOwnPropertySymbols: $getOwnPropertySymbols
7834});
7835
7836// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
7837// https://bugs.chromium.org/p/v8/issues/detail?id=3443
7838var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });
7839
7840$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
7841  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
7842    return $GOPS.f(toObject(it));
7843  }
7844});
7845
7846// 24.3.2 JSON.stringify(value [, replacer [, space]])
7847$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
7848  var S = $Symbol();
7849  // MS Edge converts symbol values to JSON as {}
7850  // WebKit converts symbol values to JSON as null
7851  // V8 throws on boxed symbols
7852  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
7853})), 'JSON', {
7854  stringify: function stringify(it) {
7855    var args = [it];
7856    var i = 1;
7857    var replacer, $replacer;
7858    while (arguments.length > i) args.push(arguments[i++]);
7859    $replacer = replacer = args[1];
7860    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
7861    if (!isArray(replacer)) replacer = function (key, value) {
7862      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
7863      if (!isSymbol(value)) return value;
7864    };
7865    args[1] = replacer;
7866    return _stringify.apply($JSON, args);
7867  }
7868});
7869
7870// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
7871$Symbol[PROTOTYPE][TO_PRIMITIVE] || 
vendor: 2,959 bytes, lines 7871-7927
7871require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
7872// 19.4.3.5 Symbol.prototype[@@toStringTag]
7873setToStringTag($Symbol, 'Symbol');
7874// 20.2.1.9 Math[@@toStringTag]
7875setToStringTag(Math, 'Math', true);
7876// 24.3.3 JSON[@@toStringTag]
7877setToStringTag(global.JSON, 'JSON', true);
7878
7879},{"./_an-object":21,"./_descriptors":43,"./_enum-keys":46,"./_export":47,"./_fails":49,"./_global":55,"./_has":56,"./_hide":57,"./_is-array":64,"./_is-object":66,"./_library":74,"./_meta":80,"./_object-create":85,"./_object-dp":86,"./_object-gopd":89,"./_object-gopn":91,"./_object-gopn-ext":90,"./_object-gops":92,"./_object-keys":95,"./_object-pie":96,"./_property-desc":104,"./_redefine":106,"./_set-to-string-tag":115,"./_shared":117,"./_to-iobject":131,"./_to-object":133,"./_to-primitive":134,"./_uid":138,"./_wks":143,"./_wks-define":141,"./_wks-ext":142}],271:[function(require,module,exports){
7880'use strict';
7881var $export = require('./_export');
7882var $typed = require('./_typed');
7883var buffer = require('./_typed-buffer');
7884var anObject = require('./_an-object');
7885var toAbsoluteIndex = require('./_to-absolute-index');
7886var toLength = require('./_to-length');
7887var isObject = require('./_is-object');
7888var ArrayBuffer = require('./_global').ArrayBuffer;
7889var speciesConstructor = require('./_species-constructor');
7890var $ArrayBuffer = buffer.ArrayBuffer;
7891var $DataView = buffer.DataView;
7892var $isView = $typed.ABV && ArrayBuffer.isView;
7893var $slice = $ArrayBuffer.prototype.slice;
7894var VIEW = $typed.VIEW;
7895var ARRAY_BUFFER = 'ArrayBuffer';
7896
7897$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });
7898
7899$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
7900  // 24.1.3.1 ArrayBuffer.isView(arg)
7901  isView: function isView(it) {
7902    return $isView && $isView(it) || isObject(it) && VIEW in it;
7903  }
7904});
7905
7906$export($export.P + $export.U + $export.F * require('./_fails')(function () {
7907  return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
7908}), ARRAY_BUFFER, {
7909  // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
7910  slice: function slice(start, end) {
7911    if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix
7912    var len = anObject(this).byteLength;
7913    var first = toAbsoluteIndex(start, len);
7914    var fin = toAbsoluteIndex(end === undefined ? len : end, len);
7915    var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));
7916    var viewS = new $DataView(this);
7917    var viewT = new $DataView(result);
7918    var index = 0;
7919    while (first < fin) {
7920      viewT.setUint8(index++, viewS.getUint8(first++));
7921    } return result;
7922  }
7923});
7924
7925require('./_set-species')(ARRAY_BUFFER);
7926
7927},{"./_an-object":21,"./_export":47,"./_fails":49,"./_global":55,"./_is-object":66,"./_set-species":114,"./_species-constructor":118,"./_to-absolute-index":128,"./_to-length":132,"./_typed":137,"./_typed-buffer":136}],272:[function(require,module,exports){
7928var $export = require('./_export');
7929$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {
7930  DataView: require('./_typed-buffer').DataView
7931});
7932
7933},{"./_export":47,"./_typed":137,"./_typed-buffer":136}],273:[function(require,module,exports){
7934require('./_typed-array')('Float32', 4, function (init) {
7935  return function Float32Array(data, byteOffset, length) {
7936    return init(this, data, byteOffset, length);
7937  };
7938});
7939
7940},{"./_typed-array":135}],274:[function(require,module,exports){
7941require('./_typed-array')('Float64', 8, function (init) {
7942  return function Float64Array(data, byteOffset, length) {
7943    return init(this, data, byteOffset, length);
7944  };
7945});
7946
7947},{"./_typed-array":135}],275:[function(require,module,exports){
7948require('./_typed-array')('Int16', 2, function (init) {
7949  return function Int16Array(data, byteOffset, length) {
7950    return init(this, data, byteOffset, length);
7951  };
7952});
7953
7954},{"./_typed-array":135}],276:[function(require,module,exports){
7955require('./_typed-array')('Int32', 4, function (init) {
7956  return function Int32Array(data, byteOffset, length) {
7957    return init(this, data, byteOffset, length);
7958  };
7959});
7960
7961},{"./_typed-array":135}],277:[function(require,module,exports){
7962require('./_typed-array')('Int8', 1, function (init) {
7963  return function Int8Array(data, byteOffset, length) {
7964    return init(this, data, byteOffset, length);
7965  };
7966});
7967
7968},{"./_typed-array":135}],278:[function(require,module,exports){
7969require('./_typed-array')('Uint16', 2, function (init) {
7970  return function Uint16Array(data, byteOffset, length) {
7971    return init(this, data, byteOffset, length);
7972  };
7973});
7974
7975},{"./_typed-array":135}],279:[function(require,module,exports){
7976require('./_typed-array')('Uint32', 4, function (init) {
7977  return function Uint32Array(data, byteOffset, length) {
7978    return init(this, data, byteOffset, length);
7979  };
7980});
7981
7982},{"./_typed-array":135}],280:[function(require,module,exports){
7983require('./_typed-array')('Uint8', 1, function (init) {
7984  return function Uint8Array(data, byteOffset, length) {
7985    return init(this, data, byteOffset, length);
7986  };
7987});
7988
7989},{"./_typed-array":135}],281:[function(require,module,exports){
7990require('./_typed-array')('Uint8', 1, function (init) {
7991  return function Uint8ClampedArray(data, byteOffset, length) {
7992    return init(this, data, byteOffset, length);
7993  };
7994}, true);
7995
7996},{"./_typed-array":135}],282:[function(require,module,exports){
7997'use strict';
7998var global = require('./_global');
7999var each = require('./_array-methods')(0);
8000var redefine = require('./_redefine');
8001var meta = require('./_meta');
8002var assign = require('./_object-assign');
8003var weak = require('./_collection-weak');
8004var isObject = require('./_is-object');
8005var validate = require('./_validate-collection');
8006var NATIVE_WEAK_MAP = require('./_validate-collection');
8007var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
8008var WEAK_MAP = 'WeakMap';
8009var getWeak = meta.getWeak;
8010var isExtensible = Object.isExtensible;
8011var uncaughtFrozenStore = weak.ufstore;
8012var InternalMap;
8013
8014var wrapper = function (get) {
8015  return function WeakMap() {
8016    return get(this, arguments.length > 0 ? arguments[0] : undefined);
8017  };
8018};
8019
8020var methods = {
8021  // 23.3.3.3 WeakMap.prototype.get(key)
8022  get: function get(key) {
8023    if (isObject(key)) {
8024      var data = getWeak(key);
8025      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
8026      return data ? data[this._i] : undefined;
8027    }
8028  },
8029  // 23.3.3.5 WeakMap.prototype.set(key, value)
8030  set: function set(key, value) {
8031    return weak.def(validate(this, WEAK_MAP), key, value);
8032  }
8033};
8034
8035// 23.3 WeakMap Objects
8036var $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);
8037
8038// IE11 WeakMap frozen keys fix
8039if (NATIVE_WEAK_MAP && IS_IE11) {
8040  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
8041  assign(InternalMap.prototype, methods);
8042  meta.NEED = true;
8043  each(['delete', 'has', 'get', 'set'], function (key) {
8044    var proto = $WeakMap.prototype;
8045    var method = proto[key];
8046    redefine(proto, key, function (a, b) {
8047      // store frozen objects on internal weakmap shim
8048      if (isObject(a) && !isExtensible(a)) {
8049        if (!this._f) this._f = new InternalMap();
8050        var result = this._f[key](a, b);
8051        return key == 'set' ? this : result;
8052      // store all the rest on native weakmap
8053      } return method.call(this, a, b);
8054    });
8055  });
8056}
8057
8058},{"./_array-methods":26,"./_collection":36,"./_collection-weak":35,"./_global":55,"./_is-object":66,"./_meta":80,"./_object-assign":84,"./_redefine":106,"./_validate-collection":140}],283:[function(require,module,exports){
8059'use strict';
8060var weak = require('./_collection-weak');
8061var validate = require('./_validate-collection');
8062var WEAK_SET = 'WeakSet';
8063
8064// 23.4 WeakSet Objects
8065require('./_collection')(WEAK_SET, function (get) {
8066  return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
8067}, {
8068  // 23.4.3.1 WeakSet.prototype.add(value)
8069  add: function add(value) {
8070    return weak.def(validate(this, WEAK_SET), value, true);
8071  }
8072}, weak, false, true);
8073
8074},{"./_collection":36,"./_collection-weak":35,"./_validate-collection":140}],284:[function(require,module,exports){
8075'use strict';
8076// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap
8077var $export = require('./_export');
8078var flattenIntoArray = require('./_flatten-into-array');
8079var toObject = require('./_to-object');
8080var toLength = require('./_to-length');
8081var aFunction = require('./_a-function');
8082var arraySpeciesCreate = require('./_array-species-create');
8083
8084$export($export.P, 'Array', {
8085  flatMap: function flatMap(callbackfn /* , thisArg */) {
8086    var O = toObject(this);
8087    var sourceLen, A;
8088    aFunction(callbackfn);
8089    sourceLen = toLength(O.length);
8090    A = arraySpeciesCreate(O, 0);
8091    flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);
8092    return A;
8093  }
8094});
8095
8096require('./_add-to-unscopables')('flatMap');
8097
8098},{"./_a-function":16,"./_add-to-unscopables":18,"./_array-species-create":29,"./_export":47,"./_flatten-into-array":52,"./_to-length":132,"./_to-object":133}],285:[function(require,module,exports){
8099'use strict';
8100// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten
8101var $export = require('./_export');
8102var flattenIntoArray = require('./_flatten-into-array');
8103var toObject = require('./_to-object');
8104var toLength = require('./_to-length');
8105var toInteger = require('./_to-integer');
8106var arraySpeciesCreate = require('./_array-species-create');
8107
8108$export($export.P, 'Array', {
8109  flatten: function flatten(/* depthArg = 1 */) {
8110    var depthArg = arguments[0];
8111    var O = toObject(this);
8112    var sourceLen = toLength(O.length);
8113    var A = arraySpeciesCreate(O, 0);
8114    flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));
8115    return A;
8116  }
8117});
8118
8119require('./_add-to-unscopables')('flatten');
8120
8121},{"./_add-to-unscopables":18,"./_array-species-create":29,"./_export":47,"./_flatten-into-array":52,"./_to-integer":130,"./_to-length":132,"./_to-object":133}],286:[function(require,module,exports){
8122'use strict';
8123// https://github.com/tc39/Array.prototype.includes
8124var $export = require('./_export');
8125var $includes = require('./_array-includes')(true);
8126
8127$export($export.P, 'Array', {
8128  includes: function includes(el /* , fromIndex = 0 */) {
8129    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
8130  }
8131});
8132
8133require('./_add-to-unscopables')('includes');
8134
8135},{"./_add-to-unscopables":18,"./_array-includes":25,"./_export":47}],287:[function(require,module,exports){
8136// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask
8137var $export = require('./_export');
8138var microtask = require('./_microtask')();
8139var process = require('./_global').process;
8140var isNode = require('./_cof')(process) == 'process';
8141
8142$export($export.G, {
8143  asap: function asap(fn) {
8144    var domain = isNode && process.domain;
8145    microtask(domain ? domain.bind(fn) : fn);
8146  }
8147});
8148
8149},{"./_cof":32,"./_export":47,"./_global":55,"./_microtask":82}],288:[function(require,module,exports){
8150// https://github.com/ljharb/proposal-is-error
8151var $export = require('./_export');
8152var cof = require('./_cof');
8153
8154$export($export.S, 'Error', {
8155  isError: function isError(it) {
8156    return cof(it) === 'Error';
8157  }
8158});
8159
8160},{"./_cof":32,"./_export":47}],289:[function(require,module,exports){
8161// https://github.com/tc39/proposal-global
8162var $export = require('./_export');
8163
8164$export($export.G, { global: require('./_global') });
8165
8166},{"./_export":47,"./_global":55}],290:[function(require,module,exports){
8167// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
8168require('./_set-collection-from')('Map');
8169
8170},{"./_set-collection-from":111}],291:[function(require,module,exports){
8171// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
8172require('./_set-collection-of')('Map');
8173
8174},{"./_set-collection-of":112}],292:[function(require,module,exports){
8175// https://github.com/DavidBruant/Map-Set.prototype.toJSON
8176var $export = require('./_export');
8177
8178$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });
8179
8180},{"./_collection-to-json":34,"./_export":47}],293:[function(require,module,exports){
8181// https://rwaldron.github.io/proposal-math-extensions/
8182var $export = require('./_export');
8183
8184$export($export.S, 'Math', {
8185  clamp: function clamp(x, lower, upper) {
8186    return Math.min(upper, Math.max(lower, x));
8187  }
8188});
8189
8190},{"./_export":47}],294:[function(require,module,exports){
8191// https://rwaldron.github.io/proposal-math-extensions/
8192var $export = require('./_export');
8193
8194$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });
8195
8196},{"./_export":47}],295:[function(require,module,exports){
8197// https://rwaldron.github.io/proposal-math-extensions/
8198var $export = require('./_export');
8199var RAD_PER_DEG = 180 / Math.PI;
8200
8201$export($export.S, 'Math', {
8202  degrees: function degrees(radians) {
8203    return radians * RAD_PER_DEG;
8204  }
8205});
8206
8207},{"./_export":47}],296:[function(require,module,exports){
8208// https://rwaldron.github.io/proposal-math-extensions/
8209var $export = require('./_export');
8210var scale = require('./_math-scale');
8211var fround = require('./_math-fround');
8212
8213$export($export.S, 'Math', {
8214  fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {
8215    return fround(scale(x, inLow, inHigh, outLow, outHigh));
8216  }
8217});
8218
8219},{"./_export":47,"./_math-fround":76,"./_math-scale":78}],297:[function(require,module,exports){
8220// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
8221var $export = require('./_export');
8222
8223$export($export.S, 'Math', {
8224  iaddh: function iaddh(x0, x1, y0, y1) {
8225    var $x0 = x0 >>> 0;
8226    var $x1 = x1 >>> 0;
vendor: 5,788 bytes, lines 8227-8396
8227    var $y0 = y0 >>> 0;
8228    return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
8229  }
8230});
8231
8232},{"./_export":47}],298:[function(require,module,exports){
8233// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
8234var $export = require('./_export');
8235
8236$export($export.S, 'Math', {
8237  imulh: function imulh(u, v) {
8238    var UINT16 = 0xffff;
8239    var $u = +u;
8240    var $v = +v;
8241    var u0 = $u & UINT16;
8242    var v0 = $v & UINT16;
8243    var u1 = $u >> 16;
8244    var v1 = $v >> 16;
8245    var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
8246    return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
8247  }
8248});
8249
8250},{"./_export":47}],299:[function(require,module,exports){
8251// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
8252var $export = require('./_export');
8253
8254$export($export.S, 'Math', {
8255  isubh: function isubh(x0, x1, y0, y1) {
8256    var $x0 = x0 >>> 0;
8257    var $x1 = x1 >>> 0;
8258    var $y0 = y0 >>> 0;
8259    return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
8260  }
8261});
8262
8263},{"./_export":47}],300:[function(require,module,exports){
8264// https://rwaldron.github.io/proposal-math-extensions/
8265var $export = require('./_export');
8266
8267$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });
8268
8269},{"./_export":47}],301:[function(require,module,exports){
8270// https://rwaldron.github.io/proposal-math-extensions/
8271var $export = require('./_export');
8272var DEG_PER_RAD = Math.PI / 180;
8273
8274$export($export.S, 'Math', {
8275  radians: function radians(degrees) {
8276    return degrees * DEG_PER_RAD;
8277  }
8278});
8279
8280},{"./_export":47}],302:[function(require,module,exports){
8281// https://rwaldron.github.io/proposal-math-extensions/
8282var $export = require('./_export');
8283
8284$export($export.S, 'Math', { scale: require('./_math-scale') });
8285
8286},{"./_export":47,"./_math-scale":78}],303:[function(require,module,exports){
8287// http://jfbastien.github.io/papers/Math.signbit.html
8288var $export = require('./_export');
8289
8290$export($export.S, 'Math', { signbit: function signbit(x) {
8291  // eslint-disable-next-line no-self-compare
8292  return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;
8293} });
8294
8295},{"./_export":47}],304:[function(require,module,exports){
8296// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
8297var $export = require('./_export');
8298
8299$export($export.S, 'Math', {
8300  umulh: function umulh(u, v) {
8301    var UINT16 = 0xffff;
8302    var $u = +u;
8303    var $v = +v;
8304    var u0 = $u & UINT16;
8305    var v0 = $v & UINT16;
8306    var u1 = $u >>> 16;
8307    var v1 = $v >>> 16;
8308    var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
8309    return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
8310  }
8311});
8312
8313},{"./_export":47}],305:[function(require,module,exports){
8314'use strict';
8315var $export = require('./_export');
8316var toObject = require('./_to-object');
8317var aFunction = require('./_a-function');
8318var $defineProperty = require('./_object-dp');
8319
8320// B.2.2.2 Object.prototype.__defineGetter__(P, getter)
8321require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
8322  __defineGetter__: function __defineGetter__(P, getter) {
8323    $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });
8324  }
8325});
8326
8327},{"./_a-function":16,"./_descriptors":43,"./_export":47,"./_object-dp":86,"./_object-forced-pam":88,"./_to-object":133}],306:[function(require,module,exports){
8328'use strict';
8329var $export = require('./_export');
8330var toObject = require('./_to-object');
8331var aFunction = require('./_a-function');
8332var $defineProperty = require('./_object-dp');
8333
8334// B.2.2.3 Object.prototype.__defineSetter__(P, setter)
8335require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
8336  __defineSetter__: function __defineSetter__(P, setter) {
8337    $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });
8338  }
8339});
8340
8341},{"./_a-function":16,"./_descriptors":43,"./_export":47,"./_object-dp":86,"./_object-forced-pam":88,"./_to-object":133}],307:[function(require,module,exports){
8342// https://github.com/tc39/proposal-object-values-entries
8343var $export = require('./_export');
8344var $entries = require('./_object-to-array')(true);
8345
8346$export($export.S, 'Object', {
8347  entries: function entries(it) {
8348    return $entries(it);
8349  }
8350});
8351
8352},{"./_export":47,"./_object-to-array":98}],308:[function(require,module,exports){
8353// https://github.com/tc39/proposal-object-getownpropertydescriptors
8354var $export = require('./_export');
8355var ownKeys = require('./_own-keys');
8356var toIObject = require('./_to-iobject');
8357var gOPD = require('./_object-gopd');
8358var createProperty = require('./_create-property');
8359
8360$export($export.S, 'Object', {
8361  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
8362    var O = toIObject(object);
8363    var getDesc = gOPD.f;
8364    var keys = ownKeys(O);
8365    var result = {};
8366    var i = 0;
8367    var key, desc;
8368    while (keys.length > i) {
8369      desc = getDesc(O, key = keys[i++]);
8370      if (desc !== undefined) createProperty(result, key, desc);
8371    }
8372    return result;
8373  }
8374});
8375
8376},{"./_create-property":38,"./_export":47,"./_object-gopd":89,"./_own-keys":99,"./_to-iobject":131}],309:[function(require,module,exports){
8377'use strict';
8378var $export = require('./_export');
8379var toObject = require('./_to-object');
8380var toPrimitive = require('./_to-primitive');
8381var getPrototypeOf = require('./_object-gpo');
8382var getOwnPropertyDescriptor = require('./_object-gopd').f;
8383
8384// B.2.2.4 Object.prototype.__lookupGetter__(P)
8385require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
8386  __lookupGetter__: function __lookupGetter__(P) {
8387    var O = toObject(this);
8388    var K = toPrimitive(P, true);
8389    var D;
8390    do {
8391      if (D = getOwnPropertyDescriptor(O, K)) return D.get;
8392    } while (O = getPrototypeOf(O));
8393  }
8394});
8395
8396}
vendor: 8,051 bytes, lines 8396-8652
8396,{"./_descriptors":43,"./_export":47,"./_object-forced-pam":88,"./_object-gopd":89,"./_object-gpo":93,"./_to-object":133,"./_to-primitive":134}],310:[function(require,module,exports){
8397'use strict';
8398var $export = require('./_export');
8399var toObject = require('./_to-object');
8400var toPrimitive = require('./_to-primitive');
8401var getPrototypeOf = require('./_object-gpo');
8402var getOwnPropertyDescriptor = require('./_object-gopd').f;
8403
8404// B.2.2.5 Object.prototype.__lookupSetter__(P)
8405require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
8406  __lookupSetter__: function __lookupSetter__(P) {
8407    var O = toObject(this);
8408    var K = toPrimitive(P, true);
8409    var D;
8410    do {
8411      if (D = getOwnPropertyDescriptor(O, K)) return D.set;
8412    } while (O = getPrototypeOf(O));
8413  }
8414});
8415
8416},{"./_descriptors":43,"./_export":47,"./_object-forced-pam":88,"./_object-gopd":89,"./_object-gpo":93,"./_to-object":133,"./_to-primitive":134}],311:[function(require,module,exports){
8417// https://github.com/tc39/proposal-object-values-entries
8418var $export = require('./_export');
8419var $values = require('./_object-to-array')(false);
8420
8421$export($export.S, 'Object', {
8422  values: function values(it) {
8423    return $values(it);
8424  }
8425});
8426
8427},{"./_export":47,"./_object-to-array":98}],312:[function(require,module,exports){
8428'use strict';
8429// https://github.com/zenparsing/es-observable
8430var $export = require('./_export');
8431var global = require('./_global');
8432var core = require('./_core');
8433var microtask = require('./_microtask')();
8434var OBSERVABLE = require('./_wks')('observable');
8435var aFunction = require('./_a-function');
8436var anObject = require('./_an-object');
8437var anInstance = require('./_an-instance');
8438var redefineAll = require('./_redefine-all');
8439var hide = require('./_hide');
8440var forOf = require('./_for-of');
8441var RETURN = forOf.RETURN;
8442
8443var getMethod = function (fn) {
8444  return fn == null ? undefined : aFunction(fn);
8445};
8446
8447var cleanupSubscription = function (subscription) {
8448  var cleanup = subscription._c;
8449  if (cleanup) {
8450    subscription._c = undefined;
8451    cleanup();
8452  }
8453};
8454
8455var subscriptionClosed = function (subscription) {
8456  return subscription._o === undefined;
8457};
8458
8459var closeSubscription = function (subscription) {
8460  if (!subscriptionClosed(subscription)) {
8461    subscription._o = undefined;
8462    cleanupSubscription(subscription);
8463  }
8464};
8465
8466var Subscription = function (observer, subscriber) {
8467  anObject(observer);
8468  this._c = undefined;
8469  this._o = observer;
8470  observer = new SubscriptionObserver(this);
8471  try {
8472    var cleanup = subscriber(observer);
8473    var subscription = cleanup;
8474    if (cleanup != null) {
8475      if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };
8476      else aFunction(cleanup);
8477      this._c = cleanup;
8478    }
8479  } catch (e) {
8480    observer.error(e);
8481    return;
8482  } if (subscriptionClosed(this)) cleanupSubscription(this);
8483};
8484
8485Subscription.prototype = redefineAll({}, {
8486  unsubscribe: function unsubscribe() { closeSubscription(this); }
8487});
8488
8489var SubscriptionObserver = function (subscription) {
8490  this._s = subscription;
8491};
8492
8493SubscriptionObserver.prototype = redefineAll({}, {
8494  next: function next(value) {
8495    var subscription = this._s;
8496    if (!subscriptionClosed(subscription)) {
8497      var observer = subscription._o;
8498      try {
8499        var m = getMethod(observer.next);
8500        if (m) return m.call(observer, value);
8501      } catch (e) {
8502        try {
8503          closeSubscription(subscription);
8504        } finally {
8505          throw e;
8506        }
8507      }
8508    }
8509  },
8510  error: function error(value) {
8511    var subscription = this._s;
8512    if (subscriptionClosed(subscription)) throw value;
8513    var observer = subscription._o;
8514    subscription._o = undefined;
8515    try {
8516      var m = getMethod(observer.error);
8517      if (!m) throw value;
8518      value = m.call(observer, value);
8519    } catch (e) {
8520      try {
8521        cleanupSubscription(subscription);
8522      } finally {
8523        throw e;
8524      }
8525    } cleanupSubscription(subscription);
8526    return value;
8527  },
8528  complete: function complete(value) {
8529    var subscription = this._s;
8530    if (!subscriptionClosed(subscription)) {
8531      var observer = subscription._o;
8532      subscription._o = undefined;
8533      try {
8534        var m = getMethod(observer.complete);
8535        value = m ? m.call(observer, value) : undefined;
8536      } catch (e) {
8537        try {
8538          cleanupSubscription(subscription);
8539        } finally {
8540          throw e;
8541        }
8542      } cleanupSubscription(subscription);
8543      return value;
8544    }
8545  }
8546});
8547
8548var $Observable = function Observable(subscriber) {
8549  anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);
8550};
8551
8552redefineAll($Observable.prototype, {
8553  subscribe: function subscribe(observer) {
8554    return new Subscription(observer, this._f);
8555  },
8556  forEach: function forEach(fn) {
8557    var that = this;
8558    return new (core.Promise || global.Promise)(function (resolve, reject) {
8559      aFunction(fn);
8560      var subscription = that.subscribe({
8561        next: function (value) {
8562          try {
8563            return fn(value);
8564          } catch (e) {
8565            reject(e);
8566            subscription.unsubscribe();
8567          }
8568        },
8569        error: reject,
8570        complete: resolve
8571      });
8572    });
8573  }
8574});
8575
8576redefineAll($Observable, {
8577  from: function from(x) {
8578    var C = typeof this === 'function' ? this : $Observable;
8579    var method = getMethod(anObject(x)[OBSERVABLE]);
8580    if (method) {
8581      var observable = anObject(method.call(x));
8582      return observable.constructor === C ? observable : new C(function (observer) {
8583        return observable.subscribe(observer);
8584      });
8585    }
8586    return new C(function (observer) {
8587      var done = false;
8588      microtask(function () {
8589        if (!done) {
8590          try {
8591            if (forOf(x, false, function (it) {
8592              observer.next(it);
8593              if (done) return RETURN;
8594            }) === RETURN) return;
8595          } catch (e) {
8596            if (done) throw e;
8597            observer.error(e);
8598            return;
8599          } observer.complete();
8600        }
8601      });
8602      return function () { done = true; };
8603    });
8604  },
8605  of: function of() {
8606    for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];
8607    return new (typeof this === 'function' ? this : $Observable)(function (observer) {
8608      var done = false;
8609      microtask(function () {
8610        if (!done) {
8611          for (var j = 0; j < items.length; ++j) {
8612            observer.next(items[j]);
8613            if (done) return;
8614          } observer.complete();
8615        }
8616      });
8617      return function () { done = true; };
8618    });
8619  }
8620});
8621
8622hide($Observable.prototype, OBSERVABLE, function () { return this; });
8623
8624$export($export.G, { Observable: $Observable });
8625
8626require('./_set-species')('Observable');
8627
8628},{"./_a-function":16,"./_an-instance":20,"./_an-object":21,"./_core":37,"./_export":47,"./_for-of":53,"./_global":55,"./_hide":57,"./_microtask":82,"./_redefine-all":105,"./_set-species":114,"./_wks":143}],313:[function(require,module,exports){
8629// https://github.com/tc39/proposal-promise-finally
8630'use strict';
8631var $export = require('./_export');
8632var core = require('./_core');
8633var global = require('./_global');
8634var speciesConstructor = require('./_species-constructor');
8635var promiseResolve = require('./_promise-resolve');
8636
8637$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
8638  var C = speciesConstructor(this, core.Promise || global.Promise);
8639  var isFunction = typeof onFinally == 'function';
8640  return this.then(
8641    isFunction ? function (x) {
8642      return promiseResolve(C, onFinally()).then(function () { return x; });
8643    } : onFinally,
8644    isFunction ? function (e) {
8645      return promiseResolve(C, onFinally()).then(function () { throw e; });
8646    } : onFinally
8647  );
8648} });
8649
8650},{"./_core":37,"./_export":47,"./_global":55,"./_promise-resolve":103,"./_species-constructor":118}],314:[function(require,module,exports){
8651'use strict';
8652// https://github.com/tc39/proposal-promise-try
vendor: 4,900 bytes, lines 8653-8763
8653var $export = require('./_export');
8654var newPromiseCapability = require('./_new-promise-capability');
8655var perform = require('./_perform');
8656
8657$export($export.S, 'Promise', { 'try': function (callbackfn) {
8658  var promiseCapability = newPromiseCapability.f(this);
8659  var result = perform(callbackfn);
8660  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
8661  return promiseCapability.promise;
8662} });
8663
8664},{"./_export":47,"./_new-promise-capability":83,"./_perform":102}],315:[function(require,module,exports){
8665var metadata = require('./_metadata');
8666var anObject = require('./_an-object');
8667var toMetaKey = metadata.key;
8668var ordinaryDefineOwnMetadata = metadata.set;
8669
8670metadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {
8671  ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
8672} });
8673
8674},{"./_an-object":21,"./_metadata":81}],316:[function(require,module,exports){
8675var metadata = require('./_metadata');
8676var anObject = require('./_an-object');
8677var toMetaKey = metadata.key;
8678var getOrCreateMetadataMap = metadata.map;
8679var store = metadata.store;
8680
8681metadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {
8682  var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);
8683  var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
8684  if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;
8685  if (metadataMap.size) return true;
8686  var targetMetadata = store.get(target);
8687  targetMetadata['delete'](targetKey);
8688  return !!targetMetadata.size || store['delete'](target);
8689} });
8690
8691},{"./_an-object":21,"./_metadata":81}],317:[function(require,module,exports){
8692var Set = require('./es6.set');
8693var from = require('./_array-from-iterable');
8694var metadata = require('./_metadata');
8695var anObject = require('./_an-object');
8696var getPrototypeOf = require('./_object-gpo');
8697var ordinaryOwnMetadataKeys = metadata.keys;
8698var toMetaKey = metadata.key;
8699
8700var ordinaryMetadataKeys = function (O, P) {
8701  var oKeys = ordinaryOwnMetadataKeys(O, P);
8702  var parent = getPrototypeOf(O);
8703  if (parent === null) return oKeys;
8704  var pKeys = ordinaryMetadataKeys(parent, P);
8705  return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
8706};
8707
8708metadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {
8709  return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
8710} });
8711
8712},{"./_an-object":21,"./_array-from-iterable":24,"./_metadata":81,"./_object-gpo":93,"./es6.set":247}],318:[function(require,module,exports){
8713var metadata = require('./_metadata');
8714var anObject = require('./_an-object');
8715var getPrototypeOf = require('./_object-gpo');
8716var ordinaryHasOwnMetadata = metadata.has;
8717var ordinaryGetOwnMetadata = metadata.get;
8718var toMetaKey = metadata.key;
8719
8720var ordinaryGetMetadata = function (MetadataKey, O, P) {
8721  var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
8722  if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);
8723  var parent = getPrototypeOf(O);
8724  return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
8725};
8726
8727metadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {
8728  return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
8729} });
8730
8731},{"./_an-object":21,"./_metadata":81,"./_object-gpo":93}],319:[function(require,module,exports){
8732var metadata = require('./_metadata');
8733var anObject = require('./_an-object');
8734var ordinaryOwnMetadataKeys = metadata.keys;
8735var toMetaKey = metadata.key;
8736
8737metadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {
8738  return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
8739} });
8740
8741},{"./_an-object":21,"./_metadata":81}],320:[function(require,module,exports){
8742var metadata = require('./_metadata');
8743var anObject = require('./_an-object');
8744var ordinaryGetOwnMetadata = metadata.get;
8745var toMetaKey = metadata.key;
8746
8747metadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {
8748  return ordinaryGetOwnMetadata(metadataKey, anObject(target)
8749    , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
8750} });
8751
8752},{"./_an-object":21,"./_metadata":81}],321:[function(require,module,exports){
8753var metadata = require('./_metadata');
8754var anObject = require('./_an-object');
8755var getPrototypeOf = require('./_object-gpo');
8756var ordinaryHasOwnMetadata = metadata.has;
8757var toMetaKey = metadata.key;
8758
8759var ordinaryHasMetadata = function (MetadataKey, O, P) {
8760  var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
8761  if (hasOwn) return true;
8762  var parent = getPrototypeOf(O);
8763  return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
8764};
8765
8766metadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {
8767  return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
8768} });
8769
8770},{"./_an-object":21,"./_metadata":81,"./_object-gpo":93}],322:[function(require,module,exports){
8771var metadata = require('./_metadata');
8772var anObject = require('./_an-object');
8773var ordinaryHasOwnMetadata = metadata.has;
8774var toMetaKey = metadata.key;
8775
8776metadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {
8777  return ordinaryHasOwnMetadata(metadataKey, anObject(target)
8778    , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
8779} });
8780
8781},{"./_an-object":21,"./_metadata":81}],323:[function(require,module,exports){
8782var $metadata = require('./_metadata');
8783var anObject = require('./_an-object');
8784var aFunction = require('./_a-function');
8785var toMetaKey = $metadata.key;
8786var ordinaryDefineOwnMetadata = $metadata.set;
8787
8788$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {
8789  return function decorator(target, targetKey) {
8790    ordinaryDefineOwnMetadata(
8791      metadataKey, metadataValue,
8792      (targetKey !== undefined ? anObject : aFunction)(target),
8793      toMetaKey(targetKey)
8794    );
8795  };
8796} });
8797
8798},{"./_a-function":16,"./_an-object":21,"./_metadata":81}],324:[function(require,module,exports){
8799// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from
8800require('./_set-collection-from')('Set');
8801
8802},{"./_set-collection-from":111}],325:[function(require,module,exports){
8803// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of
8804require('./_set-collection-of')('Set');
8805
8806},{"./_set-collection-of":112}],326:[function(require,module,exports){
8807// https://github.com/DavidBruant/Map-Set.prototype.toJSON
8808var $export = require('./_export');
8809
8810$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });
8811
8812},{"./_collection-to-json":34,"./_export":47}],327:[function(require,module,exports){
8813'use strict';
8814// https://github.com/mathiasbynens/String.prototype.at
8815var $export = require('./_export');
8816var $at = require('./_string-at')(true);
8817var $fails = require('./_fails');
8818
8819var FORCED = $fails(function () {
8820  return 'ð ®·'.at(0) !== 'ð ®·';
8821});
8822
8823$export($export.P + $export.F * FORCED, 'String', {
8824  at: function at(pos) {
8825    return $at(this, pos);
8826  }
8827});
8828
8829},{"./_export":47,"./_fails":49,"./_string-at":120}],328:[function(require,module,exports){
8830'use strict';
8831// https://tc39.github.io/String.prototype.matchAll/
8832var $export = require('./_export');
8833var defined = require('./_defined');
8834var toLength = require('./_to-length');
8835var isRegExp = require('./_is-regexp');
8836var getFlags = require('./_flags');
8837var RegExpProto = RegExp.prototype;
8838
8839var $RegExpStringIterator = function (regexp, string) {
8840  this._r = regexp;
8841  this._s = string;
8842};
8843
8844require('./_iter-create')($RegExpStringIterator, 'RegExp String', function next() {
8845  var match = this._r.exec(this._s);
8846  return { value: match, done: match === null };
8847});
8848
8849$export($export.P, 'String', {
8850  matchAll: function matchAll(regexp) {
8851    defined(this);
8852    if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');
8853    var S = String(this);
8854    var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);
8855    var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);
8856    rx.lastIndex = toLength(regexp.lastIndex);
8857    return new $RegExpStringIterator(rx, S);
8858  }
8859});
8860
8861},{"./_defined":42,"./_export":47,"./_flags":51,"./_is-regexp":67,"./_iter-create":69,"./_to-length":132}],329:[function(require,module,exports){
8862'use strict';
8863// https://github.com/tc39/proposal-string-pad-start-end
8864var $export = require('./_export');
8865var $pad = require('./_string-pad');
8866var userAgent = require('./_user-agent');
8867
8868// https://github.com/zloirock/core-js/issues/280
8869var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
8870
8871$export($export.P + $export.F * WEBKIT_BUG, 'String', {
8872  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {
8873    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
8874  }
8875});
8876
8877},{"./_export":47,"./_string-pad":123,"./_user-agent":139}],330:[function(require,module,exports){
8878'use strict';
8879// https://github.com/tc39/proposal-string-pad-start-end
8880var $export = require('./_export');
8881var $pad = require('./_string-pad');
8882var userAgent = require('./_user-agent');
8883
8884// https://github.com/zloirock/core-js/issues/280
8885var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
8886
8887$export($export.P + $export.F * WEBKIT_BUG, 'String', {
8888  padStart: function padStart(maxLength /* , fillString = ' ' */) {
8889    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
8890  }
8891});
8892
8893},{"./_export":47,"./_string-pad":123,"./_user-agent":139}],331:[function(require,module,exports){
8894'use strict';
8895// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
8896require('./_string-trim')('trimLeft', function ($trim) {
8897  return function trimLeft() {
8898    return $trim(this, 1);
8899  };
8900}, 'trimStart');
8901
8902},{"./_string-trim":125}],332:[function(require,module,exports){
8903'use strict';
8904// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
8905require('./_string-trim')('trimRight', function ($trim) {
8906  return function trimRight() {
8907    return $trim(this, 2);
8908  };
8909}, 'trimEnd');
8910
8911},{"./_string-trim":125}],333:[function(require,module,exports){
8912require('./_wks-define')('asyncIterator');
8913
8914},{"./_wks-define":141}],334:[function(require,module,exports){
8915require('./_wks-define')('observable');
8916
8917},{"./_wks-define":141}],335:[function(require,module,exports){
8918// https://github.com/tc39/proposal-global
8919var $export = require('./_export');
8920
8921$export($export.S, 'System', { global: require('./_global') });
8922
8923},{"./_export":47,"./_global":55}],336:[function(require,module,exports){
8924// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
8925require('./_set-collection-from')('WeakMap');
8926
8927},{"./_set-collection-from":111}],337:[function(require,module,exports){
8928// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
8929require('./_set-collection-of')('WeakMap');
8930
8931},{"./_set-collection-of":112}],338:[function(require,module,exports){
8932// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from
8933require('./_set-collection-from')('WeakSet');
8934
8935},{"./_set-collection-from":111}],339:[function(require,module,exports){
8936// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of
8937require('./_set-collection-of')('WeakSet');
8938
8939},{"./_set-collection-of":112}],340:[function(require,module,exports){
8940var $iterators = require('./es6.array.iterator');
8941var getKeys = require('./_object-keys');
8942var redefine = require('./_redefine');
8943var global = require('./_global');
8944var hide = require('./_hide');
8945var Iterators = require('./_iterators');
8946var wks = require('./_wks');
8947var ITERATOR = wks('iterator');
8948var TO_STRING_TAG = wks('toStringTag');
8949var ArrayValues = Iterators.Array;
8950
8951var DOMIterables = {
8952  CSSRuleList: true, // TODO: Not spec compliant, should be false.
8953  CSSStyleDeclaration: false,
8954  CSSValueList: false,
8955  ClientRectList: false,
8956  DOMRectList: false,
8957  DOMStringList: false,
8958  DOMTokenList: true,
8959  DataTransferItemList: false,
8960  FileList: false,
8961  HTMLAllCollection: false,
8962  HTMLCollection: false,
8963  HTMLFormElement: false,
8964  HTMLSelectElement: false,
8965  MediaList: true, // TODO: Not spec compliant, should be false.
8966  MimeTypeArray: false,
8967  NamedNodeMap: false,
8968  NodeList: true,
8969  PaintRequestList: false,
8970  Plugin: false,
8971  PluginArray: false,
8972  SVGLengthList: false,
8973  SVGNumberList: false,
8974  SVGPathSegList: false,
8975  SVGPointList: false,
8976  SVGStringList: false,
8977  SVGTransformList: false,
8978  SourceBufferList: false,
8979  StyleSheetList: true, // TODO: Not spec compliant, should be false.
8980  TextTrackCueList: false,
8981  TextTrackList: false,
8982  TouchList: false
8983};
8984
8985for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
8986  var NAME = collections[i];
8987  var explicit = DOMIterables[NAME];
8988  var Collection = global[NAME];
8989  var proto = Collection && Collection.prototype;
8990  var key;
8991  if (proto) {
8992    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
8993    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
8994    Iterators[NAME] = ArrayValues;
8995    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
8996  }
8997}
8998
8999},{"./_global":55,"./_hide":57,"./_iterators":73,"./_object-keys":95,"./_redefine":106,"./_wks":143,"./es6.array.iterator":156}],341:[function(require,module,exports){
vendor: 8,252 bytes, lines 9000-9202
9000var $export = require('./_export');
9001var $task = require('./_task');
9002$export($export.G + $export.B, {
9003  setImmediate: $task.set,
9004  clearImmediate: $task.clear
9005});
9006
9007},{"./_export":47,"./_task":127}],342:[function(require,module,exports){
9008// ie9- setTimeout & setInterval additional parameters fix
9009var global = require('./_global');
9010var $export = require('./_export');
9011var userAgent = require('./_user-agent');
9012var slice = [].slice;
9013var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
9014var wrap = function (set) {
9015  return function (fn, time /* , ...args */) {
9016    var boundArgs = arguments.length > 2;
9017    var args = boundArgs ? slice.call(arguments, 2) : false;
9018    return set(boundArgs ? function () {
9019      // eslint-disable-next-line no-new-func
9020      (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);
9021    } : fn, time);
9022  };
9023};
9024$export($export.G + $export.B + $export.F * MSIE, {
9025  setTimeout: wrap(global.setTimeout),
9026  setInterval: wrap(global.setInterval)
9027});
9028
9029},{"./_export":47,"./_global":55,"./_user-agent":139}],343:[function(require,module,exports){
9030require('./modules/es6.symbol');
9031require('./modules/es6.object.create');
9032require('./modules/es6.object.define-property');
9033require('./modules/es6.object.define-properties');
9034require('./modules/es6.object.get-own-property-descriptor');
9035require('./modules/es6.object.get-prototype-of');
9036require('./modules/es6.object.keys');
9037require('./modules/es6.object.get-own-property-names');
9038require('./modules/es6.object.freeze');
9039require('./modules/es6.object.seal');
9040require('./modules/es6.object.prevent-extensions');
9041require('./modules/es6.object.is-frozen');
9042require('./modules/es6.object.is-sealed');
9043require('./modules/es6.object.is-extensible');
9044require('./modules/es6.object.assign');
9045require('./modules/es6.object.is');
9046require('./modules/es6.object.set-prototype-of');
9047require('./modules/es6.object.to-string');
9048require('./modules/es6.function.bind');
9049require('./modules/es6.function.name');
9050require('./modules/es6.function.has-instance');
9051require('./modules/es6.parse-int');
9052require('./modules/es6.parse-float');
9053require('./modules/es6.number.constructor');
9054require('./modules/es6.number.to-fixed');
9055require('./modules/es6.number.to-precision');
9056require('./modules/es6.number.epsilon');
9057require('./modules/es6.number.is-finite');
9058require('./modules/es6.number.is-integer');
9059require('./modules/es6.number.is-nan');
9060require('./modules/es6.number.is-safe-integer');
9061require('./modules/es6.number.max-safe-integer');
9062require('./modules/es6.number.min-safe-integer');
9063require('./modules/es6.number.parse-float');
9064require('./modules/es6.number.parse-int');
9065require('./modules/es6.math.acosh');
9066require('./modules/es6.math.asinh');
9067require('./modules/es6.math.atanh');
9068require('./modules/es6.math.cbrt');
9069require('./modules/es6.math.clz32');
9070require('./modules/es6.math.cosh');
9071require('./modules/es6.math.expm1');
9072require('./modules/es6.math.fround');
9073require('./modules/es6.math.hypot');
9074require('./modules/es6.math.imul');
9075require('./modules/es6.math.log10');
9076require('./modules/es6.math.log1p');
9077require('./modules/es6.math.log2');
9078require('./modules/es6.math.sign');
9079require('./modules/es6.math.sinh');
9080require('./modules/es6.math.tanh');
9081require('./modules/es6.math.trunc');
9082require('./modules/es6.string.from-code-point');
9083require('./modules/es6.string.raw');
9084require('./modules/es6.string.trim');
9085require('./modules/es6.string.iterator');
9086require('./modules/es6.string.code-point-at');
9087require('./modules/es6.string.ends-with');
9088require('./modules/es6.string.includes');
9089require('./modules/es6.string.repeat');
9090require('./modules/es6.string.starts-with');
9091require('./modules/es6.string.anchor');
9092require('./modules/es6.string.big');
9093require('./modules/es6.string.blink');
9094require('./modules/es6.string.bold');
9095require('./modules/es6.string.fixed');
9096require('./modules/es6.string.fontcolor');
9097require('./modules/es6.string.fontsize');
9098require('./modules/es6.string.italics');
9099require('./modules/es6.string.link');
9100require('./modules/es6.string.small');
9101require('./modules/es6.string.strike');
9102require('./modules/es6.string.sub');
9103require('./modules/es6.string.sup');
9104require('./modules/es6.date.now');
9105require('./modules/es6.date.to-json');
9106require('./modules/es6.date.to-iso-string');
9107require('./modules/es6.date.to-string');
9108require('./modules/es6.date.to-primitive');
9109require('./modules/es6.array.is-array');
9110require('./modules/es6.array.from');
9111require('./modules/es6.array.of');
9112require('./modules/es6.array.join');
9113require('./modules/es6.array.slice');
9114require('./modules/es6.array.sort');
9115require('./modules/es6.array.for-each');
9116require('./modules/es6.array.map');
9117require('./modules/es6.array.filter');
9118require('./modules/es6.array.some');
9119require('./modules/es6.array.every');
9120require('./modules/es6.array.reduce');
9121require('./modules/es6.array.reduce-right');
9122require('./modules/es6.array.index-of');
9123require('./modules/es6.array.last-index-of');
9124require('./modules/es6.array.copy-within');
9125require('./modules/es6.array.fill');
9126require('./modules/es6.array.find');
9127require('./modules/es6.array.find-index');
9128require('./modules/es6.array.species');
9129require('./modules/es6.array.iterator');
9130require('./modules/es6.regexp.constructor');
9131require('./modules/es6.regexp.exec');
9132require('./modules/es6.regexp.to-string');
9133require('./modules/es6.regexp.flags');
9134require('./modules/es6.regexp.match');
9135require('./modules/es6.regexp.replace');
9136require('./modules/es6.regexp.search');
9137require('./modules/es6.regexp.split');
9138require('./modules/es6.promise');
9139require('./modules/es6.map');
9140require('./modules/es6.set');
9141require('./modules/es6.weak-map');
9142require('./modules/es6.weak-set');
9143require('./modules/es6.typed.array-buffer');
9144require('./modules/es6.typed.data-view');
9145require('./modules/es6.typed.int8-array');
9146require('./modules/es6.typed.uint8-array');
9147require('./modules/es6.typed.uint8-clamped-array');
9148require('./modules/es6.typed.int16-array');
9149require('./modules/es6.typed.uint16-array');
9150require('./modules/es6.typed.int32-array');
9151require('./modules/es6.typed.uint32-array');
9152require('./modules/es6.typed.float32-array');
9153require('./modules/es6.typed.float64-array');
9154require('./modules/es6.reflect.apply');
9155require('./modules/es6.reflect.construct');
9156require('./modules/es6.reflect.define-property');
9157require('./modules/es6.reflect.delete-property');
9158require('./modules/es6.reflect.enumerate');
9159require('./modules/es6.reflect.get');
9160require('./modules/es6.reflect.get-own-property-descriptor');
9161require('./modules/es6.reflect.get-prototype-of');
9162require('./modules/es6.reflect.has');
9163require('./modules/es6.reflect.is-extensible');
9164require('./modules/es6.reflect.own-keys');
9165require('./modules/es6.reflect.prevent-extensions');
9166require('./modules/es6.reflect.set');
9167require('./modules/es6.reflect.set-prototype-of');
9168require('./modules/es7.array.includes');
9169require('./modules/es7.array.flat-map');
9170require('./modules/es7.array.flatten');
9171require('./modules/es7.string.at');
9172require('./modules/es7.string.pad-start');
9173require('./modules/es7.string.pad-end');
9174require('./modules/es7.string.trim-left');
9175require('./modules/es7.string.trim-right');
9176require('./modules/es7.string.match-all');
9177require('./modules/es7.symbol.async-iterator');
9178require('./modules/es7.symbol.observable');
9179require('./modules/es7.object.get-own-property-descriptors');
9180require('./modules/es7.object.values');
9181require('./modules/es7.object.entries');
9182require('./modules/es7.object.define-getter');
9183require('./modules/es7.object.define-setter');
9184require('./modules/es7.object.lookup-getter');
9185require('./modules/es7.object.lookup-setter');
9186require('./modules/es7.map.to-json');
9187require('./modules/es7.set.to-json');
9188require('./modules/es7.map.of');
9189require('./modules/es7.set.of');
9190require('./modules/es7.weak-map.of');
9191require('./modules/es7.weak-set.of');
9192require('./modules/es7.map.from');
9193require('./modules/es7.set.from');
9194require('./modules/es7.weak-map.from');
9195require('./modules/es7.weak-set.from');
9196require('./modules/es7.global');
9197require('./modules/es7.system.global');
9198require('./modules/es7.error.is-error');
9199require('./modules/es7.math.clamp');
9200require('./modules/es7.math.deg-per-rad');
9201require('./modules/es7.math.degrees');
9202require('./modules/es7.math.fscale');
9203require('./modules/es7.math.iaddh');
9204require('./modules/es7.math.isubh');
9205require('./modules/es7.math.imulh');
9206require('./modules/es7.math.rad-per-deg');
9207require('./modules/es7.math.radians');
9208require('./modules/es7.math.scale');
9209require('./modules/es7.math.umulh');
9210require('./modules/es7.math.signbit');
9211require('./modules/es7.promise.finally');
9212require('./modules/es7.promise.try');
9213require('./modules/es7.reflect.define-metadata');
9214require('./modules/es7.reflect.delete-metadata');
9215require('./modules/es7.reflect.get-metadata');
9216require('./modules/es7.reflect.get-metadata-keys');
9217require('./modules/es7.reflect.get-own-metadata');
9218require('./modules/es7.reflect.get-own-metadata-keys');
9219require('./modules/es7.reflect.has-metadata');
9220require('./modules/es7.reflect.has-own-metadata');
9221require('./modules/es7.reflect.metadata');
9222require('./modules/es7.asap');
9223require('./modules/es7.observable');
9224require('./modules/web.timers');
9225require('./modules/web.immediate');
9226require('./modules/web.dom.iterable');
9227module.exports = require('./modules/_core');
9228
9229},{"./modules/_core":37,"./modules/es6.array.copy-within":146,"./modules/es6.array.every":147,"./modules/es6.array.fill":148,"./modules/es6.array.filter":149,"./modules/es6.array.find":151,"./modules/es6.array.find-index":150,"./modules/es6.array.for-each":152,"./modules/es6.array.from":153,"./modules/es6.array.index-of":154,"./modules/es6.array.is-array":155,"./modules/es6.array.iterator":156,"./modules/es6.array.join":157,"./modules/es6.array.last-index-of":158,"./modules/es6.array.map":159,"./modules/es6.array.of":160,"./modules/es6.array.reduce":162,"./modules/es6.array.reduce-right":161,"./modules/es6.array.slice":163,"./modules/es6.array.some":164,"./modules/es6.array.sort":165,"./modules/es6.array.species":166,"./modules/es6.date.now":167,"./modules/es6.date.to-iso-string":168,"./modules/es6.date.to-json":169,"./modules/es6.date.to-primitive":170,"./modules/es6.date.to-string":171,"./modules/es6.function.bind":172,"./modules/es6.function.has-instance":173,"./modules/es6.function.name":174,"./modules/es6.map":175,"./modules/es6.math.acosh":176,"./modules/es6.math.asinh":177,"./modules/es6.math.atanh":178,"./modules/es6.math.cbrt":179,"./modules/es6.math.clz32":180,"./modules/es6.math.cosh":181,"./modules/es6.math.expm1":182,"./modules/es6.math.fround":183,"./modules/es6.math.hypot":184,"./modules/es6.math.imul":185,"./modules/es6.math.log10":186,"./modules/es6.math.log1p":187,"./modules/es6.math.log2":188,"./modules/es6.math.sign":189,"./modules/es6.math.sinh":190,"./modules/es6.math.tanh":191,"./modules/es6.math.trunc":192,"./modules/es6.number.constructor":193,"./modules/es6.number.epsilon":194,"./modules/es6.number.is-finite":195,"./modules/es6.number.is-integer":196,"./modules/es6.number.is-nan":197,"./modules/es6.number.is-safe-integer":198,"./modules/es6.number.max-safe-integer":199,"./modules/es6.number.min-safe-integer":200,"./modules/es6.number.parse-float":201,"./modules/es6.number.parse-int":202,"./modules/es6.number.to-fixed":203,"./modules/es6.number.to-precision":204,"./modules/es6.object.assign":205,"./modules/es6.object.create":206,"./modules/es6.object.define-properties":207,"./modules/es6.object.define-property":208,"./modules/es6.object.freeze":209,"./modules/es6.object.get-own-property-descriptor":210,"./modules/es6.object.get-own-property-names":211,"./modules/es6.object.get-prototype-of":212,"./modules/es6.object.is":216,"./modules/es6.object.is-extensible":213,"./modules/es6.object.is-frozen":214,"./modules/es6.object.is-sealed":215,"./modules/es6.object.keys":217,"./modules/es6.object.prevent-extensions":218,"./modules/es6.object.seal":219,"./modules/es6.object.set-prototype-of":220,"./modules/es6.object.to-string":221,"./modules/es6.parse-float":222,"./modules/es6.parse-int":223,"./modules/es6.promise":224,"./modules/es6.reflect.apply":225,"./modules/es6.reflect.construct":226,"./modules/es6.reflect.define-property":227,"./modules/es6.reflect.delete-property":228,"./modules/es6.reflect.enumerate":229,"./modules/es6.reflect.get":232,"./modules/es6.reflect.get-own-property-descriptor":230,"./modules/es6.reflect.get-prototype-of":231,"./modules/es6.reflect.has":233,"./modules/es6.reflect.is-extensible":234,"./modules/es6.reflect.own-keys":235,"./modules/es6.reflect.prevent-extensions":236,"./modules/es6.reflect.set":238,"./modules/es6.reflect.set-prototype-of":237,"./modules/es6.regexp.constructor":239,"./modules/es6.regexp.exec":240,"./modules/es6.regexp.flags":241,"./modules/es6.regexp.match":242,"./modules/es6.regexp.replace":243,"./modules/es6.regexp.search":244,"./modules/es6.regexp.split":245,"./modules/es6.regexp.to-string":246,"./modules/es6.set":247,"./modules/es6.string.anchor":248,"./modules/es6.string.big":249,"./modules/es6.string.blink":250,"./modules/es6.string.bold":251,"./modules/es6.string.code-point-at":252,"./modules/es6.string.ends-with":253,"./modules/es6.string.fixed":254,"./modules/es6.string.fontc
9229olor":255,"./modules/es6.string.fontsize":256,"./modules/es6.string.from-code-point":257,"./modules/es6.string.includes":258,"./modules/es6.string.italics":259,"./modules/es6.string.iterator":260,"./modules/es6.string.link":261,"./modules/es6.string.raw":262,"./modules/es6.string.repeat":263,"./modules/es6.string.small":264,"./modules/es6.string.starts-with":265,"./modules/es6.string.strike":266,"./modules/es6.string.sub":267,"./modules/es6.string.sup":268,"./modules/es6.string.trim":269,"./modules/es6.symbol":270,"./modules/es6.typed.array-buffer":271,"./modules/es6.typed.data-view":272,"./modules/es6.typed.float32-array":273,"./modules/es6.typed.float64-array":274,"./modules/es6.typed.int16-array":275,"./modules/es6.typed.int32-array":276,"./modules/es6.typed.int8-array":277,"./modules/es6.typed.uint16-array":278,"./modules/es6.typed.uint32-array":279,"./modules/es6.typed.uint8-array":280,"./modules/es6.typed.uint8-clamped-array":281,"./modules/es6.weak-map":282,"./modules/es6.weak-set":283,"./modules/es7.array.flat-map":284,"./modules/es7.array.flatten":285,"./modules/es7.array.includes":286,"./modules/es7.asap":287,"./modules/es7.error.is-error":288,"./modules/es7.global":289,"./modules/es7.map.from":290,"./modules/es7.map.of":291,"./modules/es7.map.to-json":292,"./modules/es7.math.clamp":293,"./modules/es7.math.deg-per-rad":294,"./modules/es7.math.degrees":295,"./modules/es7.math.fscale":296,"./modules/es7.math.iad
9229dh":297,"./modules/es7.math.imulh":298,"./modules/es7.math.isubh":299,"./modules/es7.math.rad-per-deg":300,"./modules/es7.math.radians":301,"./modules/es7.math.scale":302,"./modules/es7.math.signbit":303,"./modules/es7.math.umulh":304,"./modules/es7.object.define-getter":305,"./modules/es7.object.define-setter":306,"./modules/es7.object.entries":307,"./modules/es7.object.get-own-property-descriptors":308,"./modules/es7.object.lookup-getter":309,"./modules/es7.object.lookup-setter":310,"./modules/es7.object.values":311,"./modules/es7.observable":312,"./modules/es7.promise.finally":313,"./modules/es7.promise.try":314,"./modules/es7.reflect.define-metadata":315,"./modules/es7.reflect.delete-metadata":316,"./modules/es7.reflect.get-metadata":318,"./modules/es7.reflect.get-metadata-keys":317,"./modules/es7.reflect.get-own-metadata":320,"./modules/es7.reflect.get-own-metadata-keys":319,"./modules/es7.reflect.has-metadata":321,"./modules/es7.reflect.has-own-metadata":322,"./modules/es7.reflect.metadata":323,"./modules/es7.set.from":324,"./modules/es7.set.of":325,"./modules/es7.set.to-json":326,"./modules/es7.string.at":327,"./modules/es7.string.match-all":328,"./modules/es7.string.pad-end":329,"./modules/es7.string.pad-start":330,"./modules/es7.string.trim-left":33
92291,"./modules/es7.string.trim-right":332,"./modules/es7.symbol.async-iterator":333,"./modules/es7.symbol.observable":334,"./modules/es7.system.global":335,"./modules/es7.weak-map.from":336,"./modules/es7.weak-map.of":337,"./modules/es7.weak-set.from":338,"./modules/es7.weak-set.of":339,"./modules/web.dom.iterable":340,"./modules/web.immediate":341,"./modules/web.timers":342}],344:[function(require,module,exports){
vendor: 16,104 bytes, lines 9230-9566
9230/*!
9231 * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
9232 * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
9233 * Released under MIT License
9234 */
9235(function (global, factory) {
9236    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
9237    typeof define === 'function' && define.amd ? define(factory) :
9238    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory());
9239}(this, (function () { 'use strict';
9240
9241    /*! *****************************************************************************
9242    Copyright (c) Microsoft Corporation.
9243
9244    Permission to use, copy, modify, and/or distribute this software for any
9245    purpose with or without fee is hereby granted.
9246
9247    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9248    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
9249    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
9250    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
9251    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
9252    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
9253    PERFORMANCE OF THIS SOFTWARE.
9254    ***************************************************************************** */
9255    /* global Reflect, Promise */
9256
9257    var extendStatics = function(d, b) {
9258        extendStatics = Object.setPrototypeOf ||
9259            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
9260            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
9261        return extendStatics(d, b);
9262    };
9263
9264    function __extends(d, b) {
9265        if (typeof b !== "function" && b !== null)
9266            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
9267        extendStatics(d, b);
9268        function __() { this.constructor = d; }
9269        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9270    }
9271
9272    var __assign = function() {
9273        __assign = Object.assign || function __assign(t) {
9274            for (var s, i = 1, n = arguments.length; i < n; i++) {
9275                s = arguments[i];
9276                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
9277            }
9278            return t;
9279        };
9280        return __assign.apply(this, arguments);
9281    };
9282
9283    function __awaiter(thisArg, _arguments, P, generator) {
9284        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9285        return new (P || (P = Promise))(function (resolve, reject) {
9286            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9287            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9288            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9289            step((generator = generator.apply(thisArg, _arguments || [])).next());
9290        });
9291    }
9292
9293    function __generator(thisArg, body) {
9294        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
9295        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
9296        function verb(n) { return function (v) { return step([n, v]); }; }
9297        function step(op) {
9298            if (f) throw new TypeError("Generator is already executing.");
9299            while (_) try {
9300                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
9301                if (y = 0, t) op = [op[0] & 2, t.value];
9302                switch (op[0]) {
9303                    case 0: case 1: t = op; break;
9304                    case 4: _.label++; return { value: op[1], done: false };
9305                    case 5: _.label++; y = op[1]; op = [0]; continue;
9306                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
9307                    default:
9308                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
9309                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
9310                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
9311                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
9312                        if (t[2]) _.ops.pop();
9313                        _.trys.pop(); continue;
9314                }
9315                op = body.call(thisArg, _);
9316            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
9317            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
9318        }
9319    }
9320
9321    function __spreadArray(to, from, pack) {
9322        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
9323            if (ar || !(i in from)) {
9324                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
9325                ar[i] = from[i];
9326            }
9327        }
9328        return to.concat(ar || from);
9329    }
9330
9331    var Bounds = /** @class */ (function () {
9332        function Bounds(left, top, width, height) {
9333            this.left = left;
9334            this.top = top;
9335            this.width = width;
9336            this.height = height;
9337        }
9338        Bounds.prototype.add = function (x, y, w, h) {
9339            return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);
9340        };
9341        Bounds.fromClientRect = function (context, clientRect) {
9342            return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);
9343        };
9344        Bounds.fromDOMRectList = function (context, domRectList) {
9345            var domRect = Array.from(domRectList).find(function (rect) { return rect.width !== 0; });
9346            return domRect
9347                ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height)
9348                : Bounds.EMPTY;
9349        };
9350        Bounds.EMPTY = new Bounds(0, 0, 0, 0);
9351        return Bounds;
9352    }());
9353    var parseBounds = function (context, node) {
9354        return Bounds.fromClientRect(context, node.getBoundingClientRect());
9355    };
9356    var parseDocumentSize = function (document) {
9357        var body = document.body;
9358        var documentElement = document.documentElement;
9359        if (!body || !documentElement) {
9360            throw new Error("Unable to get document size");
9361        }
9362        var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));
9363        var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));
9364        return new Bounds(0, 0, width, height);
9365    };
9366
9367    /*
9368     * css-line-break 2.1.0 <https://github.com/niklasvh/css-line-break#readme>
9369     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
9370     * Released under MIT License
9371     */
9372    var toCodePoints$1 = function (str) {
9373        var codePoints = [];
9374        var i = 0;
9375        var length = str.length;
9376        while (i < length) {
9377            var value = str.charCodeAt(i++);
9378            if (value >= 0xd800 && value <= 0xdbff && i < length) {
9379                var extra = str.charCodeAt(i++);
9380                if ((extra & 0xfc00) === 0xdc00) {
9381                    codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);
9382                }
9383                else {
9384                    codePoints.push(value);
9385                    i--;
9386                }
9387            }
9388            else {
9389                codePoints.push(value);
9390            }
9391        }
9392        return codePoints;
9393    };
9394    var fromCodePoint$1 = function () {
9395        var codePoints = [];
9396        for (var _i = 0; _i < arguments.length; _i++) {
9397            codePoints[_i] = arguments[_i];
9398        }
9399        if (String.fromCodePoint) {
9400            return String.fromCodePoint.apply(String, codePoints);
9401        }
9402        var length = codePoints.length;
9403        if (!length) {
9404            return '';
9405        }
9406        var codeUnits = [];
9407        var index = -1;
9408        var result = '';
9409        while (++index < length) {
9410            var codePoint = codePoints[index];
9411            if (codePoint <= 0xffff) {
9412                codeUnits.push(codePoint);
9413            }
9414            else {
9415                codePoint -= 0x10000;
9416                codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);
9417            }
9418            if (index + 1 === length || codeUnits.length > 0x4000) {
9419                result += String.fromCharCode.apply(String, codeUnits);
9420                codeUnits.length = 0;
9421            }
9422        }
9423        return result;
9424    };
9425    var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
9426    // Use a lookup table to find the index.
9427    var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
9428    for (var i$2 = 0; i$2 < chars$2.length; i$2++) {
9429        lookup$2[chars$2.charCodeAt(i$2)] = i$2;
9430    }
9431
9432    /*
9433     * utrie 1.0.2 <https://github.com/niklasvh/utrie>
9434     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
9435     * Released under MIT License
9436     */
9437    var chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
9438    // Use a lookup table to find the index.
9439    var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
9440    for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {
9441        lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;
9442    }
9443    var decode$1 = function (base64) {
9444        var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
9445        if (base64[base64.length - 1] === '=') {
9446            bufferLength--;
9447            if (base64[base64.length - 2] === '=') {
9448                bufferLength--;
9449            }
9450        }
9451        var buffer = typeof ArrayBuffer !== 'undefined' &&
9452            typeof Uint8Array !== 'undefined' &&
9453            typeof Uint8Array.prototype.slice !== 'undefined'
9454            ? new ArrayBuffer(bufferLength)
9455            : new Array(bufferLength);
9456        var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
9457        for (i = 0; i < len; i += 4) {
9458            encoded1 = lookup$1$1[base64.charCodeAt(i)];
9459            encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];
9460            encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];
9461            encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];
9462            bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
9463            bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
9464            bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
9465        }
9466        return buffer;
9467    };
9468    var polyUint16Array$1 = function (buffer) {
9469        var length = buffer.length;
9470        var bytes = [];
9471        for (var i = 0; i < length; i += 2) {
9472            bytes.push((buffer[i + 1] << 8) | buffer[i]);
9473        }
9474        return bytes;
9475    };
9476    var polyUint32Array$1 = function (buffer) {
9477        var length = buffer.length;
9478        var bytes = [];
9479        for (var i = 0; i < length; i += 4) {
9480            bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);
9481        }
9482        return bytes;
9483    };
9484
9485    /** Shift size for getting the index-2 table offset. */
9486    var UTRIE2_SHIFT_2$1 = 5;
9487    /** Shift size for getting the index-1 table offset. */
9488    var UTRIE2_SHIFT_1$1 = 6 + 5;
9489    /**
9490     * Shift size for shifting left the index array values.
9491     * Increases possible data size with 16-bit index values at the cost
9492     * of compactability.
9493     * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.
9494     */
9495    var UTRIE2_INDEX_SHIFT$1 = 2;
9496    /**
9497     * Difference between the two shift sizes,
9498     * for getting an index-1 offset from an index-2 offset. 6=11-5
9499     */
9500    var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;
9501    /**
9502     * The part of the index-2 table for U+D800..U+DBFF stores values for
9503     * lead surrogate code _units_ not code _points_.
9504     * Values for lead surrogate code _points_ are indexed with this portion of the table.
9505     * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)
9506     */
9507    var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;
9508    /** Number of entries in a data block. 32=0x20 */
9509    var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;
9510    /** Mask for getting the lower bits for the in-data-block offset. */
9511    var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;
9512    var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;
9513    /** Count the lengths of both BMP pieces. 2080=0x820 */
9514    var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;
9515    /**
9516     * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
9517     * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.
9518     */
9519    var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;
9520    var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */
9521    /**
9522     * The index-1 table, only used for supplementary code points, at offset 2112=0x840.
9523     * Variable length, for code points up to highStart, where the last single-value range starts.
9524     * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.
9525     * (For 0x100000 supplementary code points U+10000..U+10ffff.)
9526     *
9527     * The part of the index-2 table for supplementary code points starts
9528     * after this index-1 table.
9529     *
9530     * Both the index-1 table and the following part of the index-2 table
9531     * are omitted completely if there is only BMP data.
9532     */
9533    var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;
9534    /**
9535     * Number of index-1 entries for the BMP. 32=0x20
9536     * This part of the index-1 table is omitted from the serialized form.
9537     */
9538    var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;
9539    /** Number of entries in an index-2 block. 64=0x40 */
9540    var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;
9541    /** Mask for getting the lower bits for the in-index-2-block offset. */
9542    var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;
9543    var slice16$1 = function (view, start, end) {
9544        if (view.slice) {
9545            return view.slice(start, end);
9546        }
9547        return new Uint16Array(Array.prototype.slice.call(view, start, end));
9548    };
9549    var slice32$1 = function (view, start, end) {
9550        if (view.slice) {
9551            return view.slice(start, end);
9552        }
9553        return new Uint32Array(Array.prototype.slice.call(view, start, end));
9554    };
9555    var createTrieFromBase64$1 = function (base64, _byteLength) {
9556        var buffer = decode$1(base64);
9557        var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);
9558        var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);
9559        var headerLength = 24;
9560        var index = slice16$1(view16, headerLength / 2, view32[4] / 2);
9561        var data = view32[5] === 2
9562            ? slice16$1(view16, (headerLength + view32[4]) / 2)
9563            : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));
9564        return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);
9565    };
9566    var Trie$1 = /** @class */ (function () {
vendor: 8,890 bytes, lines 9567-9634
9567        function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {
9568            this.initialValue = initialValue;
9569            this.errorValue = errorValue;
9570            this.highStart = highStart;
9571            this.highValueIndex = highValueIndex;
9572            this.index = index;
9573            this.data = data;
9574        }
9575        /**
9576         * Get the value for a code point as stored in the Trie.
9577         *
9578         * @param codePoint the code point
9579         * @return the value
9580         */
9581        Trie.prototype.get = function (codePoint) {
9582            var ix;
9583            if (codePoint >= 0) {
9584                if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {
9585                    // Ordinary BMP code point, excluding leading surrogates.
9586                    // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.
9587                    // 16 bit data is stored in the index array itself.
9588                    ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];
9589                    ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
9590                    return this.data[ix];
9591                }
9592                if (codePoint <= 0xffff) {
9593                    // Lead Surrogate Code Point.  A Separate index section is stored for
9594                    // lead surrogate code units and code points.
9595                    //   The main index has the code unit data.
9596                    //   For this function, we need the code point data.
9597                    // Note: this expression could be refactored for slightly improved efficiency, but
9598                    //       surrogate code points will be so rare in practice that it's not worth it.
9599                    ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)];
9600                    ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
9601                    return this.data[ix];
9602                }
9603                if (codePoint < this.highStart) {
9604                    // Supplemental code point, use two-level lookup.
9605                    ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);
9606                    ix = this.index[ix];
9607                    ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1;
9608                    ix = this.index[ix];
9609                    ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
9610                    return this.data[ix];
9611                }
9612                if (codePoint <= 0x10ffff) {
9613                    return this.data[this.highValueIndex];
9614                }
9615            }
9616            // Fall through.  The code point is outside of the legal range of 0..0x10ffff.
9617            return this.errorValue;
9618        };
9619        return Trie;
9620    }());
9621
9622    /*
9623     * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>
9624     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
9625     * Released under MIT License
9626     */
9627    var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
9628    // Use a lookup table to find the index.
9629    var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
9630    for (var i$3 = 0; i$3 < chars$3.length; i$3++) {
9631        lookup$3[chars$3.charCodeAt(i$3)] = i$3;
9632    }
9633
9634    var base64$1 = 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCI
vendor: 46,295 bytes, line 9634
9634IIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlA
vendor: 17,159 bytes, lines 9634-9987
9634CUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';
9635
9636    var LETTER_NUMBER_MODIFIER = 50;
9637    // Non-tailorable Line Breaking Classes
9638    var BK = 1; //  Cause a line break (after)
9639    var CR$1 = 2; //  Cause a line break (after), except between CR and LF
9640    var LF$1 = 3; //  Cause a line break (after)
9641    var CM = 4; //  Prohibit a line break between the character and the preceding character
9642    var NL = 5; //  Cause a line break (after)
9643    var WJ = 7; //  Prohibit line breaks before and after
9644    var ZW = 8; //  Provide a break opportunity
9645    var GL = 9; //  Prohibit line breaks before and after
9646    var SP = 10; // Enable indirect line breaks
9647    var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences
9648    // Break Opportunities
9649    var B2 = 12; //  Provide a line break opportunity before and after the character
9650    var BA = 13; //  Generally provide a line break opportunity after the character
9651    var BB = 14; //  Generally provide a line break opportunity before the character
9652    var HY = 15; //  Provide a line break opportunity after the character, except in numeric context
9653    var CB = 16; //   Provide a line break opportunity contingent on additional information
9654    // Characters Prohibiting Certain Breaks
9655    var CL = 17; //  Prohibit line breaks before
9656    var CP = 18; //  Prohibit line breaks before
9657    var EX = 19; //  Prohibit line breaks before
9658    var IN = 20; //  Allow only indirect line breaks between pairs
9659    var NS = 21; //  Allow only indirect line breaks before
9660    var OP = 22; //  Prohibit line breaks after
9661    var QU = 23; //  Act like they are both opening and closing
9662    // Numeric Context
9663    var IS = 24; //  Prevent breaks after any and before numeric
9664    var NU = 25; //  Form numeric expressions for line breaking purposes
9665    var PO = 26; //  Do not break following a numeric expression
9666    var PR = 27; //  Do not break in front of a numeric expression
9667    var SY = 28; //  Prevent a break before; and allow a break after
9668    // Other Characters
9669    var AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID
9670    var AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters
9671    var CJ = 31; //  Treat as NS or ID for strict or normal breaking.
9672    var EB = 32; //  Do not break from following Emoji Modifier
9673    var EM = 33; //  Do not break from preceding Emoji Base
9674    var H2 = 34; //  Form Korean syllable blocks
9675    var H3 = 35; //  Form Korean syllable blocks
9676    var HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic
9677    var ID = 37; //  Break before or after; except in some numeric context
9678    var JL = 38; //  Form Korean syllable blocks
9679    var JV = 39; //  Form Korean syllable blocks
9680    var JT = 40; //  Form Korean syllable blocks
9681    var RI$1 = 41; //  Keep pairs together. For pairs; break before and after other classes
9682    var SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis
9683    var XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions
9684    var ea_OP = [0x2329, 0xff08];
9685    var BREAK_MANDATORY = '!';
9686    var BREAK_NOT_ALLOWED$1 = '×';
9687    var BREAK_ALLOWED$1 = '÷';
9688    var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);
9689    var ALPHABETICS = [AL, HL];
9690    var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];
9691    var SPACE$1 = [SP, ZW];
9692    var PREFIX_POSTFIX = [PR, PO];
9693    var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);
9694    var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];
9695    var HYPHEN = [HY, BA];
9696    var codePointsToCharacterClasses = function (codePoints, lineBreak) {
9697        if (lineBreak === void 0) { lineBreak = 'strict'; }
9698        var types = [];
9699        var indices = [];
9700        var categories = [];
9701        codePoints.forEach(function (codePoint, index) {
9702            var classType = UnicodeTrie$1.get(codePoint);
9703            if (classType > LETTER_NUMBER_MODIFIER) {
9704                categories.push(true);
9705                classType -= LETTER_NUMBER_MODIFIER;
9706            }
9707            else {
9708                categories.push(false);
9709            }
9710            if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {
9711                // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0
9712                if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {
9713                    indices.push(index);
9714                    return types.push(CB);
9715                }
9716            }
9717            if (classType === CM || classType === ZWJ$1) {
9718                // LB10 Treat any remaining combining mark or ZWJ as AL.
9719                if (index === 0) {
9720                    indices.push(index);
9721                    return types.push(AL);
9722                }
9723                // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of
9724                // the base character in all of the following rules. Treat ZWJ as if it were CM.
9725                var prev = types[index - 1];
9726                if (LINE_BREAKS.indexOf(prev) === -1) {
9727                    indices.push(indices[index - 1]);
9728                    return types.push(prev);
9729                }
9730                indices.push(index);
9731                return types.push(AL);
9732            }
9733            indices.push(index);
9734            if (classType === CJ) {
9735                return types.push(lineBreak === 'strict' ? NS : ID);
9736            }
9737            if (classType === SA) {
9738                return types.push(AL);
9739            }
9740            if (classType === AI) {
9741                return types.push(AL);
9742            }
9743            // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL
9744            // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised
9745            // to take into account the actual line breaking properties for these characters.
9746            if (classType === XX) {
9747                if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {
9748                    return types.push(ID);
9749                }
9750                else {
9751                    return types.push(AL);
9752                }
9753            }
9754            types.push(classType);
9755        });
9756        return [indices, types, categories];
9757    };
9758    var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {
9759        var current = classTypes[currentIndex];
9760        if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {
9761            var i = currentIndex;
9762            while (i <= classTypes.length) {
9763                i++;
9764                var next = classTypes[i];
9765                if (next === b) {
9766                    return true;
9767                }
9768                if (next !== SP) {
9769                    break;
9770                }
9771            }
9772        }
9773        if (current === SP) {
9774            var i = currentIndex;
9775            while (i > 0) {
9776                i--;
9777                var prev = classTypes[i];
9778                if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {
9779                    var n = currentIndex;
9780                    while (n <= classTypes.length) {
9781                        n++;
9782                        var next = classTypes[n];
9783                        if (next === b) {
9784                            return true;
9785                        }
9786                        if (next !== SP) {
9787                            break;
9788                        }
9789                    }
9790                }
9791                if (prev !== SP) {
9792                    break;
9793                }
9794            }
9795        }
9796        return false;
9797    };
9798    var previousNonSpaceClassType = function (currentIndex, classTypes) {
9799        var i = currentIndex;
9800        while (i >= 0) {
9801            var type = classTypes[i];
9802            if (type === SP) {
9803                i--;
9804            }
9805            else {
9806                return type;
9807            }
9808        }
9809        return 0;
9810    };
9811    var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {
9812        if (indicies[index] === 0) {
9813            return BREAK_NOT_ALLOWED$1;
9814        }
9815        var currentIndex = index - 1;
9816        if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
9817            return BREAK_NOT_ALLOWED$1;
9818        }
9819        var beforeIndex = currentIndex - 1;
9820        var afterIndex = currentIndex + 1;
9821        var current = classTypes[currentIndex];
9822        // LB4 Always break after hard line breaks.
9823        // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.
9824        var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
9825        var next = classTypes[afterIndex];
9826        if (current === CR$1 && next === LF$1) {
9827            return BREAK_NOT_ALLOWED$1;
9828        }
9829        if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
9830            return BREAK_MANDATORY;
9831        }
9832        // LB6 Do not break before hard line breaks.
9833        if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
9834            return BREAK_NOT_ALLOWED$1;
9835        }
9836        // LB7 Do not break before spaces or zero width space.
9837        if (SPACE$1.indexOf(next) !== -1) {
9838            return BREAK_NOT_ALLOWED$1;
9839        }
9840        // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.
9841        if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
9842            return BREAK_ALLOWED$1;
9843        }
9844        // LB8a Do not break after a zero width joiner.
9845        if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {
9846            return BREAK_NOT_ALLOWED$1;
9847        }
9848        // zwj emojis
9849        if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {
9850            return BREAK_NOT_ALLOWED$1;
9851        }
9852        // LB11 Do not break before or after Word joiner and related characters.
9853        if (current === WJ || next === WJ) {
9854            return BREAK_NOT_ALLOWED$1;
9855        }
9856        // LB12 Do not break after NBSP and related characters.
9857        if (current === GL) {
9858            return BREAK_NOT_ALLOWED$1;
9859        }
9860        // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.
9861        if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
9862            return BREAK_NOT_ALLOWED$1;
9863        }
9864        // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.
9865        if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
9866            return BREAK_NOT_ALLOWED$1;
9867        }
9868        // LB14 Do not break after ‘[’, even after spaces.
9869        if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
9870            return BREAK_NOT_ALLOWED$1;
9871        }
9872        // LB15 Do not break within ‘”[’, even with intervening spaces.
9873        if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
9874            return BREAK_NOT_ALLOWED$1;
9875        }
9876        // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.
9877        if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
9878            return BREAK_NOT_ALLOWED$1;
9879        }
9880        // LB17 Do not break within ‘——’, even with intervening spaces.
9881        if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
9882            return BREAK_NOT_ALLOWED$1;
9883        }
9884        // LB18 Break after spaces.
9885        if (current === SP) {
9886            return BREAK_ALLOWED$1;
9887        }
9888        // LB19 Do not break before or after quotation marks, such as ‘ ” ’.
9889        if (current === QU || next === QU) {
9890            return BREAK_NOT_ALLOWED$1;
9891        }
9892        // LB20 Break before and after unresolved CB.
9893        if (next === CB || current === CB) {
9894            return BREAK_ALLOWED$1;
9895        }
9896        // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.
9897        if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
9898            return BREAK_NOT_ALLOWED$1;
9899        }
9900        // LB21a Don't break after Hebrew + Hyphen.
9901        if (before === HL && HYPHEN.indexOf(current) !== -1) {
9902            return BREAK_NOT_ALLOWED$1;
9903        }
9904        // LB21b Don’t break between Solidus and Hebrew letters.
9905        if (current === SY && next === HL) {
9906            return BREAK_NOT_ALLOWED$1;
9907        }
9908        // LB22 Do not break before ellipsis.
9909        if (next === IN) {
9910            return BREAK_NOT_ALLOWED$1;
9911        }
9912        // LB23 Do not break between digits and letters.
9913        if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {
9914            return BREAK_NOT_ALLOWED$1;
9915        }
9916        // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.
9917        if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||
9918            ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {
9919            return BREAK_NOT_ALLOWED$1;
9920        }
9921        // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.
9922        if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||
9923            (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {
9924            return BREAK_NOT_ALLOWED$1;
9925        }
9926        // LB25 Do not break between the following pairs of classes relevant to numbers:
9927        if (
9928        // (PR | PO) × ( OP | HY )? NU
9929        ([PR, PO].indexOf(current) !== -1 &&
9930            (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||
9931            // ( OP | HY ) × NU
9932            ([OP, HY].indexOf(current) !== -1 && next === NU) ||
9933            // NU ×	(NU | SY | IS)
9934            (current === NU && [NU, SY, IS].indexOf(next) !== -1)) {
9935            return BREAK_NOT_ALLOWED$1;
9936        }
9937        // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)
9938        if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
9939            var prevIndex = currentIndex;
9940            while (prevIndex >= 0) {
9941                var type = classTypes[prevIndex];
9942                if (type === NU) {
9943                    return BREAK_NOT_ALLOWED$1;
9944                }
9945                else if ([SY, IS].indexOf(type) !== -1) {
9946                    prevIndex--;
9947                }
9948                else {
9949                    break;
9950                }
9951            }
9952        }
9953        // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))
9954        if ([PR, PO].indexOf(next) !== -1) {
9955            var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
9956            while (prevIndex >= 0) {
9957                var type = classTypes[prevIndex];
9958                if (type === NU) {
9959                    return BREAK_NOT_ALLOWED$1;
9960                }
9961                else if ([SY, IS].indexOf(type) !== -1) {
9962                    prevIndex--;
9963                }
9964                else {
9965                    break;
9966                }
9967            }
9968        }
9969        // LB26 Do not break a Korean syllable.
9970        if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||
9971            ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||
9972            ([JT, H3].indexOf(current) !== -1 && next === JT)) {
9973            return BREAK_NOT_ALLOWED$1;
9974        }
9975        // LB27 Treat a Korean Syllable Block the same as ID.
9976        if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||
9977            (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {
9978            return BREAK_NOT_ALLOWED$1;
9979        }
9980        // LB28 Do not break between alphabetics (“at”).
9981        if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
9982            return BREAK_NOT_ALLOWED$1;
9983        }
9984        // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).
9985        if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
9986            return BREAK_NOT_ALLOWED$1;
9987        }
vendor: 124,595 bytes, lines 9988-13048
9988        // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.
9989        if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 &&
9990            next === OP &&
9991            ea_OP.indexOf(codePoints[afterIndex]) === -1) ||
9992            (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {
9993            return BREAK_NOT_ALLOWED$1;
9994        }
9995        // LB30a Break between two regional indicator symbols if and only if there are an even number of regional
9996        // indicators preceding the position of the break.
9997        if (current === RI$1 && next === RI$1) {
9998            var i = indicies[currentIndex];
9999            var count = 1;
10000            while (i > 0) {
10001                i--;
10002                if (classTypes[i] === RI$1) {
10003                    count++;
10004                }
10005                else {
10006                    break;
10007                }
10008            }
10009            if (count % 2 !== 0) {
10010                return BREAK_NOT_ALLOWED$1;
10011            }
10012        }
10013        // LB30b Do not break between an emoji base and an emoji modifier.
10014        if (current === EB && next === EM) {
10015            return BREAK_NOT_ALLOWED$1;
10016        }
10017        return BREAK_ALLOWED$1;
10018    };
10019    var cssFormattedClasses = function (codePoints, options) {
10020        if (!options) {
10021            options = { lineBreak: 'normal', wordBreak: 'normal' };
10022        }
10023        var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];
10024        if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {
10025            classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });
10026        }
10027        var forbiddenBreakpoints = options.wordBreak === 'keep-all'
10028            ? isLetterNumber.map(function (letterNumber, i) {
10029                return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;
10030            })
10031            : undefined;
10032        return [indicies, classTypes, forbiddenBreakpoints];
10033    };
10034    var Break = /** @class */ (function () {
10035        function Break(codePoints, lineBreak, start, end) {
10036            this.codePoints = codePoints;
10037            this.required = lineBreak === BREAK_MANDATORY;
10038            this.start = start;
10039            this.end = end;
10040        }
10041        Break.prototype.slice = function () {
10042            return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));
10043        };
10044        return Break;
10045    }());
10046    var LineBreaker = function (str, options) {
10047        var codePoints = toCodePoints$1(str);
10048        var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];
10049        var length = codePoints.length;
10050        var lastEnd = 0;
10051        var nextIndex = 0;
10052        return {
10053            next: function () {
10054                if (nextIndex >= length) {
10055                    return { done: true, value: null };
10056                }
10057                var lineBreak = BREAK_NOT_ALLOWED$1;
10058                while (nextIndex < length &&
10059                    (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===
10060                        BREAK_NOT_ALLOWED$1) { }
10061                if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {
10062                    var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);
10063                    lastEnd = nextIndex;
10064                    return { value: value, done: false };
10065                }
10066                return { done: true, value: null };
10067            },
10068        };
10069    };
10070
10071    // https://www.w3.org/TR/css-syntax-3
10072    var FLAG_UNRESTRICTED = 1 << 0;
10073    var FLAG_ID = 1 << 1;
10074    var FLAG_INTEGER = 1 << 2;
10075    var FLAG_NUMBER = 1 << 3;
10076    var LINE_FEED = 0x000a;
10077    var SOLIDUS = 0x002f;
10078    var REVERSE_SOLIDUS = 0x005c;
10079    var CHARACTER_TABULATION = 0x0009;
10080    var SPACE = 0x0020;
10081    var QUOTATION_MARK = 0x0022;
10082    var EQUALS_SIGN = 0x003d;
10083    var NUMBER_SIGN = 0x0023;
10084    var DOLLAR_SIGN = 0x0024;
10085    var PERCENTAGE_SIGN = 0x0025;
10086    var APOSTROPHE = 0x0027;
10087    var LEFT_PARENTHESIS = 0x0028;
10088    var RIGHT_PARENTHESIS = 0x0029;
10089    var LOW_LINE = 0x005f;
10090    var HYPHEN_MINUS = 0x002d;
10091    var EXCLAMATION_MARK = 0x0021;
10092    var LESS_THAN_SIGN = 0x003c;
10093    var GREATER_THAN_SIGN = 0x003e;
10094    var COMMERCIAL_AT = 0x0040;
10095    var LEFT_SQUARE_BRACKET = 0x005b;
10096    var RIGHT_SQUARE_BRACKET = 0x005d;
10097    var CIRCUMFLEX_ACCENT = 0x003d;
10098    var LEFT_CURLY_BRACKET = 0x007b;
10099    var QUESTION_MARK = 0x003f;
10100    var RIGHT_CURLY_BRACKET = 0x007d;
10101    var VERTICAL_LINE = 0x007c;
10102    var TILDE = 0x007e;
10103    var CONTROL = 0x0080;
10104    var REPLACEMENT_CHARACTER = 0xfffd;
10105    var ASTERISK = 0x002a;
10106    var PLUS_SIGN = 0x002b;
10107    var COMMA = 0x002c;
10108    var COLON = 0x003a;
10109    var SEMICOLON = 0x003b;
10110    var FULL_STOP = 0x002e;
10111    var NULL = 0x0000;
10112    var BACKSPACE = 0x0008;
10113    var LINE_TABULATION = 0x000b;
10114    var SHIFT_OUT = 0x000e;
10115    var INFORMATION_SEPARATOR_ONE = 0x001f;
10116    var DELETE = 0x007f;
10117    var EOF = -1;
10118    var ZERO = 0x0030;
10119    var a = 0x0061;
10120    var e = 0x0065;
10121    var f = 0x0066;
10122    var u = 0x0075;
10123    var z = 0x007a;
10124    var A = 0x0041;
10125    var E = 0x0045;
10126    var F = 0x0046;
10127    var U = 0x0055;
10128    var Z = 0x005a;
10129    var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };
10130    var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };
10131    var isHex = function (codePoint) {
10132        return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);
10133    };
10134    var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };
10135    var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };
10136    var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };
10137    var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };
10138    var isWhiteSpace = function (codePoint) {
10139        return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;
10140    };
10141    var isNameStartCodePoint = function (codePoint) {
10142        return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
10143    };
10144    var isNameCodePoint = function (codePoint) {
10145        return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;
10146    };
10147    var isNonPrintableCodePoint = function (codePoint) {
10148        return ((codePoint >= NULL && codePoint <= BACKSPACE) ||
10149            codePoint === LINE_TABULATION ||
10150            (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||
10151            codePoint === DELETE);
10152    };
10153    var isValidEscape = function (c1, c2) {
10154        if (c1 !== REVERSE_SOLIDUS) {
10155            return false;
10156        }
10157        return c2 !== LINE_FEED;
10158    };
10159    var isIdentifierStart = function (c1, c2, c3) {
10160        if (c1 === HYPHEN_MINUS) {
10161            return isNameStartCodePoint(c2) || isValidEscape(c2, c3);
10162        }
10163        else if (isNameStartCodePoint(c1)) {
10164            return true;
10165        }
10166        else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {
10167            return true;
10168        }
10169        return false;
10170    };
10171    var isNumberStart = function (c1, c2, c3) {
10172        if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
10173            if (isDigit(c2)) {
10174                return true;
10175            }
10176            return c2 === FULL_STOP && isDigit(c3);
10177        }
10178        if (c1 === FULL_STOP) {
10179            return isDigit(c2);
10180        }
10181        return isDigit(c1);
10182    };
10183    var stringToNumber = function (codePoints) {
10184        var c = 0;
10185        var sign = 1;
10186        if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
10187            if (codePoints[c] === HYPHEN_MINUS) {
10188                sign = -1;
10189            }
10190            c++;
10191        }
10192        var integers = [];
10193        while (isDigit(codePoints[c])) {
10194            integers.push(codePoints[c++]);
10195        }
10196        var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;
10197        if (codePoints[c] === FULL_STOP) {
10198            c++;
10199        }
10200        var fraction = [];
10201        while (isDigit(codePoints[c])) {
10202            fraction.push(codePoints[c++]);
10203        }
10204        var fracd = fraction.length;
10205        var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;
10206        if (codePoints[c] === E || codePoints[c] === e) {
10207            c++;
10208        }
10209        var expsign = 1;
10210        if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
10211            if (codePoints[c] === HYPHEN_MINUS) {
10212                expsign = -1;
10213            }
10214            c++;
10215        }
10216        var exponent = [];
10217        while (isDigit(codePoints[c])) {
10218            exponent.push(codePoints[c++]);
10219        }
10220        var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;
10221        return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);
10222    };
10223    var LEFT_PARENTHESIS_TOKEN = {
10224        type: 2 /* LEFT_PARENTHESIS_TOKEN */
10225    };
10226    var RIGHT_PARENTHESIS_TOKEN = {
10227        type: 3 /* RIGHT_PARENTHESIS_TOKEN */
10228    };
10229    var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ };
10230    var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ };
10231    var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ };
10232    var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ };
10233    var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ };
10234    var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ };
10235    var LEFT_CURLY_BRACKET_TOKEN = {
10236        type: 11 /* LEFT_CURLY_BRACKET_TOKEN */
10237    };
10238    var RIGHT_CURLY_BRACKET_TOKEN = {
10239        type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */
10240    };
10241    var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ };
10242    var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ };
10243    var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ };
10244    var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ };
10245    var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ };
10246    var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ };
10247    var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ };
10248    var LEFT_SQUARE_BRACKET_TOKEN = {
10249        type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */
10250    };
10251    var RIGHT_SQUARE_BRACKET_TOKEN = {
10252        type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */
10253    };
10254    var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ };
10255    var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ };
10256    var Tokenizer = /** @class */ (function () {
10257        function Tokenizer() {
10258            this._value = [];
10259        }
10260        Tokenizer.prototype.write = function (chunk) {
10261            this._value = this._value.concat(toCodePoints$1(chunk));
10262        };
10263        Tokenizer.prototype.read = function () {
10264            var tokens = [];
10265            var token = this.consumeToken();
10266            while (token !== EOF_TOKEN) {
10267                tokens.push(token);
10268                token = this.consumeToken();
10269            }
10270            return tokens;
10271        };
10272        Tokenizer.prototype.consumeToken = function () {
10273            var codePoint = this.consumeCodePoint();
10274            switch (codePoint) {
10275                case QUOTATION_MARK:
10276                    return this.consumeStringToken(QUOTATION_MARK);
10277                case NUMBER_SIGN:
10278                    var c1 = this.peekCodePoint(0);
10279                    var c2 = this.peekCodePoint(1);
10280                    var c3 = this.peekCodePoint(2);
10281                    if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
10282                        var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;
10283                        var value = this.consumeName();
10284                        return { type: 5 /* HASH_TOKEN */, value: value, flags: flags };
10285                    }
10286                    break;
10287                case DOLLAR_SIGN:
10288                    if (this.peekCodePoint(0) === EQUALS_SIGN) {
10289                        this.consumeCodePoint();
10290                        return SUFFIX_MATCH_TOKEN;
10291                    }
10292                    break;
10293                case APOSTROPHE:
10294                    return this.consumeStringToken(APOSTROPHE);
10295                case LEFT_PARENTHESIS:
10296                    return LEFT_PARENTHESIS_TOKEN;
10297                case RIGHT_PARENTHESIS:
10298                    return RIGHT_PARENTHESIS_TOKEN;
10299                case ASTERISK:
10300                    if (this.peekCodePoint(0) === EQUALS_SIGN) {
10301                        this.consumeCodePoint();
10302                        return SUBSTRING_MATCH_TOKEN;
10303                    }
10304                    break;
10305                case PLUS_SIGN:
10306                    if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
10307                        this.reconsumeCodePoint(codePoint);
10308                        return this.consumeNumericToken();
10309                    }
10310                    break;
10311                case COMMA:
10312                    return COMMA_TOKEN;
10313                case HYPHEN_MINUS:
10314                    var e1 = codePoint;
10315                    var e2 = this.peekCodePoint(0);
10316                    var e3 = this.peekCodePoint(1);
10317                    if (isNumberStart(e1, e2, e3)) {
10318                        this.reconsumeCodePoint(codePoint);
10319                        return this.consumeNumericToken();
10320                    }
10321                    if (isIdentifierStart(e1, e2, e3)) {
10322                        this.reconsumeCodePoint(codePoint);
10323                        return this.consumeIdentLikeToken();
10324                    }
10325                    if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {
10326                        this.consumeCodePoint();
10327                        this.consumeCodePoint();
10328                        return CDC_TOKEN;
10329                    }
10330                    break;
10331                case FULL_STOP:
10332                    if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
10333                        this.reconsumeCodePoint(codePoint);
10334                        return this.consumeNumericToken();
10335                    }
10336                    break;
10337                case SOLIDUS:
10338                    if (this.peekCodePoint(0) === ASTERISK) {
10339                        this.consumeCodePoint();
10340                        while (true) {
10341                            var c = this.consumeCodePoint();
10342                            if (c === ASTERISK) {
10343                                c = this.consumeCodePoint();
10344                                if (c === SOLIDUS) {
10345                                    return this.consumeToken();
10346                                }
10347                            }
10348                            if (c === EOF) {
10349                                return this.consumeToken();
10350                            }
10351                        }
10352                    }
10353                    break;
10354                case COLON:
10355                    return COLON_TOKEN;
10356                case SEMICOLON:
10357                    return SEMICOLON_TOKEN;
10358                case LESS_THAN_SIGN:
10359                    if (this.peekCodePoint(0) === EXCLAMATION_MARK &&
10360                        this.peekCodePoint(1) === HYPHEN_MINUS &&
10361                        this.peekCodePoint(2) === HYPHEN_MINUS) {
10362                        this.consumeCodePoint();
10363                        this.consumeCodePoint();
10364                        return CDO_TOKEN;
10365                    }
10366                    break;
10367                case COMMERCIAL_AT:
10368                    var a1 = this.peekCodePoint(0);
10369                    var a2 = this.peekCodePoint(1);
10370                    var a3 = this.peekCodePoint(2);
10371                    if (isIdentifierStart(a1, a2, a3)) {
10372                        var value = this.consumeName();
10373                        return { type: 7 /* AT_KEYWORD_TOKEN */, value: value };
10374                    }
10375                    break;
10376                case LEFT_SQUARE_BRACKET:
10377                    return LEFT_SQUARE_BRACKET_TOKEN;
10378                case REVERSE_SOLIDUS:
10379                    if (isValidEscape(codePoint, this.peekCodePoint(0))) {
10380                        this.reconsumeCodePoint(codePoint);
10381                        return this.consumeIdentLikeToken();
10382                    }
10383                    break;
10384                case RIGHT_SQUARE_BRACKET:
10385                    return RIGHT_SQUARE_BRACKET_TOKEN;
10386                case CIRCUMFLEX_ACCENT:
10387                    if (this.peekCodePoint(0) === EQUALS_SIGN) {
10388                        this.consumeCodePoint();
10389                        return PREFIX_MATCH_TOKEN;
10390                    }
10391                    break;
10392                case LEFT_CURLY_BRACKET:
10393                    return LEFT_CURLY_BRACKET_TOKEN;
10394                case RIGHT_CURLY_BRACKET:
10395                    return RIGHT_CURLY_BRACKET_TOKEN;
10396                case u:
10397                case U:
10398                    var u1 = this.peekCodePoint(0);
10399                    var u2 = this.peekCodePoint(1);
10400                    if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {
10401                        this.consumeCodePoint();
10402                        this.consumeUnicodeRangeToken();
10403                    }
10404                    this.reconsumeCodePoint(codePoint);
10405                    return this.consumeIdentLikeToken();
10406                case VERTICAL_LINE:
10407                    if (this.peekCodePoint(0) === EQUALS_SIGN) {
10408                        this.consumeCodePoint();
10409                        return DASH_MATCH_TOKEN;
10410                    }
10411                    if (this.peekCodePoint(0) === VERTICAL_LINE) {
10412                        this.consumeCodePoint();
10413                        return COLUMN_TOKEN;
10414                    }
10415                    break;
10416                case TILDE:
10417                    if (this.peekCodePoint(0) === EQUALS_SIGN) {
10418                        this.consumeCodePoint();
10419                        return INCLUDE_MATCH_TOKEN;
10420                    }
10421                    break;
10422                case EOF:
10423                    return EOF_TOKEN;
10424            }
10425            if (isWhiteSpace(codePoint)) {
10426                this.consumeWhiteSpace();
10427                return WHITESPACE_TOKEN;
10428            }
10429            if (isDigit(codePoint)) {
10430                this.reconsumeCodePoint(codePoint);
10431                return this.consumeNumericToken();
10432            }
10433            if (isNameStartCodePoint(codePoint)) {
10434                this.reconsumeCodePoint(codePoint);
10435                return this.consumeIdentLikeToken();
10436            }
10437            return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) };
10438        };
10439        Tokenizer.prototype.consumeCodePoint = function () {
10440            var value = this._value.shift();
10441            return typeof value === 'undefined' ? -1 : value;
10442        };
10443        Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {
10444            this._value.unshift(codePoint);
10445        };
10446        Tokenizer.prototype.peekCodePoint = function (delta) {
10447            if (delta >= this._value.length) {
10448                return -1;
10449            }
10450            return this._value[delta];
10451        };
10452        Tokenizer.prototype.consumeUnicodeRangeToken = function () {
10453            var digits = [];
10454            var codePoint = this.consumeCodePoint();
10455            while (isHex(codePoint) && digits.length < 6) {
10456                digits.push(codePoint);
10457                codePoint = this.consumeCodePoint();
10458            }
10459            var questionMarks = false;
10460            while (codePoint === QUESTION_MARK && digits.length < 6) {
10461                digits.push(codePoint);
10462                codePoint = this.consumeCodePoint();
10463                questionMarks = true;
10464            }
10465            if (questionMarks) {
10466                var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);
10467                var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);
10468                return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end };
10469            }
10470            var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);
10471            if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {
10472                this.consumeCodePoint();
10473                codePoint = this.consumeCodePoint();
10474                var endDigits = [];
10475                while (isHex(codePoint) && endDigits.length < 6) {
10476                    endDigits.push(codePoint);
10477                    codePoint = this.consumeCodePoint();
10478                }
10479                var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);
10480                return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end };
10481            }
10482            else {
10483                return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start };
10484            }
10485        };
10486        Tokenizer.prototype.consumeIdentLikeToken = function () {
10487            var value = this.consumeName();
10488            if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {
10489                this.consumeCodePoint();
10490                return this.consumeUrlToken();
10491            }
10492            else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
10493                this.consumeCodePoint();
10494                return { type: 19 /* FUNCTION_TOKEN */, value: value };
10495            }
10496            return { type: 20 /* IDENT_TOKEN */, value: value };
10497        };
10498        Tokenizer.prototype.consumeUrlToken = function () {
10499            var value = [];
10500            this.consumeWhiteSpace();
10501            if (this.peekCodePoint(0) === EOF) {
10502                return { type: 22 /* URL_TOKEN */, value: '' };
10503            }
10504            var next = this.peekCodePoint(0);
10505            if (next === APOSTROPHE || next === QUOTATION_MARK) {
10506                var stringToken = this.consumeStringToken(this.consumeCodePoint());
10507                if (stringToken.type === 0 /* STRING_TOKEN */) {
10508                    this.consumeWhiteSpace();
10509                    if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
10510                        this.consumeCodePoint();
10511                        return { type: 22 /* URL_TOKEN */, value: stringToken.value };
10512                    }
10513                }
10514                this.consumeBadUrlRemnants();
10515                return BAD_URL_TOKEN;
10516            }
10517            while (true) {
10518                var codePoint = this.consumeCodePoint();
10519                if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
10520                    return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };
10521                }
10522                else if (isWhiteSpace(codePoint)) {
10523                    this.consumeWhiteSpace();
10524                    if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
10525                        this.consumeCodePoint();
10526                        return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };
10527                    }
10528                    this.consumeBadUrlRemnants();
10529                    return BAD_URL_TOKEN;
10530                }
10531                else if (codePoint === QUOTATION_MARK ||
10532                    codePoint === APOSTROPHE ||
10533                    codePoint === LEFT_PARENTHESIS ||
10534                    isNonPrintableCodePoint(codePoint)) {
10535                    this.consumeBadUrlRemnants();
10536                    return BAD_URL_TOKEN;
10537                }
10538                else if (codePoint === REVERSE_SOLIDUS) {
10539                    if (isValidEscape(codePoint, this.peekCodePoint(0))) {
10540                        value.push(this.consumeEscapedCodePoint());
10541                    }
10542                    else {
10543                        this.consumeBadUrlRemnants();
10544                        return BAD_URL_TOKEN;
10545                    }
10546                }
10547                else {
10548                    value.push(codePoint);
10549                }
10550            }
10551        };
10552        Tokenizer.prototype.consumeWhiteSpace = function () {
10553            while (isWhiteSpace(this.peekCodePoint(0))) {
10554                this.consumeCodePoint();
10555            }
10556        };
10557        Tokenizer.prototype.consumeBadUrlRemnants = function () {
10558            while (true) {
10559                var codePoint = this.consumeCodePoint();
10560                if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {
10561                    return;
10562                }
10563                if (isValidEscape(codePoint, this.peekCodePoint(0))) {
10564                    this.consumeEscapedCodePoint();
10565                }
10566            }
10567        };
10568        Tokenizer.prototype.consumeStringSlice = function (count) {
10569            var SLICE_STACK_SIZE = 50000;
10570            var value = '';
10571            while (count > 0) {
10572                var amount = Math.min(SLICE_STACK_SIZE, count);
10573                value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));
10574                count -= amount;
10575            }
10576            this._value.shift();
10577            return value;
10578        };
10579        Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {
10580            var value = '';
10581            var i = 0;
10582            do {
10583                var codePoint = this._value[i];
10584                if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {
10585                    value += this.consumeStringSlice(i);
10586                    return { type: 0 /* STRING_TOKEN */, value: value };
10587                }
10588                if (codePoint === LINE_FEED) {
10589                    this._value.splice(0, i);
10590                    return BAD_STRING_TOKEN;
10591                }
10592                if (codePoint === REVERSE_SOLIDUS) {
10593                    var next = this._value[i + 1];
10594                    if (next !== EOF && next !== undefined) {
10595                        if (next === LINE_FEED) {
10596                            value += this.consumeStringSlice(i);
10597                            i = -1;
10598                            this._value.shift();
10599                        }
10600                        else if (isValidEscape(codePoint, next)) {
10601                            value += this.consumeStringSlice(i);
10602                            value += fromCodePoint$1(this.consumeEscapedCodePoint());
10603                            i = -1;
10604                        }
10605                    }
10606                }
10607                i++;
10608            } while (true);
10609        };
10610        Tokenizer.prototype.consumeNumber = function () {
10611            var repr = [];
10612            var type = FLAG_INTEGER;
10613            var c1 = this.peekCodePoint(0);
10614            if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
10615                repr.push(this.consumeCodePoint());
10616            }
10617            while (isDigit(this.peekCodePoint(0))) {
10618                repr.push(this.consumeCodePoint());
10619            }
10620            c1 = this.peekCodePoint(0);
10621            var c2 = this.peekCodePoint(1);
10622            if (c1 === FULL_STOP && isDigit(c2)) {
10623                repr.push(this.consumeCodePoint(), this.consumeCodePoint());
10624                type = FLAG_NUMBER;
10625                while (isDigit(this.peekCodePoint(0))) {
10626                    repr.push(this.consumeCodePoint());
10627                }
10628            }
10629            c1 = this.peekCodePoint(0);
10630            c2 = this.peekCodePoint(1);
10631            var c3 = this.peekCodePoint(2);
10632            if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {
10633                repr.push(this.consumeCodePoint(), this.consumeCodePoint());
10634                type = FLAG_NUMBER;
10635                while (isDigit(this.peekCodePoint(0))) {
10636                    repr.push(this.consumeCodePoint());
10637                }
10638            }
10639            return [stringToNumber(repr), type];
10640        };
10641        Tokenizer.prototype.consumeNumericToken = function () {
10642            var _a = this.consumeNumber(), number = _a[0], flags = _a[1];
10643            var c1 = this.peekCodePoint(0);
10644            var c2 = this.peekCodePoint(1);
10645            var c3 = this.peekCodePoint(2);
10646            if (isIdentifierStart(c1, c2, c3)) {
10647                var unit = this.consumeName();
10648                return { type: 15 /* DIMENSION_TOKEN */, number: number, flags: flags, unit: unit };
10649            }
10650            if (c1 === PERCENTAGE_SIGN) {
10651                this.consumeCodePoint();
10652                return { type: 16 /* PERCENTAGE_TOKEN */, number: number, flags: flags };
10653            }
10654            return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags };
10655        };
10656        Tokenizer.prototype.consumeEscapedCodePoint = function () {
10657            var codePoint = this.consumeCodePoint();
10658            if (isHex(codePoint)) {
10659                var hex = fromCodePoint$1(codePoint);
10660                while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
10661                    hex += fromCodePoint$1(this.consumeCodePoint());
10662                }
10663                if (isWhiteSpace(this.peekCodePoint(0))) {
10664                    this.consumeCodePoint();
10665                }
10666                var hexCodePoint = parseInt(hex, 16);
10667                if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {
10668                    return REPLACEMENT_CHARACTER;
10669                }
10670                return hexCodePoint;
10671            }
10672            if (codePoint === EOF) {
10673                return REPLACEMENT_CHARACTER;
10674            }
10675            return codePoint;
10676        };
10677        Tokenizer.prototype.consumeName = function () {
10678            var result = '';
10679            while (true) {
10680                var codePoint = this.consumeCodePoint();
10681                if (isNameCodePoint(codePoint)) {
10682                    result += fromCodePoint$1(codePoint);
10683                }
10684                else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
10685                    result += fromCodePoint$1(this.consumeEscapedCodePoint());
10686                }
10687                else {
10688                    this.reconsumeCodePoint(codePoint);
10689                    return result;
10690                }
10691            }
10692        };
10693        return Tokenizer;
10694    }());
10695
10696    var Parser = /** @class */ (function () {
10697        function Parser(tokens) {
10698            this._tokens = tokens;
10699        }
10700        Parser.create = function (value) {
10701            var tokenizer = new Tokenizer();
10702            tokenizer.write(value);
10703            return new Parser(tokenizer.read());
10704        };
10705        Parser.parseValue = function (value) {
10706            return Parser.create(value).parseComponentValue();
10707        };
10708        Parser.parseValues = function (value) {
10709            return Parser.create(value).parseComponentValues();
10710        };
10711        Parser.prototype.parseComponentValue = function () {
10712            var token = this.consumeToken();
10713            while (token.type === 31 /* WHITESPACE_TOKEN */) {
10714                token = this.consumeToken();
10715            }
10716            if (token.type === 32 /* EOF_TOKEN */) {
10717                throw new SyntaxError("Error parsing CSS component value, unexpected EOF");
10718            }
10719            this.reconsumeToken(token);
10720            var value = this.consumeComponentValue();
10721            do {
10722                token = this.consumeToken();
10723            } while (token.type === 31 /* WHITESPACE_TOKEN */);
10724            if (token.type === 32 /* EOF_TOKEN */) {
10725                return value;
10726            }
10727            throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one");
10728        };
10729        Parser.prototype.parseComponentValues = function () {
10730            var values = [];
10731            while (true) {
10732                var value = this.consumeComponentValue();
10733                if (value.type === 32 /* EOF_TOKEN */) {
10734                    return values;
10735                }
10736                values.push(value);
10737                values.push();
10738            }
10739        };
10740        Parser.prototype.consumeComponentValue = function () {
10741            var token = this.consumeToken();
10742            switch (token.type) {
10743                case 11 /* LEFT_CURLY_BRACKET_TOKEN */:
10744                case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:
10745                case 2 /* LEFT_PARENTHESIS_TOKEN */:
10746                    return this.consumeSimpleBlock(token.type);
10747                case 19 /* FUNCTION_TOKEN */:
10748                    return this.consumeFunction(token);
10749            }
10750            return token;
10751        };
10752        Parser.prototype.consumeSimpleBlock = function (type) {
10753            var block = { type: type, values: [] };
10754            var token = this.consumeToken();
10755            while (true) {
10756                if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) {
10757                    return block;
10758                }
10759                this.reconsumeToken(token);
10760                block.values.push(this.consumeComponentValue());
10761                token = this.consumeToken();
10762            }
10763        };
10764        Parser.prototype.consumeFunction = function (functionToken) {
10765            var cssFunction = {
10766                name: functionToken.value,
10767                values: [],
10768                type: 18 /* FUNCTION */
10769            };
10770            while (true) {
10771                var token = this.consumeToken();
10772                if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) {
10773                    return cssFunction;
10774                }
10775                this.reconsumeToken(token);
10776                cssFunction.values.push(this.consumeComponentValue());
10777            }
10778        };
10779        Parser.prototype.consumeToken = function () {
10780            var token = this._tokens.shift();
10781            return typeof token === 'undefined' ? EOF_TOKEN : token;
10782        };
10783        Parser.prototype.reconsumeToken = function (token) {
10784            this._tokens.unshift(token);
10785        };
10786        return Parser;
10787    }());
10788    var isDimensionToken = function (token) { return token.type === 15 /* DIMENSION_TOKEN */; };
10789    var isNumberToken = function (token) { return token.type === 17 /* NUMBER_TOKEN */; };
10790    var isIdentToken = function (token) { return token.type === 20 /* IDENT_TOKEN */; };
10791    var isStringToken = function (token) { return token.type === 0 /* STRING_TOKEN */; };
10792    var isIdentWithValue = function (token, value) {
10793        return isIdentToken(token) && token.value === value;
10794    };
10795    var nonWhiteSpace = function (token) { return token.type !== 31 /* WHITESPACE_TOKEN */; };
10796    var nonFunctionArgSeparator = function (token) {
10797        return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */;
10798    };
10799    var parseFunctionArgs = function (tokens) {
10800        var args = [];
10801        var arg = [];
10802        tokens.forEach(function (token) {
10803            if (token.type === 4 /* COMMA_TOKEN */) {
10804                if (arg.length === 0) {
10805                    throw new Error("Error parsing function args, zero tokens for arg");
10806                }
10807                args.push(arg);
10808                arg = [];
10809                return;
10810            }
10811            if (token.type !== 31 /* WHITESPACE_TOKEN */) {
10812                arg.push(token);
10813            }
10814        });
10815        if (arg.length) {
10816            args.push(arg);
10817        }
10818        return args;
10819    };
10820    var isEndingTokenFor = function (token, type) {
10821        if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) {
10822            return true;
10823        }
10824        if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) {
10825            return true;
10826        }
10827        return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */;
10828    };
10829
10830    var isLength = function (token) {
10831        return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */;
10832    };
10833
10834    var isLengthPercentage = function (token) {
10835        return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);
10836    };
10837    var parseLengthPercentageTuple = function (tokens) {
10838        return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];
10839    };
10840    var ZERO_LENGTH = {
10841        type: 17 /* NUMBER_TOKEN */,
10842        number: 0,
10843        flags: FLAG_INTEGER
10844    };
10845    var FIFTY_PERCENT = {
10846        type: 16 /* PERCENTAGE_TOKEN */,
10847        number: 50,
10848        flags: FLAG_INTEGER
10849    };
10850    var HUNDRED_PERCENT = {
10851        type: 16 /* PERCENTAGE_TOKEN */,
10852        number: 100,
10853        flags: FLAG_INTEGER
10854    };
10855    var getAbsoluteValueForTuple = function (tuple, width, height) {
10856        var x = tuple[0], y = tuple[1];
10857        return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];
10858    };
10859    var getAbsoluteValue = function (token, parent) {
10860        if (token.type === 16 /* PERCENTAGE_TOKEN */) {
10861            return (token.number / 100) * parent;
10862        }
10863        if (isDimensionToken(token)) {
10864            switch (token.unit) {
10865                case 'rem':
10866                case 'em':
10867                    return 16 * token.number; // TODO use correct font-size
10868                case 'px':
10869                default:
10870                    return token.number;
10871            }
10872        }
10873        return token.number;
10874    };
10875
10876    var DEG = 'deg';
10877    var GRAD = 'grad';
10878    var RAD = 'rad';
10879    var TURN = 'turn';
10880    var angle = {
10881        name: 'angle',
10882        parse: function (_context, value) {
10883            if (value.type === 15 /* DIMENSION_TOKEN */) {
10884                switch (value.unit) {
10885                    case DEG:
10886                        return (Math.PI * value.number) / 180;
10887                    case GRAD:
10888                        return (Math.PI / 200) * value.number;
10889                    case RAD:
10890                        return value.number;
10891                    case TURN:
10892                        return Math.PI * 2 * value.number;
10893                }
10894            }
10895            throw new Error("Unsupported angle type");
10896        }
10897    };
10898    var isAngle = function (value) {
10899        if (value.type === 15 /* DIMENSION_TOKEN */) {
10900            if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {
10901                return true;
10902            }
10903        }
10904        return false;
10905    };
10906    var parseNamedSide = function (tokens) {
10907        var sideOrCorner = tokens
10908            .filter(isIdentToken)
10909            .map(function (ident) { return ident.value; })
10910            .join(' ');
10911        switch (sideOrCorner) {
10912            case 'to bottom right':
10913            case 'to right bottom':
10914            case 'left top':
10915            case 'top left':
10916                return [ZERO_LENGTH, ZERO_LENGTH];
10917            case 'to top':
10918            case 'bottom':
10919                return deg(0);
10920            case 'to bottom left':
10921            case 'to left bottom':
10922            case 'right top':
10923            case 'top right':
10924                return [ZERO_LENGTH, HUNDRED_PERCENT];
10925            case 'to right':
10926            case 'left':
10927                return deg(90);
10928            case 'to top left':
10929            case 'to left top':
10930            case 'right bottom':
10931            case 'bottom right':
10932                return [HUNDRED_PERCENT, HUNDRED_PERCENT];
10933            case 'to bottom':
10934            case 'top':
10935                return deg(180);
10936            case 'to top right':
10937            case 'to right top':
10938            case 'left bottom':
10939            case 'bottom left':
10940                return [HUNDRED_PERCENT, ZERO_LENGTH];
10941            case 'to left':
10942            case 'right':
10943                return deg(270);
10944        }
10945        return 0;
10946    };
10947    var deg = function (deg) { return (Math.PI * deg) / 180; };
10948
10949    var color$1 = {
10950        name: 'color',
10951        parse: function (context, value) {
10952            if (value.type === 18 /* FUNCTION */) {
10953                var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];
10954                if (typeof colorFunction === 'undefined') {
10955                    throw new Error("Attempting to parse an unsupported color function \"" + value.name + "\"");
10956                }
10957                return colorFunction(context, value.values);
10958            }
10959            if (value.type === 5 /* HASH_TOKEN */) {
10960                if (value.value.length === 3) {
10961                    var r = value.value.substring(0, 1);
10962                    var g = value.value.substring(1, 2);
10963                    var b = value.value.substring(2, 3);
10964                    return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);
10965                }
10966                if (value.value.length === 4) {
10967                    var r = value.value.substring(0, 1);
10968                    var g = value.value.substring(1, 2);
10969                    var b = value.value.substring(2, 3);
10970                    var a = value.value.substring(3, 4);
10971                    return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);
10972                }
10973                if (value.value.length === 6) {
10974                    var r = value.value.substring(0, 2);
10975                    var g = value.value.substring(2, 4);
10976                    var b = value.value.substring(4, 6);
10977                    return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);
10978                }
10979                if (value.value.length === 8) {
10980                    var r = value.value.substring(0, 2);
10981                    var g = value.value.substring(2, 4);
10982                    var b = value.value.substring(4, 6);
10983                    var a = value.value.substring(6, 8);
10984                    return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);
10985                }
10986            }
10987            if (value.type === 20 /* IDENT_TOKEN */) {
10988                var namedColor = COLORS[value.value.toUpperCase()];
10989                if (typeof namedColor !== 'undefined') {
10990                    return namedColor;
10991                }
10992            }
10993            return COLORS.TRANSPARENT;
10994        }
10995    };
10996    var isTransparent = function (color) { return (0xff & color) === 0; };
10997    var asString = function (color) {
10998        var alpha = 0xff & color;
10999        var blue = 0xff & (color >> 8);
11000        var green = 0xff & (color >> 16);
11001        var red = 0xff & (color >> 24);
11002        return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")";
11003    };
11004    var pack = function (r, g, b, a) {
11005        return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;
11006    };
11007    var getTokenColorValue = function (token, i) {
11008        if (token.type === 17 /* NUMBER_TOKEN */) {
11009            return token.number;
11010        }
11011        if (token.type === 16 /* PERCENTAGE_TOKEN */) {
11012            var max = i === 3 ? 1 : 255;
11013            return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);
11014        }
11015        return 0;
11016    };
11017    var rgb = function (_context, args) {
11018        var tokens = args.filter(nonFunctionArgSeparator);
11019        if (tokens.length === 3) {
11020            var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];
11021            return pack(r, g, b, 1);
11022        }
11023        if (tokens.length === 4) {
11024            var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];
11025            return pack(r, g, b, a);
11026        }
11027        return 0;
11028    };
11029    function hue2rgb(t1, t2, hue) {
11030        if (hue < 0) {
11031            hue += 1;
11032        }
11033        if (hue >= 1) {
11034            hue -= 1;
11035        }
11036        if (hue < 1 / 6) {
11037            return (t2 - t1) * hue * 6 + t1;
11038        }
11039        else if (hue < 1 / 2) {
11040            return t2;
11041        }
11042        else if (hue < 2 / 3) {
11043            return (t2 - t1) * 6 * (2 / 3 - hue) + t1;
11044        }
11045        else {
11046            return t1;
11047        }
11048    }
11049    var hsl = function (context, args) {
11050        var tokens = args.filter(nonFunctionArgSeparator);
11051        var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];
11052        var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);
11053        var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;
11054        var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;
11055        var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;
11056        if (s === 0) {
11057            return pack(l * 255, l * 255, l * 255, 1);
11058        }
11059        var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
11060        var t1 = l * 2 - t2;
11061        var r = hue2rgb(t1, t2, h + 1 / 3);
11062        var g = hue2rgb(t1, t2, h);
11063        var b = hue2rgb(t1, t2, h - 1 / 3);
11064        return pack(r * 255, g * 255, b * 255, a);
11065    };
11066    var SUPPORTED_COLOR_FUNCTIONS = {
11067        hsl: hsl,
11068        hsla: hsl,
11069        rgb: rgb,
11070        rgba: rgb
11071    };
11072    var parseColor = function (context, value) {
11073        return color$1.parse(context, Parser.create(value).parseComponentValue());
11074    };
11075    var COLORS = {
11076        ALICEBLUE: 0xf0f8ffff,
11077        ANTIQUEWHITE: 0xfaebd7ff,
11078        AQUA: 0x00ffffff,
11079        AQUAMARINE: 0x7fffd4ff,
11080        AZURE: 0xf0ffffff,
11081        BEIGE: 0xf5f5dcff,
11082        BISQUE: 0xffe4c4ff,
11083        BLACK: 0x000000ff,
11084        BLANCHEDALMOND: 0xffebcdff,
11085        BLUE: 0x0000ffff,
11086        BLUEVIOLET: 0x8a2be2ff,
11087        BROWN: 0xa52a2aff,
11088        BURLYWOOD: 0xdeb887ff,
11089        CADETBLUE: 0x5f9ea0ff,
11090        CHARTREUSE: 0x7fff00ff,
11091        CHOCOLATE: 0xd2691eff,
11092        CORAL: 0xff7f50ff,
11093        CORNFLOWERBLUE: 0x6495edff,
11094        CORNSILK: 0xfff8dcff,
11095        CRIMSON: 0xdc143cff,
11096        CYAN: 0x00ffffff,
11097        DARKBLUE: 0x00008bff,
11098        DARKCYAN: 0x008b8bff,
11099        DARKGOLDENROD: 0xb886bbff,
11100        DARKGRAY: 0xa9a9a9ff,
11101        DARKGREEN: 0x006400ff,
11102        DARKGREY: 0xa9a9a9ff,
11103        DARKKHAKI: 0xbdb76bff,
11104        DARKMAGENTA: 0x8b008bff,
11105        DARKOLIVEGREEN: 0x556b2fff,
11106        DARKORANGE: 0xff8c00ff,
11107        DARKORCHID: 0x9932ccff,
11108        DARKRED: 0x8b0000ff,
11109        DARKSALMON: 0xe9967aff,
11110        DARKSEAGREEN: 0x8fbc8fff,
11111        DARKSLATEBLUE: 0x483d8bff,
11112        DARKSLATEGRAY: 0x2f4f4fff,
11113        DARKSLATEGREY: 0x2f4f4fff,
11114        DARKTURQUOISE: 0x00ced1ff,
11115        DARKVIOLET: 0x9400d3ff,
11116        DEEPPINK: 0xff1493ff,
11117        DEEPSKYBLUE: 0x00bfffff,
11118        DIMGRAY: 0x696969ff,
11119        DIMGREY: 0x696969ff,
11120        DODGERBLUE: 0x1e90ffff,
11121        FIREBRICK: 0xb22222ff,
11122        FLORALWHITE: 0xfffaf0ff,
11123        FORESTGREEN: 0x228b22ff,
11124        FUCHSIA: 0xff00ffff,
11125        GAINSBORO: 0xdcdcdcff,
11126        GHOSTWHITE: 0xf8f8ffff,
11127        GOLD: 0xffd700ff,
11128        GOLDENROD: 0xdaa520ff,
11129        GRAY: 0x808080ff,
11130        GREEN: 0x008000ff,
11131        GREENYELLOW: 0xadff2fff,
11132        GREY: 0x808080ff,
11133        HONEYDEW: 0xf0fff0ff,
11134        HOTPINK: 0xff69b4ff,
11135        INDIANRED: 0xcd5c5cff,
11136        INDIGO: 0x4b0082ff,
11137        IVORY: 0xfffff0ff,
11138        KHAKI: 0xf0e68cff,
11139        LAVENDER: 0xe6e6faff,
11140        LAVENDERBLUSH: 0xfff0f5ff,
11141        LAWNGREEN: 0x7cfc00ff,
11142        LEMONCHIFFON: 0xfffacdff,
11143        LIGHTBLUE: 0xadd8e6ff,
11144        LIGHTCORAL: 0xf08080ff,
11145        LIGHTCYAN: 0xe0ffffff,
11146        LIGHTGOLDENRODYELLOW: 0xfafad2ff,
11147        LIGHTGRAY: 0xd3d3d3ff,
11148        LIGHTGREEN: 0x90ee90ff,
11149        LIGHTGREY: 0xd3d3d3ff,
11150        LIGHTPINK: 0xffb6c1ff,
11151        LIGHTSALMON: 0xffa07aff,
11152        LIGHTSEAGREEN: 0x20b2aaff,
11153        LIGHTSKYBLUE: 0x87cefaff,
11154        LIGHTSLATEGRAY: 0x778899ff,
11155        LIGHTSLATEGREY: 0x778899ff,
11156        LIGHTSTEELBLUE: 0xb0c4deff,
11157        LIGHTYELLOW: 0xffffe0ff,
11158        LIME: 0x00ff00ff,
11159        LIMEGREEN: 0x32cd32ff,
11160        LINEN: 0xfaf0e6ff,
11161        MAGENTA: 0xff00ffff,
11162        MAROON: 0x800000ff,
11163        MEDIUMAQUAMARINE: 0x66cdaaff,
11164        MEDIUMBLUE: 0x0000cdff,
11165        MEDIUMORCHID: 0xba55d3ff,
11166        MEDIUMPURPLE: 0x9370dbff,
11167        MEDIUMSEAGREEN: 0x3cb371ff,
11168        MEDIUMSLATEBLUE: 0x7b68eeff,
11169        MEDIUMSPRINGGREEN: 0x00fa9aff,
11170        MEDIUMTURQUOISE: 0x48d1ccff,
11171        MEDIUMVIOLETRED: 0xc71585ff,
11172        MIDNIGHTBLUE: 0x191970ff,
11173        MINTCREAM: 0xf5fffaff,
11174        MISTYROSE: 0xffe4e1ff,
11175        MOCCASIN: 0xffe4b5ff,
11176        NAVAJOWHITE: 0xffdeadff,
11177        NAVY: 0x000080ff,
11178        OLDLACE: 0xfdf5e6ff,
11179        OLIVE: 0x808000ff,
11180        OLIVEDRAB: 0x6b8e23ff,
11181        ORANGE: 0xffa500ff,
11182        ORANGERED: 0xff4500ff,
11183        ORCHID: 0xda70d6ff,
11184        PALEGOLDENROD: 0xeee8aaff,
11185        PALEGREEN: 0x98fb98ff,
11186        PALETURQUOISE: 0xafeeeeff,
11187        PALEVIOLETRED: 0xdb7093ff,
11188        PAPAYAWHIP: 0xffefd5ff,
11189        PEACHPUFF: 0xffdab9ff,
11190        PERU: 0xcd853fff,
11191        PINK: 0xffc0cbff,
11192        PLUM: 0xdda0ddff,
11193        POWDERBLUE: 0xb0e0e6ff,
11194        PURPLE: 0x800080ff,
11195        REBECCAPURPLE: 0x663399ff,
11196        RED: 0xff0000ff,
11197        ROSYBROWN: 0xbc8f8fff,
11198        ROYALBLUE: 0x4169e1ff,
11199        SADDLEBROWN: 0x8b4513ff,
11200        SALMON: 0xfa8072ff,
11201        SANDYBROWN: 0xf4a460ff,
11202        SEAGREEN: 0x2e8b57ff,
11203        SEASHELL: 0xfff5eeff,
11204        SIENNA: 0xa0522dff,
11205        SILVER: 0xc0c0c0ff,
11206        SKYBLUE: 0x87ceebff,
11207        SLATEBLUE: 0x6a5acdff,
11208        SLATEGRAY: 0x708090ff,
11209        SLATEGREY: 0x708090ff,
11210        SNOW: 0xfffafaff,
11211        SPRINGGREEN: 0x00ff7fff,
11212        STEELBLUE: 0x4682b4ff,
11213        TAN: 0xd2b48cff,
11214        TEAL: 0x008080ff,
11215        THISTLE: 0xd8bfd8ff,
11216        TOMATO: 0xff6347ff,
11217        TRANSPARENT: 0x00000000,
11218        TURQUOISE: 0x40e0d0ff,
11219        VIOLET: 0xee82eeff,
11220        WHEAT: 0xf5deb3ff,
11221        WHITE: 0xffffffff,
11222        WHITESMOKE: 0xf5f5f5ff,
11223        YELLOW: 0xffff00ff,
11224        YELLOWGREEN: 0x9acd32ff
11225    };
11226
11227    var backgroundClip = {
11228        name: 'background-clip',
11229        initialValue: 'border-box',
11230        prefix: false,
11231        type: 1 /* LIST */,
11232        parse: function (_context, tokens) {
11233            return tokens.map(function (token) {
11234                if (isIdentToken(token)) {
11235                    switch (token.value) {
11236                        case 'padding-box':
11237                            return 1 /* PADDING_BOX */;
11238                        case 'content-box':
11239                            return 2 /* CONTENT_BOX */;
11240                    }
11241                }
11242                return 0 /* BORDER_BOX */;
11243            });
11244        }
11245    };
11246
11247    var backgroundColor = {
11248        name: "background-color",
11249        initialValue: 'transparent',
11250        prefix: false,
11251        type: 3 /* TYPE_VALUE */,
11252        format: 'color'
11253    };
11254
11255    var parseColorStop = function (context, args) {
11256        var color = color$1.parse(context, args[0]);
11257        var stop = args[1];
11258        return stop && isLengthPercentage(stop) ? { color: color, stop: stop } : { color: color, stop: null };
11259    };
11260    var processColorStops = function (stops, lineLength) {
11261        var first = stops[0];
11262        var last = stops[stops.length - 1];
11263        if (first.stop === null) {
11264            first.stop = ZERO_LENGTH;
11265        }
11266        if (last.stop === null) {
11267            last.stop = HUNDRED_PERCENT;
11268        }
11269        var processStops = [];
11270        var previous = 0;
11271        for (var i = 0; i < stops.length; i++) {
11272            var stop_1 = stops[i].stop;
11273            if (stop_1 !== null) {
11274                var absoluteValue = getAbsoluteValue(stop_1, lineLength);
11275                if (absoluteValue > previous) {
11276                    processStops.push(absoluteValue);
11277                }
11278                else {
11279                    processStops.push(previous);
11280                }
11281                previous = absoluteValue;
11282            }
11283            else {
11284                processStops.push(null);
11285            }
11286        }
11287        var gapBegin = null;
11288        for (var i = 0; i < processStops.length; i++) {
11289            var stop_2 = processStops[i];
11290            if (stop_2 === null) {
11291                if (gapBegin === null) {
11292                    gapBegin = i;
11293                }
11294            }
11295            else if (gapBegin !== null) {
11296                var gapLength = i - gapBegin;
11297                var beforeGap = processStops[gapBegin - 1];
11298                var gapValue = (stop_2 - beforeGap) / (gapLength + 1);
11299                for (var g = 1; g <= gapLength; g++) {
11300                    processStops[gapBegin + g - 1] = gapValue * g;
11301                }
11302                gapBegin = null;
11303            }
11304        }
11305        return stops.map(function (_a, i) {
11306            var color = _a.color;
11307            return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };
11308        });
11309    };
11310    var getAngleFromCorner = function (corner, width, height) {
11311        var centerX = width / 2;
11312        var centerY = height / 2;
11313        var x = getAbsoluteValue(corner[0], width) - centerX;
11314        var y = centerY - getAbsoluteValue(corner[1], height);
11315        return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);
11316    };
11317    var calculateGradientDirection = function (angle, width, height) {
11318        var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);
11319        var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));
11320        var halfWidth = width / 2;
11321        var halfHeight = height / 2;
11322        var halfLineLength = lineLength / 2;
11323        var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;
11324        var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;
11325        return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];
11326    };
11327    var distance = function (a, b) { return Math.sqrt(a * a + b * b); };
11328    var findCorner = function (width, height, x, y, closest) {
11329        var corners = [
11330            [0, 0],
11331            [0, height],
11332            [width, 0],
11333            [width, height]
11334        ];
11335        return corners.reduce(function (stat, corner) {
11336            var cx = corner[0], cy = corner[1];
11337            var d = distance(x - cx, y - cy);
11338            if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {
11339                return {
11340                    optimumCorner: corner,
11341                    optimumDistance: d
11342                };
11343            }
11344            return stat;
11345        }, {
11346            optimumDistance: closest ? Infinity : -Infinity,
11347            optimumCorner: null
11348        }).optimumCorner;
11349    };
11350    var calculateRadius = function (gradient, x, y, width, height) {
11351        var rx = 0;
11352        var ry = 0;
11353        switch (gradient.size) {
11354            case 0 /* CLOSEST_SIDE */:
11355                // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.
11356                // If the shape is an ellipse, it exactly meets the closest side in each dimension.
11357                if (gradient.shape === 0 /* CIRCLE */) {
11358                    rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
11359                }
11360                else if (gradient.shape === 1 /* ELLIPSE */) {
11361                    rx = Math.min(Math.abs(x), Math.abs(x - width));
11362                    ry = Math.min(Math.abs(y), Math.abs(y - height));
11363                }
11364                break;
11365            case 2 /* CLOSEST_CORNER */:
11366                // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.
11367                // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.
11368                if (gradient.shape === 0 /* CIRCLE */) {
11369                    rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
11370                }
11371                else if (gradient.shape === 1 /* ELLIPSE */) {
11372                    // Compute the ratio ry/rx (which is to be the same as for "closest-side")
11373                    var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));
11374                    var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];
11375                    rx = distance(cx - x, (cy - y) / c);
11376                    ry = c * rx;
11377                }
11378                break;
11379            case 1 /* FARTHEST_SIDE */:
11380                // Same as closest-side, except the ending shape is sized based on the farthest side(s)
11381                if (gradient.shape === 0 /* CIRCLE */) {
11382                    rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
11383                }
11384                else if (gradient.shape === 1 /* ELLIPSE */) {
11385                    rx = Math.max(Math.abs(x), Math.abs(x - width));
11386                    ry = Math.max(Math.abs(y), Math.abs(y - height));
11387                }
11388                break;
11389            case 3 /* FARTHEST_CORNER */:
11390                // Same as closest-corner, except the ending shape is sized based on the farthest corner.
11391                // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.
11392                if (gradient.shape === 0 /* CIRCLE */) {
11393                    rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
11394                }
11395                else if (gradient.shape === 1 /* ELLIPSE */) {
11396                    // Compute the ratio ry/rx (which is to be the same as for "farthest-side")
11397                    var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));
11398                    var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];
11399                    rx = distance(cx - x, (cy - y) / c);
11400                    ry = c * rx;
11401                }
11402                break;
11403        }
11404        if (Array.isArray(gradient.size)) {
11405            rx = getAbsoluteValue(gradient.size[0], width);
11406            ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;
11407        }
11408        return [rx, ry];
11409    };
11410
11411    var linearGradient = function (context, tokens) {
11412        var angle$1 = deg(180);
11413        var stops = [];
11414        parseFunctionArgs(tokens).forEach(function (arg, i) {
11415            if (i === 0) {
11416                var firstToken = arg[0];
11417                if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') {
11418                    angle$1 = parseNamedSide(arg);
11419                    return;
11420                }
11421                else if (isAngle(firstToken)) {
11422                    angle$1 = angle.parse(context, firstToken);
11423                    return;
11424                }
11425            }
11426            var colorStop = parseColorStop(context, arg);
11427            stops.push(colorStop);
11428        });
11429        return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ };
11430    };
11431
11432    var prefixLinearGradient = function (context, tokens) {
11433        var angle$1 = deg(180);
11434        var stops = [];
11435        parseFunctionArgs(tokens).forEach(function (arg, i) {
11436            if (i === 0) {
11437                var firstToken = arg[0];
11438                if (firstToken.type === 20 /* IDENT_TOKEN */ &&
11439                    ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {
11440                    angle$1 = parseNamedSide(arg);
11441                    return;
11442                }
11443                else if (isAngle(firstToken)) {
11444                    angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);
11445                    return;
11446                }
11447            }
11448            var colorStop = parseColorStop(context, arg);
11449            stops.push(colorStop);
11450        });
11451        return {
11452            angle: angle$1,
11453            stops: stops,
11454            type: 1 /* LINEAR_GRADIENT */
11455        };
11456    };
11457
11458    var webkitGradient = function (context, tokens) {
11459        var angle = deg(180);
11460        var stops = [];
11461        var type = 1 /* LINEAR_GRADIENT */;
11462        var shape = 0 /* CIRCLE */;
11463        var size = 3 /* FARTHEST_CORNER */;
11464        var position = [];
11465        parseFunctionArgs(tokens).forEach(function (arg, i) {
11466            var firstToken = arg[0];
11467            if (i === 0) {
11468                if (isIdentToken(firstToken) && firstToken.value === 'linear') {
11469                    type = 1 /* LINEAR_GRADIENT */;
11470                    return;
11471                }
11472                else if (isIdentToken(firstToken) && firstToken.value === 'radial') {
11473                    type = 2 /* RADIAL_GRADIENT */;
11474                    return;
11475                }
11476            }
11477            if (firstToken.type === 18 /* FUNCTION */) {
11478                if (firstToken.name === 'from') {
11479                    var color = color$1.parse(context, firstToken.values[0]);
11480                    stops.push({ stop: ZERO_LENGTH, color: color });
11481                }
11482                else if (firstToken.name === 'to') {
11483                    var color = color$1.parse(context, firstToken.values[0]);
11484                    stops.push({ stop: HUNDRED_PERCENT, color: color });
11485                }
11486                else if (firstToken.name === 'color-stop') {
11487                    var values = firstToken.values.filter(nonFunctionArgSeparator);
11488                    if (values.length === 2) {
11489                        var color = color$1.parse(context, values[1]);
11490                        var stop_1 = values[0];
11491                        if (isNumberToken(stop_1)) {
11492                            stops.push({
11493                                stop: { type: 16 /* PERCENTAGE_TOKEN */, number: stop_1.number * 100, flags: stop_1.flags },
11494                                color: color
11495                            });
11496                        }
11497                    }
11498                }
11499            }
11500        });
11501        return type === 1 /* LINEAR_GRADIENT */
11502            ? {
11503                angle: (angle + deg(180)) % deg(360),
11504                stops: stops,
11505                type: type
11506            }
11507            : { size: size, shape: shape, stops: stops, position: position, type: type };
11508    };
11509
11510    var CLOSEST_SIDE = 'closest-side';
11511    var FARTHEST_SIDE = 'farthest-side';
11512    var CLOSEST_CORNER = 'closest-corner';
11513    var FARTHEST_CORNER = 'farthest-corner';
11514    var CIRCLE = 'circle';
11515    var ELLIPSE = 'ellipse';
11516    var COVER = 'cover';
11517    var CONTAIN = 'contain';
11518    var radialGradient = function (context, tokens) {
11519        var shape = 0 /* CIRCLE */;
11520        var size = 3 /* FARTHEST_CORNER */;
11521        var stops = [];
11522        var position = [];
11523        parseFunctionArgs(tokens).forEach(function (arg, i) {
11524            var isColorStop = true;
11525            if (i === 0) {
11526                var isAtPosition_1 = false;
11527                isColorStop = arg.reduce(function (acc, token) {
11528                    if (isAtPosition_1) {
11529                        if (isIdentToken(token)) {
11530                            switch (token.value) {
11531                                case 'center':
11532                                    position.push(FIFTY_PERCENT);
11533                                    return acc;
11534                                case 'top':
11535                                case 'left':
11536                                    position.push(ZERO_LENGTH);
11537                                    return acc;
11538                                case 'right':
11539                                case 'bottom':
11540                                    position.push(HUNDRED_PERCENT);
11541                                    return acc;
11542                            }
11543                        }
11544                        else if (isLengthPercentage(token) || isLength(token)) {
11545                            position.push(token);
11546                        }
11547                    }
11548                    else if (isIdentToken(token)) {
11549                        switch (token.value) {
11550                            case CIRCLE:
11551                                shape = 0 /* CIRCLE */;
11552                                return false;
11553                            case ELLIPSE:
11554                                shape = 1 /* ELLIPSE */;
11555                                return false;
11556                            case 'at':
11557                                isAtPosition_1 = true;
11558                                return false;
11559                            case CLOSEST_SIDE:
11560                                size = 0 /* CLOSEST_SIDE */;
11561                                return false;
11562                            case COVER:
11563                            case FARTHEST_SIDE:
11564                                size = 1 /* FARTHEST_SIDE */;
11565                                return false;
11566                            case CONTAIN:
11567                            case CLOSEST_CORNER:
11568                                size = 2 /* CLOSEST_CORNER */;
11569                                return false;
11570                            case FARTHEST_CORNER:
11571                                size = 3 /* FARTHEST_CORNER */;
11572                                return false;
11573                        }
11574                    }
11575                    else if (isLength(token) || isLengthPercentage(token)) {
11576                        if (!Array.isArray(size)) {
11577                            size = [];
11578                        }
11579                        size.push(token);
11580                        return false;
11581                    }
11582                    return acc;
11583                }, isColorStop);
11584            }
11585            if (isColorStop) {
11586                var colorStop = parseColorStop(context, arg);
11587                stops.push(colorStop);
11588            }
11589        });
11590        return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };
11591    };
11592
11593    var prefixRadialGradient = function (context, tokens) {
11594        var shape = 0 /* CIRCLE */;
11595        var size = 3 /* FARTHEST_CORNER */;
11596        var stops = [];
11597        var position = [];
11598        parseFunctionArgs(tokens).forEach(function (arg, i) {
11599            var isColorStop = true;
11600            if (i === 0) {
11601                isColorStop = arg.reduce(function (acc, token) {
11602                    if (isIdentToken(token)) {
11603                        switch (token.value) {
11604                            case 'center':
11605                                position.push(FIFTY_PERCENT);
11606                                return false;
11607                            case 'top':
11608                            case 'left':
11609                                position.push(ZERO_LENGTH);
11610                                return false;
11611                            case 'right':
11612                            case 'bottom':
11613                                position.push(HUNDRED_PERCENT);
11614                                return false;
11615                        }
11616                    }
11617                    else if (isLengthPercentage(token) || isLength(token)) {
11618                        position.push(token);
11619                        return false;
11620                    }
11621                    return acc;
11622                }, isColorStop);
11623            }
11624            else if (i === 1) {
11625                isColorStop = arg.reduce(function (acc, token) {
11626                    if (isIdentToken(token)) {
11627                        switch (token.value) {
11628                            case CIRCLE:
11629                                shape = 0 /* CIRCLE */;
11630                                return false;
11631                            case ELLIPSE:
11632                                shape = 1 /* ELLIPSE */;
11633                                return false;
11634                            case CONTAIN:
11635                            case CLOSEST_SIDE:
11636                                size = 0 /* CLOSEST_SIDE */;
11637                                return false;
11638                            case FARTHEST_SIDE:
11639                                size = 1 /* FARTHEST_SIDE */;
11640                                return false;
11641                            case CLOSEST_CORNER:
11642                                size = 2 /* CLOSEST_CORNER */;
11643                                return false;
11644                            case COVER:
11645                            case FARTHEST_CORNER:
11646                                size = 3 /* FARTHEST_CORNER */;
11647                                return false;
11648                        }
11649                    }
11650                    else if (isLength(token) || isLengthPercentage(token)) {
11651                        if (!Array.isArray(size)) {
11652                            size = [];
11653                        }
11654                        size.push(token);
11655                        return false;
11656                    }
11657                    return acc;
11658                }, isColorStop);
11659            }
11660            if (isColorStop) {
11661                var colorStop = parseColorStop(context, arg);
11662                stops.push(colorStop);
11663            }
11664        });
11665        return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };
11666    };
11667
11668    var isLinearGradient = function (background) {
11669        return background.type === 1 /* LINEAR_GRADIENT */;
11670    };
11671    var isRadialGradient = function (background) {
11672        return background.type === 2 /* RADIAL_GRADIENT */;
11673    };
11674    var image = {
11675        name: 'image',
11676        parse: function (context, value) {
11677            if (value.type === 22 /* URL_TOKEN */) {
11678                var image_1 = { url: value.value, type: 0 /* URL */ };
11679                context.cache.addImage(value.value);
11680                return image_1;
11681            }
11682            if (value.type === 18 /* FUNCTION */) {
11683                var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];
11684                if (typeof imageFunction === 'undefined') {
11685                    throw new Error("Attempting to parse an unsupported image function \"" + value.name + "\"");
11686                }
11687                return imageFunction(context, value.values);
11688            }
11689            throw new Error("Unsupported image type " + value.type);
11690        }
11691    };
11692    function isSupportedImage(value) {
11693        return (!(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') &&
11694            (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]));
11695    }
11696    var SUPPORTED_IMAGE_FUNCTIONS = {
11697        'linear-gradient': linearGradient,
11698        '-moz-linear-gradient': prefixLinearGradient,
11699        '-ms-linear-gradient': prefixLinearGradient,
11700        '-o-linear-gradient': prefixLinearGradient,
11701        '-webkit-linear-gradient': prefixLinearGradient,
11702        'radial-gradient': radialGradient,
11703        '-moz-radial-gradient': prefixRadialGradient,
11704        '-ms-radial-gradient': prefixRadialGradient,
11705        '-o-radial-gradient': prefixRadialGradient,
11706        '-webkit-radial-gradient': prefixRadialGradient,
11707        '-webkit-gradient': webkitGradient
11708    };
11709
11710    var backgroundImage = {
11711        name: 'background-image',
11712        initialValue: 'none',
11713        type: 1 /* LIST */,
11714        prefix: false,
11715        parse: function (context, tokens) {
11716            if (tokens.length === 0) {
11717                return [];
11718            }
11719            var first = tokens[0];
11720            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {
11721                return [];
11722            }
11723            return tokens
11724                .filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); })
11725                .map(function (value) { return image.parse(context, value); });
11726        }
11727    };
11728
11729    var backgroundOrigin = {
11730        name: 'background-origin',
11731        initialValue: 'border-box',
11732        prefix: false,
11733        type: 1 /* LIST */,
11734        parse: function (_context, tokens) {
11735            return tokens.map(function (token) {
11736                if (isIdentToken(token)) {
11737                    switch (token.value) {
11738                        case 'padding-box':
11739                            return 1 /* PADDING_BOX */;
11740                        case 'content-box':
11741                            return 2 /* CONTENT_BOX */;
11742                    }
11743                }
11744                return 0 /* BORDER_BOX */;
11745            });
11746        }
11747    };
11748
11749    var backgroundPosition = {
11750        name: 'background-position',
11751        initialValue: '0% 0%',
11752        type: 1 /* LIST */,
11753        prefix: false,
11754        parse: function (_context, tokens) {
11755            return parseFunctionArgs(tokens)
11756                .map(function (values) { return values.filter(isLengthPercentage); })
11757                .map(parseLengthPercentageTuple);
11758        }
11759    };
11760
11761    var backgroundRepeat = {
11762        name: 'background-repeat',
11763        initialValue: 'repeat',
11764        prefix: false,
11765        type: 1 /* LIST */,
11766        parse: function (_context, tokens) {
11767            return parseFunctionArgs(tokens)
11768                .map(function (values) {
11769                return values
11770                    .filter(isIdentToken)
11771                    .map(function (token) { return token.value; })
11772                    .join(' ');
11773            })
11774                .map(parseBackgroundRepeat);
11775        }
11776    };
11777    var parseBackgroundRepeat = function (value) {
11778        switch (value) {
11779            case 'no-repeat':
11780                return 1 /* NO_REPEAT */;
11781            case 'repeat-x':
11782            case 'repeat no-repeat':
11783                return 2 /* REPEAT_X */;
11784            case 'repeat-y':
11785            case 'no-repeat repeat':
11786                return 3 /* REPEAT_Y */;
11787            case 'repeat':
11788            default:
11789                return 0 /* REPEAT */;
11790        }
11791    };
11792
11793    var BACKGROUND_SIZE;
11794    (function (BACKGROUND_SIZE) {
11795        BACKGROUND_SIZE["AUTO"] = "auto";
11796        BACKGROUND_SIZE["CONTAIN"] = "contain";
11797        BACKGROUND_SIZE["COVER"] = "cover";
11798    })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));
11799    var backgroundSize = {
11800        name: 'background-size',
11801        initialValue: '0',
11802        prefix: false,
11803        type: 1 /* LIST */,
11804        parse: function (_context, tokens) {
11805            return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });
11806        }
11807    };
11808    var isBackgroundSizeInfoToken = function (value) {
11809        return isIdentToken(value) || isLengthPercentage(value);
11810    };
11811
11812    var borderColorForSide = function (side) { return ({
11813        name: "border-" + side + "-color",
11814        initialValue: 'transparent',
11815        prefix: false,
11816        type: 3 /* TYPE_VALUE */,
11817        format: 'color'
11818    }); };
11819    var borderTopColor = borderColorForSide('top');
11820    var borderRightColor = borderColorForSide('right');
11821    var borderBottomColor = borderColorForSide('bottom');
11822    var borderLeftColor = borderColorForSide('left');
11823
11824    var borderRadiusForSide = function (side) { return ({
11825        name: "border-radius-" + side,
11826        initialValue: '0 0',
11827        prefix: false,
11828        type: 1 /* LIST */,
11829        parse: function (_context, tokens) {
11830            return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));
11831        }
11832    }); };
11833    var borderTopLeftRadius = borderRadiusForSide('top-left');
11834    var borderTopRightRadius = borderRadiusForSide('top-right');
11835    var borderBottomRightRadius = borderRadiusForSide('bottom-right');
11836    var borderBottomLeftRadius = borderRadiusForSide('bottom-left');
11837
11838    var borderStyleForSide = function (side) { return ({
11839        name: "border-" + side + "-style",
11840        initialValue: 'solid',
11841        prefix: false,
11842        type: 2 /* IDENT_VALUE */,
11843        parse: function (_context, style) {
11844            switch (style) {
11845                case 'none':
11846                    return 0 /* NONE */;
11847                case 'dashed':
11848                    return 2 /* DASHED */;
11849                case 'dotted':
11850                    return 3 /* DOTTED */;
11851                case 'double':
11852                    return 4 /* DOUBLE */;
11853            }
11854            return 1 /* SOLID */;
11855        }
11856    }); };
11857    var borderTopStyle = borderStyleForSide('top');
11858    var borderRightStyle = borderStyleForSide('right');
11859    var borderBottomStyle = borderStyleForSide('bottom');
11860    var borderLeftStyle = borderStyleForSide('left');
11861
11862    var borderWidthForSide = function (side) { return ({
11863        name: "border-" + side + "-width",
11864        initialValue: '0',
11865        type: 0 /* VALUE */,
11866        prefix: false,
11867        parse: function (_context, token) {
11868            if (isDimensionToken(token)) {
11869                return token.number;
11870            }
11871            return 0;
11872        }
11873    }); };
11874    var borderTopWidth = borderWidthForSide('top');
11875    var borderRightWidth = borderWidthForSide('right');
11876    var borderBottomWidth = borderWidthForSide('bottom');
11877    var borderLeftWidth = borderWidthForSide('left');
11878
11879    var color = {
11880        name: "color",
11881        initialValue: 'transparent',
11882        prefix: false,
11883        type: 3 /* TYPE_VALUE */,
11884        format: 'color'
11885    };
11886
11887    var direction = {
11888        name: 'direction',
11889        initialValue: 'ltr',
11890        prefix: false,
11891        type: 2 /* IDENT_VALUE */,
11892        parse: function (_context, direction) {
11893            switch (direction) {
11894                case 'rtl':
11895                    return 1 /* RTL */;
11896                case 'ltr':
11897                default:
11898                    return 0 /* LTR */;
11899            }
11900        }
11901    };
11902
11903    var display = {
11904        name: 'display',
11905        initialValue: 'inline-block',
11906        prefix: false,
11907        type: 1 /* LIST */,
11908        parse: function (_context, tokens) {
11909            return tokens.filter(isIdentToken).reduce(function (bit, token) {
11910                return bit | parseDisplayValue(token.value);
11911            }, 0 /* NONE */);
11912        }
11913    };
11914    var parseDisplayValue = function (display) {
11915        switch (display) {
11916            case 'block':
11917            case '-webkit-box':
11918                return 2 /* BLOCK */;
11919            case 'inline':
11920                return 4 /* INLINE */;
11921            case 'run-in':
11922                return 8 /* RUN_IN */;
11923            case 'flow':
11924                return 16 /* FLOW */;
11925            case 'flow-root':
11926                return 32 /* FLOW_ROOT */;
11927            case 'table':
11928                return 64 /* TABLE */;
11929            case 'flex':
11930            case '-webkit-flex':
11931                return 128 /* FLEX */;
11932            case 'grid':
11933            case '-ms-grid':
11934                return 256 /* GRID */;
11935            case 'ruby':
11936                return 512 /* RUBY */;
11937            case 'subgrid':
11938                return 1024 /* SUBGRID */;
11939            case 'list-item':
11940                return 2048 /* LIST_ITEM */;
11941            case 'table-row-group':
11942                return 4096 /* TABLE_ROW_GROUP */;
11943            case 'table-header-group':
11944                return 8192 /* TABLE_HEADER_GROUP */;
11945            case 'table-footer-group':
11946                return 16384 /* TABLE_FOOTER_GROUP */;
11947            case 'table-row':
11948                return 32768 /* TABLE_ROW */;
11949            case 'table-cell':
11950                return 65536 /* TABLE_CELL */;
11951            case 'table-column-group':
11952                return 131072 /* TABLE_COLUMN_GROUP */;
11953            case 'table-column':
11954                return 262144 /* TABLE_COLUMN */;
11955            case 'table-caption':
11956                return 524288 /* TABLE_CAPTION */;
11957            case 'ruby-base':
11958                return 1048576 /* RUBY_BASE */;
11959            case 'ruby-text':
11960                return 2097152 /* RUBY_TEXT */;
11961            case 'ruby-base-container':
11962                return 4194304 /* RUBY_BASE_CONTAINER */;
11963            case 'ruby-text-container':
11964                return 8388608 /* RUBY_TEXT_CONTAINER */;
11965            case 'contents':
11966                return 16777216 /* CONTENTS */;
11967            case 'inline-block':
11968                return 33554432 /* INLINE_BLOCK */;
11969            case 'inline-list-item':
11970                return 67108864 /* INLINE_LIST_ITEM */;
11971            case 'inline-table':
11972                return 134217728 /* INLINE_TABLE */;
11973            case 'inline-flex':
11974                return 268435456 /* INLINE_FLEX */;
11975            case 'inline-grid':
11976                return 536870912 /* INLINE_GRID */;
11977        }
11978        return 0 /* NONE */;
11979    };
11980
11981    var float = {
11982        name: 'float',
11983        initialValue: 'none',
11984        prefix: false,
11985        type: 2 /* IDENT_VALUE */,
11986        parse: function (_context, float) {
11987            switch (float) {
11988                case 'left':
11989                    return 1 /* LEFT */;
11990                case 'right':
11991                    return 2 /* RIGHT */;
11992                case 'inline-start':
11993                    return 3 /* INLINE_START */;
11994                case 'inline-end':
11995                    return 4 /* INLINE_END */;
11996            }
11997            return 0 /* NONE */;
11998        }
11999    };
12000
12001    var letterSpacing = {
12002        name: 'letter-spacing',
12003        initialValue: '0',
12004        prefix: false,
12005        type: 0 /* VALUE */,
12006        parse: function (_context, token) {
12007            if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') {
12008                return 0;
12009            }
12010            if (token.type === 17 /* NUMBER_TOKEN */) {
12011                return token.number;
12012            }
12013            if (token.type === 15 /* DIMENSION_TOKEN */) {
12014                return token.number;
12015            }
12016            return 0;
12017        }
12018    };
12019
12020    var LINE_BREAK;
12021    (function (LINE_BREAK) {
12022        LINE_BREAK["NORMAL"] = "normal";
12023        LINE_BREAK["STRICT"] = "strict";
12024    })(LINE_BREAK || (LINE_BREAK = {}));
12025    var lineBreak = {
12026        name: 'line-break',
12027        initialValue: 'normal',
12028        prefix: false,
12029        type: 2 /* IDENT_VALUE */,
12030        parse: function (_context, lineBreak) {
12031            switch (lineBreak) {
12032                case 'strict':
12033                    return LINE_BREAK.STRICT;
12034                case 'normal':
12035                default:
12036                    return LINE_BREAK.NORMAL;
12037            }
12038        }
12039    };
12040
12041    var lineHeight = {
12042        name: 'line-height',
12043        initialValue: 'normal',
12044        prefix: false,
12045        type: 4 /* TOKEN_VALUE */
12046    };
12047    var computeLineHeight = function (token, fontSize) {
12048        if (isIdentToken(token) && token.value === 'normal') {
12049            return 1.2 * fontSize;
12050        }
12051        else if (token.type === 17 /* NUMBER_TOKEN */) {
12052            return fontSize * token.number;
12053        }
12054        else if (isLengthPercentage(token)) {
12055            return getAbsoluteValue(token, fontSize);
12056        }
12057        return fontSize;
12058    };
12059
12060    var listStyleImage = {
12061        name: 'list-style-image',
12062        initialValue: 'none',
12063        type: 0 /* VALUE */,
12064        prefix: false,
12065        parse: function (context, token) {
12066            if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {
12067                return null;
12068            }
12069            return image.parse(context, token);
12070        }
12071    };
12072
12073    var listStylePosition = {
12074        name: 'list-style-position',
12075        initialValue: 'outside',
12076        prefix: false,
12077        type: 2 /* IDENT_VALUE */,
12078        parse: function (_context, position) {
12079            switch (position) {
12080                case 'inside':
12081                    return 0 /* INSIDE */;
12082                case 'outside':
12083                default:
12084                    return 1 /* OUTSIDE */;
12085            }
12086        }
12087    };
12088
12089    var listStyleType = {
12090        name: 'list-style-type',
12091        initialValue: 'none',
12092        prefix: false,
12093        type: 2 /* IDENT_VALUE */,
12094        parse: function (_context, type) {
12095            switch (type) {
12096                case 'disc':
12097                    return 0 /* DISC */;
12098                case 'circle':
12099                    return 1 /* CIRCLE */;
12100                case 'square':
12101                    return 2 /* SQUARE */;
12102                case 'decimal':
12103                    return 3 /* DECIMAL */;
12104                case 'cjk-decimal':
12105                    return 4 /* CJK_DECIMAL */;
12106                case 'decimal-leading-zero':
12107                    return 5 /* DECIMAL_LEADING_ZERO */;
12108                case 'lower-roman':
12109                    return 6 /* LOWER_ROMAN */;
12110                case 'upper-roman':
12111                    return 7 /* UPPER_ROMAN */;
12112                case 'lower-greek':
12113                    return 8 /* LOWER_GREEK */;
12114                case 'lower-alpha':
12115                    return 9 /* LOWER_ALPHA */;
12116                case 'upper-alpha':
12117                    return 10 /* UPPER_ALPHA */;
12118                case 'arabic-indic':
12119                    return 11 /* ARABIC_INDIC */;
12120                case 'armenian':
12121                    return 12 /* ARMENIAN */;
12122                case 'bengali':
12123                    return 13 /* BENGALI */;
12124                case 'cambodian':
12125                    return 14 /* CAMBODIAN */;
12126                case 'cjk-earthly-branch':
12127                    return 15 /* CJK_EARTHLY_BRANCH */;
12128                case 'cjk-heavenly-stem':
12129                    return 16 /* CJK_HEAVENLY_STEM */;
12130                case 'cjk-ideographic':
12131                    return 17 /* CJK_IDEOGRAPHIC */;
12132                case 'devanagari':
12133                    return 18 /* DEVANAGARI */;
12134                case 'ethiopic-numeric':
12135                    return 19 /* ETHIOPIC_NUMERIC */;
12136                case 'georgian':
12137                    return 20 /* GEORGIAN */;
12138                case 'gujarati':
12139                    return 21 /* GUJARATI */;
12140                case 'gurmukhi':
12141                    return 22 /* GURMUKHI */;
12142                case 'hebrew':
12143                    return 22 /* HEBREW */;
12144                case 'hiragana':
12145                    return 23 /* HIRAGANA */;
12146                case 'hiragana-iroha':
12147                    return 24 /* HIRAGANA_IROHA */;
12148                case 'japanese-formal':
12149                    return 25 /* JAPANESE_FORMAL */;
12150                case 'japanese-informal':
12151                    return 26 /* JAPANESE_INFORMAL */;
12152                case 'kannada':
12153                    return 27 /* KANNADA */;
12154                case 'katakana':
12155                    return 28 /* KATAKANA */;
12156                case 'katakana-iroha':
12157                    return 29 /* KATAKANA_IROHA */;
12158                case 'khmer':
12159                    return 30 /* KHMER */;
12160                case 'korean-hangul-formal':
12161                    return 31 /* KOREAN_HANGUL_FORMAL */;
12162                case 'korean-hanja-formal':
12163                    return 32 /* KOREAN_HANJA_FORMAL */;
12164                case 'korean-hanja-informal':
12165                    return 33 /* KOREAN_HANJA_INFORMAL */;
12166                case 'lao':
12167                    return 34 /* LAO */;
12168                case 'lower-armenian':
12169                    return 35 /* LOWER_ARMENIAN */;
12170                case 'malayalam':
12171                    return 36 /* MALAYALAM */;
12172                case 'mongolian':
12173                    return 37 /* MONGOLIAN */;
12174                case 'myanmar':
12175                    return 38 /* MYANMAR */;
12176                case 'oriya':
12177                    return 39 /* ORIYA */;
12178                case 'persian':
12179                    return 40 /* PERSIAN */;
12180                case 'simp-chinese-formal':
12181                    return 41 /* SIMP_CHINESE_FORMAL */;
12182                case 'simp-chinese-informal':
12183                    return 42 /* SIMP_CHINESE_INFORMAL */;
12184                case 'tamil':
12185                    return 43 /* TAMIL */;
12186                case 'telugu':
12187                    return 44 /* TELUGU */;
12188                case 'thai':
12189                    return 45 /* THAI */;
12190                case 'tibetan':
12191                    return 46 /* TIBETAN */;
12192                case 'trad-chinese-formal':
12193                    return 47 /* TRAD_CHINESE_FORMAL */;
12194                case 'trad-chinese-informal':
12195                    return 48 /* TRAD_CHINESE_INFORMAL */;
12196                case 'upper-armenian':
12197                    return 49 /* UPPER_ARMENIAN */;
12198                case 'disclosure-open':
12199                    return 50 /* DISCLOSURE_OPEN */;
12200                case 'disclosure-closed':
12201                    return 51 /* DISCLOSURE_CLOSED */;
12202                case 'none':
12203                default:
12204                    return -1 /* NONE */;
12205            }
12206        }
12207    };
12208
12209    var marginForSide = function (side) { return ({
12210        name: "margin-" + side,
12211        initialValue: '0',
12212        prefix: false,
12213        type: 4 /* TOKEN_VALUE */
12214    }); };
12215    var marginTop = marginForSide('top');
12216    var marginRight = marginForSide('right');
12217    var marginBottom = marginForSide('bottom');
12218    var marginLeft = marginForSide('left');
12219
12220    var overflow = {
12221        name: 'overflow',
12222        initialValue: 'visible',
12223        prefix: false,
12224        type: 1 /* LIST */,
12225        parse: function (_context, tokens) {
12226            return tokens.filter(isIdentToken).map(function (overflow) {
12227                switch (overflow.value) {
12228                    case 'hidden':
12229                        return 1 /* HIDDEN */;
12230                    case 'scroll':
12231                        return 2 /* SCROLL */;
12232                    case 'clip':
12233                        return 3 /* CLIP */;
12234                    case 'auto':
12235                        return 4 /* AUTO */;
12236                    case 'visible':
12237                    default:
12238                        return 0 /* VISIBLE */;
12239                }
12240            });
12241        }
12242    };
12243
12244    var overflowWrap = {
12245        name: 'overflow-wrap',
12246        initialValue: 'normal',
12247        prefix: false,
12248        type: 2 /* IDENT_VALUE */,
12249        parse: function (_context, overflow) {
12250            switch (overflow) {
12251                case 'break-word':
12252                    return "break-word" /* BREAK_WORD */;
12253                case 'normal':
12254                default:
12255                    return "normal" /* NORMAL */;
12256            }
12257        }
12258    };
12259
12260    var paddingForSide = function (side) { return ({
12261        name: "padding-" + side,
12262        initialValue: '0',
12263        prefix: false,
12264        type: 3 /* TYPE_VALUE */,
12265        format: 'length-percentage'
12266    }); };
12267    var paddingTop = paddingForSide('top');
12268    var paddingRight = paddingForSide('right');
12269    var paddingBottom = paddingForSide('bottom');
12270    var paddingLeft = paddingForSide('left');
12271
12272    var textAlign = {
12273        name: 'text-align',
12274        initialValue: 'left',
12275        prefix: false,
12276        type: 2 /* IDENT_VALUE */,
12277        parse: function (_context, textAlign) {
12278            switch (textAlign) {
12279                case 'right':
12280                    return 2 /* RIGHT */;
12281                case 'center':
12282                case 'justify':
12283                    return 1 /* CENTER */;
12284                case 'left':
12285                default:
12286                    return 0 /* LEFT */;
12287            }
12288        }
12289    };
12290
12291    var position = {
12292        name: 'position',
12293        initialValue: 'static',
12294        prefix: false,
12295        type: 2 /* IDENT_VALUE */,
12296        parse: function (_context, position) {
12297            switch (position) {
12298                case 'relative':
12299                    return 1 /* RELATIVE */;
12300                case 'absolute':
12301                    return 2 /* ABSOLUTE */;
12302                case 'fixed':
12303                    return 3 /* FIXED */;
12304                case 'sticky':
12305                    return 4 /* STICKY */;
12306            }
12307            return 0 /* STATIC */;
12308        }
12309    };
12310
12311    var textShadow = {
12312        name: 'text-shadow',
12313        initialValue: 'none',
12314        type: 1 /* LIST */,
12315        prefix: false,
12316        parse: function (context, tokens) {
12317            if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
12318                return [];
12319            }
12320            return parseFunctionArgs(tokens).map(function (values) {
12321                var shadow = {
12322                    color: COLORS.TRANSPARENT,
12323                    offsetX: ZERO_LENGTH,
12324                    offsetY: ZERO_LENGTH,
12325                    blur: ZERO_LENGTH
12326                };
12327                var c = 0;
12328                for (var i = 0; i < values.length; i++) {
12329                    var token = values[i];
12330                    if (isLength(token)) {
12331                        if (c === 0) {
12332                            shadow.offsetX = token;
12333                        }
12334                        else if (c === 1) {
12335                            shadow.offsetY = token;
12336                        }
12337                        else {
12338                            shadow.blur = token;
12339                        }
12340                        c++;
12341                    }
12342                    else {
12343                        shadow.color = color$1.parse(context, token);
12344                    }
12345                }
12346                return shadow;
12347            });
12348        }
12349    };
12350
12351    var textTransform = {
12352        name: 'text-transform',
12353        initialValue: 'none',
12354        prefix: false,
12355        type: 2 /* IDENT_VALUE */,
12356        parse: function (_context, textTransform) {
12357            switch (textTransform) {
12358                case 'uppercase':
12359                    return 2 /* UPPERCASE */;
12360                case 'lowercase':
12361                    return 1 /* LOWERCASE */;
12362                case 'capitalize':
12363                    return 3 /* CAPITALIZE */;
12364            }
12365            return 0 /* NONE */;
12366        }
12367    };
12368
12369    var transform$1 = {
12370        name: 'transform',
12371        initialValue: 'none',
12372        prefix: true,
12373        type: 0 /* VALUE */,
12374        parse: function (_context, token) {
12375            if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {
12376                return null;
12377            }
12378            if (token.type === 18 /* FUNCTION */) {
12379                var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];
12380                if (typeof transformFunction === 'undefined') {
12381                    throw new Error("Attempting to parse an unsupported transform function \"" + token.name + "\"");
12382                }
12383                return transformFunction(token.values);
12384            }
12385            return null;
12386        }
12387    };
12388    var matrix = function (args) {
12389        var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });
12390        return values.length === 6 ? values : null;
12391    };
12392    // doesn't support 3D transforms at the moment
12393    var matrix3d = function (args) {
12394        var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });
12395        var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a2 = values[4], b2 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15];
12396        return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;
12397    };
12398    var SUPPORTED_TRANSFORM_FUNCTIONS = {
12399        matrix: matrix,
12400        matrix3d: matrix3d
12401    };
12402
12403    var DEFAULT_VALUE = {
12404        type: 16 /* PERCENTAGE_TOKEN */,
12405        number: 50,
12406        flags: FLAG_INTEGER
12407    };
12408    var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];
12409    var transformOrigin = {
12410        name: 'transform-origin',
12411        initialValue: '50% 50%',
12412        prefix: true,
12413        type: 1 /* LIST */,
12414        parse: function (_context, tokens) {
12415            var origins = tokens.filter(isLengthPercentage);
12416            if (origins.length !== 2) {
12417                return DEFAULT;
12418            }
12419            return [origins[0], origins[1]];
12420        }
12421    };
12422
12423    var visibility = {
12424        name: 'visible',
12425        initialValue: 'none',
12426        prefix: false,
12427        type: 2 /* IDENT_VALUE */,
12428        parse: function (_context, visibility) {
12429            switch (visibility) {
12430                case 'hidden':
12431                    return 1 /* HIDDEN */;
12432                case 'collapse':
12433                    return 2 /* COLLAPSE */;
12434                case 'visible':
12435                default:
12436                    return 0 /* VISIBLE */;
12437            }
12438        }
12439    };
12440
12441    var WORD_BREAK;
12442    (function (WORD_BREAK) {
12443        WORD_BREAK["NORMAL"] = "normal";
12444        WORD_BREAK["BREAK_ALL"] = "break-all";
12445        WORD_BREAK["KEEP_ALL"] = "keep-all";
12446    })(WORD_BREAK || (WORD_BREAK = {}));
12447    var wordBreak = {
12448        name: 'word-break',
12449        initialValue: 'normal',
12450        prefix: false,
12451        type: 2 /* IDENT_VALUE */,
12452        parse: function (_context, wordBreak) {
12453            switch (wordBreak) {
12454                case 'break-all':
12455                    return WORD_BREAK.BREAK_ALL;
12456                case 'keep-all':
12457                    return WORD_BREAK.KEEP_ALL;
12458                case 'normal':
12459                default:
12460                    return WORD_BREAK.NORMAL;
12461            }
12462        }
12463    };
12464
12465    var zIndex = {
12466        name: 'z-index',
12467        initialValue: 'auto',
12468        prefix: false,
12469        type: 0 /* VALUE */,
12470        parse: function (_context, token) {
12471            if (token.type === 20 /* IDENT_TOKEN */) {
12472                return { auto: true, order: 0 };
12473            }
12474            if (isNumberToken(token)) {
12475                return { auto: false, order: token.number };
12476            }
12477            throw new Error("Invalid z-index number parsed");
12478        }
12479    };
12480
12481    var time = {
12482        name: 'time',
12483        parse: function (_context, value) {
12484            if (value.type === 15 /* DIMENSION_TOKEN */) {
12485                switch (value.unit.toLowerCase()) {
12486                    case 's':
12487                        return 1000 * value.number;
12488                    case 'ms':
12489                        return value.number;
12490                }
12491            }
12492            throw new Error("Unsupported time type");
12493        }
12494    };
12495
12496    var opacity = {
12497        name: 'opacity',
12498        initialValue: '1',
12499        type: 0 /* VALUE */,
12500        prefix: false,
12501        parse: function (_context, token) {
12502            if (isNumberToken(token)) {
12503                return token.number;
12504            }
12505            return 1;
12506        }
12507    };
12508
12509    var textDecorationColor = {
12510        name: "text-decoration-color",
12511        initialValue: 'transparent',
12512        prefix: false,
12513        type: 3 /* TYPE_VALUE */,
12514        format: 'color'
12515    };
12516
12517    var textDecorationLine = {
12518        name: 'text-decoration-line',
12519        initialValue: 'none',
12520        prefix: false,
12521        type: 1 /* LIST */,
12522        parse: function (_context, tokens) {
12523            return tokens
12524                .filter(isIdentToken)
12525                .map(function (token) {
12526                switch (token.value) {
12527                    case 'underline':
12528                        return 1 /* UNDERLINE */;
12529                    case 'overline':
12530                        return 2 /* OVERLINE */;
12531                    case 'line-through':
12532                        return 3 /* LINE_THROUGH */;
12533                    case 'none':
12534                        return 4 /* BLINK */;
12535                }
12536                return 0 /* NONE */;
12537            })
12538                .filter(function (line) { return line !== 0 /* NONE */; });
12539        }
12540    };
12541
12542    var fontFamily = {
12543        name: "font-family",
12544        initialValue: '',
12545        prefix: false,
12546        type: 1 /* LIST */,
12547        parse: function (_context, tokens) {
12548            var accumulator = [];
12549            var results = [];
12550            tokens.forEach(function (token) {
12551                switch (token.type) {
12552                    case 20 /* IDENT_TOKEN */:
12553                    case 0 /* STRING_TOKEN */:
12554                        accumulator.push(token.value);
12555                        break;
12556                    case 17 /* NUMBER_TOKEN */:
12557                        accumulator.push(token.number.toString());
12558                        break;
12559                    case 4 /* COMMA_TOKEN */:
12560                        results.push(accumulator.join(' '));
12561                        accumulator.length = 0;
12562                        break;
12563                }
12564            });
12565            if (accumulator.length) {
12566                results.push(accumulator.join(' '));
12567            }
12568            return results.map(function (result) { return (result.indexOf(' ') === -1 ? result : "'" + result + "'"); });
12569        }
12570    };
12571
12572    var fontSize = {
12573        name: "font-size",
12574        initialValue: '0',
12575        prefix: false,
12576        type: 3 /* TYPE_VALUE */,
12577        format: 'length'
12578    };
12579
12580    var fontWeight = {
12581        name: 'font-weight',
12582        initialValue: 'normal',
12583        type: 0 /* VALUE */,
12584        prefix: false,
12585        parse: function (_context, token) {
12586            if (isNumberToken(token)) {
12587                return token.number;
12588            }
12589            if (isIdentToken(token)) {
12590                switch (token.value) {
12591                    case 'bold':
12592                        return 700;
12593                    case 'normal':
12594                    default:
12595                        return 400;
12596                }
12597            }
12598            return 400;
12599        }
12600    };
12601
12602    var fontVariant = {
12603        name: 'font-variant',
12604        initialValue: 'none',
12605        type: 1 /* LIST */,
12606        prefix: false,
12607        parse: function (_context, tokens) {
12608            return tokens.filter(isIdentToken).map(function (token) { return token.value; });
12609        }
12610    };
12611
12612    var fontStyle = {
12613        name: 'font-style',
12614        initialValue: 'normal',
12615        prefix: false,
12616        type: 2 /* IDENT_VALUE */,
12617        parse: function (_context, overflow) {
12618            switch (overflow) {
12619                case 'oblique':
12620                    return "oblique" /* OBLIQUE */;
12621                case 'italic':
12622                    return "italic" /* ITALIC */;
12623                case 'normal':
12624                default:
12625                    return "normal" /* NORMAL */;
12626            }
12627        }
12628    };
12629
12630    var contains = function (bit, value) { return (bit & value) !== 0; };
12631
12632    var content = {
12633        name: 'content',
12634        initialValue: 'none',
12635        type: 1 /* LIST */,
12636        prefix: false,
12637        parse: function (_context, tokens) {
12638            if (tokens.length === 0) {
12639                return [];
12640            }
12641            var first = tokens[0];
12642            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {
12643                return [];
12644            }
12645            return tokens;
12646        }
12647    };
12648
12649    var counterIncrement = {
12650        name: 'counter-increment',
12651        initialValue: 'none',
12652        prefix: true,
12653        type: 1 /* LIST */,
12654        parse: function (_context, tokens) {
12655            if (tokens.length === 0) {
12656                return null;
12657            }
12658            var first = tokens[0];
12659            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {
12660                return null;
12661            }
12662            var increments = [];
12663            var filtered = tokens.filter(nonWhiteSpace);
12664            for (var i = 0; i < filtered.length; i++) {
12665                var counter = filtered[i];
12666                var next = filtered[i + 1];
12667                if (counter.type === 20 /* IDENT_TOKEN */) {
12668                    var increment = next && isNumberToken(next) ? next.number : 1;
12669                    increments.push({ counter: counter.value, increment: increment });
12670                }
12671            }
12672            return increments;
12673        }
12674    };
12675
12676    var counterReset = {
12677        name: 'counter-reset',
12678        initialValue: 'none',
12679        prefix: true,
12680        type: 1 /* LIST */,
12681        parse: function (_context, tokens) {
12682            if (tokens.length === 0) {
12683                return [];
12684            }
12685            var resets = [];
12686            var filtered = tokens.filter(nonWhiteSpace);
12687            for (var i = 0; i < filtered.length; i++) {
12688                var counter = filtered[i];
12689                var next = filtered[i + 1];
12690                if (isIdentToken(counter) && counter.value !== 'none') {
12691                    var reset = next && isNumberToken(next) ? next.number : 0;
12692                    resets.push({ counter: counter.value, reset: reset });
12693                }
12694            }
12695            return resets;
12696        }
12697    };
12698
12699    var duration = {
12700        name: 'duration',
12701        initialValue: '0s',
12702        prefix: false,
12703        type: 1 /* LIST */,
12704        parse: function (context, tokens) {
12705            return tokens.filter(isDimensionToken).map(function (token) { return time.parse(context, token); });
12706        }
12707    };
12708
12709    var quotes = {
12710        name: 'quotes',
12711        initialValue: 'none',
12712        prefix: true,
12713        type: 1 /* LIST */,
12714        parse: function (_context, tokens) {
12715            if (tokens.length === 0) {
12716                return null;
12717            }
12718            var first = tokens[0];
12719            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {
12720                return null;
12721            }
12722            var quotes = [];
12723            var filtered = tokens.filter(isStringToken);
12724            if (filtered.length % 2 !== 0) {
12725                return null;
12726            }
12727            for (var i = 0; i < filtered.length; i += 2) {
12728                var open_1 = filtered[i].value;
12729                var close_1 = filtered[i + 1].value;
12730                quotes.push({ open: open_1, close: close_1 });
12731            }
12732            return quotes;
12733        }
12734    };
12735    var getQuote = function (quotes, depth, open) {
12736        if (!quotes) {
12737            return '';
12738        }
12739        var quote = quotes[Math.min(depth, quotes.length - 1)];
12740        if (!quote) {
12741            return '';
12742        }
12743        return open ? quote.open : quote.close;
12744    };
12745
12746    var boxShadow = {
12747        name: 'box-shadow',
12748        initialValue: 'none',
12749        type: 1 /* LIST */,
12750        prefix: false,
12751        parse: function (context, tokens) {
12752            if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
12753                return [];
12754            }
12755            return parseFunctionArgs(tokens).map(function (values) {
12756                var shadow = {
12757                    color: 0x000000ff,
12758                    offsetX: ZERO_LENGTH,
12759                    offsetY: ZERO_LENGTH,
12760                    blur: ZERO_LENGTH,
12761                    spread: ZERO_LENGTH,
12762                    inset: false
12763                };
12764                var c = 0;
12765                for (var i = 0; i < values.length; i++) {
12766                    var token = values[i];
12767                    if (isIdentWithValue(token, 'inset')) {
12768                        shadow.inset = true;
12769                    }
12770                    else if (isLength(token)) {
12771                        if (c === 0) {
12772                            shadow.offsetX = token;
12773                        }
12774                        else if (c === 1) {
12775                            shadow.offsetY = token;
12776                        }
12777                        else if (c === 2) {
12778                            shadow.blur = token;
12779                        }
12780                        else {
12781                            shadow.spread = token;
12782                        }
12783                        c++;
12784                    }
12785                    else {
12786                        shadow.color = color$1.parse(context, token);
12787                    }
12788                }
12789                return shadow;
12790            });
12791        }
12792    };
12793
12794    var paintOrder = {
12795        name: 'paint-order',
12796        initialValue: 'normal',
12797        prefix: false,
12798        type: 1 /* LIST */,
12799        parse: function (_context, tokens) {
12800            var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];
12801            var layers = [];
12802            tokens.filter(isIdentToken).forEach(function (token) {
12803                switch (token.value) {
12804                    case 'stroke':
12805                        layers.push(1 /* STROKE */);
12806                        break;
12807                    case 'fill':
12808                        layers.push(0 /* FILL */);
12809                        break;
12810                    case 'markers':
12811                        layers.push(2 /* MARKERS */);
12812                        break;
12813                }
12814            });
12815            DEFAULT_VALUE.forEach(function (value) {
12816                if (layers.indexOf(value) === -1) {
12817                    layers.push(value);
12818                }
12819            });
12820            return layers;
12821        }
12822    };
12823
12824    var webkitTextStrokeColor = {
12825        name: "-webkit-text-stroke-color",
12826        initialValue: 'currentcolor',
12827        prefix: false,
12828        type: 3 /* TYPE_VALUE */,
12829        format: 'color'
12830    };
12831
12832    var webkitTextStrokeWidth = {
12833        name: "-webkit-text-stroke-width",
12834        initialValue: '0',
12835        type: 0 /* VALUE */,
12836        prefix: false,
12837        parse: function (_context, token) {
12838            if (isDimensionToken(token)) {
12839                return token.number;
12840            }
12841            return 0;
12842        }
12843    };
12844
12845    var CSSParsedDeclaration = /** @class */ (function () {
12846        function CSSParsedDeclaration(context, declaration) {
12847            var _a, _b;
12848            this.animationDuration = parse(context, duration, declaration.animationDuration);
12849            this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);
12850            this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);
12851            this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);
12852            this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);
12853            this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);
12854            this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);
12855            this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);
12856            this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);
12857            this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);
12858            this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);
12859            this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);
12860            this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);
12861            this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);
12862            this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);
12863            this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);
12864            this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);
12865            this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);
12866            this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);
12867            this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);
12868            this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);
12869            this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);
12870            this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);
12871            this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);
12872            this.boxShadow = parse(context, boxShadow, declaration.boxShadow);
12873            this.color = parse(context, color, declaration.color);
12874            this.direction = parse(context, direction, declaration.direction);
12875            this.display = parse(context, display, declaration.display);
12876            this.float = parse(context, float, declaration.cssFloat);
12877            this.fontFamily = parse(context, fontFamily, declaration.fontFamily);
12878            this.fontSize = parse(context, fontSize, declaration.fontSize);
12879            this.fontStyle = parse(context, fontStyle, declaration.fontStyle);
12880            this.fontVariant = parse(context, fontVariant, declaration.fontVariant);
12881            this.fontWeight = parse(context, fontWeight, declaration.fontWeight);
12882            this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);
12883            this.lineBreak = parse(context, lineBreak, declaration.lineBreak);
12884            this.lineHeight = parse(context, lineHeight, declaration.lineHeight);
12885            this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);
12886            this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);
12887            this.listStyleType = parse(context, listStyleType, declaration.listStyleType);
12888            this.marginTop = parse(context, marginTop, declaration.marginTop);
12889            this.marginRight = parse(context, marginRight, declaration.marginRight);
12890            this.marginBottom = parse(context, marginBottom, declaration.marginBottom);
12891            this.marginLeft = parse(context, marginLeft, declaration.marginLeft);
12892            this.opacity = parse(context, opacity, declaration.opacity);
12893            var overflowTuple = parse(context, overflow, declaration.overflow);
12894            this.overflowX = overflowTuple[0];
12895            this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];
12896            this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);
12897            this.paddingTop = parse(context, paddingTop, declaration.paddingTop);
12898            this.paddingRight = parse(context, paddingRight, declaration.paddingRight);
12899            this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);
12900            this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);
12901            this.paintOrder = parse(context, paintOrder, declaration.paintOrder);
12902            this.position = parse(context, position, declaration.position);
12903            this.textAlign = parse(context, textAlign, declaration.textAlign);
12904            this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);
12905            this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);
12906            this.textShadow = parse(context, textShadow, declaration.textShadow);
12907            this.textTransform = parse(context, textTransform, declaration.textTransform);
12908            this.transform = parse(context, transform$1, declaration.transform);
12909            this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);
12910            this.visibility = parse(context, visibility, declaration.visibility);
12911            this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);
12912            this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);
12913            this.wordBreak = parse(context, wordBreak, declaration.wordBreak);
12914            this.zIndex = parse(context, zIndex, declaration.zIndex);
12915        }
12916        CSSParsedDeclaration.prototype.isVisible = function () {
12917            return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */;
12918        };
12919        CSSParsedDeclaration.prototype.isTransparent = function () {
12920            return isTransparent(this.backgroundColor);
12921        };
12922        CSSParsedDeclaration.prototype.isTransformed = function () {
12923            return this.transform !== null;
12924        };
12925        CSSParsedDeclaration.prototype.isPositioned = function () {
12926            return this.position !== 0 /* STATIC */;
12927        };
12928        CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {
12929            return this.isPositioned() && !this.zIndex.auto;
12930        };
12931        CSSParsedDeclaration.prototype.isFloating = function () {
12932            return this.float !== 0 /* NONE */;
12933        };
12934        CSSParsedDeclaration.prototype.isInlineLevel = function () {
12935            return (contains(this.display, 4 /* INLINE */) ||
12936                contains(this.display, 33554432 /* INLINE_BLOCK */) ||
12937                contains(this.display, 268435456 /* INLINE_FLEX */) ||
12938                contains(this.display, 536870912 /* INLINE_GRID */) ||
12939                contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||
12940                contains(this.display, 134217728 /* INLINE_TABLE */));
12941        };
12942        return CSSParsedDeclaration;
12943    }());
12944    var CSSParsedPseudoDeclaration = /** @class */ (function () {
12945        function CSSParsedPseudoDeclaration(context, declaration) {
12946            this.content = parse(context, content, declaration.content);
12947            this.quotes = parse(context, quotes, declaration.quotes);
12948        }
12949        return CSSParsedPseudoDeclaration;
12950    }());
12951    var CSSParsedCounterDeclaration = /** @class */ (function () {
12952        function CSSParsedCounterDeclaration(context, declaration) {
12953            this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);
12954            this.counterReset = parse(context, counterReset, declaration.counterReset);
12955        }
12956        return CSSParsedCounterDeclaration;
12957    }());
12958    // eslint-disable-next-line @typescript-eslint/no-explicit-any
12959    var parse = function (context, descriptor, style) {
12960        var tokenizer = new Tokenizer();
12961        var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;
12962        tokenizer.write(value);
12963        var parser = new Parser(tokenizer.read());
12964        switch (descriptor.type) {
12965            case 2 /* IDENT_VALUE */:
12966                var token = parser.parseComponentValue();
12967                return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);
12968            case 0 /* VALUE */:
12969                return descriptor.parse(context, parser.parseComponentValue());
12970            case 1 /* LIST */:
12971                return descriptor.parse(context, parser.parseComponentValues());
12972            case 4 /* TOKEN_VALUE */:
12973                return parser.parseComponentValue();
12974            case 3 /* TYPE_VALUE */:
12975                switch (descriptor.format) {
12976                    case 'angle':
12977                        return angle.parse(context, parser.parseComponentValue());
12978                    case 'color':
12979                        return color$1.parse(context, parser.parseComponentValue());
12980                    case 'image':
12981                        return image.parse(context, parser.parseComponentValue());
12982                    case 'length':
12983                        var length_1 = parser.parseComponentValue();
12984                        return isLength(length_1) ? length_1 : ZERO_LENGTH;
12985                    case 'length-percentage':
12986                        var value_1 = parser.parseComponentValue();
12987                        return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;
12988                    case 'time':
12989                        return time.parse(context, parser.parseComponentValue());
12990                }
12991                break;
12992        }
12993    };
12994
12995    var elementDebuggerAttribute = 'data-html2canvas-debug';
12996    var getElementDebugType = function (element) {
12997        var attribute = element.getAttribute(elementDebuggerAttribute);
12998        switch (attribute) {
12999            case 'all':
13000                return 1 /* ALL */;
13001            case 'clone':
13002                return 2 /* CLONE */;
13003            case 'parse':
13004                return 3 /* PARSE */;
13005            case 'render':
13006                return 4 /* RENDER */;
13007            default:
13008                return 0 /* NONE */;
13009        }
13010    };
13011    var isDebugging = function (element, type) {
13012        var elementType = getElementDebugType(element);
13013        return elementType === 1 /* ALL */ || type === elementType;
13014    };
13015
13016    var ElementContainer = /** @class */ (function () {
13017        function ElementContainer(context, element) {
13018            this.context = context;
13019            this.textNodes = [];
13020            this.elements = [];
13021            this.flags = 0;
13022            if (isDebugging(element, 3 /* PARSE */)) {
13023                debugger;
13024            }
13025            this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));
13026            if (isHTMLElementNode(element)) {
13027                if (this.styles.animationDuration.some(function (duration) { return duration > 0; })) {
13028                    element.style.animationDuration = '0s';
13029                }
13030                if (this.styles.transform !== null) {
13031                    // getBoundingClientRect takes transforms into account
13032                    element.style.transform = 'none';
13033                }
13034            }
13035            this.bounds = parseBounds(this.context, element);
13036            if (isDebugging(element, 4 /* RENDER */)) {
13037                this.flags |= 16 /* DEBUG_RENDER */;
13038            }
13039        }
13040        return ElementContainer;
13041    }());
13042
13043    /*
13044     * text-segmentation 1.0.3 <https://github.com/niklasvh/text-segmentation>
13045     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
13046     * Released under MIT License
13047     */
13048    var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQ
vendor: 14,458 bytes, line 13048
13048FNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAAB
vendor: 20,485 bytes, lines 13048-13339
13048QAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';
13049
13050    /*
13051     * utrie 1.0.2 <https://github.com/niklasvh/utrie>
13052     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
13053     * Released under MIT License
13054     */
13055    var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
13056    // Use a lookup table to find the index.
13057    var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
13058    for (var i$1 = 0; i$1 < chars$1.length; i$1++) {
13059        lookup$1[chars$1.charCodeAt(i$1)] = i$1;
13060    }
13061    var decode = function (base64) {
13062        var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
13063        if (base64[base64.length - 1] === '=') {
13064            bufferLength--;
13065            if (base64[base64.length - 2] === '=') {
13066                bufferLength--;
13067            }
13068        }
13069        var buffer = typeof ArrayBuffer !== 'undefined' &&
13070            typeof Uint8Array !== 'undefined' &&
13071            typeof Uint8Array.prototype.slice !== 'undefined'
13072            ? new ArrayBuffer(bufferLength)
13073            : new Array(bufferLength);
13074        var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
13075        for (i = 0; i < len; i += 4) {
13076            encoded1 = lookup$1[base64.charCodeAt(i)];
13077            encoded2 = lookup$1[base64.charCodeAt(i + 1)];
13078            encoded3 = lookup$1[base64.charCodeAt(i + 2)];
13079            encoded4 = lookup$1[base64.charCodeAt(i + 3)];
13080            bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
13081            bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
13082            bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
13083        }
13084        return buffer;
13085    };
13086    var polyUint16Array = function (buffer) {
13087        var length = buffer.length;
13088        var bytes = [];
13089        for (var i = 0; i < length; i += 2) {
13090            bytes.push((buffer[i + 1] << 8) | buffer[i]);
13091        }
13092        return bytes;
13093    };
13094    var polyUint32Array = function (buffer) {
13095        var length = buffer.length;
13096        var bytes = [];
13097        for (var i = 0; i < length; i += 4) {
13098            bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);
13099        }
13100        return bytes;
13101    };
13102
13103    /** Shift size for getting the index-2 table offset. */
13104    var UTRIE2_SHIFT_2 = 5;
13105    /** Shift size for getting the index-1 table offset. */
13106    var UTRIE2_SHIFT_1 = 6 + 5;
13107    /**
13108     * Shift size for shifting left the index array values.
13109     * Increases possible data size with 16-bit index values at the cost
13110     * of compactability.
13111     * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.
13112     */
13113    var UTRIE2_INDEX_SHIFT = 2;
13114    /**
13115     * Difference between the two shift sizes,
13116     * for getting an index-1 offset from an index-2 offset. 6=11-5
13117     */
13118    var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
13119    /**
13120     * The part of the index-2 table for U+D800..U+DBFF stores values for
13121     * lead surrogate code _units_ not code _points_.
13122     * Values for lead surrogate code _points_ are indexed with this portion of the table.
13123     * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)
13124     */
13125    var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;
13126    /** Number of entries in a data block. 32=0x20 */
13127    var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
13128    /** Mask for getting the lower bits for the in-data-block offset. */
13129    var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
13130    var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;
13131    /** Count the lengths of both BMP pieces. 2080=0x820 */
13132    var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
13133    /**
13134     * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
13135     * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.
13136     */
13137    var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
13138    var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */
13139    /**
13140     * The index-1 table, only used for supplementary code points, at offset 2112=0x840.
13141     * Variable length, for code points up to highStart, where the last single-value range starts.
13142     * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.
13143     * (For 0x100000 supplementary code points U+10000..U+10ffff.)
13144     *
13145     * The part of the index-2 table for supplementary code points starts
13146     * after this index-1 table.
13147     *
13148     * Both the index-1 table and the following part of the index-2 table
13149     * are omitted completely if there is only BMP data.
13150     */
13151    var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
13152    /**
13153     * Number of index-1 entries for the BMP. 32=0x20
13154     * This part of the index-1 table is omitted from the serialized form.
13155     */
13156    var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;
13157    /** Number of entries in an index-2 block. 64=0x40 */
13158    var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
13159    /** Mask for getting the lower bits for the in-index-2-block offset. */
13160    var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
13161    var slice16 = function (view, start, end) {
13162        if (view.slice) {
13163            return view.slice(start, end);
13164        }
13165        return new Uint16Array(Array.prototype.slice.call(view, start, end));
13166    };
13167    var slice32 = function (view, start, end) {
13168        if (view.slice) {
13169            return view.slice(start, end);
13170        }
13171        return new Uint32Array(Array.prototype.slice.call(view, start, end));
13172    };
13173    var createTrieFromBase64 = function (base64, _byteLength) {
13174        var buffer = decode(base64);
13175        var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);
13176        var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);
13177        var headerLength = 24;
13178        var index = slice16(view16, headerLength / 2, view32[4] / 2);
13179        var data = view32[5] === 2
13180            ? slice16(view16, (headerLength + view32[4]) / 2)
13181            : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));
13182        return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);
13183    };
13184    var Trie = /** @class */ (function () {
13185        function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {
13186            this.initialValue = initialValue;
13187            this.errorValue = errorValue;
13188            this.highStart = highStart;
13189            this.highValueIndex = highValueIndex;
13190            this.index = index;
13191            this.data = data;
13192        }
13193        /**
13194         * Get the value for a code point as stored in the Trie.
13195         *
13196         * @param codePoint the code point
13197         * @return the value
13198         */
13199        Trie.prototype.get = function (codePoint) {
13200            var ix;
13201            if (codePoint >= 0) {
13202                if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {
13203                    // Ordinary BMP code point, excluding leading surrogates.
13204                    // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.
13205                    // 16 bit data is stored in the index array itself.
13206                    ix = this.index[codePoint >> UTRIE2_SHIFT_2];
13207                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
13208                    return this.data[ix];
13209                }
13210                if (codePoint <= 0xffff) {
13211                    // Lead Surrogate Code Point.  A Separate index section is stored for
13212                    // lead surrogate code units and code points.
13213                    //   The main index has the code unit data.
13214                    //   For this function, we need the code point data.
13215                    // Note: this expression could be refactored for slightly improved efficiency, but
13216                    //       surrogate code points will be so rare in practice that it's not worth it.
13217                    ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];
13218                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
13219                    return this.data[ix];
13220                }
13221                if (codePoint < this.highStart) {
13222                    // Supplemental code point, use two-level lookup.
13223                    ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
13224                    ix = this.index[ix];
13225                    ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;
13226                    ix = this.index[ix];
13227                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
13228                    return this.data[ix];
13229                }
13230                if (codePoint <= 0x10ffff) {
13231                    return this.data[this.highValueIndex];
13232                }
13233            }
13234            // Fall through.  The code point is outside of the legal range of 0..0x10ffff.
13235            return this.errorValue;
13236        };
13237        return Trie;
13238    }());
13239
13240    /*
13241     * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>
13242     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
13243     * Released under MIT License
13244     */
13245    var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
13246    // Use a lookup table to find the index.
13247    var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
13248    for (var i = 0; i < chars.length; i++) {
13249        lookup[chars.charCodeAt(i)] = i;
13250    }
13251
13252    var Prepend = 1;
13253    var CR = 2;
13254    var LF = 3;
13255    var Control = 4;
13256    var Extend = 5;
13257    var SpacingMark = 7;
13258    var L = 8;
13259    var V = 9;
13260    var T = 10;
13261    var LV = 11;
13262    var LVT = 12;
13263    var ZWJ = 13;
13264    var Extended_Pictographic = 14;
13265    var RI = 15;
13266    var toCodePoints = function (str) {
13267        var codePoints = [];
13268        var i = 0;
13269        var length = str.length;
13270        while (i < length) {
13271            var value = str.charCodeAt(i++);
13272            if (value >= 0xd800 && value <= 0xdbff && i < length) {
13273                var extra = str.charCodeAt(i++);
13274                if ((extra & 0xfc00) === 0xdc00) {
13275                    codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);
13276                }
13277                else {
13278                    codePoints.push(value);
13279                    i--;
13280                }
13281            }
13282            else {
13283                codePoints.push(value);
13284            }
13285        }
13286        return codePoints;
13287    };
13288    var fromCodePoint = function () {
13289        var codePoints = [];
13290        for (var _i = 0; _i < arguments.length; _i++) {
13291            codePoints[_i] = arguments[_i];
13292        }
13293        if (String.fromCodePoint) {
13294            return String.fromCodePoint.apply(String, codePoints);
13295        }
13296        var length = codePoints.length;
13297        if (!length) {
13298            return '';
13299        }
13300        var codeUnits = [];
13301        var index = -1;
13302        var result = '';
13303        while (++index < length) {
13304            var codePoint = codePoints[index];
13305            if (codePoint <= 0xffff) {
13306                codeUnits.push(codePoint);
13307            }
13308            else {
13309                codePoint -= 0x10000;
13310                codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);
13311            }
13312            if (index + 1 === length || codeUnits.length > 0x4000) {
13313                result += String.fromCharCode.apply(String, codeUnits);
13314                codeUnits.length = 0;
13315            }
13316        }
13317        return result;
13318    };
13319    var UnicodeTrie = createTrieFromBase64(base64);
13320    var BREAK_NOT_ALLOWED = '×';
13321    var BREAK_ALLOWED = '÷';
13322    var codePointToClass = function (codePoint) { return UnicodeTrie.get(codePoint); };
13323    var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {
13324        var prevIndex = index - 2;
13325        var prev = classTypes[prevIndex];
13326        var current = classTypes[index - 1];
13327        var next = classTypes[index];
13328        // GB3 Do not break between a CR and LF
13329        if (current === CR && next === LF) {
13330            return BREAK_NOT_ALLOWED;
13331        }
13332        // GB4 Otherwise, break before and after controls.
13333        if (current === CR || current === LF || current === Control) {
13334            return BREAK_ALLOWED;
13335        }
13336        // GB5
13337        if (next === CR || next === LF || next === Control) {
13338            return BREAK_ALLOWED;
13339        }
vendor: 193,516 bytes, lines 13340-17058
13340        // Do not break Hangul syllable sequences.
13341        // GB6
13342        if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {
13343            return BREAK_NOT_ALLOWED;
13344        }
13345        // GB7
13346        if ((current === LV || current === V) && (next === V || next === T)) {
13347            return BREAK_NOT_ALLOWED;
13348        }
13349        // GB8
13350        if ((current === LVT || current === T) && next === T) {
13351            return BREAK_NOT_ALLOWED;
13352        }
13353        // GB9 Do not break before extending characters or ZWJ.
13354        if (next === ZWJ || next === Extend) {
13355            return BREAK_NOT_ALLOWED;
13356        }
13357        // Do not break before SpacingMarks, or after Prepend characters.
13358        // GB9a
13359        if (next === SpacingMark) {
13360            return BREAK_NOT_ALLOWED;
13361        }
13362        // GB9a
13363        if (current === Prepend) {
13364            return BREAK_NOT_ALLOWED;
13365        }
13366        // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.
13367        if (current === ZWJ && next === Extended_Pictographic) {
13368            while (prev === Extend) {
13369                prev = classTypes[--prevIndex];
13370            }
13371            if (prev === Extended_Pictographic) {
13372                return BREAK_NOT_ALLOWED;
13373            }
13374        }
13375        // GB12 Do not break within emoji flag sequences.
13376        // That is, do not break between regional indicator (RI) symbols
13377        // if there is an odd number of RI characters before the break point.
13378        if (current === RI && next === RI) {
13379            var countRI = 0;
13380            while (prev === RI) {
13381                countRI++;
13382                prev = classTypes[--prevIndex];
13383            }
13384            if (countRI % 2 === 0) {
13385                return BREAK_NOT_ALLOWED;
13386            }
13387        }
13388        return BREAK_ALLOWED;
13389    };
13390    var GraphemeBreaker = function (str) {
13391        var codePoints = toCodePoints(str);
13392        var length = codePoints.length;
13393        var index = 0;
13394        var lastEnd = 0;
13395        var classTypes = codePoints.map(codePointToClass);
13396        return {
13397            next: function () {
13398                if (index >= length) {
13399                    return { done: true, value: null };
13400                }
13401                var graphemeBreak = BREAK_NOT_ALLOWED;
13402                while (index < length &&
13403                    (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { }
13404                if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {
13405                    var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));
13406                    lastEnd = index;
13407                    return { value: value, done: false };
13408                }
13409                return { done: true, value: null };
13410            },
13411        };
13412    };
13413    var splitGraphemes = function (str) {
13414        var breaker = GraphemeBreaker(str);
13415        var graphemes = [];
13416        var bk;
13417        while (!(bk = breaker.next()).done) {
13418            if (bk.value) {
13419                graphemes.push(bk.value.slice());
13420            }
13421        }
13422        return graphemes;
13423    };
13424
13425    var testRangeBounds = function (document) {
13426        var TEST_HEIGHT = 123;
13427        if (document.createRange) {
13428            var range = document.createRange();
13429            if (range.getBoundingClientRect) {
13430                var testElement = document.createElement('boundtest');
13431                testElement.style.height = TEST_HEIGHT + "px";
13432                testElement.style.display = 'block';
13433                document.body.appendChild(testElement);
13434                range.selectNode(testElement);
13435                var rangeBounds = range.getBoundingClientRect();
13436                var rangeHeight = Math.round(rangeBounds.height);
13437                document.body.removeChild(testElement);
13438                if (rangeHeight === TEST_HEIGHT) {
13439                    return true;
13440                }
13441            }
13442        }
13443        return false;
13444    };
13445    var testIOSLineBreak = function (document) {
13446        var testElement = document.createElement('boundtest');
13447        testElement.style.width = '50px';
13448        testElement.style.display = 'block';
13449        testElement.style.fontSize = '12px';
13450        testElement.style.letterSpacing = '0px';
13451        testElement.style.wordSpacing = '0px';
13452        document.body.appendChild(testElement);
13453        var range = document.createRange();
13454        testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';
13455        var node = testElement.firstChild;
13456        var textList = toCodePoints$1(node.data).map(function (i) { return fromCodePoint$1(i); });
13457        var offset = 0;
13458        var prev = {};
13459        // ios 13 does not handle range getBoundingClientRect line changes correctly #2177
13460        var supports = textList.every(function (text, i) {
13461            range.setStart(node, offset);
13462            range.setEnd(node, offset + text.length);
13463            var rect = range.getBoundingClientRect();
13464            offset += text.length;
13465            var boundAhead = rect.x > prev.x || rect.y > prev.y;
13466            prev = rect;
13467            if (i === 0) {
13468                return true;
13469            }
13470            return boundAhead;
13471        });
13472        document.body.removeChild(testElement);
13473        return supports;
13474    };
13475    var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };
13476    var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };
13477    var testSVG = function (document) {
13478        var img = new Image();
13479        var canvas = document.createElement('canvas');
13480        var ctx = canvas.getContext('2d');
13481        if (!ctx) {
13482            return false;
13483        }
13484        img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
13485        try {
13486            ctx.drawImage(img, 0, 0);
13487            canvas.toDataURL();
13488        }
13489        catch (e) {
13490            return false;
13491        }
13492        return true;
13493    };
13494    var isGreenPixel = function (data) {
13495        return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;
13496    };
13497    var testForeignObject = function (document) {
13498        var canvas = document.createElement('canvas');
13499        var size = 100;
13500        canvas.width = size;
13501        canvas.height = size;
13502        var ctx = canvas.getContext('2d');
13503        if (!ctx) {
13504            return Promise.reject(false);
13505        }
13506        ctx.fillStyle = 'rgb(0, 255, 0)';
13507        ctx.fillRect(0, 0, size, size);
13508        var img = new Image();
13509        var greenImageSrc = canvas.toDataURL();
13510        img.src = greenImageSrc;
13511        var svg = createForeignObjectSVG(size, size, 0, 0, img);
13512        ctx.fillStyle = 'red';
13513        ctx.fillRect(0, 0, size, size);
13514        return loadSerializedSVG$1(svg)
13515            .then(function (img) {
13516            ctx.drawImage(img, 0, 0);
13517            var data = ctx.getImageData(0, 0, size, size).data;
13518            ctx.fillStyle = 'red';
13519            ctx.fillRect(0, 0, size, size);
13520            var node = document.createElement('div');
13521            node.style.backgroundImage = "url(" + greenImageSrc + ")";
13522            node.style.height = size + "px";
13523            // Firefox 55 does not render inline <img /> tags
13524            return isGreenPixel(data)
13525                ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node))
13526                : Promise.reject(false);
13527        })
13528            .then(function (img) {
13529            ctx.drawImage(img, 0, 0);
13530            // Edge does not render background-images
13531            return isGreenPixel(ctx.getImageData(0, 0, size, size).data);
13532        })
13533            .catch(function () { return false; });
13534    };
13535    var createForeignObjectSVG = function (width, height, x, y, node) {
13536        var xmlns = 'http://www.w3.org/2000/svg';
13537        var svg = document.createElementNS(xmlns, 'svg');
13538        var foreignObject = document.createElementNS(xmlns, 'foreignObject');
13539        svg.setAttributeNS(null, 'width', width.toString());
13540        svg.setAttributeNS(null, 'height', height.toString());
13541        foreignObject.setAttributeNS(null, 'width', '100%');
13542        foreignObject.setAttributeNS(null, 'height', '100%');
13543        foreignObject.setAttributeNS(null, 'x', x.toString());
13544        foreignObject.setAttributeNS(null, 'y', y.toString());
13545        foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');
13546        svg.appendChild(foreignObject);
13547        foreignObject.appendChild(node);
13548        return svg;
13549    };
13550    var loadSerializedSVG$1 = function (svg) {
13551        return new Promise(function (resolve, reject) {
13552            var img = new Image();
13553            img.onload = function () { return resolve(img); };
13554            img.onerror = reject;
13555            img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
13556        });
13557    };
13558    var FEATURES = {
13559        get SUPPORT_RANGE_BOUNDS() {
13560            var value = testRangeBounds(document);
13561            Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });
13562            return value;
13563        },
13564        get SUPPORT_WORD_BREAKING() {
13565            var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);
13566            Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value });
13567            return value;
13568        },
13569        get SUPPORT_SVG_DRAWING() {
13570            var value = testSVG(document);
13571            Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });
13572            return value;
13573        },
13574        get SUPPORT_FOREIGNOBJECT_DRAWING() {
13575            var value = typeof Array.from === 'function' && typeof window.fetch === 'function'
13576                ? testForeignObject(document)
13577                : Promise.resolve(false);
13578            Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });
13579            return value;
13580        },
13581        get SUPPORT_CORS_IMAGES() {
13582            var value = testCORS();
13583            Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });
13584            return value;
13585        },
13586        get SUPPORT_RESPONSE_TYPE() {
13587            var value = testResponseType();
13588            Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });
13589            return value;
13590        },
13591        get SUPPORT_CORS_XHR() {
13592            var value = 'withCredentials' in new XMLHttpRequest();
13593            Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });
13594            return value;
13595        },
13596        get SUPPORT_NATIVE_TEXT_SEGMENTATION() {
13597            // eslint-disable-next-line @typescript-eslint/no-explicit-any
13598            var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter);
13599            Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value: value });
13600            return value;
13601        }
13602    };
13603
13604    var TextBounds = /** @class */ (function () {
13605        function TextBounds(text, bounds) {
13606            this.text = text;
13607            this.bounds = bounds;
13608        }
13609        return TextBounds;
13610    }());
13611    var parseTextBounds = function (context, value, styles, node) {
13612        var textList = breakText(value, styles);
13613        var textBounds = [];
13614        var offset = 0;
13615        textList.forEach(function (text) {
13616            if (styles.textDecorationLine.length || text.trim().length > 0) {
13617                if (FEATURES.SUPPORT_RANGE_BOUNDS) {
13618                    var clientRects = createRange(node, offset, text.length).getClientRects();
13619                    if (clientRects.length > 1) {
13620                        var subSegments = segmentGraphemes(text);
13621                        var subOffset_1 = 0;
13622                        subSegments.forEach(function (subSegment) {
13623                            textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));
13624                            subOffset_1 += subSegment.length;
13625                        });
13626                    }
13627                    else {
13628                        textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));
13629                    }
13630                }
13631                else {
13632                    var replacementNode = node.splitText(text.length);
13633                    textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));
13634                    node = replacementNode;
13635                }
13636            }
13637            else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
13638                node = node.splitText(text.length);
13639            }
13640            offset += text.length;
13641        });
13642        return textBounds;
13643    };
13644    var getWrapperBounds = function (context, node) {
13645        var ownerDocument = node.ownerDocument;
13646        if (ownerDocument) {
13647            var wrapper = ownerDocument.createElement('html2canvaswrapper');
13648            wrapper.appendChild(node.cloneNode(true));
13649            var parentNode = node.parentNode;
13650            if (parentNode) {
13651                parentNode.replaceChild(wrapper, node);
13652                var bounds = parseBounds(context, wrapper);
13653                if (wrapper.firstChild) {
13654                    parentNode.replaceChild(wrapper.firstChild, wrapper);
13655                }
13656                return bounds;
13657            }
13658        }
13659        return Bounds.EMPTY;
13660    };
13661    var createRange = function (node, offset, length) {
13662        var ownerDocument = node.ownerDocument;
13663        if (!ownerDocument) {
13664            throw new Error('Node has no owner document');
13665        }
13666        var range = ownerDocument.createRange();
13667        range.setStart(node, offset);
13668        range.setEnd(node, offset + length);
13669        return range;
13670    };
13671    var segmentGraphemes = function (value) {
13672        if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
13673            // eslint-disable-next-line @typescript-eslint/no-explicit-any
13674            var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' });
13675            // eslint-disable-next-line @typescript-eslint/no-explicit-any
13676            return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });
13677        }
13678        return splitGraphemes(value);
13679    };
13680    var segmentWords = function (value, styles) {
13681        if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
13682            // eslint-disable-next-line @typescript-eslint/no-explicit-any
13683            var segmenter = new Intl.Segmenter(void 0, {
13684                granularity: 'word'
13685            });
13686            // eslint-disable-next-line @typescript-eslint/no-explicit-any
13687            return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });
13688        }
13689        return breakWords(value, styles);
13690    };
13691    var breakText = function (value, styles) {
13692        return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);
13693    };
13694    // https://drafts.csswg.org/css-text/#word-separator
13695    var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];
13696    var breakWords = function (str, styles) {
13697        var breaker = LineBreaker(str, {
13698            lineBreak: styles.lineBreak,
13699            wordBreak: styles.overflowWrap === "break-word" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak
13700        });
13701        var words = [];
13702        var bk;
13703        var _loop_1 = function () {
13704            if (bk.value) {
13705                var value = bk.value.slice();
13706                var codePoints = toCodePoints$1(value);
13707                var word_1 = '';
13708                codePoints.forEach(function (codePoint) {
13709                    if (wordSeparators.indexOf(codePoint) === -1) {
13710                        word_1 += fromCodePoint$1(codePoint);
13711                    }
13712                    else {
13713                        if (word_1.length) {
13714                            words.push(word_1);
13715                        }
13716                        words.push(fromCodePoint$1(codePoint));
13717                        word_1 = '';
13718                    }
13719                });
13720                if (word_1.length) {
13721                    words.push(word_1);
13722                }
13723            }
13724        };
13725        while (!(bk = breaker.next()).done) {
13726            _loop_1();
13727        }
13728        return words;
13729    };
13730
13731    var TextContainer = /** @class */ (function () {
13732        function TextContainer(context, node, styles) {
13733            this.text = transform(node.data, styles.textTransform);
13734            this.textBounds = parseTextBounds(context, this.text, styles, node);
13735        }
13736        return TextContainer;
13737    }());
13738    var transform = function (text, transform) {
13739        switch (transform) {
13740            case 1 /* LOWERCASE */:
13741                return text.toLowerCase();
13742            case 3 /* CAPITALIZE */:
13743                return text.replace(CAPITALIZE, capitalize);
13744            case 2 /* UPPERCASE */:
13745                return text.toUpperCase();
13746            default:
13747                return text;
13748        }
13749    };
13750    var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g;
13751    var capitalize = function (m, p1, p2) {
13752        if (m.length > 0) {
13753            return p1 + p2.toUpperCase();
13754        }
13755        return m;
13756    };
13757
13758    var ImageElementContainer = /** @class */ (function (_super) {
13759        __extends(ImageElementContainer, _super);
13760        function ImageElementContainer(context, img) {
13761            var _this = _super.call(this, context, img) || this;
13762            _this.src = img.currentSrc || img.src;
13763            _this.intrinsicWidth = img.naturalWidth;
13764            _this.intrinsicHeight = img.naturalHeight;
13765            _this.context.cache.addImage(_this.src);
13766            return _this;
13767        }
13768        return ImageElementContainer;
13769    }(ElementContainer));
13770
13771    var CanvasElementContainer = /** @class */ (function (_super) {
13772        __extends(CanvasElementContainer, _super);
13773        function CanvasElementContainer(context, canvas) {
13774            var _this = _super.call(this, context, canvas) || this;
13775            _this.canvas = canvas;
13776            _this.intrinsicWidth = canvas.width;
13777            _this.intrinsicHeight = canvas.height;
13778            return _this;
13779        }
13780        return CanvasElementContainer;
13781    }(ElementContainer));
13782
13783    var SVGElementContainer = /** @class */ (function (_super) {
13784        __extends(SVGElementContainer, _super);
13785        function SVGElementContainer(context, img) {
13786            var _this = _super.call(this, context, img) || this;
13787            var s = new XMLSerializer();
13788            var bounds = parseBounds(context, img);
13789            img.setAttribute('width', bounds.width + "px");
13790            img.setAttribute('height', bounds.height + "px");
13791            _this.svg = "data:image/svg+xml," + encodeURIComponent(s.serializeToString(img));
13792            _this.intrinsicWidth = img.width.baseVal.value;
13793            _this.intrinsicHeight = img.height.baseVal.value;
13794            _this.context.cache.addImage(_this.svg);
13795            return _this;
13796        }
13797        return SVGElementContainer;
13798    }(ElementContainer));
13799
13800    var LIElementContainer = /** @class */ (function (_super) {
13801        __extends(LIElementContainer, _super);
13802        function LIElementContainer(context, element) {
13803            var _this = _super.call(this, context, element) || this;
13804            _this.value = element.value;
13805            return _this;
13806        }
13807        return LIElementContainer;
13808    }(ElementContainer));
13809
13810    var OLElementContainer = /** @class */ (function (_super) {
13811        __extends(OLElementContainer, _super);
13812        function OLElementContainer(context, element) {
13813            var _this = _super.call(this, context, element) || this;
13814            _this.start = element.start;
13815            _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;
13816            return _this;
13817        }
13818        return OLElementContainer;
13819    }(ElementContainer));
13820
13821    var CHECKBOX_BORDER_RADIUS = [
13822        {
13823            type: 15 /* DIMENSION_TOKEN */,
13824            flags: 0,
13825            unit: 'px',
13826            number: 3
13827        }
13828    ];
13829    var RADIO_BORDER_RADIUS = [
13830        {
13831            type: 16 /* PERCENTAGE_TOKEN */,
13832            flags: 0,
13833            number: 50
13834        }
13835    ];
13836    var reformatInputBounds = function (bounds) {
13837        if (bounds.width > bounds.height) {
13838            return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);
13839        }
13840        else if (bounds.width < bounds.height) {
13841            return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);
13842        }
13843        return bounds;
13844    };
13845    var getInputValue = function (node) {
13846        var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\u2022') : node.value;
13847        return value.length === 0 ? node.placeholder || '' : value;
13848    };
13849    var CHECKBOX = 'checkbox';
13850    var RADIO = 'radio';
13851    var PASSWORD = 'password';
13852    var INPUT_COLOR = 0x2a2a2aff;
13853    var InputElementContainer = /** @class */ (function (_super) {
13854        __extends(InputElementContainer, _super);
13855        function InputElementContainer(context, input) {
13856            var _this = _super.call(this, context, input) || this;
13857            _this.type = input.type.toLowerCase();
13858            _this.checked = input.checked;
13859            _this.value = getInputValue(input);
13860            if (_this.type === CHECKBOX || _this.type === RADIO) {
13861                _this.styles.backgroundColor = 0xdededeff;
13862                _this.styles.borderTopColor =
13863                    _this.styles.borderRightColor =
13864                        _this.styles.borderBottomColor =
13865                            _this.styles.borderLeftColor =
13866                                0xa5a5a5ff;
13867                _this.styles.borderTopWidth =
13868                    _this.styles.borderRightWidth =
13869                        _this.styles.borderBottomWidth =
13870                            _this.styles.borderLeftWidth =
13871                                1;
13872                _this.styles.borderTopStyle =
13873                    _this.styles.borderRightStyle =
13874                        _this.styles.borderBottomStyle =
13875                            _this.styles.borderLeftStyle =
13876                                1 /* SOLID */;
13877                _this.styles.backgroundClip = [0 /* BORDER_BOX */];
13878                _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];
13879                _this.bounds = reformatInputBounds(_this.bounds);
13880            }
13881            switch (_this.type) {
13882                case CHECKBOX:
13883                    _this.styles.borderTopRightRadius =
13884                        _this.styles.borderTopLeftRadius =
13885                            _this.styles.borderBottomRightRadius =
13886                                _this.styles.borderBottomLeftRadius =
13887                                    CHECKBOX_BORDER_RADIUS;
13888                    break;
13889                case RADIO:
13890                    _this.styles.borderTopRightRadius =
13891                        _this.styles.borderTopLeftRadius =
13892                            _this.styles.borderBottomRightRadius =
13893                                _this.styles.borderBottomLeftRadius =
13894                                    RADIO_BORDER_RADIUS;
13895                    break;
13896            }
13897            return _this;
13898        }
13899        return InputElementContainer;
13900    }(ElementContainer));
13901
13902    var SelectElementContainer = /** @class */ (function (_super) {
13903        __extends(SelectElementContainer, _super);
13904        function SelectElementContainer(context, element) {
13905            var _this = _super.call(this, context, element) || this;
13906            var option = element.options[element.selectedIndex || 0];
13907            _this.value = option ? option.text || '' : '';
13908            return _this;
13909        }
13910        return SelectElementContainer;
13911    }(ElementContainer));
13912
13913    var TextareaElementContainer = /** @class */ (function (_super) {
13914        __extends(TextareaElementContainer, _super);
13915        function TextareaElementContainer(context, element) {
13916            var _this = _super.call(this, context, element) || this;
13917            _this.value = element.value;
13918            return _this;
13919        }
13920        return TextareaElementContainer;
13921    }(ElementContainer));
13922
13923    var IFrameElementContainer = /** @class */ (function (_super) {
13924        __extends(IFrameElementContainer, _super);
13925        function IFrameElementContainer(context, iframe) {
13926            var _this = _super.call(this, context, iframe) || this;
13927            _this.src = iframe.src;
13928            _this.width = parseInt(iframe.width, 10) || 0;
13929            _this.height = parseInt(iframe.height, 10) || 0;
13930            _this.backgroundColor = _this.styles.backgroundColor;
13931            try {
13932                if (iframe.contentWindow &&
13933                    iframe.contentWindow.document &&
13934                    iframe.contentWindow.document.documentElement) {
13935                    _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);
13936                    // http://www.w3.org/TR/css3-background/#special-backgrounds
13937                    var documentBackgroundColor = iframe.contentWindow.document.documentElement
13938                        ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor)
13939                        : COLORS.TRANSPARENT;
13940                    var bodyBackgroundColor = iframe.contentWindow.document.body
13941                        ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor)
13942                        : COLORS.TRANSPARENT;
13943                    _this.backgroundColor = isTransparent(documentBackgroundColor)
13944                        ? isTransparent(bodyBackgroundColor)
13945                            ? _this.styles.backgroundColor
13946                            : bodyBackgroundColor
13947                        : documentBackgroundColor;
13948                }
13949            }
13950            catch (e) { }
13951            return _this;
13952        }
13953        return IFrameElementContainer;
13954    }(ElementContainer));
13955
13956    var LIST_OWNERS = ['OL', 'UL', 'MENU'];
13957    var parseNodeTree = function (context, node, parent, root) {
13958        for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
13959            nextNode = childNode.nextSibling;
13960            if (isTextNode(childNode) && childNode.data.trim().length > 0) {
13961                parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
13962            }
13963            else if (isElementNode(childNode)) {
13964                if (isSlotElement(childNode) && childNode.assignedNodes) {
13965                    childNode.assignedNodes().forEach(function (childNode) { return parseNodeTree(context, childNode, parent, root); });
13966                }
13967                else {
13968                    var container = createContainer(context, childNode);
13969                    if (container.styles.isVisible()) {
13970                        if (createsRealStackingContext(childNode, container, root)) {
13971                            container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;
13972                        }
13973                        else if (createsStackingContext(container.styles)) {
13974                            container.flags |= 2 /* CREATES_STACKING_CONTEXT */;
13975                        }
13976                        if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
13977                            container.flags |= 8 /* IS_LIST_OWNER */;
13978                        }
13979                        parent.elements.push(container);
13980                        childNode.slot;
13981                        if (childNode.shadowRoot) {
13982                            parseNodeTree(context, childNode.shadowRoot, container, root);
13983                        }
13984                        else if (!isTextareaElement(childNode) &&
13985                            !isSVGElement(childNode) &&
13986                            !isSelectElement(childNode)) {
13987                            parseNodeTree(context, childNode, container, root);
13988                        }
13989                    }
13990                }
13991            }
13992        }
13993    };
13994    var createContainer = function (context, element) {
13995        if (isImageElement(element)) {
13996            return new ImageElementContainer(context, element);
13997        }
13998        if (isCanvasElement(element)) {
13999            return new CanvasElementContainer(context, element);
14000        }
14001        if (isSVGElement(element)) {
14002            return new SVGElementContainer(context, element);
14003        }
14004        if (isLIElement(element)) {
14005            return new LIElementContainer(context, element);
14006        }
14007        if (isOLElement(element)) {
14008            return new OLElementContainer(context, element);
14009        }
14010        if (isInputElement(element)) {
14011            return new InputElementContainer(context, element);
14012        }
14013        if (isSelectElement(element)) {
14014            return new SelectElementContainer(context, element);
14015        }
14016        if (isTextareaElement(element)) {
14017            return new TextareaElementContainer(context, element);
14018        }
14019        if (isIFrameElement(element)) {
14020            return new IFrameElementContainer(context, element);
14021        }
14022        return new ElementContainer(context, element);
14023    };
14024    var parseTree = function (context, element) {
14025        var container = createContainer(context, element);
14026        container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;
14027        parseNodeTree(context, element, container, container);
14028        return container;
14029    };
14030    var createsRealStackingContext = function (node, container, root) {
14031        return (container.styles.isPositionedWithZIndex() ||
14032            container.styles.opacity < 1 ||
14033            container.styles.isTransformed() ||
14034            (isBodyElement(node) && root.styles.isTransparent()));
14035    };
14036    var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };
14037    var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };
14038    var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };
14039    var isHTMLElementNode = function (node) {
14040        return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);
14041    };
14042    var isSVGElementNode = function (element) {
14043        return typeof element.className === 'object';
14044    };
14045    var isLIElement = function (node) { return node.tagName === 'LI'; };
14046    var isOLElement = function (node) { return node.tagName === 'OL'; };
14047    var isInputElement = function (node) { return node.tagName === 'INPUT'; };
14048    var isHTMLElement = function (node) { return node.tagName === 'HTML'; };
14049    var isSVGElement = function (node) { return node.tagName === 'svg'; };
14050    var isBodyElement = function (node) { return node.tagName === 'BODY'; };
14051    var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };
14052    var isVideoElement = function (node) { return node.tagName === 'VIDEO'; };
14053    var isImageElement = function (node) { return node.tagName === 'IMG'; };
14054    var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };
14055    var isStyleElement = function (node) { return node.tagName === 'STYLE'; };
14056    var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };
14057    var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };
14058    var isSelectElement = function (node) { return node.tagName === 'SELECT'; };
14059    var isSlotElement = function (node) { return node.tagName === 'SLOT'; };
14060    // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name
14061    var isCustomElement = function (node) { return node.tagName.indexOf('-') > 0; };
14062
14063    var CounterState = /** @class */ (function () {
14064        function CounterState() {
14065            this.counters = {};
14066        }
14067        CounterState.prototype.getCounterValue = function (name) {
14068            var counter = this.counters[name];
14069            if (counter && counter.length) {
14070                return counter[counter.length - 1];
14071            }
14072            return 1;
14073        };
14074        CounterState.prototype.getCounterValues = function (name) {
14075            var counter = this.counters[name];
14076            return counter ? counter : [];
14077        };
14078        CounterState.prototype.pop = function (counters) {
14079            var _this = this;
14080            counters.forEach(function (counter) { return _this.counters[counter].pop(); });
14081        };
14082        CounterState.prototype.parse = function (style) {
14083            var _this = this;
14084            var counterIncrement = style.counterIncrement;
14085            var counterReset = style.counterReset;
14086            var canReset = true;
14087            if (counterIncrement !== null) {
14088                counterIncrement.forEach(function (entry) {
14089                    var counter = _this.counters[entry.counter];
14090                    if (counter && entry.increment !== 0) {
14091                        canReset = false;
14092                        if (!counter.length) {
14093                            counter.push(1);
14094                        }
14095                        counter[Math.max(0, counter.length - 1)] += entry.increment;
14096                    }
14097                });
14098            }
14099            var counterNames = [];
14100            if (canReset) {
14101                counterReset.forEach(function (entry) {
14102                    var counter = _this.counters[entry.counter];
14103                    counterNames.push(entry.counter);
14104                    if (!counter) {
14105                        counter = _this.counters[entry.counter] = [];
14106                    }
14107                    counter.push(entry.reset);
14108                });
14109            }
14110            return counterNames;
14111        };
14112        return CounterState;
14113    }());
14114    var ROMAN_UPPER = {
14115        integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
14116        values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
14117    };
14118    var ARMENIAN = {
14119        integers: [
14120            9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,
14121            60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
14122        ],
14123        values: [
14124            'Ք',
14125            'Փ',
14126            'Ւ',
14127            'Ց',
14128            'Ր',
14129            'Տ',
14130            'Վ',
14131            'Ս',
14132            'Ռ',
14133            'Ջ',
14134            'Պ',
14135            'Չ',
14136            'Ո',
14137            'Շ',
14138            'Ն',
14139            'Յ',
14140            'Մ',
14141            'Ճ',
14142            'Ղ',
14143            'Ձ',
14144            'Հ',
14145            'Ô¿',
14146            'Ô¾',
14147            'Ô½',
14148            'Ô¼',
14149            'Ô»',
14150            'Ôº',
14151            'Ô¹',
14152            'Ô¸',
14153            'Ô·',
14154            'Ô¶',
14155            'Ôµ',
14156            'Ô´',
14157            'Ô³',
14158            'Ô²',
14159            'Ô±'
14160        ]
14161    };
14162    var HEBREW = {
14163        integers: [
14164            10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,
14165            19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
14166        ],
14167        values: [
14168            'י׳',
14169            'ט׳',
14170            'ח׳',
14171            'ז׳',
14172            'ו׳',
14173            'ה׳',
14174            'ד׳',
14175            'ג׳',
14176            'ב׳',
14177            'א׳',
14178            'ת',
14179            'ש',
14180            'ר',
14181            '×§',
14182            'צ',
14183            'פ',
14184            '×¢',
14185            'ס',
14186            '× ',
14187            'מ',
14188            'ל',
14189            'כ',
14190            'יט',
14191            'יח',
14192            'יז',
14193            'טז',
14194            'טו',
14195            'י',
14196            'ט',
14197            'ח',
14198            'ז',
14199            'ו',
14200            'ה',
14201            'ד',
14202            'ג',
14203            'ב',
14204            'א'
14205        ]
14206    };
14207    var GEORGIAN = {
14208        integers: [
14209            10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,
14210            80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
14211        ],
14212        values: [
14213            'ჵ',
14214            'ჰ',
14215            'ჯ',
14216            'ჴ',
14217            'ხ',
14218            'ჭ',
14219            'წ',
14220            'ძ',
14221            'ც',
14222            'ჩ',
14223            'შ',
14224            'ყ',
14225            'ღ',
14226            'ქ',
14227            'ფ',
14228            'ჳ',
14229            'ტ',
14230            'ს',
14231            'რ',
14232            'ჟ',
14233            'პ',
14234            'ო',
14235            'ჲ',
14236            'ნ',
14237            'მ',
14238            'ლ',
14239            'კ',
14240            'ი',
14241            'თ',
14242            'ჱ',
14243            'ზ',
14244            'ვ',
14245            'ე',
14246            'დ',
14247            'გ',
14248            'ბ',
14249            'ა'
14250        ]
14251    };
14252    var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {
14253        if (value < min || value > max) {
14254            return createCounterText(value, fallback, suffix.length > 0);
14255        }
14256        return (symbols.integers.reduce(function (string, integer, index) {
14257            while (value >= integer) {
14258                value -= integer;
14259                string += symbols.values[index];
14260            }
14261            return string;
14262        }, '') + suffix);
14263    };
14264    var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {
14265        var string = '';
14266        do {
14267            if (!isNumeric) {
14268                value--;
14269            }
14270            string = resolver(value) + string;
14271            value /= codePointRangeLength;
14272        } while (value * codePointRangeLength >= codePointRangeLength);
14273        return string;
14274    };
14275    var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {
14276        var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
14277        return ((value < 0 ? '-' : '') +
14278            (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {
14279                return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
14280            }) +
14281                suffix));
14282    };
14283    var createCounterStyleFromSymbols = function (value, symbols, suffix) {
14284        if (suffix === void 0) { suffix = '. '; }
14285        var codePointRangeLength = symbols.length;
14286        return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);
14287    };
14288    var CJK_ZEROS = 1 << 0;
14289    var CJK_TEN_COEFFICIENTS = 1 << 1;
14290    var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
14291    var CJK_HUNDRED_COEFFICIENTS = 1 << 3;
14292    var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {
14293        if (value < -9999 || value > 9999) {
14294            return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);
14295        }
14296        var tmp = Math.abs(value);
14297        var string = suffix;
14298        if (tmp === 0) {
14299            return numbers[0] + string;
14300        }
14301        for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
14302            var coefficient = tmp % 10;
14303            if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {
14304                string = numbers[coefficient] + string;
14305            }
14306            else if (coefficient > 1 ||
14307                (coefficient === 1 && digit === 0) ||
14308                (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||
14309                (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||
14310                (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) {
14311                string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;
14312            }
14313            else if (coefficient === 1 && digit > 0) {
14314                string = multipliers[digit - 1] + string;
14315            }
14316            tmp = Math.floor(tmp / 10);
14317        }
14318        return (value < 0 ? negativeSign : '') + string;
14319    };
14320    var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';
14321    var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';
14322    var JAPANESE_NEGATIVE = 'マイナス';
14323    var KOREAN_NEGATIVE = '마이너스';
14324    var createCounterText = function (value, type, appendSuffix) {
14325        var defaultSuffix = appendSuffix ? '. ' : '';
14326        var cjkSuffix = appendSuffix ? '、' : '';
14327        var koreanSuffix = appendSuffix ? ', ' : '';
14328        var spaceSuffix = appendSuffix ? ' ' : '';
14329        switch (type) {
14330            case 0 /* DISC */:
14331                return '•' + spaceSuffix;
14332            case 1 /* CIRCLE */:
14333                return '◦' + spaceSuffix;
14334            case 2 /* SQUARE */:
14335                return '◾' + spaceSuffix;
14336            case 5 /* DECIMAL_LEADING_ZERO */:
14337                var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
14338                return string.length < 4 ? "0" + string : string;
14339            case 4 /* CJK_DECIMAL */:
14340                return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);
14341            case 6 /* LOWER_ROMAN */:
14342                return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase();
14343            case 7 /* UPPER_ROMAN */:
14344                return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix);
14345            case 8 /* LOWER_GREEK */:
14346                return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
14347            case 9 /* LOWER_ALPHA */:
14348                return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
14349            case 10 /* UPPER_ALPHA */:
14350                return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
14351            case 11 /* ARABIC_INDIC */:
14352                return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
14353            case 12 /* ARMENIAN */:
14354            case 49 /* UPPER_ARMENIAN */:
14355                return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix);
14356            case 35 /* LOWER_ARMENIAN */:
14357                return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase();
14358            case 13 /* BENGALI */:
14359                return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
14360            case 14 /* CAMBODIAN */:
14361            case 30 /* KHMER */:
14362                return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
14363            case 15 /* CJK_EARTHLY_BRANCH */:
14364                return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);
14365            case 16 /* CJK_HEAVENLY_STEM */:
14366                return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);
14367            case 17 /* CJK_IDEOGRAPHIC */:
14368            case 48 /* TRAD_CHINESE_INFORMAL */:
14369                return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
14370            case 47 /* TRAD_CHINESE_FORMAL */:
14371                return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
14372            case 42 /* SIMP_CHINESE_INFORMAL */:
14373                return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
14374            case 41 /* SIMP_CHINESE_FORMAL */:
14375                return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
14376            case 26 /* JAPANESE_INFORMAL */:
14377                return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);
14378            case 25 /* JAPANESE_FORMAL */:
14379                return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
14380            case 31 /* KOREAN_HANGUL_FORMAL */:
14381                return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
14382            case 33 /* KOREAN_HANJA_INFORMAL */:
14383                return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);
14384            case 32 /* KOREAN_HANJA_FORMAL */:
14385                return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
14386            case 18 /* DEVANAGARI */:
14387                return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);
14388            case 20 /* GEORGIAN */:
14389                return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix);
14390            case 21 /* GUJARATI */:
14391                return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);
14392            case 22 /* GURMUKHI */:
14393                return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);
14394            case 22 /* HEBREW */:
14395                return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix);
14396            case 23 /* HIRAGANA */:
14397                return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');
14398            case 24 /* HIRAGANA_IROHA */:
14399                return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');
14400            case 27 /* KANNADA */:
14401                return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);
14402            case 28 /* KATAKANA */:
14403                return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);
14404            case 29 /* KATAKANA_IROHA */:
14405                return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);
14406            case 34 /* LAO */:
14407                return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);
14408            case 37 /* MONGOLIAN */:
14409                return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);
14410            case 38 /* MYANMAR */:
14411                return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);
14412            case 39 /* ORIYA */:
14413                return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);
14414            case 40 /* PERSIAN */:
14415                return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);
14416            case 43 /* TAMIL */:
14417                return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);
14418            case 44 /* TELUGU */:
14419                return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);
14420            case 45 /* THAI */:
14421                return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);
14422            case 46 /* TIBETAN */:
14423                return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);
14424            case 3 /* DECIMAL */:
14425            default:
14426                return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
14427        }
14428    };
14429
14430    var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';
14431    var DocumentCloner = /** @class */ (function () {
14432        function DocumentCloner(context, element, options) {
14433            this.context = context;
14434            this.options = options;
14435            this.scrolledElements = [];
14436            this.referenceElement = element;
14437            this.counters = new CounterState();
14438            this.quoteDepth = 0;
14439            if (!element.ownerDocument) {
14440                throw new Error('Cloned element does not have an owner document');
14441            }
14442            this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);
14443        }
14444        DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {
14445            var _this = this;
14446            var iframe = createIFrameContainer(ownerDocument, windowSize);
14447            if (!iframe.contentWindow) {
14448                return Promise.reject("Unable to find iframe window");
14449            }
14450            var scrollX = ownerDocument.defaultView.pageXOffset;
14451            var scrollY = ownerDocument.defaultView.pageYOffset;
14452            var cloneWindow = iframe.contentWindow;
14453            var documentClone = cloneWindow.document;
14454            /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle
14455             if window url is about:blank, we can assign the url to current by writing onto the document
14456             */
14457            var iframeLoad = iframeLoader(iframe).then(function () { return __awaiter(_this, void 0, void 0, function () {
14458                var onclone, referenceElement;
14459                return __generator(this, function (_a) {
14460                    switch (_a.label) {
14461                        case 0:
14462                            this.scrolledElements.forEach(restoreNodeScroll);
14463                            if (cloneWindow) {
14464                                cloneWindow.scrollTo(windowSize.left, windowSize.top);
14465                                if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&
14466                                    (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {
14467                                    this.context.logger.warn('Unable to restore scroll position for cloned document');
14468                                    this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);
14469                                }
14470                            }
14471                            onclone = this.options.onclone;
14472                            referenceElement = this.clonedReferenceElement;
14473                            if (typeof referenceElement === 'undefined') {
14474                                return [2 /*return*/, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")];
14475                            }
14476                            if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];
14477                            return [4 /*yield*/, documentClone.fonts.ready];
14478                        case 1:
14479                            _a.sent();
14480                            _a.label = 2;
14481                        case 2:
14482                            if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3 /*break*/, 4];
14483                            return [4 /*yield*/, imagesReady(documentClone)];
14484                        case 3:
14485                            _a.sent();
14486                            _a.label = 4;
14487                        case 4:
14488                            if (typeof onclone === 'function') {
14489                                return [2 /*return*/, Promise.resolve()
14490                                        .then(function () { return onclone(documentClone, referenceElement); })
14491                                        .then(function () { return iframe; })];
14492                            }
14493                            return [2 /*return*/, iframe];
14494                    }
14495                });
14496            }); });
14497            documentClone.open();
14498            documentClone.write(serializeDoctype(document.doctype) + "<html></html>");
14499            // Chrome scrolls the parent document for some reason after the write to the cloned window???
14500            restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);
14501            documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);
14502            documentClone.close();
14503            return iframeLoad;
14504        };
14505        DocumentCloner.prototype.createElementClone = function (node) {
14506            if (isDebugging(node, 2 /* CLONE */)) {
14507                debugger;
14508            }
14509            if (isCanvasElement(node)) {
14510                return this.createCanvasClone(node);
14511            }
14512            if (isVideoElement(node)) {
14513                return this.createVideoClone(node);
14514            }
14515            if (isStyleElement(node)) {
14516                return this.createStyleClone(node);
14517            }
14518            var clone = node.cloneNode(false);
14519            if (isImageElement(clone)) {
14520                if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {
14521                    clone.src = node.currentSrc;
14522                    clone.srcset = '';
14523                }
14524                if (clone.loading === 'lazy') {
14525                    clone.loading = 'eager';
14526                }
14527            }
14528            if (isCustomElement(clone)) {
14529                return this.createCustomElementClone(clone);
14530            }
14531            return clone;
14532        };
14533        DocumentCloner.prototype.createCustomElementClone = function (node) {
14534            var clone = document.createElement('html2canvascustomelement');
14535            copyCSSStyles(node.style, clone);
14536            return clone;
14537        };
14538        DocumentCloner.prototype.createStyleClone = function (node) {
14539            try {
14540                var sheet = node.sheet;
14541                if (sheet && sheet.cssRules) {
14542                    var css = [].slice.call(sheet.cssRules, 0).reduce(function (css, rule) {
14543                        if (rule && typeof rule.cssText === 'string') {
14544                            return css + rule.cssText;
14545                        }
14546                        return css;
14547                    }, '');
14548                    var style = node.cloneNode(false);
14549                    style.textContent = css;
14550                    return style;
14551                }
14552            }
14553            catch (e) {
14554                // accessing node.sheet.cssRules throws a DOMException
14555                this.context.logger.error('Unable to access cssRules property', e);
14556                if (e.name !== 'SecurityError') {
14557                    throw e;
14558                }
14559            }
14560            return node.cloneNode(false);
14561        };
14562        DocumentCloner.prototype.createCanvasClone = function (canvas) {
14563            var _a;
14564            if (this.options.inlineImages && canvas.ownerDocument) {
14565                var img = canvas.ownerDocument.createElement('img');
14566                try {
14567                    img.src = canvas.toDataURL();
14568                    return img;
14569                }
14570                catch (e) {
14571                    this.context.logger.info("Unable to inline canvas contents, canvas is tainted", canvas);
14572                }
14573            }
14574            var clonedCanvas = canvas.cloneNode(false);
14575            try {
14576                clonedCanvas.width = canvas.width;
14577                clonedCanvas.height = canvas.height;
14578                var ctx = canvas.getContext('2d');
14579                var clonedCtx = clonedCanvas.getContext('2d');
14580                if (clonedCtx) {
14581                    if (!this.options.allowTaint && ctx) {
14582                        clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
14583                    }
14584                    else {
14585                        var gl = (_a = canvas.getContext('webgl2')) !== null && _a !== void 0 ? _a : canvas.getContext('webgl');
14586                        if (gl) {
14587                            var attribs = gl.getContextAttributes();
14588                            if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {
14589                                this.context.logger.warn('Unable to clone WebGL context as it has preserveDrawingBuffer=false', canvas);
14590                            }
14591                        }
14592                        clonedCtx.drawImage(canvas, 0, 0);
14593                    }
14594                }
14595                return clonedCanvas;
14596            }
14597            catch (e) {
14598                this.context.logger.info("Unable to clone canvas as it is tainted", canvas);
14599            }
14600            return clonedCanvas;
14601        };
14602        DocumentCloner.prototype.createVideoClone = function (video) {
14603            var canvas = video.ownerDocument.createElement('canvas');
14604            canvas.width = video.offsetWidth;
14605            canvas.height = video.offsetHeight;
14606            var ctx = canvas.getContext('2d');
14607            try {
14608                if (ctx) {
14609                    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
14610                    if (!this.options.allowTaint) {
14611                        ctx.getImageData(0, 0, canvas.width, canvas.height);
14612                    }
14613                }
14614                return canvas;
14615            }
14616            catch (e) {
14617                this.context.logger.info("Unable to clone video as it is tainted", video);
14618            }
14619            var blankCanvas = video.ownerDocument.createElement('canvas');
14620            blankCanvas.width = video.offsetWidth;
14621            blankCanvas.height = video.offsetHeight;
14622            return blankCanvas;
14623        };
14624        DocumentCloner.prototype.appendChildNode = function (clone, child, copyStyles) {
14625            if (!isElementNode(child) ||
14626                (!isScriptElement(child) &&
14627                    !child.hasAttribute(IGNORE_ATTRIBUTE) &&
14628                    (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {
14629                if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
14630                    clone.appendChild(this.cloneNode(child, copyStyles));
14631                }
14632            }
14633        };
14634        DocumentCloner.prototype.cloneChildNodes = function (node, clone, copyStyles) {
14635            var _this = this;
14636            for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {
14637                if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {
14638                    var assignedNodes = child.assignedNodes();
14639                    if (assignedNodes.length) {
14640                        assignedNodes.forEach(function (assignedNode) { return _this.appendChildNode(clone, assignedNode, copyStyles); });
14641                    }
14642                }
14643                else {
14644                    this.appendChildNode(clone, child, copyStyles);
14645                }
14646            }
14647        };
14648        DocumentCloner.prototype.cloneNode = function (node, copyStyles) {
14649            if (isTextNode(node)) {
14650                return document.createTextNode(node.data);
14651            }
14652            if (!node.ownerDocument) {
14653                return node.cloneNode(false);
14654            }
14655            var window = node.ownerDocument.defaultView;
14656            if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {
14657                var clone = this.createElementClone(node);
14658                clone.style.transitionProperty = 'none';
14659                var style = window.getComputedStyle(node);
14660                var styleBefore = window.getComputedStyle(node, ':before');
14661                var styleAfter = window.getComputedStyle(node, ':after');
14662                if (this.referenceElement === node && isHTMLElementNode(clone)) {
14663                    this.clonedReferenceElement = clone;
14664                }
14665                if (isBodyElement(clone)) {
14666                    createPseudoHideStyles(clone);
14667                }
14668                var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
14669                var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);
14670                if (isCustomElement(node)) {
14671                    copyStyles = true;
14672                }
14673                if (!isVideoElement(node)) {
14674                    this.cloneChildNodes(node, clone, copyStyles);
14675                }
14676                if (before) {
14677                    clone.insertBefore(before, clone.firstChild);
14678                }
14679                var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);
14680                if (after) {
14681                    clone.appendChild(after);
14682                }
14683                this.counters.pop(counters);
14684                if ((style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||
14685                    copyStyles) {
14686                    copyCSSStyles(style, clone);
14687                }
14688                if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
14689                    this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);
14690                }
14691                if ((isTextareaElement(node) || isSelectElement(node)) &&
14692                    (isTextareaElement(clone) || isSelectElement(clone))) {
14693                    clone.value = node.value;
14694                }
14695                return clone;
14696            }
14697            return node.cloneNode(false);
14698        };
14699        DocumentCloner.prototype.resolvePseudoContent = function (node, clone, style, pseudoElt) {
14700            var _this = this;
14701            if (!style) {
14702                return;
14703            }
14704            var value = style.content;
14705            var document = clone.ownerDocument;
14706            if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {
14707                return;
14708            }
14709            this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
14710            var declaration = new CSSParsedPseudoDeclaration(this.context, style);
14711            var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');
14712            copyCSSStyles(style, anonymousReplacedElement);
14713            declaration.content.forEach(function (token) {
14714                if (token.type === 0 /* STRING_TOKEN */) {
14715                    anonymousReplacedElement.appendChild(document.createTextNode(token.value));
14716                }
14717                else if (token.type === 22 /* URL_TOKEN */) {
14718                    var img = document.createElement('img');
14719                    img.src = token.value;
14720                    img.style.opacity = '1';
14721                    anonymousReplacedElement.appendChild(img);
14722                }
14723                else if (token.type === 18 /* FUNCTION */) {
14724                    if (token.name === 'attr') {
14725                        var attr = token.values.filter(isIdentToken);
14726                        if (attr.length) {
14727                            anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));
14728                        }
14729                    }
14730                    else if (token.name === 'counter') {
14731                        var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];
14732                        if (counter && isIdentToken(counter)) {
14733                            var counterState = _this.counters.getCounterValue(counter.value);
14734                            var counterType = counterStyle && isIdentToken(counterStyle)
14735                                ? listStyleType.parse(_this.context, counterStyle.value)
14736                                : 3 /* DECIMAL */;
14737                            anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));
14738                        }
14739                    }
14740                    else if (token.name === 'counters') {
14741                        var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];
14742                        if (counter && isIdentToken(counter)) {
14743                            var counterStates = _this.counters.getCounterValues(counter.value);
14744                            var counterType_1 = counterStyle && isIdentToken(counterStyle)
14745                                ? listStyleType.parse(_this.context, counterStyle.value)
14746                                : 3 /* DECIMAL */;
14747                            var separator = delim && delim.type === 0 /* STRING_TOKEN */ ? delim.value : '';
14748                            var text = counterStates
14749                                .map(function (value) { return createCounterText(value, counterType_1, false); })
14750                                .join(separator);
14751                            anonymousReplacedElement.appendChild(document.createTextNode(text));
14752                        }
14753                    }
14754                    else ;
14755                }
14756                else if (token.type === 20 /* IDENT_TOKEN */) {
14757                    switch (token.value) {
14758                        case 'open-quote':
14759                            anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));
14760                            break;
14761                        case 'close-quote':
14762                            anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));
14763                            break;
14764                        default:
14765                            // safari doesn't parse string tokens correctly because of lack of quotes
14766                            anonymousReplacedElement.appendChild(document.createTextNode(token.value));
14767                    }
14768                }
14769            });
14770            anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
14771            var newClassName = pseudoElt === PseudoElementType.BEFORE
14772                ? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE
14773                : " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
14774            if (isSVGElementNode(clone)) {
14775                clone.className.baseValue += newClassName;
14776            }
14777            else {
14778                clone.className += newClassName;
14779            }
14780            return anonymousReplacedElement;
14781        };
14782        DocumentCloner.destroy = function (container) {
14783            if (container.parentNode) {
14784                container.parentNode.removeChild(container);
14785                return true;
14786            }
14787            return false;
14788        };
14789        return DocumentCloner;
14790    }());
14791    var PseudoElementType;
14792    (function (PseudoElementType) {
14793        PseudoElementType[PseudoElementType["BEFORE"] = 0] = "BEFORE";
14794        PseudoElementType[PseudoElementType["AFTER"] = 1] = "AFTER";
14795    })(PseudoElementType || (PseudoElementType = {}));
14796    var createIFrameContainer = function (ownerDocument, bounds) {
14797        var cloneIframeContainer = ownerDocument.createElement('iframe');
14798        cloneIframeContainer.className = 'html2canvas-container';
14799        cloneIframeContainer.style.visibility = 'hidden';
14800        cloneIframeContainer.style.position = 'fixed';
14801        cloneIframeContainer.style.left = '-10000px';
14802        cloneIframeContainer.style.top = '0px';
14803        cloneIframeContainer.style.border = '0';
14804        cloneIframeContainer.width = bounds.width.toString();
14805        cloneIframeContainer.height = bounds.height.toString();
14806        cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it
14807        cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');
14808        ownerDocument.body.appendChild(cloneIframeContainer);
14809        return cloneIframeContainer;
14810    };
14811    var imageReady = function (img) {
14812        return new Promise(function (resolve) {
14813            if (img.complete) {
14814                resolve();
14815                return;
14816            }
14817            if (!img.src) {
14818                resolve();
14819                return;
14820            }
14821            img.onload = resolve;
14822            img.onerror = resolve;
14823        });
14824    };
14825    var imagesReady = function (document) {
14826        return Promise.all([].slice.call(document.images, 0).map(imageReady));
14827    };
14828    var iframeLoader = function (iframe) {
14829        return new Promise(function (resolve, reject) {
14830            var cloneWindow = iframe.contentWindow;
14831            if (!cloneWindow) {
14832                return reject("No window assigned for iframe");
14833            }
14834            var documentClone = cloneWindow.document;
14835            cloneWindow.onload = iframe.onload = function () {
14836                cloneWindow.onload = iframe.onload = null;
14837                var interval = setInterval(function () {
14838                    if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {
14839                        clearInterval(interval);
14840                        resolve(iframe);
14841                    }
14842                }, 50);
14843            };
14844        });
14845    };
14846    var ignoredStyleProperties = [
14847        'all',
14848        'd',
14849        'content' // Safari shows pseudoelements if content is set
14850    ];
14851    var copyCSSStyles = function (style, target) {
14852        // Edge does not provide value for cssText
14853        for (var i = style.length - 1; i >= 0; i--) {
14854            var property = style.item(i);
14855            if (ignoredStyleProperties.indexOf(property) === -1) {
14856                target.style.setProperty(property, style.getPropertyValue(property));
14857            }
14858        }
14859        return target;
14860    };
14861    var serializeDoctype = function (doctype) {
14862        var str = '';
14863        if (doctype) {
14864            str += '<!DOCTYPE ';
14865            if (doctype.name) {
14866                str += doctype.name;
14867            }
14868            if (doctype.internalSubset) {
14869                str += doctype.internalSubset;
14870            }
14871            if (doctype.publicId) {
14872                str += "\"" + doctype.publicId + "\"";
14873            }
14874            if (doctype.systemId) {
14875                str += "\"" + doctype.systemId + "\"";
14876            }
14877            str += '>';
14878        }
14879        return str;
14880    };
14881    var restoreOwnerScroll = function (ownerDocument, x, y) {
14882        if (ownerDocument &&
14883            ownerDocument.defaultView &&
14884            (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {
14885            ownerDocument.defaultView.scrollTo(x, y);
14886        }
14887    };
14888    var restoreNodeScroll = function (_a) {
14889        var element = _a[0], x = _a[1], y = _a[2];
14890        element.scrollLeft = x;
14891        element.scrollTop = y;
14892    };
14893    var PSEUDO_BEFORE = ':before';
14894    var PSEUDO_AFTER = ':after';
14895    var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';
14896    var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';
14897    var PSEUDO_HIDE_ELEMENT_STYLE = "{\n    content: \"\" !important;\n    display: none !important;\n}";
14898    var createPseudoHideStyles = function (body) {
14899        createStyles(body, "." + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + "\n         ." + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);
14900    };
14901    var createStyles = function (body, styles) {
14902        var document = body.ownerDocument;
14903        if (document) {
14904            var style = document.createElement('style');
14905            style.textContent = styles;
14906            body.appendChild(style);
14907        }
14908    };
14909
14910    var CacheStorage = /** @class */ (function () {
14911        function CacheStorage() {
14912        }
14913        CacheStorage.getOrigin = function (url) {
14914            var link = CacheStorage._link;
14915            if (!link) {
14916                return 'about:blank';
14917            }
14918            link.href = url;
14919            link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/
14920            return link.protocol + link.hostname + link.port;
14921        };
14922        CacheStorage.isSameOrigin = function (src) {
14923            return CacheStorage.getOrigin(src) === CacheStorage._origin;
14924        };
14925        CacheStorage.setContext = function (window) {
14926            CacheStorage._link = window.document.createElement('a');
14927            CacheStorage._origin = CacheStorage.getOrigin(window.location.href);
14928        };
14929        CacheStorage._origin = 'about:blank';
14930        return CacheStorage;
14931    }());
14932    var Cache = /** @class */ (function () {
14933        function Cache(context, _options) {
14934            this.context = context;
14935            this._options = _options;
14936            // eslint-disable-next-line @typescript-eslint/no-explicit-any
14937            this._cache = {};
14938        }
14939        Cache.prototype.addImage = function (src) {
14940            var result = Promise.resolve();
14941            if (this.has(src)) {
14942                return result;
14943            }
14944            if (isBlobImage(src) || isRenderable(src)) {
14945                (this._cache[src] = this.loadImage(src)).catch(function () {
14946                    // prevent unhandled rejection
14947                });
14948                return result;
14949            }
14950            return result;
14951        };
14952        // eslint-disable-next-line @typescript-eslint/no-explicit-any
14953        Cache.prototype.match = function (src) {
14954            return this._cache[src];
14955        };
14956        Cache.prototype.loadImage = function (key) {
14957            return __awaiter(this, void 0, void 0, function () {
14958                var isSameOrigin, useCORS, useProxy, src;
14959                var _this = this;
14960                return __generator(this, function (_a) {
14961                    switch (_a.label) {
14962                        case 0:
14963                            isSameOrigin = CacheStorage.isSameOrigin(key);
14964                            useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;
14965                            useProxy = !isInlineImage(key) &&
14966                                !isSameOrigin &&
14967                                !isBlobImage(key) &&
14968                                typeof this._options.proxy === 'string' &&
14969                                FEATURES.SUPPORT_CORS_XHR &&
14970                                !useCORS;
14971                            if (!isSameOrigin &&
14972                                this._options.allowTaint === false &&
14973                                !isInlineImage(key) &&
14974                                !isBlobImage(key) &&
14975                                !useProxy &&
14976                                !useCORS) {
14977                                return [2 /*return*/];
14978                            }
14979                            src = key;
14980                            if (!useProxy) return [3 /*break*/, 2];
14981                            return [4 /*yield*/, this.proxy(src)];
14982                        case 1:
14983                            src = _a.sent();
14984                            _a.label = 2;
14985                        case 2:
14986                            this.context.logger.debug("Added image " + key.substring(0, 256));
14987                            return [4 /*yield*/, new Promise(function (resolve, reject) {
14988                                    var img = new Image();
14989                                    img.onload = function () { return resolve(img); };
14990                                    img.onerror = reject;
14991                                    //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous
14992                                    if (isInlineBase64Image(src) || useCORS) {
14993                                        img.crossOrigin = 'anonymous';
14994                                    }
14995                                    img.src = src;
14996                                    if (img.complete === true) {
14997                                        // Inline XML images may fail to parse, throwing an Error later on
14998                                        setTimeout(function () { return resolve(img); }, 500);
14999                                    }
15000                                    if (_this._options.imageTimeout > 0) {
15001                                        setTimeout(function () { return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image"); }, _this._options.imageTimeout);
15002                                    }
15003                                })];
15004                        case 3: return [2 /*return*/, _a.sent()];
15005                    }
15006                });
15007            });
15008        };
15009        Cache.prototype.has = function (key) {
15010            return typeof this._cache[key] !== 'undefined';
15011        };
15012        Cache.prototype.keys = function () {
15013            return Promise.resolve(Object.keys(this._cache));
15014        };
15015        Cache.prototype.proxy = function (src) {
15016            var _this = this;
15017            var proxy = this._options.proxy;
15018            if (!proxy) {
15019                throw new Error('No proxy defined');
15020            }
15021            var key = src.substring(0, 256);
15022            return new Promise(function (resolve, reject) {
15023                var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';
15024                var xhr = new XMLHttpRequest();
15025                xhr.onload = function () {
15026                    if (xhr.status === 200) {
15027                        if (responseType === 'text') {
15028                            resolve(xhr.response);
15029                        }
15030                        else {
15031                            var reader_1 = new FileReader();
15032                            reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);
15033                            reader_1.addEventListener('error', function (e) { return reject(e); }, false);
15034                            reader_1.readAsDataURL(xhr.response);
15035                        }
15036                    }
15037                    else {
15038                        reject("Failed to proxy resource " + key + " with status code " + xhr.status);
15039                    }
15040                };
15041                xhr.onerror = reject;
15042                var queryString = proxy.indexOf('?') > -1 ? '&' : '?';
15043                xhr.open('GET', "" + proxy + queryString + "url=" + encodeURIComponent(src) + "&responseType=" + responseType);
15044                if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {
15045                    xhr.responseType = responseType;
15046                }
15047                if (_this._options.imageTimeout) {
15048                    var timeout_1 = _this._options.imageTimeout;
15049                    xhr.timeout = timeout_1;
15050                    xhr.ontimeout = function () { return reject("Timed out (" + timeout_1 + "ms) proxying " + key); };
15051                }
15052                xhr.send();
15053            });
15054        };
15055        return Cache;
15056    }());
15057    var INLINE_SVG = /^data:image\/svg\+xml/i;
15058    var INLINE_BASE64 = /^data:image\/.*;base64,/i;
15059    var INLINE_IMG = /^data:image\/.*/i;
15060    var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };
15061    var isInlineImage = function (src) { return INLINE_IMG.test(src); };
15062    var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };
15063    var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };
15064    var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };
15065
15066    var Vector = /** @class */ (function () {
15067        function Vector(x, y) {
15068            this.type = 0 /* VECTOR */;
15069            this.x = x;
15070            this.y = y;
15071        }
15072        Vector.prototype.add = function (deltaX, deltaY) {
15073            return new Vector(this.x + deltaX, this.y + deltaY);
15074        };
15075        return Vector;
15076    }());
15077
15078    var lerp = function (a, b, t) {
15079        return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);
15080    };
15081    var BezierCurve = /** @class */ (function () {
15082        function BezierCurve(start, startControl, endControl, end) {
15083            this.type = 1 /* BEZIER_CURVE */;
15084            this.start = start;
15085            this.startControl = startControl;
15086            this.endControl = endControl;
15087            this.end = end;
15088        }
15089        BezierCurve.prototype.subdivide = function (t, firstHalf) {
15090            var ab = lerp(this.start, this.startControl, t);
15091            var bc = lerp(this.startControl, this.endControl, t);
15092            var cd = lerp(this.endControl, this.end, t);
15093            var abbc = lerp(ab, bc, t);
15094            var bccd = lerp(bc, cd, t);
15095            var dest = lerp(abbc, bccd, t);
15096            return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);
15097        };
15098        BezierCurve.prototype.add = function (deltaX, deltaY) {
15099            return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));
15100        };
15101        BezierCurve.prototype.reverse = function () {
15102            return new BezierCurve(this.end, this.endControl, this.startControl, this.start);
15103        };
15104        return BezierCurve;
15105    }());
15106    var isBezierCurve = function (path) { return path.type === 1 /* BEZIER_CURVE */; };
15107
15108    var BoundCurves = /** @class */ (function () {
15109        function BoundCurves(element) {
15110            var styles = element.styles;
15111            var bounds = element.bounds;
15112            var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];
15113            var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];
15114            var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];
15115            var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];
15116            var factors = [];
15117            factors.push((tlh + trh) / bounds.width);
15118            factors.push((blh + brh) / bounds.width);
15119            factors.push((tlv + blv) / bounds.height);
15120            factors.push((trv + brv) / bounds.height);
15121            var maxFactor = Math.max.apply(Math, factors);
15122            if (maxFactor > 1) {
15123                tlh /= maxFactor;
15124                tlv /= maxFactor;
15125                trh /= maxFactor;
15126                trv /= maxFactor;
15127                brh /= maxFactor;
15128                brv /= maxFactor;
15129                blh /= maxFactor;
15130                blv /= maxFactor;
15131            }
15132            var topWidth = bounds.width - trh;
15133            var rightHeight = bounds.height - brv;
15134            var bottomWidth = bounds.width - brh;
15135            var leftHeight = bounds.height - blv;
15136            var borderTopWidth = styles.borderTopWidth;
15137            var borderRightWidth = styles.borderRightWidth;
15138            var borderBottomWidth = styles.borderBottomWidth;
15139            var borderLeftWidth = styles.borderLeftWidth;
15140            var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);
15141            var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);
15142            var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);
15143            var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);
15144            this.topLeftBorderDoubleOuterBox =
15145                tlh > 0 || tlv > 0
15146                    ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3, tlh - borderLeftWidth / 3, tlv - borderTopWidth / 3, CORNER.TOP_LEFT)
15147                    : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);
15148            this.topRightBorderDoubleOuterBox =
15149                tlh > 0 || tlv > 0
15150                    ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 3, trh - borderRightWidth / 3, trv - borderTopWidth / 3, CORNER.TOP_RIGHT)
15151                    : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);
15152            this.bottomRightBorderDoubleOuterBox =
15153                brh > 0 || brv > 0
15154                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 3, brv - borderBottomWidth / 3, CORNER.BOTTOM_RIGHT)
15155                    : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);
15156            this.bottomLeftBorderDoubleOuterBox =
15157                blh > 0 || blv > 0
15158                    ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + leftHeight, blh - borderLeftWidth / 3, blv - borderBottomWidth / 3, CORNER.BOTTOM_LEFT)
15159                    : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);
15160            this.topLeftBorderDoubleInnerBox =
15161                tlh > 0 || tlv > 0
15162                    ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3, tlh - (borderLeftWidth * 2) / 3, tlv - (borderTopWidth * 2) / 3, CORNER.TOP_LEFT)
15163                    : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);
15164            this.topRightBorderDoubleInnerBox =
15165                tlh > 0 || tlv > 0
15166                    ? getCurvePoints(bounds.left + topWidth, bounds.top + (borderTopWidth * 2) / 3, trh - (borderRightWidth * 2) / 3, trv - (borderTopWidth * 2) / 3, CORNER.TOP_RIGHT)
15167                    : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);
15168            this.bottomRightBorderDoubleInnerBox =
15169                brh > 0 || brv > 0
15170                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - (borderRightWidth * 2) / 3, brv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_RIGHT)
15171                    : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);
15172            this.bottomLeftBorderDoubleInnerBox =
15173                blh > 0 || blv > 0
15174                    ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + leftHeight, blh - (borderLeftWidth * 2) / 3, blv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_LEFT)
15175                    : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);
15176            this.topLeftBorderStroke =
15177                tlh > 0 || tlv > 0
15178                    ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2, tlh - borderLeftWidth / 2, tlv - borderTopWidth / 2, CORNER.TOP_LEFT)
15179                    : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);
15180            this.topRightBorderStroke =
15181                tlh > 0 || tlv > 0
15182                    ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 2, trh - borderRightWidth / 2, trv - borderTopWidth / 2, CORNER.TOP_RIGHT)
15183                    : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);
15184            this.bottomRightBorderStroke =
15185                brh > 0 || brv > 0
15186                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 2, brv - borderBottomWidth / 2, CORNER.BOTTOM_RIGHT)
15187                    : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);
15188            this.bottomLeftBorderStroke =
15189                blh > 0 || blv > 0
15190                    ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + leftHeight, blh - borderLeftWidth / 2, blv - borderBottomWidth / 2, CORNER.BOTTOM_LEFT)
15191                    : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);
15192            this.topLeftBorderBox =
15193                tlh > 0 || tlv > 0
15194                    ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)
15195                    : new Vector(bounds.left, bounds.top);
15196            this.topRightBorderBox =
15197                trh > 0 || trv > 0
15198                    ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)
15199                    : new Vector(bounds.left + bounds.width, bounds.top);
15200            this.bottomRightBorderBox =
15201                brh > 0 || brv > 0
15202                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)
15203                    : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);
15204            this.bottomLeftBorderBox =
15205                blh > 0 || blv > 0
15206                    ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)
15207                    : new Vector(bounds.left, bounds.top + bounds.height);
15208            this.topLeftPaddingBox =
15209                tlh > 0 || tlv > 0
15210                    ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT)
15211                    : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);
15212            this.topRightPaddingBox =
15213                trh > 0 || trv > 0
15214                    ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth), Math.max(0, trv - borderTopWidth), CORNER.TOP_RIGHT)
15215                    : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);
15216            this.bottomRightPaddingBox =
15217                brh > 0 || brv > 0
15218                    ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth), Math.max(0, brh - borderRightWidth), Math.max(0, brv - borderBottomWidth), CORNER.BOTTOM_RIGHT)
15219                    : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);
15220            this.bottomLeftPaddingBox =
15221                blh > 0 || blv > 0
15222                    ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth), Math.max(0, blh - borderLeftWidth), Math.max(0, blv - borderBottomWidth), CORNER.BOTTOM_LEFT)
15223                    : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);
15224            this.topLeftContentBox =
15225                tlh > 0 || tlv > 0
15226                    ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT)
15227                    : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);
15228            this.topRightContentBox =
15229                trh > 0 || trv > 0
15230                    ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft), bounds.top + borderTopWidth + paddingTop, topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft, trv - (borderTopWidth + paddingTop), CORNER.TOP_RIGHT)
15231                    : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + borderTopWidth + paddingTop);
15232            this.bottomRightContentBox =
15233                brh > 0 || brv > 0
15234                    ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop), Math.max(0, brh - (borderRightWidth + paddingRight)), brv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_RIGHT)
15235                    : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + bounds.height - (borderBottomWidth + paddingBottom));
15236            this.bottomLeftContentBox =
15237                blh > 0 || blv > 0
15238                    ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth + paddingLeft)), blv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_LEFT)
15239                    : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + bounds.height - (borderBottomWidth + paddingBottom));
15240        }
15241        return BoundCurves;
15242    }());
15243    var CORNER;
15244    (function (CORNER) {
15245        CORNER[CORNER["TOP_LEFT"] = 0] = "TOP_LEFT";
15246        CORNER[CORNER["TOP_RIGHT"] = 1] = "TOP_RIGHT";
15247        CORNER[CORNER["BOTTOM_RIGHT"] = 2] = "BOTTOM_RIGHT";
15248        CORNER[CORNER["BOTTOM_LEFT"] = 3] = "BOTTOM_LEFT";
15249    })(CORNER || (CORNER = {}));
15250    var getCurvePoints = function (x, y, r1, r2, position) {
15251        var kappa = 4 * ((Math.sqrt(2) - 1) / 3);
15252        var ox = r1 * kappa; // control point offset horizontal
15253        var oy = r2 * kappa; // control point offset vertical
15254        var xm = x + r1; // x-middle
15255        var ym = y + r2; // y-middle
15256        switch (position) {
15257            case CORNER.TOP_LEFT:
15258                return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));
15259            case CORNER.TOP_RIGHT:
15260                return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));
15261            case CORNER.BOTTOM_RIGHT:
15262                return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));
15263            case CORNER.BOTTOM_LEFT:
15264            default:
15265                return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));
15266        }
15267    };
15268    var calculateBorderBoxPath = function (curves) {
15269        return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];
15270    };
15271    var calculateContentBoxPath = function (curves) {
15272        return [
15273            curves.topLeftContentBox,
15274            curves.topRightContentBox,
15275            curves.bottomRightContentBox,
15276            curves.bottomLeftContentBox
15277        ];
15278    };
15279    var calculatePaddingBoxPath = function (curves) {
15280        return [
15281            curves.topLeftPaddingBox,
15282            curves.topRightPaddingBox,
15283            curves.bottomRightPaddingBox,
15284            curves.bottomLeftPaddingBox
15285        ];
15286    };
15287
15288    var TransformEffect = /** @class */ (function () {
15289        function TransformEffect(offsetX, offsetY, matrix) {
15290            this.offsetX = offsetX;
15291            this.offsetY = offsetY;
15292            this.matrix = matrix;
15293            this.type = 0 /* TRANSFORM */;
15294            this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;
15295        }
15296        return TransformEffect;
15297    }());
15298    var ClipEffect = /** @class */ (function () {
15299        function ClipEffect(path, target) {
15300            this.path = path;
15301            this.target = target;
15302            this.type = 1 /* CLIP */;
15303        }
15304        return ClipEffect;
15305    }());
15306    var OpacityEffect = /** @class */ (function () {
15307        function OpacityEffect(opacity) {
15308            this.opacity = opacity;
15309            this.type = 2 /* OPACITY */;
15310            this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;
15311        }
15312        return OpacityEffect;
15313    }());
15314    var isTransformEffect = function (effect) {
15315        return effect.type === 0 /* TRANSFORM */;
15316    };
15317    var isClipEffect = function (effect) { return effect.type === 1 /* CLIP */; };
15318    var isOpacityEffect = function (effect) { return effect.type === 2 /* OPACITY */; };
15319
15320    var equalPath = function (a, b) {
15321        if (a.length === b.length) {
15322            return a.some(function (v, i) { return v === b[i]; });
15323        }
15324        return false;
15325    };
15326    var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {
15327        return path.map(function (point, index) {
15328            switch (index) {
15329                case 0:
15330                    return point.add(deltaX, deltaY);
15331                case 1:
15332                    return point.add(deltaX + deltaW, deltaY);
15333                case 2:
15334                    return point.add(deltaX + deltaW, deltaY + deltaH);
15335                case 3:
15336                    return point.add(deltaX, deltaY + deltaH);
15337            }
15338            return point;
15339        });
15340    };
15341
15342    var StackingContext = /** @class */ (function () {
15343        function StackingContext(container) {
15344            this.element = container;
15345            this.inlineLevel = [];
15346            this.nonInlineLevel = [];
15347            this.negativeZIndex = [];
15348            this.zeroOrAutoZIndexOrTransformedOrOpacity = [];
15349            this.positiveZIndex = [];
15350            this.nonPositionedFloats = [];
15351            this.nonPositionedInlineLevel = [];
15352        }
15353        return StackingContext;
15354    }());
15355    var ElementPaint = /** @class */ (function () {
15356        function ElementPaint(container, parent) {
15357            this.container = container;
15358            this.parent = parent;
15359            this.effects = [];
15360            this.curves = new BoundCurves(this.container);
15361            if (this.container.styles.opacity < 1) {
15362                this.effects.push(new OpacityEffect(this.container.styles.opacity));
15363            }
15364            if (this.container.styles.transform !== null) {
15365                var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;
15366                var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;
15367                var matrix = this.container.styles.transform;
15368                this.effects.push(new TransformEffect(offsetX, offsetY, matrix));
15369            }
15370            if (this.container.styles.overflowX !== 0 /* VISIBLE */) {
15371                var borderBox = calculateBorderBoxPath(this.curves);
15372                var paddingBox = calculatePaddingBoxPath(this.curves);
15373                if (equalPath(borderBox, paddingBox)) {
15374                    this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));
15375                }
15376                else {
15377                    this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */));
15378                    this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));
15379                }
15380            }
15381        }
15382        ElementPaint.prototype.getEffects = function (target) {
15383            var inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(this.container.styles.position) === -1;
15384            var parent = this.parent;
15385            var effects = this.effects.slice(0);
15386            while (parent) {
15387                var croplessEffects = parent.effects.filter(function (effect) { return !isClipEffect(effect); });
15388                if (inFlow || parent.container.styles.position !== 0 /* STATIC */ || !parent.parent) {
15389                    effects.unshift.apply(effects, croplessEffects);
15390                    inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(parent.container.styles.position) === -1;
15391                    if (parent.container.styles.overflowX !== 0 /* VISIBLE */) {
15392                        var borderBox = calculateBorderBoxPath(parent.curves);
15393                        var paddingBox = calculatePaddingBoxPath(parent.curves);
15394                        if (!equalPath(borderBox, paddingBox)) {
15395                            effects.unshift(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));
15396                        }
15397                    }
15398                }
15399                else {
15400                    effects.unshift.apply(effects, croplessEffects);
15401                }
15402                parent = parent.parent;
15403            }
15404            return effects.filter(function (effect) { return contains(effect.target, target); });
15405        };
15406        return ElementPaint;
15407    }());
15408    var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {
15409        parent.container.elements.forEach(function (child) {
15410            var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);
15411            var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);
15412            var paintContainer = new ElementPaint(child, parent);
15413            if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {
15414                listItems.push(paintContainer);
15415            }
15416            var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;
15417            if (treatAsRealStackingContext || createsStackingContext) {
15418                var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;
15419                var stack = new StackingContext(paintContainer);
15420                if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {
15421                    var order_1 = child.styles.zIndex.order;
15422                    if (order_1 < 0) {
15423                        var index_1 = 0;
15424                        parentStack.negativeZIndex.some(function (current, i) {
15425                            if (order_1 > current.element.container.styles.zIndex.order) {
15426                                index_1 = i;
15427                                return false;
15428                            }
15429                            else if (index_1 > 0) {
15430                                return true;
15431                            }
15432                            return false;
15433                        });
15434                        parentStack.negativeZIndex.splice(index_1, 0, stack);
15435                    }
15436                    else if (order_1 > 0) {
15437                        var index_2 = 0;
15438                        parentStack.positiveZIndex.some(function (current, i) {
15439                            if (order_1 >= current.element.container.styles.zIndex.order) {
15440                                index_2 = i + 1;
15441                                return false;
15442                            }
15443                            else if (index_2 > 0) {
15444                                return true;
15445                            }
15446                            return false;
15447                        });
15448                        parentStack.positiveZIndex.splice(index_2, 0, stack);
15449                    }
15450                    else {
15451                        parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);
15452                    }
15453                }
15454                else {
15455                    if (child.styles.isFloating()) {
15456                        parentStack.nonPositionedFloats.push(stack);
15457                    }
15458                    else {
15459                        parentStack.nonPositionedInlineLevel.push(stack);
15460                    }
15461                }
15462                parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);
15463            }
15464            else {
15465                if (child.styles.isInlineLevel()) {
15466                    stackingContext.inlineLevel.push(paintContainer);
15467                }
15468                else {
15469                    stackingContext.nonInlineLevel.push(paintContainer);
15470                }
15471                parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);
15472            }
15473            if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {
15474                processListItems(child, listOwnerItems);
15475            }
15476        });
15477    };
15478    var processListItems = function (owner, elements) {
15479        var numbering = owner instanceof OLElementContainer ? owner.start : 1;
15480        var reversed = owner instanceof OLElementContainer ? owner.reversed : false;
15481        for (var i = 0; i < elements.length; i++) {
15482            var item = elements[i];
15483            if (item.container instanceof LIElementContainer &&
15484                typeof item.container.value === 'number' &&
15485                item.container.value !== 0) {
15486                numbering = item.container.value;
15487            }
15488            item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);
15489            numbering += reversed ? -1 : 1;
15490        }
15491    };
15492    var parseStackingContexts = function (container) {
15493        var paintContainer = new ElementPaint(container, null);
15494        var root = new StackingContext(paintContainer);
15495        var listItems = [];
15496        parseStackTree(paintContainer, root, root, listItems);
15497        processListItems(paintContainer.container, listItems);
15498        return root;
15499    };
15500
15501    var parsePathForBorder = function (curves, borderSide) {
15502        switch (borderSide) {
15503            case 0:
15504                return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);
15505            case 1:
15506                return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);
15507            case 2:
15508                return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);
15509            case 3:
15510            default:
15511                return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);
15512        }
15513    };
15514    var parsePathForBorderDoubleOuter = function (curves, borderSide) {
15515        switch (borderSide) {
15516            case 0:
15517                return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);
15518            case 1:
15519                return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);
15520            case 2:
15521                return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);
15522            case 3:
15523            default:
15524                return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);
15525        }
15526    };
15527    var parsePathForBorderDoubleInner = function (curves, borderSide) {
15528        switch (borderSide) {
15529            case 0:
15530                return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);
15531            case 1:
15532                return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);
15533            case 2:
15534                return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);
15535            case 3:
15536            default:
15537                return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);
15538        }
15539    };
15540    var parsePathForBorderStroke = function (curves, borderSide) {
15541        switch (borderSide) {
15542            case 0:
15543                return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);
15544            case 1:
15545                return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);
15546            case 2:
15547                return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);
15548            case 3:
15549            default:
15550                return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);
15551        }
15552    };
15553    var createStrokePathFromCurves = function (outer1, outer2) {
15554        var path = [];
15555        if (isBezierCurve(outer1)) {
15556            path.push(outer1.subdivide(0.5, false));
15557        }
15558        else {
15559            path.push(outer1);
15560        }
15561        if (isBezierCurve(outer2)) {
15562            path.push(outer2.subdivide(0.5, true));
15563        }
15564        else {
15565            path.push(outer2);
15566        }
15567        return path;
15568    };
15569    var createPathFromCurves = function (outer1, inner1, outer2, inner2) {
15570        var path = [];
15571        if (isBezierCurve(outer1)) {
15572            path.push(outer1.subdivide(0.5, false));
15573        }
15574        else {
15575            path.push(outer1);
15576        }
15577        if (isBezierCurve(outer2)) {
15578            path.push(outer2.subdivide(0.5, true));
15579        }
15580        else {
15581            path.push(outer2);
15582        }
15583        if (isBezierCurve(inner2)) {
15584            path.push(inner2.subdivide(0.5, true).reverse());
15585        }
15586        else {
15587            path.push(inner2);
15588        }
15589        if (isBezierCurve(inner1)) {
15590            path.push(inner1.subdivide(0.5, false).reverse());
15591        }
15592        else {
15593            path.push(inner1);
15594        }
15595        return path;
15596    };
15597
15598    var paddingBox = function (element) {
15599        var bounds = element.bounds;
15600        var styles = element.styles;
15601        return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));
15602    };
15603    var contentBox = function (element) {
15604        var styles = element.styles;
15605        var bounds = element.bounds;
15606        var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);
15607        var paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);
15608        var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);
15609        var paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);
15610        return bounds.add(paddingLeft + styles.borderLeftWidth, paddingTop + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom));
15611    };
15612
15613    var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {
15614        if (backgroundOrigin === 0 /* BORDER_BOX */) {
15615            return element.bounds;
15616        }
15617        if (backgroundOrigin === 2 /* CONTENT_BOX */) {
15618            return contentBox(element);
15619        }
15620        return paddingBox(element);
15621    };
15622    var calculateBackgroundPaintingArea = function (backgroundClip, element) {
15623        if (backgroundClip === 0 /* BORDER_BOX */) {
15624            return element.bounds;
15625        }
15626        if (backgroundClip === 2 /* CONTENT_BOX */) {
15627            return contentBox(element);
15628        }
15629        return paddingBox(element);
15630    };
15631    var calculateBackgroundRendering = function (container, index, intrinsicSize) {
15632        var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);
15633        var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);
15634        var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);
15635        var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];
15636        var position = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);
15637        var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);
15638        var offsetX = Math.round(backgroundPositioningArea.left + position[0]);
15639        var offsetY = Math.round(backgroundPositioningArea.top + position[1]);
15640        return [path, offsetX, offsetY, sizeWidth, sizeHeight];
15641    };
15642    var isAuto = function (token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; };
15643    var hasIntrinsicValue = function (value) { return typeof value === 'number'; };
15644    var calculateBackgroundSize = function (size, _a, bounds) {
15645        var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];
15646        var first = size[0], second = size[1];
15647        if (!first) {
15648            return [0, 0];
15649        }
15650        if (isLengthPercentage(first) && second && isLengthPercentage(second)) {
15651            return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];
15652        }
15653        var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
15654        if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {
15655            if (hasIntrinsicValue(intrinsicProportion)) {
15656                var targetRatio = bounds.width / bounds.height;
15657                return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)
15658                    ? [bounds.width, bounds.width / intrinsicProportion]
15659                    : [bounds.height * intrinsicProportion, bounds.height];
15660            }
15661            return [bounds.width, bounds.height];
15662        }
15663        var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);
15664        var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);
15665        var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;
15666        // If the background-size is auto or auto auto:
15667        if (isAuto(first) && (!second || isAuto(second))) {
15668            // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.
15669            if (hasIntrinsicWidth && hasIntrinsicHeight) {
15670                return [intrinsicWidth, intrinsicHeight];
15671            }
15672            // If the image has no intrinsic dimensions and has no intrinsic proportions,
15673            // it's rendered at the size of the background positioning area.
15674            if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
15675                return [bounds.width, bounds.height];
15676            }
15677            // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.
15678            // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.
15679            // The other dimension is computed using the specified dimension and the intrinsic proportions.
15680            if (hasIntrinsicDimensions && hasIntrinsicProportion) {
15681                var width_1 = hasIntrinsicWidth
15682                    ? intrinsicWidth
15683                    : intrinsicHeight * intrinsicProportion;
15684                var height_1 = hasIntrinsicHeight
15685                    ? intrinsicHeight
15686                    : intrinsicWidth / intrinsicProportion;
15687                return [width_1, height_1];
15688            }
15689            // If the image has only one intrinsic dimension but has no intrinsic proportions,
15690            // it's rendered using the specified dimension and the other dimension of the background positioning area.
15691            var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;
15692            var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;
15693            return [width_2, height_2];
15694        }
15695        // If the image has intrinsic proportions, it's stretched to the specified dimension.
15696        // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.
15697        if (hasIntrinsicProportion) {
15698            var width_3 = 0;
15699            var height_3 = 0;
15700            if (isLengthPercentage(first)) {
15701                width_3 = getAbsoluteValue(first, bounds.width);
15702            }
15703            else if (isLengthPercentage(second)) {
15704                height_3 = getAbsoluteValue(second, bounds.height);
15705            }
15706            if (isAuto(first)) {
15707                width_3 = height_3 * intrinsicProportion;
15708            }
15709            else if (!second || isAuto(second)) {
15710                height_3 = width_3 / intrinsicProportion;
15711            }
15712            return [width_3, height_3];
15713        }
15714        // If the image has no intrinsic proportions, it's stretched to the specified dimension.
15715        // The unspecified dimension is computed using the image's corresponding intrinsic dimension,
15716        // if there is one. If there is no such intrinsic dimension,
15717        // it becomes the corresponding dimension of the background positioning area.
15718        var width = null;
15719        var height = null;
15720        if (isLengthPercentage(first)) {
15721            width = getAbsoluteValue(first, bounds.width);
15722        }
15723        else if (second && isLengthPercentage(second)) {
15724            height = getAbsoluteValue(second, bounds.height);
15725        }
15726        if (width !== null && (!second || isAuto(second))) {
15727            height =
15728                hasIntrinsicWidth && hasIntrinsicHeight
15729                    ? (width / intrinsicWidth) * intrinsicHeight
15730                    : bounds.height;
15731        }
15732        if (height !== null && isAuto(first)) {
15733            width =
15734                hasIntrinsicWidth && hasIntrinsicHeight
15735                    ? (height / intrinsicHeight) * intrinsicWidth
15736                    : bounds.width;
15737        }
15738        if (width !== null && height !== null) {
15739            return [width, height];
15740        }
15741        throw new Error("Unable to calculate background-size for element");
15742    };
15743    var getBackgroundValueForIndex = function (values, index) {
15744        var value = values[index];
15745        if (typeof value === 'undefined') {
15746            return values[0];
15747        }
15748        return value;
15749    };
15750    var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {
15751        var x = _a[0], y = _a[1];
15752        var width = _b[0], height = _b[1];
15753        switch (repeat) {
15754            case 2 /* REPEAT_X */:
15755                return [
15756                    new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),
15757                    new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),
15758                    new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),
15759                    new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))
15760                ];
15761            case 3 /* REPEAT_Y */:
15762                return [
15763                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),
15764                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),
15765                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
15766                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))
15767                ];
15768            case 1 /* NO_REPEAT */:
15769                return [
15770                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),
15771                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),
15772                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),
15773                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))
15774                ];
15775            default:
15776                return [
15777                    new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),
15778                    new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),
15779                    new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),
15780                    new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))
15781                ];
15782        }
15783    };
15784
15785    var SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
15786
15787    var SAMPLE_TEXT = 'Hidden Text';
15788    var FontMetrics = /** @class */ (function () {
15789        function FontMetrics(document) {
15790            this._data = {};
15791            this._document = document;
15792        }
15793        FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {
15794            var container = this._document.createElement('div');
15795            var img = this._document.createElement('img');
15796            var span = this._document.createElement('span');
15797            var body = this._document.body;
15798            container.style.visibility = 'hidden';
15799            container.style.fontFamily = fontFamily;
15800            container.style.fontSize = fontSize;
15801            container.style.margin = '0';
15802            container.style.padding = '0';
15803            container.style.whiteSpace = 'nowrap';
15804            body.appendChild(container);
15805            img.src = SMALL_IMAGE;
15806            img.width = 1;
15807            img.height = 1;
15808            img.style.margin = '0';
15809            img.style.padding = '0';
15810            img.style.verticalAlign = 'baseline';
15811            span.style.fontFamily = fontFamily;
15812            span.style.fontSize = fontSize;
15813            span.style.margin = '0';
15814            span.style.padding = '0';
15815            span.appendChild(this._document.createTextNode(SAMPLE_TEXT));
15816            container.appendChild(span);
15817            container.appendChild(img);
15818            var baseline = img.offsetTop - span.offsetTop + 2;
15819            container.removeChild(span);
15820            container.appendChild(this._document.createTextNode(SAMPLE_TEXT));
15821            container.style.lineHeight = 'normal';
15822            img.style.verticalAlign = 'super';
15823            var middle = img.offsetTop - container.offsetTop + 2;
15824            body.removeChild(container);
15825            return { baseline: baseline, middle: middle };
15826        };
15827        FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {
15828            var key = fontFamily + " " + fontSize;
15829            if (typeof this._data[key] === 'undefined') {
15830                this._data[key] = this.parseMetrics(fontFamily, fontSize);
15831            }
15832            return this._data[key];
15833        };
15834        return FontMetrics;
15835    }());
15836
15837    var Renderer = /** @class */ (function () {
15838        function Renderer(context, options) {
15839            this.context = context;
15840            this.options = options;
15841        }
15842        return Renderer;
15843    }());
15844
15845    var MASK_OFFSET = 10000;
15846    var CanvasRenderer = /** @class */ (function (_super) {
15847        __extends(CanvasRenderer, _super);
15848        function CanvasRenderer(context, options) {
15849            var _this = _super.call(this, context, options) || this;
15850            _this._activeEffects = [];
15851            _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');
15852            _this.ctx = _this.canvas.getContext('2d');
15853            if (!options.canvas) {
15854                _this.canvas.width = Math.floor(options.width * options.scale);
15855                _this.canvas.height = Math.floor(options.height * options.scale);
15856                _this.canvas.style.width = options.width + "px";
15857                _this.canvas.style.height = options.height + "px";
15858            }
15859            _this.fontMetrics = new FontMetrics(document);
15860            _this.ctx.scale(_this.options.scale, _this.options.scale);
15861            _this.ctx.translate(-options.x, -options.y);
15862            _this.ctx.textBaseline = 'bottom';
15863            _this._activeEffects = [];
15864            _this.context.logger.debug("Canvas renderer initialized (" + options.width + "x" + options.height + ") with scale " + options.scale);
15865            return _this;
15866        }
15867        CanvasRenderer.prototype.applyEffects = function (effects) {
15868            var _this = this;
15869            while (this._activeEffects.length) {
15870                this.popEffect();
15871            }
15872            effects.forEach(function (effect) { return _this.applyEffect(effect); });
15873        };
15874        CanvasRenderer.prototype.applyEffect = function (effect) {
15875            this.ctx.save();
15876            if (isOpacityEffect(effect)) {
15877                this.ctx.globalAlpha = effect.opacity;
15878            }
15879            if (isTransformEffect(effect)) {
15880                this.ctx.translate(effect.offsetX, effect.offsetY);
15881                this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);
15882                this.ctx.translate(-effect.offsetX, -effect.offsetY);
15883            }
15884            if (isClipEffect(effect)) {
15885                this.path(effect.path);
15886                this.ctx.clip();
15887            }
15888            this._activeEffects.push(effect);
15889        };
15890        CanvasRenderer.prototype.popEffect = function () {
15891            this._activeEffects.pop();
15892            this.ctx.restore();
15893        };
15894        CanvasRenderer.prototype.renderStack = function (stack) {
15895            return __awaiter(this, void 0, void 0, function () {
15896                var styles;
15897                return __generator(this, function (_a) {
15898                    switch (_a.label) {
15899                        case 0:
15900                            styles = stack.element.container.styles;
15901                            if (!styles.isVisible()) return [3 /*break*/, 2];
15902                            return [4 /*yield*/, this.renderStackContent(stack)];
15903                        case 1:
15904                            _a.sent();
15905                            _a.label = 2;
15906                        case 2: return [2 /*return*/];
15907                    }
15908                });
15909            });
15910        };
15911        CanvasRenderer.prototype.renderNode = function (paint) {
15912            return __awaiter(this, void 0, void 0, function () {
15913                return __generator(this, function (_a) {
15914                    switch (_a.label) {
15915                        case 0:
15916                            if (contains(paint.container.flags, 16 /* DEBUG_RENDER */)) {
15917                                debugger;
15918                            }
15919                            if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];
15920                            return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];
15921                        case 1:
15922                            _a.sent();
15923                            return [4 /*yield*/, this.renderNodeContent(paint)];
15924                        case 2:
15925                            _a.sent();
15926                            _a.label = 3;
15927                        case 3: return [2 /*return*/];
15928                    }
15929                });
15930            });
15931        };
15932        CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing, baseline) {
15933            var _this = this;
15934            if (letterSpacing === 0) {
15935                this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);
15936            }
15937            else {
15938                var letters = segmentGraphemes(text.text);
15939                letters.reduce(function (left, letter) {
15940                    _this.ctx.fillText(letter, left, text.bounds.top + baseline);
15941                    return left + _this.ctx.measureText(letter).width;
15942                }, text.bounds.left);
15943            }
15944        };
15945        CanvasRenderer.prototype.createFontStyle = function (styles) {
15946            var fontVariant = styles.fontVariant
15947                .filter(function (variant) { return variant === 'normal' || variant === 'small-caps'; })
15948                .join('');
15949            var fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');
15950            var fontSize = isDimensionToken(styles.fontSize)
15951                ? "" + styles.fontSize.number + styles.fontSize.unit
15952                : styles.fontSize.number + "px";
15953            return [
15954                [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),
15955                fontFamily,
15956                fontSize
15957            ];
15958        };
15959        CanvasRenderer.prototype.renderTextNode = function (text, styles) {
15960            return __awaiter(this, void 0, void 0, function () {
15961                var _a, font, fontFamily, fontSize, _b, baseline, middle, paintOrder;
15962                var _this = this;
15963                return __generator(this, function (_c) {
15964                    _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];
15965                    this.ctx.font = font;
15966                    this.ctx.direction = styles.direction === 1 /* RTL */ ? 'rtl' : 'ltr';
15967                    this.ctx.textAlign = 'left';
15968                    this.ctx.textBaseline = 'alphabetic';
15969                    _b = this.fontMetrics.getMetrics(fontFamily, fontSize), baseline = _b.baseline, middle = _b.middle;
15970                    paintOrder = styles.paintOrder;
15971                    text.textBounds.forEach(function (text) {
15972                        paintOrder.forEach(function (paintOrderLayer) {
15973                            switch (paintOrderLayer) {
15974                                case 0 /* FILL */:
15975                                    _this.ctx.fillStyle = asString(styles.color);
15976                                    _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);
15977                                    var textShadows = styles.textShadow;
15978                                    if (textShadows.length && text.text.trim().length) {
15979                                        textShadows
15980                                            .slice(0)
15981                                            .reverse()
15982                                            .forEach(function (textShadow) {
15983                                            _this.ctx.shadowColor = asString(textShadow.color);
15984                                            _this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;
15985                                            _this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;
15986                                            _this.ctx.shadowBlur = textShadow.blur.number;
15987                                            _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);
15988                                        });
15989                                        _this.ctx.shadowColor = '';
15990                                        _this.ctx.shadowOffsetX = 0;
15991                                        _this.ctx.shadowOffsetY = 0;
15992                                        _this.ctx.shadowBlur = 0;
15993                                    }
15994                                    if (styles.textDecorationLine.length) {
15995                                        _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);
15996                                        styles.textDecorationLine.forEach(function (textDecorationLine) {
15997                                            switch (textDecorationLine) {
15998                                                case 1 /* UNDERLINE */:
15999                                                    // Draws a line at the baseline of the font
16000                                                    // TODO As some browsers display the line as more than 1px if the font-size is big,
16001                                                    // need to take that into account both in position and size
16002                                                    _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);
16003                                                    break;
16004                                                case 2 /* OVERLINE */:
16005                                                    _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);
16006                                                    break;
16007                                                case 3 /* LINE_THROUGH */:
16008                                                    // TODO try and find exact position for line-through
16009                                                    _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);
16010                                                    break;
16011                                            }
16012                                        });
16013                                    }
16014                                    break;
16015                                case 1 /* STROKE */:
16016                                    if (styles.webkitTextStrokeWidth && text.text.trim().length) {
16017                                        _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);
16018                                        _this.ctx.lineWidth = styles.webkitTextStrokeWidth;
16019                                        // eslint-disable-next-line @typescript-eslint/no-explicit-any
16020                                        _this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';
16021                                        _this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);
16022                                    }
16023                                    _this.ctx.strokeStyle = '';
16024                                    _this.ctx.lineWidth = 0;
16025                                    _this.ctx.lineJoin = 'miter';
16026                                    break;
16027                            }
16028                        });
16029                    });
16030                    return [2 /*return*/];
16031                });
16032            });
16033        };
16034        CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {
16035            if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
16036                var box = contentBox(container);
16037                var path = calculatePaddingBoxPath(curves);
16038                this.path(path);
16039                this.ctx.save();
16040                this.ctx.clip();
16041                this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);
16042                this.ctx.restore();
16043            }
16044        };
16045        CanvasRenderer.prototype.renderNodeContent = function (paint) {
16046            return __awaiter(this, void 0, void 0, function () {
16047                var container, curves, styles, _i, _a, child, image, image, iframeRenderer, canvas, size, _b, fontFamily, fontSize, baseline, bounds, x, textBounds, img, image, url, fontFamily, bounds;
16048                return __generator(this, function (_c) {
16049                    switch (_c.label) {
16050                        case 0:
16051                            this.applyEffects(paint.getEffects(4 /* CONTENT */));
16052                            container = paint.container;
16053                            curves = paint.curves;
16054                            styles = container.styles;
16055                            _i = 0, _a = container.textNodes;
16056                            _c.label = 1;
16057                        case 1:
16058                            if (!(_i < _a.length)) return [3 /*break*/, 4];
16059                            child = _a[_i];
16060                            return [4 /*yield*/, this.renderTextNode(child, styles)];
16061                        case 2:
16062                            _c.sent();
16063                            _c.label = 3;
16064                        case 3:
16065                            _i++;
16066                            return [3 /*break*/, 1];
16067                        case 4:
16068                            if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];
16069                            _c.label = 5;
16070                        case 5:
16071                            _c.trys.push([5, 7, , 8]);
16072                            return [4 /*yield*/, this.context.cache.match(container.src)];
16073                        case 6:
16074                            image = _c.sent();
16075                            this.renderReplacedElement(container, curves, image);
16076                            return [3 /*break*/, 8];
16077                        case 7:
16078                            _c.sent();
16079                            this.context.logger.error("Error loading image " + container.src);
16080                            return [3 /*break*/, 8];
16081                        case 8:
16082                            if (container instanceof CanvasElementContainer) {
16083                                this.renderReplacedElement(container, curves, container.canvas);
16084                            }
16085                            if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];
16086                            _c.label = 9;
16087                        case 9:
16088                            _c.trys.push([9, 11, , 12]);
16089                            return [4 /*yield*/, this.context.cache.match(container.svg)];
16090                        case 10:
16091                            image = _c.sent();
16092                            this.renderReplacedElement(container, curves, image);
16093                            return [3 /*break*/, 12];
16094                        case 11:
16095                            _c.sent();
16096                            this.context.logger.error("Error loading svg " + container.svg.substring(0, 255));
16097                            return [3 /*break*/, 12];
16098                        case 12:
16099                            if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];
16100                            iframeRenderer = new CanvasRenderer(this.context, {
16101                                scale: this.options.scale,
16102                                backgroundColor: container.backgroundColor,
16103                                x: 0,
16104                                y: 0,
16105                                width: container.width,
16106                                height: container.height
16107                            });
16108                            return [4 /*yield*/, iframeRenderer.render(container.tree)];
16109                        case 13:
16110                            canvas = _c.sent();
16111                            if (container.width && container.height) {
16112                                this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);
16113                            }
16114                            _c.label = 14;
16115                        case 14:
16116                            if (container instanceof InputElementContainer) {
16117                                size = Math.min(container.bounds.width, container.bounds.height);
16118                                if (container.type === CHECKBOX) {
16119                                    if (container.checked) {
16120                                        this.ctx.save();
16121                                        this.path([
16122                                            new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),
16123                                            new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),
16124                                            new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),
16125                                            new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),
16126                                            new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),
16127                                            new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),
16128                                            new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)
16129                                        ]);
16130                                        this.ctx.fillStyle = asString(INPUT_COLOR);
16131                                        this.ctx.fill();
16132                                        this.ctx.restore();
16133                                    }
16134                                }
16135                                else if (container.type === RADIO) {
16136                                    if (container.checked) {
16137                                        this.ctx.save();
16138                                        this.ctx.beginPath();
16139                                        this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);
16140                                        this.ctx.fillStyle = asString(INPUT_COLOR);
16141                                        this.ctx.fill();
16142                                        this.ctx.restore();
16143                                    }
16144                                }
16145                            }
16146                            if (isTextInputElement(container) && container.value.length) {
16147                                _b = this.createFontStyle(styles), fontFamily = _b[0], fontSize = _b[1];
16148                                baseline = this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;
16149                                this.ctx.font = fontFamily;
16150                                this.ctx.fillStyle = asString(styles.color);
16151                                this.ctx.textBaseline = 'alphabetic';
16152                                this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);
16153                                bounds = contentBox(container);
16154                                x = 0;
16155                                switch (container.styles.textAlign) {
16156                                    case 1 /* CENTER */:
16157                                        x += bounds.width / 2;
16158                                        break;
16159                                    case 2 /* RIGHT */:
16160                                        x += bounds.width;
16161                                        break;
16162                                }
16163                                textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);
16164                                this.ctx.save();
16165                                this.path([
16166                                    new Vector(bounds.left, bounds.top),
16167                                    new Vector(bounds.left + bounds.width, bounds.top),
16168                                    new Vector(bounds.left + bounds.width, bounds.top + bounds.height),
16169                                    new Vector(bounds.left, bounds.top + bounds.height)
16170                                ]);
16171                                this.ctx.clip();
16172                                this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);
16173                                this.ctx.restore();
16174                                this.ctx.textBaseline = 'alphabetic';
16175                                this.ctx.textAlign = 'left';
16176                            }
16177                            if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];
16178                            if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];
16179                            img = container.styles.listStyleImage;
16180                            if (!(img.type === 0 /* URL */)) return [3 /*break*/, 18];
16181                            image = void 0;
16182                            url = img.url;
16183                            _c.label = 15;
16184                        case 15:
16185                            _c.trys.push([15, 17, , 18]);
16186                            return [4 /*yield*/, this.context.cache.match(url)];
16187                        case 16:
16188                            image = _c.sent();
16189                            this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);
16190                            return [3 /*break*/, 18];
16191                        case 17:
16192                            _c.sent();
16193                            this.context.logger.error("Error loading list-style-image " + url);
16194                            return [3 /*break*/, 18];
16195                        case 18: return [3 /*break*/, 20];
16196                        case 19:
16197                            if (paint.listValue && container.styles.listStyleType !== -1 /* NONE */) {
16198                                fontFamily = this.createFontStyle(styles)[0];
16199                                this.ctx.font = fontFamily;
16200                                this.ctx.fillStyle = asString(styles.color);
16201                                this.ctx.textBaseline = 'middle';
16202                                this.ctx.textAlign = 'right';
16203                                bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);
16204                                this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);
16205                                this.ctx.textBaseline = 'bottom';
16206                                this.ctx.textAlign = 'left';
16207                            }
16208                            _c.label = 20;
16209                        case 20: return [2 /*return*/];
16210                    }
16211                });
16212            });
16213        };
16214        CanvasRenderer.prototype.renderStackContent = function (stack) {
16215            return __awaiter(this, void 0, void 0, function () {
16216                var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;
16217                return __generator(this, function (_p) {
16218                    switch (_p.label) {
16219                        case 0:
16220                            if (contains(stack.element.container.flags, 16 /* DEBUG_RENDER */)) {
16221                                debugger;
16222                            }
16223                            // https://www.w3.org/TR/css-position-3/#painting-order
16224                            // 1. the background and borders of the element forming the stacking context.
16225                            return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];
16226                        case 1:
16227                            // https://www.w3.org/TR/css-position-3/#painting-order
16228                            // 1. the background and borders of the element forming the stacking context.
16229                            _p.sent();
16230                            _i = 0, _a = stack.negativeZIndex;
16231                            _p.label = 2;
16232                        case 2:
16233                            if (!(_i < _a.length)) return [3 /*break*/, 5];
16234                            child = _a[_i];
16235                            return [4 /*yield*/, this.renderStack(child)];
16236                        case 3:
16237                            _p.sent();
16238                            _p.label = 4;
16239                        case 4:
16240                            _i++;
16241                            return [3 /*break*/, 2];
16242                        case 5: 
16243                        // 3. For all its in-flow, non-positioned, block-level descendants in tree order:
16244                        return [4 /*yield*/, this.renderNodeContent(stack.element)];
16245                        case 6:
16246                            // 3. For all its in-flow, non-positioned, block-level descendants in tree order:
16247                            _p.sent();
16248                            _b = 0, _c = stack.nonInlineLevel;
16249                            _p.label = 7;
16250                        case 7:
16251                            if (!(_b < _c.length)) return [3 /*break*/, 10];
16252                            child = _c[_b];
16253                            return [4 /*yield*/, this.renderNode(child)];
16254                        case 8:
16255                            _p.sent();
16256                            _p.label = 9;
16257                        case 9:
16258                            _b++;
16259                            return [3 /*break*/, 7];
16260                        case 10:
16261                            _d = 0, _e = stack.nonPositionedFloats;
16262                            _p.label = 11;
16263                        case 11:
16264                            if (!(_d < _e.length)) return [3 /*break*/, 14];
16265                            child = _e[_d];
16266                            return [4 /*yield*/, this.renderStack(child)];
16267                        case 12:
16268                            _p.sent();
16269                            _p.label = 13;
16270                        case 13:
16271                            _d++;
16272                            return [3 /*break*/, 11];
16273                        case 14:
16274                            _f = 0, _g = stack.nonPositionedInlineLevel;
16275                            _p.label = 15;
16276                        case 15:
16277                            if (!(_f < _g.length)) return [3 /*break*/, 18];
16278                            child = _g[_f];
16279                            return [4 /*yield*/, this.renderStack(child)];
16280                        case 16:
16281                            _p.sent();
16282                            _p.label = 17;
16283                        case 17:
16284                            _f++;
16285                            return [3 /*break*/, 15];
16286                        case 18:
16287                            _h = 0, _j = stack.inlineLevel;
16288                            _p.label = 19;
16289                        case 19:
16290                            if (!(_h < _j.length)) return [3 /*break*/, 22];
16291                            child = _j[_h];
16292                            return [4 /*yield*/, this.renderNode(child)];
16293                        case 20:
16294                            _p.sent();
16295                            _p.label = 21;
16296                        case 21:
16297                            _h++;
16298                            return [3 /*break*/, 19];
16299                        case 22:
16300                            _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;
16301                            _p.label = 23;
16302                        case 23:
16303                            if (!(_k < _l.length)) return [3 /*break*/, 26];
16304                            child = _l[_k];
16305                            return [4 /*yield*/, this.renderStack(child)];
16306                        case 24:
16307                            _p.sent();
16308                            _p.label = 25;
16309                        case 25:
16310                            _k++;
16311                            return [3 /*break*/, 23];
16312                        case 26:
16313                            _m = 0, _o = stack.positiveZIndex;
16314                            _p.label = 27;
16315                        case 27:
16316                            if (!(_m < _o.length)) return [3 /*break*/, 30];
16317                            child = _o[_m];
16318                            return [4 /*yield*/, this.renderStack(child)];
16319                        case 28:
16320                            _p.sent();
16321                            _p.label = 29;
16322                        case 29:
16323                            _m++;
16324                            return [3 /*break*/, 27];
16325                        case 30: return [2 /*return*/];
16326                    }
16327                });
16328            });
16329        };
16330        CanvasRenderer.prototype.mask = function (paths) {
16331            this.ctx.beginPath();
16332            this.ctx.moveTo(0, 0);
16333            this.ctx.lineTo(this.canvas.width, 0);
16334            this.ctx.lineTo(this.canvas.width, this.canvas.height);
16335            this.ctx.lineTo(0, this.canvas.height);
16336            this.ctx.lineTo(0, 0);
16337            this.formatPath(paths.slice(0).reverse());
16338            this.ctx.closePath();
16339        };
16340        CanvasRenderer.prototype.path = function (paths) {
16341            this.ctx.beginPath();
16342            this.formatPath(paths);
16343            this.ctx.closePath();
16344        };
16345        CanvasRenderer.prototype.formatPath = function (paths) {
16346            var _this = this;
16347            paths.forEach(function (point, index) {
16348                var start = isBezierCurve(point) ? point.start : point;
16349                if (index === 0) {
16350                    _this.ctx.moveTo(start.x, start.y);
16351                }
16352                else {
16353                    _this.ctx.lineTo(start.x, start.y);
16354                }
16355                if (isBezierCurve(point)) {
16356                    _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);
16357                }
16358            });
16359        };
16360        CanvasRenderer.prototype.renderRepeat = function (path, pattern, offsetX, offsetY) {
16361            this.path(path);
16362            this.ctx.fillStyle = pattern;
16363            this.ctx.translate(offsetX, offsetY);
16364            this.ctx.fill();
16365            this.ctx.translate(-offsetX, -offsetY);
16366        };
16367        CanvasRenderer.prototype.resizeImage = function (image, width, height) {
16368            var _a;
16369            if (image.width === width && image.height === height) {
16370                return image;
16371            }
16372            var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;
16373            var canvas = ownerDocument.createElement('canvas');
16374            canvas.width = Math.max(1, width);
16375            canvas.height = Math.max(1, height);
16376            var ctx = canvas.getContext('2d');
16377            ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);
16378            return canvas;
16379        };
16380        CanvasRenderer.prototype.renderBackgroundImage = function (container) {
16381            return __awaiter(this, void 0, void 0, function () {
16382                var index, _loop_1, this_1, _i, _a, backgroundImage;
16383                return __generator(this, function (_b) {
16384                    switch (_b.label) {
16385                        case 0:
16386                            index = container.styles.backgroundImage.length - 1;
16387                            _loop_1 = function (backgroundImage) {
16388                                var image, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position, x, y, _g, rx, ry, radialGradient_1, midX, midY, f, invF;
16389                                return __generator(this, function (_h) {
16390                                    switch (_h.label) {
16391                                        case 0:
16392                                            if (!(backgroundImage.type === 0 /* URL */)) return [3 /*break*/, 5];
16393                                            image = void 0;
16394                                            url = backgroundImage.url;
16395                                            _h.label = 1;
16396                                        case 1:
16397                                            _h.trys.push([1, 3, , 4]);
16398                                            return [4 /*yield*/, this_1.context.cache.match(url)];
16399                                        case 2:
16400                                            image = _h.sent();
16401                                            return [3 /*break*/, 4];
16402                                        case 3:
16403                                            _h.sent();
16404                                            this_1.context.logger.error("Error loading background-image " + url);
16405                                            return [3 /*break*/, 4];
16406                                        case 4:
16407                                            if (image) {
16408                                                _c = calculateBackgroundRendering(container, index, [
16409                                                    image.width,
16410                                                    image.height,
16411                                                    image.width / image.height
16412                                                ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];
16413                                                pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');
16414                                                this_1.renderRepeat(path, pattern, x, y);
16415                                            }
16416                                            return [3 /*break*/, 6];
16417                                        case 5:
16418                                            if (isLinearGradient(backgroundImage)) {
16419                                                _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];
16420                                                _e = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];
16421                                                canvas = document.createElement('canvas');
16422                                                canvas.width = width;
16423                                                canvas.height = height;
16424                                                ctx = canvas.getContext('2d');
16425                                                gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);
16426                                                processColorStops(backgroundImage.stops, lineLength).forEach(function (colorStop) {
16427                                                    return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
16428                                                });
16429                                                ctx.fillStyle = gradient_1;
16430                                                ctx.fillRect(0, 0, width, height);
16431                                                if (width > 0 && height > 0) {
16432                                                    pattern = this_1.ctx.createPattern(canvas, 'repeat');
16433                                                    this_1.renderRepeat(path, pattern, x, y);
16434                                                }
16435                                            }
16436                                            else if (isRadialGradient(backgroundImage)) {
16437                                                _f = calculateBackgroundRendering(container, index, [
16438                                                    null,
16439                                                    null,
16440                                                    null
16441                                                ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];
16442                                                position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;
16443                                                x = getAbsoluteValue(position[0], width);
16444                                                y = getAbsoluteValue(position[position.length - 1], height);
16445                                                _g = calculateRadius(backgroundImage, x, y, width, height), rx = _g[0], ry = _g[1];
16446                                                if (rx > 0 && ry > 0) {
16447                                                    radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);
16448                                                    processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {
16449                                                        return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
16450                                                    });
16451                                                    this_1.path(path);
16452                                                    this_1.ctx.fillStyle = radialGradient_1;
16453                                                    if (rx !== ry) {
16454                                                        midX = container.bounds.left + 0.5 * container.bounds.width;
16455                                                        midY = container.bounds.top + 0.5 * container.bounds.height;
16456                                                        f = ry / rx;
16457                                                        invF = 1 / f;
16458                                                        this_1.ctx.save();
16459                                                        this_1.ctx.translate(midX, midY);
16460                                                        this_1.ctx.transform(1, 0, 0, f, 0, 0);
16461                                                        this_1.ctx.translate(-midX, -midY);
16462                                                        this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);
16463                                                        this_1.ctx.restore();
16464                                                    }
16465                                                    else {
16466                                                        this_1.ctx.fill();
16467                                                    }
16468                                                }
16469                                            }
16470                                            _h.label = 6;
16471                                        case 6:
16472                                            index--;
16473                                            return [2 /*return*/];
16474                                    }
16475                                });
16476                            };
16477                            this_1 = this;
16478                            _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();
16479                            _b.label = 1;
16480                        case 1:
16481                            if (!(_i < _a.length)) return [3 /*break*/, 4];
16482                            backgroundImage = _a[_i];
16483                            return [5 /*yield**/, _loop_1(backgroundImage)];
16484                        case 2:
16485                            _b.sent();
16486                            _b.label = 3;
16487                        case 3:
16488                            _i++;
16489                            return [3 /*break*/, 1];
16490                        case 4: return [2 /*return*/];
16491                    }
16492                });
16493            });
16494        };
16495        CanvasRenderer.prototype.renderSolidBorder = function (color, side, curvePoints) {
16496            return __awaiter(this, void 0, void 0, function () {
16497                return __generator(this, function (_a) {
16498                    this.path(parsePathForBorder(curvePoints, side));
16499                    this.ctx.fillStyle = asString(color);
16500                    this.ctx.fill();
16501                    return [2 /*return*/];
16502                });
16503            });
16504        };
16505        CanvasRenderer.prototype.renderDoubleBorder = function (color, width, side, curvePoints) {
16506            return __awaiter(this, void 0, void 0, function () {
16507                var outerPaths, innerPaths;
16508                return __generator(this, function (_a) {
16509                    switch (_a.label) {
16510                        case 0:
16511                            if (!(width < 3)) return [3 /*break*/, 2];
16512                            return [4 /*yield*/, this.renderSolidBorder(color, side, curvePoints)];
16513                        case 1:
16514                            _a.sent();
16515                            return [2 /*return*/];
16516                        case 2:
16517                            outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);
16518                            this.path(outerPaths);
16519                            this.ctx.fillStyle = asString(color);
16520                            this.ctx.fill();
16521                            innerPaths = parsePathForBorderDoubleInner(curvePoints, side);
16522                            this.path(innerPaths);
16523                            this.ctx.fill();
16524                            return [2 /*return*/];
16525                    }
16526                });
16527            });
16528        };
16529        CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {
16530            return __awaiter(this, void 0, void 0, function () {
16531                var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;
16532                var _this = this;
16533                return __generator(this, function (_a) {
16534                    switch (_a.label) {
16535                        case 0:
16536                            this.applyEffects(paint.getEffects(2 /* BACKGROUND_BORDERS */));
16537                            styles = paint.container.styles;
16538                            hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;
16539                            borders = [
16540                                { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },
16541                                { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },
16542                                { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },
16543                                { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }
16544                            ];
16545                            backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);
16546                            if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];
16547                            this.ctx.save();
16548                            this.path(backgroundPaintingArea);
16549                            this.ctx.clip();
16550                            if (!isTransparent(styles.backgroundColor)) {
16551                                this.ctx.fillStyle = asString(styles.backgroundColor);
16552                                this.ctx.fill();
16553                            }
16554                            return [4 /*yield*/, this.renderBackgroundImage(paint.container)];
16555                        case 1:
16556                            _a.sent();
16557                            this.ctx.restore();
16558                            styles.boxShadow
16559                                .slice(0)
16560                                .reverse()
16561                                .forEach(function (shadow) {
16562                                _this.ctx.save();
16563                                var borderBoxArea = calculateBorderBoxPath(paint.curves);
16564                                var maskOffset = shadow.inset ? 0 : MASK_OFFSET;
16565                                var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));
16566                                if (shadow.inset) {
16567                                    _this.path(borderBoxArea);
16568                                    _this.ctx.clip();
16569                                    _this.mask(shadowPaintingArea);
16570                                }
16571                                else {
16572                                    _this.mask(borderBoxArea);
16573                                    _this.ctx.clip();
16574                                    _this.path(shadowPaintingArea);
16575                                }
16576                                _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;
16577                                _this.ctx.shadowOffsetY = shadow.offsetY.number;
16578                                _this.ctx.shadowColor = asString(shadow.color);
16579                                _this.ctx.shadowBlur = shadow.blur.number;
16580                                _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';
16581                                _this.ctx.fill();
16582                                _this.ctx.restore();
16583                            });
16584                            _a.label = 2;
16585                        case 2:
16586                            side = 0;
16587                            _i = 0, borders_1 = borders;
16588                            _a.label = 3;
16589                        case 3:
16590                            if (!(_i < borders_1.length)) return [3 /*break*/, 13];
16591                            border = borders_1[_i];
16592                            if (!(border.style !== 0 /* NONE */ && !isTransparent(border.color) && border.width > 0)) return [3 /*break*/, 11];
16593                            if (!(border.style === 2 /* DASHED */)) return [3 /*break*/, 5];
16594                            return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 2 /* DASHED */)];
16595                        case 4:
16596                            _a.sent();
16597                            return [3 /*break*/, 11];
16598                        case 5:
16599                            if (!(border.style === 3 /* DOTTED */)) return [3 /*break*/, 7];
16600                            return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 3 /* DOTTED */)];
16601                        case 6:
16602                            _a.sent();
16603                            return [3 /*break*/, 11];
16604                        case 7:
16605                            if (!(border.style === 4 /* DOUBLE */)) return [3 /*break*/, 9];
16606                            return [4 /*yield*/, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];
16607                        case 8:
16608                            _a.sent();
16609                            return [3 /*break*/, 11];
16610                        case 9: return [4 /*yield*/, this.renderSolidBorder(border.color, side, paint.curves)];
16611                        case 10:
16612                            _a.sent();
16613                            _a.label = 11;
16614                        case 11:
16615                            side++;
16616                            _a.label = 12;
16617                        case 12:
16618                            _i++;
16619                            return [3 /*break*/, 3];
16620                        case 13: return [2 /*return*/];
16621                    }
16622                });
16623            });
16624        };
16625        CanvasRenderer.prototype.renderDashedDottedBorder = function (color, width, side, curvePoints, style) {
16626            return __awaiter(this, void 0, void 0, function () {
16627                var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;
16628                return __generator(this, function (_a) {
16629                    this.ctx.save();
16630                    strokePaths = parsePathForBorderStroke(curvePoints, side);
16631                    boxPaths = parsePathForBorder(curvePoints, side);
16632                    if (style === 2 /* DASHED */) {
16633                        this.path(boxPaths);
16634                        this.ctx.clip();
16635                    }
16636                    if (isBezierCurve(boxPaths[0])) {
16637                        startX = boxPaths[0].start.x;
16638                        startY = boxPaths[0].start.y;
16639                    }
16640                    else {
16641                        startX = boxPaths[0].x;
16642                        startY = boxPaths[0].y;
16643                    }
16644                    if (isBezierCurve(boxPaths[1])) {
16645                        endX = boxPaths[1].end.x;
16646                        endY = boxPaths[1].end.y;
16647                    }
16648                    else {
16649                        endX = boxPaths[1].x;
16650                        endY = boxPaths[1].y;
16651                    }
16652                    if (side === 0 || side === 2) {
16653                        length = Math.abs(startX - endX);
16654                    }
16655                    else {
16656                        length = Math.abs(startY - endY);
16657                    }
16658                    this.ctx.beginPath();
16659                    if (style === 3 /* DOTTED */) {
16660                        this.formatPath(strokePaths);
16661                    }
16662                    else {
16663                        this.formatPath(boxPaths.slice(0, 2));
16664                    }
16665                    dashLength = width < 3 ? width * 3 : width * 2;
16666                    spaceLength = width < 3 ? width * 2 : width;
16667                    if (style === 3 /* DOTTED */) {
16668                        dashLength = width;
16669                        spaceLength = width;
16670                    }
16671                    useLineDash = true;
16672                    if (length <= dashLength * 2) {
16673                        useLineDash = false;
16674                    }
16675                    else if (length <= dashLength * 2 + spaceLength) {
16676                        multiplier = length / (2 * dashLength + spaceLength);
16677                        dashLength *= multiplier;
16678                        spaceLength *= multiplier;
16679                    }
16680                    else {
16681                        numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));
16682                        minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);
16683                        maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;
16684                        spaceLength =
16685                            maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)
16686                                ? minSpace
16687                                : maxSpace;
16688                    }
16689                    if (useLineDash) {
16690                        if (style === 3 /* DOTTED */) {
16691                            this.ctx.setLineDash([0, dashLength + spaceLength]);
16692                        }
16693                        else {
16694                            this.ctx.setLineDash([dashLength, spaceLength]);
16695                        }
16696                    }
16697                    if (style === 3 /* DOTTED */) {
16698                        this.ctx.lineCap = 'round';
16699                        this.ctx.lineWidth = width;
16700                    }
16701                    else {
16702                        this.ctx.lineWidth = width * 2 + 1.1;
16703                    }
16704                    this.ctx.strokeStyle = asString(color);
16705                    this.ctx.stroke();
16706                    this.ctx.setLineDash([]);
16707                    // dashed round edge gap
16708                    if (style === 2 /* DASHED */) {
16709                        if (isBezierCurve(boxPaths[0])) {
16710                            path1 = boxPaths[3];
16711                            path2 = boxPaths[0];
16712                            this.ctx.beginPath();
16713                            this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
16714                            this.ctx.stroke();
16715                        }
16716                        if (isBezierCurve(boxPaths[1])) {
16717                            path1 = boxPaths[1];
16718                            path2 = boxPaths[2];
16719                            this.ctx.beginPath();
16720                            this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
16721                            this.ctx.stroke();
16722                        }
16723                    }
16724                    this.ctx.restore();
16725                    return [2 /*return*/];
16726                });
16727            });
16728        };
16729        CanvasRenderer.prototype.render = function (element) {
16730            return __awaiter(this, void 0, void 0, function () {
16731                var stack;
16732                return __generator(this, function (_a) {
16733                    switch (_a.label) {
16734                        case 0:
16735                            if (this.options.backgroundColor) {
16736                                this.ctx.fillStyle = asString(this.options.backgroundColor);
16737                                this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);
16738                            }
16739                            stack = parseStackingContexts(element);
16740                            return [4 /*yield*/, this.renderStack(stack)];
16741                        case 1:
16742                            _a.sent();
16743                            this.applyEffects([]);
16744                            return [2 /*return*/, this.canvas];
16745                    }
16746                });
16747            });
16748        };
16749        return CanvasRenderer;
16750    }(Renderer));
16751    var isTextInputElement = function (container) {
16752        if (container instanceof TextareaElementContainer) {
16753            return true;
16754        }
16755        else if (container instanceof SelectElementContainer) {
16756            return true;
16757        }
16758        else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {
16759            return true;
16760        }
16761        return false;
16762    };
16763    var calculateBackgroundCurvedPaintingArea = function (clip, curves) {
16764        switch (clip) {
16765            case 0 /* BORDER_BOX */:
16766                return calculateBorderBoxPath(curves);
16767            case 2 /* CONTENT_BOX */:
16768                return calculateContentBoxPath(curves);
16769            case 1 /* PADDING_BOX */:
16770            default:
16771                return calculatePaddingBoxPath(curves);
16772        }
16773    };
16774    var canvasTextAlign = function (textAlign) {
16775        switch (textAlign) {
16776            case 1 /* CENTER */:
16777                return 'center';
16778            case 2 /* RIGHT */:
16779                return 'right';
16780            case 0 /* LEFT */:
16781            default:
16782                return 'left';
16783        }
16784    };
16785    // see https://github.com/niklasvh/html2canvas/pull/2645
16786    var iOSBrokenFonts = ['-apple-system', 'system-ui'];
16787    var fixIOSSystemFonts = function (fontFamilies) {
16788        return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)
16789            ? fontFamilies.filter(function (fontFamily) { return iOSBrokenFonts.indexOf(fontFamily) === -1; })
16790            : fontFamilies;
16791    };
16792
16793    var ForeignObjectRenderer = /** @class */ (function (_super) {
16794        __extends(ForeignObjectRenderer, _super);
16795        function ForeignObjectRenderer(context, options) {
16796            var _this = _super.call(this, context, options) || this;
16797            _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');
16798            _this.ctx = _this.canvas.getContext('2d');
16799            _this.options = options;
16800            _this.canvas.width = Math.floor(options.width * options.scale);
16801            _this.canvas.height = Math.floor(options.height * options.scale);
16802            _this.canvas.style.width = options.width + "px";
16803            _this.canvas.style.height = options.height + "px";
16804            _this.ctx.scale(_this.options.scale, _this.options.scale);
16805            _this.ctx.translate(-options.x, -options.y);
16806            _this.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
16807            return _this;
16808        }
16809        ForeignObjectRenderer.prototype.render = function (element) {
16810            return __awaiter(this, void 0, void 0, function () {
16811                var svg, img;
16812                return __generator(this, function (_a) {
16813                    switch (_a.label) {
16814                        case 0:
16815                            svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);
16816                            return [4 /*yield*/, loadSerializedSVG(svg)];
16817                        case 1:
16818                            img = _a.sent();
16819                            if (this.options.backgroundColor) {
16820                                this.ctx.fillStyle = asString(this.options.backgroundColor);
16821                                this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);
16822                            }
16823                            this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);
16824                            return [2 /*return*/, this.canvas];
16825                    }
16826                });
16827            });
16828        };
16829        return ForeignObjectRenderer;
16830    }(Renderer));
16831    var loadSerializedSVG = function (svg) {
16832        return new Promise(function (resolve, reject) {
16833            var img = new Image();
16834            img.onload = function () {
16835                resolve(img);
16836            };
16837            img.onerror = reject;
16838            img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
16839        });
16840    };
16841
16842    var Logger = /** @class */ (function () {
16843        function Logger(_a) {
16844            var id = _a.id, enabled = _a.enabled;
16845            this.id = id;
16846            this.enabled = enabled;
16847            this.start = Date.now();
16848        }
16849        // eslint-disable-next-line @typescript-eslint/no-explicit-any
16850        Logger.prototype.debug = function () {
16851            var args = [];
16852            for (var _i = 0; _i < arguments.length; _i++) {
16853                args[_i] = arguments[_i];
16854            }
16855            if (this.enabled) {
16856                // eslint-disable-next-line no-console
16857                if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {
16858                    // eslint-disable-next-line no-console
16859                    console.debug.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
16860                }
16861                else {
16862                    this.info.apply(this, args);
16863                }
16864            }
16865        };
16866        Logger.prototype.getTime = function () {
16867            return Date.now() - this.start;
16868        };
16869        // eslint-disable-next-line @typescript-eslint/no-explicit-any
16870        Logger.prototype.info = function () {
16871            var args = [];
16872            for (var _i = 0; _i < arguments.length; _i++) {
16873                args[_i] = arguments[_i];
16874            }
16875            if (this.enabled) {
16876                // eslint-disable-next-line no-console
16877                if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {
16878                    // eslint-disable-next-line no-console
16879                    console.info.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
16880                }
16881            }
16882        };
16883        // eslint-disable-next-line @typescript-eslint/no-explicit-any
16884        Logger.prototype.warn = function () {
16885            var args = [];
16886            for (var _i = 0; _i < arguments.length; _i++) {
16887                args[_i] = arguments[_i];
16888            }
16889            if (this.enabled) {
16890                // eslint-disable-next-line no-console
16891                if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {
16892                    // eslint-disable-next-line no-console
16893                    console.warn.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
16894                }
16895                else {
16896                    this.info.apply(this, args);
16897                }
16898            }
16899        };
16900        // eslint-disable-next-line @typescript-eslint/no-explicit-any
16901        Logger.prototype.error = function () {
16902            var args = [];
16903            for (var _i = 0; _i < arguments.length; _i++) {
16904                args[_i] = arguments[_i];
16905            }
16906            if (this.enabled) {
16907                // eslint-disable-next-line no-console
16908                if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {
16909                    // eslint-disable-next-line no-console
16910                    console.error.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
16911                }
16912                else {
16913                    this.info.apply(this, args);
16914                }
16915            }
16916        };
16917        Logger.instances = {};
16918        return Logger;
16919    }());
16920
16921    var Context = /** @class */ (function () {
16922        function Context(options, windowBounds) {
16923            var _a;
16924            this.windowBounds = windowBounds;
16925            this.instanceName = "#" + Context.instanceCount++;
16926            this.logger = new Logger({ id: this.instanceName, enabled: options.logging });
16927            this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);
16928        }
16929        Context.instanceCount = 1;
16930        return Context;
16931    }());
16932
16933    var html2canvas = function (element, options) {
16934        if (options === void 0) { options = {}; }
16935        return renderElement(element, options);
16936    };
16937    if (typeof window !== 'undefined') {
16938        CacheStorage.setContext(window);
16939    }
16940    var renderElement = function (element, opts) { return __awaiter(void 0, void 0, void 0, function () {
16941        var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor, renderOptions, canvas, renderer, root, renderer;
16942        var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
16943        return __generator(this, function (_u) {
16944            switch (_u.label) {
16945                case 0:
16946                    if (!element || typeof element !== 'object') {
16947                        return [2 /*return*/, Promise.reject('Invalid element provided as first argument')];
16948                    }
16949                    ownerDocument = element.ownerDocument;
16950                    if (!ownerDocument) {
16951                        throw new Error("Element is not attached to a Document");
16952                    }
16953                    defaultView = ownerDocument.defaultView;
16954                    if (!defaultView) {
16955                        throw new Error("Document is not attached to a Window");
16956                    }
16957                    resourceOptions = {
16958                        allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,
16959                        imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15000,
16960                        proxy: opts.proxy,
16961                        useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false
16962                    };
16963                    contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);
16964                    windowOptions = {
16965                        windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,
16966                        windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,
16967                        scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,
16968                        scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset
16969                    };
16970                    windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
16971                    context = new Context(contextOptions, windowBounds);
16972                    foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;
16973                    cloneOptions = {
16974                        allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,
16975                        onclone: opts.onclone,
16976                        ignoreElements: opts.ignoreElements,
16977                        inlineImages: foreignObjectRendering,
16978                        copyStyles: foreignObjectRendering
16979                    };
16980                    context.logger.debug("Starting document clone with size " + windowBounds.width + "x" + windowBounds.height + " scrolled to " + -windowBounds.left + "," + -windowBounds.top);
16981                    documentCloner = new DocumentCloner(context, element, cloneOptions);
16982                    clonedElement = documentCloner.clonedReferenceElement;
16983                    if (!clonedElement) {
16984                        return [2 /*return*/, Promise.reject("Unable to find element in cloned iframe")];
16985                    }
16986                    return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];
16987                case 1:
16988                    container = _u.sent();
16989                    _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement)
16990                        ? parseDocumentSize(clonedElement.ownerDocument)
16991                        : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;
16992                    backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);
16993                    renderOptions = {
16994                        canvas: opts.canvas,
16995                        backgroundColor: backgroundColor,
16996                        scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,
16997                        x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,
16998                        y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,
16999                        width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),
17000                        height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)
17001                    };
17002                    if (!foreignObjectRendering) return [3 /*break*/, 3];
17003                    context.logger.debug("Document cloned, using foreign object rendering");
17004                    renderer = new ForeignObjectRenderer(context, renderOptions);
17005                    return [4 /*yield*/, renderer.render(clonedElement)];
17006                case 2:
17007                    canvas = _u.sent();
17008                    return [3 /*break*/, 5];
17009                case 3:
17010                    context.logger.debug("Document cloned, element located at " + left + "," + top + " with size " + width + "x" + height + " using computed rendering");
17011                    context.logger.debug("Starting DOM parsing");
17012                    root = parseTree(context, clonedElement);
17013                    if (backgroundColor === root.styles.backgroundColor) {
17014                        root.styles.backgroundColor = COLORS.TRANSPARENT;
17015                    }
17016                    context.logger.debug("Starting renderer for element at " + renderOptions.x + "," + renderOptions.y + " with size " + renderOptions.width + "x" + renderOptions.height);
17017                    renderer = new CanvasRenderer(context, renderOptions);
17018                    return [4 /*yield*/, renderer.render(root)];
17019                case 4:
17020                    canvas = _u.sent();
17021                    _u.label = 5;
17022                case 5:
17023                    if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {
17024                        if (!DocumentCloner.destroy(container)) {
17025                            context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore");
17026                        }
17027                    }
17028                    context.logger.debug("Finished rendering");
17029                    return [2 /*return*/, canvas];
17030            }
17031        });
17032    }); };
17033    var parseBackgroundColor = function (context, element, backgroundColorOverride) {
17034        var ownerDocument = element.ownerDocument;
17035        // http://www.w3.org/TR/css3-background/#special-backgrounds
17036        var documentBackgroundColor = ownerDocument.documentElement
17037            ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor)
17038            : COLORS.TRANSPARENT;
17039        var bodyBackgroundColor = ownerDocument.body
17040            ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor)
17041            : COLORS.TRANSPARENT;
17042        var defaultBackgroundColor = typeof backgroundColorOverride === 'string'
17043            ? parseColor(context, backgroundColorOverride)
17044            : backgroundColorOverride === null
17045                ? COLORS.TRANSPARENT
17046                : 0xffffffff;
17047        return element === ownerDocument.documentElement
17048            ? isTransparent(documentBackgroundColor)
17049                ? isTransparent(bodyBackgroundColor)
17050                    ? defaultBackgroundColor
17051                    : bodyBackgroundColor
17052                : documentBackgroundColor
17053            : defaultBackgroundColor;
17054    };
17055
17056    return html2canvas;
17057
17058})));
17059
17060
17061},{}],345:[function(require,module,exports){
17062(function (global){(function (
vendor: 13,635 bytes, lines 17062-17414
17062){
17063/**
17064 * Copyright (c) 2014, Facebook, Inc.
17065 * All rights reserved.
17066 *
17067 * This source code is licensed under the BSD-style license found in the
17068 * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
17069 * additional grant of patent rights can be found in the PATENTS file in
17070 * the same directory.
17071 */
17072
17073!(function(global) {
17074  "use strict";
17075
17076  var Op = Object.prototype;
17077  var hasOwn = Op.hasOwnProperty;
17078  var undefined; // More compressible than void 0.
17079  var $Symbol = typeof Symbol === "function" ? Symbol : {};
17080  var iteratorSymbol = $Symbol.iterator || "@@iterator";
17081  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
17082  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
17083
17084  var inModule = typeof module === "object";
17085  var runtime = global.regeneratorRuntime;
17086  if (runtime) {
17087    if (inModule) {
17088      // If regeneratorRuntime is defined globally and we're in a module,
17089      // make the exports object identical to regeneratorRuntime.
17090      module.exports = runtime;
17091    }
17092    // Don't bother evaluating the rest of this file if the runtime was
17093    // already defined globally.
17094    return;
17095  }
17096
17097  // Define the runtime globally (as expected by generated code) as either
17098  // module.exports (if we're in a module) or a new, empty object.
17099  runtime = global.regeneratorRuntime = inModule ? module.exports : {};
17100
17101  function wrap(innerFn, outerFn, self, tryLocsList) {
17102    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
17103    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
17104    var generator = Object.create(protoGenerator.prototype);
17105    var context = new Context(tryLocsList || []);
17106
17107    // The ._invoke method unifies the implementations of the .next,
17108    // .throw, and .return methods.
17109    generator._invoke = makeInvokeMethod(innerFn, self, context);
17110
17111    return generator;
17112  }
17113  runtime.wrap = wrap;
17114
17115  // Try/catch helper to minimize deoptimizations. Returns a completion
17116  // record like context.tryEntries[i].completion. This interface could
17117  // have been (and was previously) designed to take a closure to be
17118  // invoked without arguments, but in all the cases we care about we
17119  // already have an existing method we want to call, so there's no need
17120  // to create a new function object. We can even get away with assuming
17121  // the method takes exactly one argument, since that happens to be true
17122  // in every case, so we don't have to touch the arguments object. The
17123  // only additional allocation required is the completion record, which
17124  // has a stable shape and so hopefully should be cheap to allocate.
17125  function tryCatch(fn, obj, arg) {
17126    try {
17127      return { type: "normal", arg: fn.call(obj, arg) };
17128    } catch (err) {
17129      return { type: "throw", arg: err };
17130    }
17131  }
17132
17133  var GenStateSuspendedStart = "suspendedStart";
17134  var GenStateSuspendedYield = "suspendedYield";
17135  var GenStateExecuting = "executing";
17136  var GenStateCompleted = "completed";
17137
17138  // Returning this object from the innerFn has the same effect as
17139  // breaking out of the dispatch switch statement.
17140  var ContinueSentinel = {};
17141
17142  // Dummy constructor functions that we use as the .constructor and
17143  // .constructor.prototype properties for functions that return Generator
17144  // objects. For full spec compliance, you may wish to configure your
17145  // minifier not to mangle the names of these two functions.
17146  function Generator() {}
17147  function GeneratorFunction() {}
17148  function GeneratorFunctionPrototype() {}
17149
17150  // This is a polyfill for %IteratorPrototype% for environments that
17151  // don't natively support it.
17152  var IteratorPrototype = {};
17153  IteratorPrototype[iteratorSymbol] = function () {
17154    return this;
17155  };
17156
17157  var getProto = Object.getPrototypeOf;
17158  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
17159  if (NativeIteratorPrototype &&
17160      NativeIteratorPrototype !== Op &&
17161      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
17162    // This environment has a native %IteratorPrototype%; use it instead
17163    // of the polyfill.
17164    IteratorPrototype = NativeIteratorPrototype;
17165  }
17166
17167  var Gp = GeneratorFunctionPrototype.prototype =
17168    Generator.prototype = Object.create(IteratorPrototype);
17169  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
17170  GeneratorFunctionPrototype.constructor = GeneratorFunction;
17171  GeneratorFunctionPrototype[toStringTagSymbol] =
17172    GeneratorFunction.displayName = "GeneratorFunction";
17173
17174  // Helper for defining the .next, .throw, and .return methods of the
17175  // Iterator interface in terms of a single ._invoke method.
17176  function defineIteratorMethods(prototype) {
17177    ["next", "throw", "return"].forEach(function(method) {
17178      prototype[method] = function(arg) {
17179        return this._invoke(method, arg);
17180      };
17181    });
17182  }
17183
17184  runtime.isGeneratorFunction = function(genFun) {
17185    var ctor = typeof genFun === "function" && genFun.constructor;
17186    return ctor
17187      ? ctor === GeneratorFunction ||
17188        // For the native GeneratorFunction constructor, the best we can
17189        // do is to check its .name property.
17190        (ctor.displayName || ctor.name) === "GeneratorFunction"
17191      : false;
17192  };
17193
17194  runtime.mark = function(genFun) {
17195    if (Object.setPrototypeOf) {
17196      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
17197    } else {
17198      genFun.__proto__ = GeneratorFunctionPrototype;
17199      if (!(toStringTagSymbol in genFun)) {
17200        genFun[toStringTagSymbol] = "GeneratorFunction";
17201      }
17202    }
17203    genFun.prototype = Object.create(Gp);
17204    return genFun;
17205  };
17206
17207  // Within the body of any async function, `await x` is transformed to
17208  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
17209  // `hasOwn.call(value, "__await")` to determine if the yielded value is
17210  // meant to be awaited.
17211  runtime.awrap = function(arg) {
17212    return { __await: arg };
17213  };
17214
17215  function AsyncIterator(generator) {
17216    function invoke(method, arg, resolve, reject) {
17217      var record = tryCatch(generator[method], generator, arg);
17218      if (record.type === "throw") {
17219        reject(record.arg);
17220      } else {
17221        var result = record.arg;
17222        var value = result.value;
17223        if (value &&
17224            typeof value === "object" &&
17225            hasOwn.call(value, "__await")) {
17226          return Promise.resolve(value.__await).then(function(value) {
17227            invoke("next", value, resolve, reject);
17228          }, function(err) {
17229            invoke("throw", err, resolve, reject);
17230          });
17231        }
17232
17233        return Promise.resolve(value).then(function(unwrapped) {
17234          // When a yielded Promise is resolved, its final value becomes
17235          // the .value of the Promise<{value,done}> result for the
17236          // current iteration. If the Promise is rejected, however, the
17237          // result for this iteration will be rejected with the same
17238          // reason. Note that rejections of yielded Promises are not
17239          // thrown back into the generator function, as is the case
17240          // when an awaited Promise is rejected. This difference in
17241          // behavior between yield and await is important, because it
17242          // allows the consumer to decide what to do with the yielded
17243          // rejection (swallow it and continue, manually .throw it back
17244          // into the generator, abandon iteration, whatever). With
17245          // await, by contrast, there is no opportunity to examine the
17246          // rejection reason outside the generator function, so the
17247          // only option is to throw it from the await expression, and
17248          // let the generator function handle the exception.
17249          result.value = unwrapped;
17250          resolve(result);
17251        }, reject);
17252      }
17253    }
17254
17255    if (typeof global.process === "object" && global.process.domain) {
17256      invoke = global.process.domain.bind(invoke);
17257    }
17258
17259    var previousPromise;
17260
17261    function enqueue(method, arg) {
17262      function callInvokeWithMethodAndArg() {
17263        return new Promise(function(resolve, reject) {
17264          invoke(method, arg, resolve, reject);
17265        });
17266      }
17267
17268      return previousPromise =
17269        // If enqueue has been called before, then we want to wait until
17270        // all previous Promises have been resolved before calling invoke,
17271        // so that results are always delivered in the correct order. If
17272        // enqueue has not been called before, then it is important to
17273        // call invoke immediately, without waiting on a callback to fire,
17274        // so that the async generator function has the opportunity to do
17275        // any necessary setup in a predictable way. This predictability
17276        // is why the Promise constructor synchronously invokes its
17277        // executor callback, and why async functions synchronously
17278        // execute code before the first await. Since we implement simple
17279        // async functions in terms of async generators, it is especially
17280        // important to get this right, even though it requires care.
17281        previousPromise ? previousPromise.then(
17282          callInvokeWithMethodAndArg,
17283          // Avoid propagating failures to Promises returned by later
17284          // invocations of the iterator.
17285          callInvokeWithMethodAndArg
17286        ) : callInvokeWithMethodAndArg();
17287    }
17288
17289    // Define the unified helper method that is used to implement .next,
17290    // .throw, and .return (see defineIteratorMethods).
17291    this._invoke = enqueue;
17292  }
17293
17294  defineIteratorMethods(AsyncIterator.prototype);
17295  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
17296    return this;
17297  };
17298  runtime.AsyncIterator = AsyncIterator;
17299
17300  // Note that simple async functions are implemented on top of
17301  // AsyncIterator objects; they just return a Promise for the value of
17302  // the final result produced by the iterator.
17303  runtime.async = function(innerFn, outerFn, self, tryLocsList) {
17304    var iter = new AsyncIterator(
17305      wrap(innerFn, outerFn, self, tryLocsList)
17306    );
17307
17308    return runtime.isGeneratorFunction(outerFn)
17309      ? iter // If outerFn is a generator, return the full iterator.
17310      : iter.next().then(function(result) {
17311          return result.done ? result.value : iter.next();
17312        });
17313  };
17314
17315  function makeInvokeMethod(innerFn, self, context) {
17316    var state = GenStateSuspendedStart;
17317
17318    return function invoke(method, arg) {
17319      if (state === GenStateExecuting) {
17320        throw new Error("Generator is already running");
17321      }
17322
17323      if (state === GenStateCompleted) {
17324        if (method === "throw") {
17325          throw arg;
17326        }
17327
17328        // Be forgiving, per 25.3.3.3.3 of the spec:
17329        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
17330        return doneResult();
17331      }
17332
17333      context.method = method;
17334      context.arg = arg;
17335
17336      while (true) {
17337        var delegate = context.delegate;
17338        if (delegate) {
17339          var delegateResult = maybeInvokeDelegate(delegate, context);
17340          if (delegateResult) {
17341            if (delegateResult === ContinueSentinel) continue;
17342            return delegateResult;
17343          }
17344        }
17345
17346        if (context.method === "next") {
17347          // Setting context._sent for legacy support of Babel's
17348          // function.sent implementation.
17349          context.sent = context._sent = context.arg;
17350
17351        } else if (context.method === "throw") {
17352          if (state === GenStateSuspendedStart) {
17353            state = GenStateCompleted;
17354            throw context.arg;
17355          }
17356
17357          context.dispatchException(context.arg);
17358
17359        } else if (context.method === "return") {
17360          context.abrupt("return", context.arg);
17361        }
17362
17363        state = GenStateExecuting;
17364
17365        var record = tryCatch(innerFn, self, context);
17366        if (record.type === "normal") {
17367          // If an exception is thrown from innerFn, we leave state ===
17368          // GenStateExecuting and loop back for another invocation.
17369          state = context.done
17370            ? GenStateCompleted
17371            : GenStateSuspendedYield;
17372
17373          if (record.arg === ContinueSentinel) {
17374            continue;
17375          }
17376
17377          return {
17378            value: record.arg,
17379            done: context.done
17380          };
17381
17382        } else if (record.type === "throw") {
17383          state = GenStateCompleted;
17384          // Dispatch the exception by looping back around to the
17385          // context.dispatchException(context.arg) call above.
17386          context.method = "throw";
17387          context.arg = record.arg;
17388        }
17389      }
17390    };
17391  }
17392
17393  // Call delegate.iterator[context.method](context.arg) and handle the
17394  // result, either by returning a { value, done } result from the
17395  // delegate iterator, or by modifying context.method and context.arg,
17396  // setting context.delegate to null, and returning the ContinueSentinel.
17397  function maybeInvokeDelegate(delegate, context) {
17398    var method = delegate.iterator[context.method];
17399    if (method === undefined) {
17400      // A .throw or .return when the delegate iterator has no .throw
17401      // method always terminates the yield* loop.
17402      context.delegate = null;
17403
17404      if (context.method === "throw") {
17405        if (delegate.iterator.return) {
17406          // If the delegate iterator has a return method, give it a
17407          // chance to clean up.
17408          context.method = "return";
17409          context.arg = undefined;
17410          maybeInvokeDelegate(delegate, context);
17411
17412          if (context.method === "throw") {
17413            // If maybeInvokeDelegate(context) changed context.method from
17414            // "return" to "throw", let that override the TypeError below.
vendor: 10,473 bytes, lines 17415-17792
17415            return ContinueSentinel;
17416          }
17417        }
17418
17419        context.method = "throw";
17420        context.arg = new TypeError(
17421          "The iterator does not provide a 'throw' method");
17422      }
17423
17424      return ContinueSentinel;
17425    }
17426
17427    var record = tryCatch(method, delegate.iterator, context.arg);
17428
17429    if (record.type === "throw") {
17430      context.method = "throw";
17431      context.arg = record.arg;
17432      context.delegate = null;
17433      return ContinueSentinel;
17434    }
17435
17436    var info = record.arg;
17437
17438    if (! info) {
17439      context.method = "throw";
17440      context.arg = new TypeError("iterator result is not an object");
17441      context.delegate = null;
17442      return ContinueSentinel;
17443    }
17444
17445    if (info.done) {
17446      // Assign the result of the finished delegate to the temporary
17447      // variable specified by delegate.resultName (see delegateYield).
17448      context[delegate.resultName] = info.value;
17449
17450      // Resume execution at the desired location (see delegateYield).
17451      context.next = delegate.nextLoc;
17452
17453      // If context.method was "throw" but the delegate handled the
17454      // exception, let the outer generator proceed normally. If
17455      // context.method was "next", forget context.arg since it has been
17456      // "consumed" by the delegate iterator. If context.method was
17457      // "return", allow the original .return call to continue in the
17458      // outer generator.
17459      if (context.method !== "return") {
17460        context.method = "next";
17461        context.arg = undefined;
17462      }
17463
17464    } else {
17465      // Re-yield the result returned by the delegate method.
17466      return info;
17467    }
17468
17469    // The delegate iterator is finished, so forget it and continue with
17470    // the outer generator.
17471    context.delegate = null;
17472    return ContinueSentinel;
17473  }
17474
17475  // Define Generator.prototype.{next,throw,return} in terms of the
17476  // unified ._invoke helper method.
17477  defineIteratorMethods(Gp);
17478
17479  Gp[toStringTagSymbol] = "Generator";
17480
17481  // A Generator should always return itself as the iterator object when the
17482  // @@iterator function is called on it. Some browsers' implementations of the
17483  // iterator prototype chain incorrectly implement this, causing the Generator
17484  // object to not be returned from this call. This ensures that doesn't happen.
17485  // See https://github.com/facebook/regenerator/issues/274 for more details.
17486  Gp[iteratorSymbol] = function() {
17487    return this;
17488  };
17489
17490  Gp.toString = function() {
17491    return "[object Generator]";
17492  };
17493
17494  function pushTryEntry(locs) {
17495    var entry = { tryLoc: locs[0] };
17496
17497    if (1 in locs) {
17498      entry.catchLoc = locs[1];
17499    }
17500
17501    if (2 in locs) {
17502      entry.finallyLoc = locs[2];
17503      entry.afterLoc = locs[3];
17504    }
17505
17506    this.tryEntries.push(entry);
17507  }
17508
17509  function resetTryEntry(entry) {
17510    var record = entry.completion || {};
17511    record.type = "normal";
17512    delete record.arg;
17513    entry.completion = record;
17514  }
17515
17516  function Context(tryLocsList) {
17517    // The root entry object (effectively a try statement without a catch
17518    // or a finally block) gives us a place to store values thrown from
17519    // locations where there is no enclosing try statement.
17520    this.tryEntries = [{ tryLoc: "root" }];
17521    tryLocsList.forEach(pushTryEntry, this);
17522    this.reset(true);
17523  }
17524
17525  runtime.keys = function(object) {
17526    var keys = [];
17527    for (var key in object) {
17528      keys.push(key);
17529    }
17530    keys.reverse();
17531
17532    // Rather than returning an object with a next method, we keep
17533    // things simple and return the next function itself.
17534    return function next() {
17535      while (keys.length) {
17536        var key = keys.pop();
17537        if (key in object) {
17538          next.value = key;
17539          next.done = false;
17540          return next;
17541        }
17542      }
17543
17544      // To avoid creating an additional object, we just hang the .value
17545      // and .done properties off the next function object itself. This
17546      // also ensures that the minifier will not anonymize the function.
17547      next.done = true;
17548      return next;
17549    };
17550  };
17551
17552  function values(iterable) {
17553    if (iterable) {
17554      var iteratorMethod = iterable[iteratorSymbol];
17555      if (iteratorMethod) {
17556        return iteratorMethod.call(iterable);
17557      }
17558
17559      if (typeof iterable.next === "function") {
17560        return iterable;
17561      }
17562
17563      if (!isNaN(iterable.length)) {
17564        var i = -1, next = function next() {
17565          while (++i < iterable.length) {
17566            if (hasOwn.call(iterable, i)) {
17567              next.value = iterable[i];
17568              next.done = false;
17569              return next;
17570            }
17571          }
17572
17573          next.value = undefined;
17574          next.done = true;
17575
17576          return next;
17577        };
17578
17579        return next.next = next;
17580      }
17581    }
17582
17583    // Return an iterator with no values.
17584    return { next: doneResult };
17585  }
17586  runtime.values = values;
17587
17588  function doneResult() {
17589    return { value: undefined, done: true };
17590  }
17591
17592  Context.prototype = {
17593    constructor: Context,
17594
17595    reset: function(skipTempReset) {
17596      this.prev = 0;
17597      this.next = 0;
17598      // Resetting context._sent for legacy support of Babel's
17599      // function.sent implementation.
17600      this.sent = this._sent = undefined;
17601      this.done = false;
17602      this.delegate = null;
17603
17604      this.method = "next";
17605      this.arg = undefined;
17606
17607      this.tryEntries.forEach(resetTryEntry);
17608
17609      if (!skipTempReset) {
17610        for (var name in this) {
17611          // Not sure about the optimal order of these conditions:
17612          if (name.charAt(0) === "t" &&
17613              hasOwn.call(this, name) &&
17614              !isNaN(+name.slice(1))) {
17615            this[name] = undefined;
17616          }
17617        }
17618      }
17619    },
17620
17621    stop: function() {
17622      this.done = true;
17623
17624      var rootEntry = this.tryEntries[0];
17625      var rootRecord = rootEntry.completion;
17626      if (rootRecord.type === "throw") {
17627        throw rootRecord.arg;
17628      }
17629
17630      return this.rval;
17631    },
17632
17633    dispatchException: function(exception) {
17634      if (this.done) {
17635        throw exception;
17636      }
17637
17638      var context = this;
17639      function handle(loc, caught) {
17640        record.type = "throw";
17641        record.arg = exception;
17642        context.next = loc;
17643
17644        if (caught) {
17645          // If the dispatched exception was caught by a catch block,
17646          // then let that catch block handle the exception normally.
17647          context.method = "next";
17648          context.arg = undefined;
17649        }
17650
17651        return !! caught;
17652      }
17653
17654      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
17655        var entry = this.tryEntries[i];
17656        var record = entry.completion;
17657
17658        if (entry.tryLoc === "root") {
17659          // Exception thrown outside of any try block that could handle
17660          // it, so set the completion value of the entire function to
17661          // throw the exception.
17662          return handle("end");
17663        }
17664
17665        if (entry.tryLoc <= this.prev) {
17666          var hasCatch = hasOwn.call(entry, "catchLoc");
17667          var hasFinally = hasOwn.call(entry, "finallyLoc");
17668
17669          if (hasCatch && hasFinally) {
17670            if (this.prev < entry.catchLoc) {
17671              return handle(entry.catchLoc, true);
17672            } else if (this.prev < entry.finallyLoc) {
17673              return handle(entry.finallyLoc);
17674            }
17675
17676          } else if (hasCatch) {
17677            if (this.prev < entry.catchLoc) {
17678              return handle(entry.catchLoc, true);
17679            }
17680
17681          } else if (hasFinally) {
17682            if (this.prev < entry.finallyLoc) {
17683              return handle(entry.finallyLoc);
17684            }
17685
17686          } else {
17687            throw new Error("try statement without catch or finally");
17688          }
17689        }
17690      }
17691    },
17692
17693    abrupt: function(type, arg) {
17694      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
17695        var entry = this.tryEntries[i];
17696        if (entry.tryLoc <= this.prev &&
17697            hasOwn.call(entry, "finallyLoc") &&
17698            this.prev < entry.finallyLoc) {
17699          var finallyEntry = entry;
17700          break;
17701        }
17702      }
17703
17704      if (finallyEntry &&
17705          (type === "break" ||
17706           type === "continue") &&
17707          finallyEntry.tryLoc <= arg &&
17708          arg <= finallyEntry.finallyLoc) {
17709        // Ignore the finally entry if control is not jumping to a
17710        // location outside the try/catch block.
17711        finallyEntry = null;
17712      }
17713
17714      var record = finallyEntry ? finallyEntry.completion : {};
17715      record.type = type;
17716      record.arg = arg;
17717
17718      if (finallyEntry) {
17719        this.method = "next";
17720        this.next = finallyEntry.finallyLoc;
17721        return ContinueSentinel;
17722      }
17723
17724      return this.complete(record);
17725    },
17726
17727    complete: function(record, afterLoc) {
17728      if (record.type === "throw") {
17729        throw record.arg;
17730      }
17731
17732      if (record.type === "break" ||
17733          record.type === "continue") {
17734        this.next = record.arg;
17735      } else if (record.type === "return") {
17736        this.rval = this.arg = record.arg;
17737        this.method = "return";
17738        this.next = "end";
17739      } else if (record.type === "normal" && afterLoc) {
17740        this.next = afterLoc;
17741      }
17742
17743      return ContinueSentinel;
17744    },
17745
17746    finish: function(finallyLoc) {
17747      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
17748        var entry = this.tryEntries[i];
17749        if (entry.finallyLoc === finallyLoc) {
17750          this.complete(entry.completion, entry.afterLoc);
17751          resetTryEntry(entry);
17752          return ContinueSentinel;
17753        }
17754      }
17755    },
17756
17757    "catch": function(tryLoc) {
17758      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
17759        var entry = this.tryEntries[i];
17760        if (entry.tryLoc === tryLoc) {
17761          var record = entry.completion;
17762          if (record.type === "throw") {
17763            var thrown = record.arg;
17764            resetTryEntry(entry);
17765          }
17766          return thrown;
17767        }
17768      }
17769
17770      // The context.catch method must only be called with a location
17771      // argument that corresponds to a known catch block.
17772      throw new Error("illegal catch attempt");
17773    },
17774
17775    delegateYield: function(iterable, resultName, nextLoc) {
17776      this.delegate = {
17777        iterator: values(iterable),
17778        resultName: resultName,
17779        nextLoc: nextLoc
17780      };
17781
17782      if (this.method === "next") {
17783        // Deliberately forget the last sent value so that we don't
17784        // accidentally pass it on to the delegate.
17785        this.arg = undefined;
17786      }
17787
17788      return ContinueSentinel;
17789    }
17790  };
17791})(
17792  // 
17792Among the various tricks for obtaining a reference to the global
17793  // object, this seems to be the most reliable technique that does not
17794  // use indirect eval (which violates Content Security Policy).
17795  typeof global === "object" ? global :
17796  typeof window === "object" ? window :
17797  typeof self === "object" ? self : this
17798);
17799
17800}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
17801},{}]},{},[1,2,3,4,9]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.