@sanity/document-internationalization 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,12 +5,12 @@ var DocumentPaneContext = require('@sanity/desk-tool/lib/panes/document/Document
5
5
  var languageFilterImplementations = require('all:part:@sanity/desk-tool/language-select-component');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
8
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
8
+ var _slicedToArray$1 = require('@babel/runtime/helpers/slicedToArray');
9
9
  var ui = require('@sanity/ui');
10
10
  var icons = require('@sanity/icons');
11
11
  var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
12
- var styled = require('styled-components');
13
12
  var customFlagComponents = require('part:@sanity/document-internationalization/ui/flags?');
13
+ var styled = require('styled-components');
14
14
  var config = require('config:@sanity/document-internationalization');
15
15
  var schemas = require('part:@sanity/base/schema');
16
16
  var client = require('part:@sanity/base/client');
@@ -30,183 +30,3903 @@ var RouterContext = require('@sanity/state-router/lib/RouterContext');
30
30
 
31
31
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
32
32
 
33
- function _interopNamespace(e) {
34
- if (e && e.__esModule) return e;
35
- var n = Object.create(null);
36
- if (e) {
37
- Object.keys(e).forEach(function (k) {
38
- if (k !== 'default') {
39
- var d = Object.getOwnPropertyDescriptor(e, k);
40
- Object.defineProperty(n, k, d.get ? d : {
41
- enumerable: true,
42
- get: function () { return e[k]; }
43
- });
44
- }
45
- });
46
- }
47
- n["default"] = e;
48
- return Object.freeze(n);
33
+ function _interopNamespace(e) {
34
+ if (e && e.__esModule) return e;
35
+ var n = Object.create(null);
36
+ if (e) {
37
+ Object.keys(e).forEach(function (k) {
38
+ if (k !== 'default') {
39
+ var d = Object.getOwnPropertyDescriptor(e, k);
40
+ Object.defineProperty(n, k, d.get ? d : {
41
+ enumerable: true,
42
+ get: function () { return e[k]; }
43
+ });
44
+ }
45
+ });
46
+ }
47
+ n["default"] = e;
48
+ return Object.freeze(n);
49
+ }
50
+
51
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
52
+ var languageFilterImplementations__default = /*#__PURE__*/_interopDefaultLegacy(languageFilterImplementations);
53
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
54
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
55
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray$1);
56
+ var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
57
+ var customFlagComponents__namespace = /*#__PURE__*/_interopNamespace(customFlagComponents);
58
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
59
+ var config__default = /*#__PURE__*/_interopDefaultLegacy(config);
60
+ var schemas__default = /*#__PURE__*/_interopDefaultLegacy(schemas);
61
+ var client__default = /*#__PURE__*/_interopDefaultLegacy(client);
62
+ var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
63
+ var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
64
+ var languagesLoaderFn__default = /*#__PURE__*/_interopDefaultLegacy(languagesLoaderFn);
65
+ var shouldReloadFn__default = /*#__PURE__*/_interopDefaultLegacy(shouldReloadFn);
66
+ var documentStore__default = /*#__PURE__*/_interopDefaultLegacy(documentStore);
67
+ var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
68
+
69
+ var objectSafeGet = get;
70
+
71
+ /*
72
+ const obj = {a: {aa: {aaa: 2}}, b: 4};
73
+
74
+ get(obj, 'a.aa.aaa'); // 2
75
+ get(obj, ['a', 'aa', 'aaa']); // 2
76
+
77
+ get(obj, 'b.bb.bbb'); // undefined
78
+ get(obj, ['b', 'bb', 'bbb']); // undefined
79
+
80
+ get(obj.a, 'aa.aaa'); // 2
81
+ get(obj.a, ['aa', 'aaa']); // 2
82
+
83
+ get(obj.b, 'bb.bbb'); // undefined
84
+ get(obj.b, ['bb', 'bbb']); // undefined
85
+
86
+ get(obj.b, 'bb.bbb', 42); // 42
87
+ get(obj.b, ['bb', 'bbb'], 42); // 42
88
+
89
+ get(null, 'a'); // undefined
90
+ get(undefined, ['a']); // undefined
91
+
92
+ get(null, 'a', 42); // 42
93
+ get(undefined, ['a'], 42); // 42
94
+
95
+ const obj = {a: {}};
96
+ const sym = Symbol();
97
+ obj.a[sym] = 4;
98
+ get(obj.a, sym); // 4
99
+ */
100
+
101
+ function get(obj, propsArg, defaultValue) {
102
+ if (!obj) {
103
+ return defaultValue;
104
+ }
105
+ var props, prop;
106
+ if (Array.isArray(propsArg)) {
107
+ props = propsArg.slice(0);
108
+ }
109
+ if (typeof propsArg == 'string') {
110
+ props = propsArg.split('.');
111
+ }
112
+ if (typeof propsArg == 'symbol') {
113
+ props = [propsArg];
114
+ }
115
+ if (!Array.isArray(props)) {
116
+ throw new Error('props arg must be an array, a string or a symbol');
117
+ }
118
+ while (props.length) {
119
+ prop = props.shift();
120
+ if (!obj) {
121
+ return defaultValue;
122
+ }
123
+ obj = obj[prop];
124
+ if (obj === undefined) {
125
+ return defaultValue;
126
+ }
127
+ }
128
+ return obj;
129
+ }
130
+
131
+ /*! Copyright Twitter Inc. and other contributors. Licensed under MIT */
132
+ var twemoji=function(){var twemoji={base:"https://twemoji.maxcdn.com/v/14.0.2/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this);}},parse:parse,replace:replace,test:test},escaper={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},re=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef0-\udef6]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedd-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec2\uded0-\uded9\udee0-\udee7]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,UFE0Fg=/\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,""):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return "".concat(options.base,options.size,"/",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode);}else if(nodeType===1&&!("ownerSVGElement"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText);}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,""):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true));}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute("draggable","false");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname]);}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img);}if(!img)fragment.appendChild(createText(rawText,false));img=null;}if(modified){if(i<text.length){fragment.appendChild(createText(text.slice(i),true));}subnode.parentNode.replaceChild(fragment,subnode);}}return node}function parseString(str,options){return replace(str,function(rawText){var ret=rawText,iconId=grabTheRightIcon(rawText),src=options.callback(iconId,options),attrib,attrname;if(iconId&&src){ret="<img ".concat('class="',options.className,'" ','draggable="false" ','alt="',rawText,'"',' src="',src,'"');attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&ret.indexOf(" "+attrname+"=")===-1){ret=ret.concat(" ",attrname,'="',escapeHTML(attrib[attrname]),'"');}}ret=ret.concat("/>");}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value==="number"?value+"x"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint==="string"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how==="function"){how={callback:how};}return (typeof what==="string"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes==="function"?how.attributes:returnNull,base:typeof how.base==="string"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i<unicodeSurrogates.length){c=unicodeSurrogates.charCodeAt(i++);if(p){r.push((65536+(p-55296<<10)+(c-56320)).toString(16));p=0;}else if(55296<=c&&c<=56319){p=c;}else {r.push(c.toString(16));}}return r.join(sep||"-")}}();
133
+
134
+ // An attribute in which the DOM/SVG standard name is the same as the React prop name (e.g., 'accept').
135
+ var SAME$1 = 0;
136
+ var SAME_1 = SAME$1;
137
+
138
+ // An attribute in which the React prop name is the camelcased version of the DOM/SVG standard name (e.g., 'acceptCharset').
139
+ var CAMELCASE$1 = 1;
140
+ var CAMELCASE_1 = CAMELCASE$1;
141
+
142
+ var possibleStandardNames$1 = {
143
+ accept: 0,
144
+ acceptCharset: 1,
145
+ 'accept-charset': 'acceptCharset',
146
+ accessKey: 1,
147
+ action: 0,
148
+ allowFullScreen: 1,
149
+ alt: 0,
150
+ as: 0,
151
+ async: 0,
152
+ autoCapitalize: 1,
153
+ autoComplete: 1,
154
+ autoCorrect: 1,
155
+ autoFocus: 1,
156
+ autoPlay: 1,
157
+ autoSave: 1,
158
+ capture: 0,
159
+ cellPadding: 1,
160
+ cellSpacing: 1,
161
+ challenge: 0,
162
+ charSet: 1,
163
+ checked: 0,
164
+ children: 0,
165
+ cite: 0,
166
+ class: 'className',
167
+ classID: 1,
168
+ className: 1,
169
+ cols: 0,
170
+ colSpan: 1,
171
+ content: 0,
172
+ contentEditable: 1,
173
+ contextMenu: 1,
174
+ controls: 0,
175
+ controlsList: 1,
176
+ coords: 0,
177
+ crossOrigin: 1,
178
+ dangerouslySetInnerHTML: 1,
179
+ data: 0,
180
+ dateTime: 1,
181
+ default: 0,
182
+ defaultChecked: 1,
183
+ defaultValue: 1,
184
+ defer: 0,
185
+ dir: 0,
186
+ disabled: 0,
187
+ disablePictureInPicture: 1,
188
+ disableRemotePlayback: 1,
189
+ download: 0,
190
+ draggable: 0,
191
+ encType: 1,
192
+ enterKeyHint: 1,
193
+ for: 'htmlFor',
194
+ form: 0,
195
+ formMethod: 1,
196
+ formAction: 1,
197
+ formEncType: 1,
198
+ formNoValidate: 1,
199
+ formTarget: 1,
200
+ frameBorder: 1,
201
+ headers: 0,
202
+ height: 0,
203
+ hidden: 0,
204
+ high: 0,
205
+ href: 0,
206
+ hrefLang: 1,
207
+ htmlFor: 1,
208
+ httpEquiv: 1,
209
+ 'http-equiv': 'httpEquiv',
210
+ icon: 0,
211
+ id: 0,
212
+ innerHTML: 1,
213
+ inputMode: 1,
214
+ integrity: 0,
215
+ is: 0,
216
+ itemID: 1,
217
+ itemProp: 1,
218
+ itemRef: 1,
219
+ itemScope: 1,
220
+ itemType: 1,
221
+ keyParams: 1,
222
+ keyType: 1,
223
+ kind: 0,
224
+ label: 0,
225
+ lang: 0,
226
+ list: 0,
227
+ loop: 0,
228
+ low: 0,
229
+ manifest: 0,
230
+ marginWidth: 1,
231
+ marginHeight: 1,
232
+ max: 0,
233
+ maxLength: 1,
234
+ media: 0,
235
+ mediaGroup: 1,
236
+ method: 0,
237
+ min: 0,
238
+ minLength: 1,
239
+ multiple: 0,
240
+ muted: 0,
241
+ name: 0,
242
+ noModule: 1,
243
+ nonce: 0,
244
+ noValidate: 1,
245
+ open: 0,
246
+ optimum: 0,
247
+ pattern: 0,
248
+ placeholder: 0,
249
+ playsInline: 1,
250
+ poster: 0,
251
+ preload: 0,
252
+ profile: 0,
253
+ radioGroup: 1,
254
+ readOnly: 1,
255
+ referrerPolicy: 1,
256
+ rel: 0,
257
+ required: 0,
258
+ reversed: 0,
259
+ role: 0,
260
+ rows: 0,
261
+ rowSpan: 1,
262
+ sandbox: 0,
263
+ scope: 0,
264
+ scoped: 0,
265
+ scrolling: 0,
266
+ seamless: 0,
267
+ selected: 0,
268
+ shape: 0,
269
+ size: 0,
270
+ sizes: 0,
271
+ span: 0,
272
+ spellCheck: 1,
273
+ src: 0,
274
+ srcDoc: 1,
275
+ srcLang: 1,
276
+ srcSet: 1,
277
+ start: 0,
278
+ step: 0,
279
+ style: 0,
280
+ summary: 0,
281
+ tabIndex: 1,
282
+ target: 0,
283
+ title: 0,
284
+ type: 0,
285
+ useMap: 1,
286
+ value: 0,
287
+ width: 0,
288
+ wmode: 0,
289
+ wrap: 0,
290
+ about: 0,
291
+ accentHeight: 1,
292
+ 'accent-height': 'accentHeight',
293
+ accumulate: 0,
294
+ additive: 0,
295
+ alignmentBaseline: 1,
296
+ 'alignment-baseline': 'alignmentBaseline',
297
+ allowReorder: 1,
298
+ alphabetic: 0,
299
+ amplitude: 0,
300
+ arabicForm: 1,
301
+ 'arabic-form': 'arabicForm',
302
+ ascent: 0,
303
+ attributeName: 1,
304
+ attributeType: 1,
305
+ autoReverse: 1,
306
+ azimuth: 0,
307
+ baseFrequency: 1,
308
+ baselineShift: 1,
309
+ 'baseline-shift': 'baselineShift',
310
+ baseProfile: 1,
311
+ bbox: 0,
312
+ begin: 0,
313
+ bias: 0,
314
+ by: 0,
315
+ calcMode: 1,
316
+ capHeight: 1,
317
+ 'cap-height': 'capHeight',
318
+ clip: 0,
319
+ clipPath: 1,
320
+ 'clip-path': 'clipPath',
321
+ clipPathUnits: 1,
322
+ clipRule: 1,
323
+ 'clip-rule': 'clipRule',
324
+ color: 0,
325
+ colorInterpolation: 1,
326
+ 'color-interpolation': 'colorInterpolation',
327
+ colorInterpolationFilters: 1,
328
+ 'color-interpolation-filters': 'colorInterpolationFilters',
329
+ colorProfile: 1,
330
+ 'color-profile': 'colorProfile',
331
+ colorRendering: 1,
332
+ 'color-rendering': 'colorRendering',
333
+ contentScriptType: 1,
334
+ contentStyleType: 1,
335
+ cursor: 0,
336
+ cx: 0,
337
+ cy: 0,
338
+ d: 0,
339
+ datatype: 0,
340
+ decelerate: 0,
341
+ descent: 0,
342
+ diffuseConstant: 1,
343
+ direction: 0,
344
+ display: 0,
345
+ divisor: 0,
346
+ dominantBaseline: 1,
347
+ 'dominant-baseline': 'dominantBaseline',
348
+ dur: 0,
349
+ dx: 0,
350
+ dy: 0,
351
+ edgeMode: 1,
352
+ elevation: 0,
353
+ enableBackground: 1,
354
+ 'enable-background': 'enableBackground',
355
+ end: 0,
356
+ exponent: 0,
357
+ externalResourcesRequired: 1,
358
+ fill: 0,
359
+ fillOpacity: 1,
360
+ 'fill-opacity': 'fillOpacity',
361
+ fillRule: 1,
362
+ 'fill-rule': 'fillRule',
363
+ filter: 0,
364
+ filterRes: 1,
365
+ filterUnits: 1,
366
+ floodOpacity: 1,
367
+ 'flood-opacity': 'floodOpacity',
368
+ floodColor: 1,
369
+ 'flood-color': 'floodColor',
370
+ focusable: 0,
371
+ fontFamily: 1,
372
+ 'font-family': 'fontFamily',
373
+ fontSize: 1,
374
+ 'font-size': 'fontSize',
375
+ fontSizeAdjust: 1,
376
+ 'font-size-adjust': 'fontSizeAdjust',
377
+ fontStretch: 1,
378
+ 'font-stretch': 'fontStretch',
379
+ fontStyle: 1,
380
+ 'font-style': 'fontStyle',
381
+ fontVariant: 1,
382
+ 'font-variant': 'fontVariant',
383
+ fontWeight: 1,
384
+ 'font-weight': 'fontWeight',
385
+ format: 0,
386
+ from: 0,
387
+ fx: 0,
388
+ fy: 0,
389
+ g1: 0,
390
+ g2: 0,
391
+ glyphName: 1,
392
+ 'glyph-name': 'glyphName',
393
+ glyphOrientationHorizontal: 1,
394
+ 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',
395
+ glyphOrientationVertical: 1,
396
+ 'glyph-orientation-vertical': 'glyphOrientationVertical',
397
+ glyphRef: 1,
398
+ gradientTransform: 1,
399
+ gradientUnits: 1,
400
+ hanging: 0,
401
+ horizAdvX: 1,
402
+ 'horiz-adv-x': 'horizAdvX',
403
+ horizOriginX: 1,
404
+ 'horiz-origin-x': 'horizOriginX',
405
+ ideographic: 0,
406
+ imageRendering: 1,
407
+ 'image-rendering': 'imageRendering',
408
+ in2: 0,
409
+ in: 0,
410
+ inlist: 0,
411
+ intercept: 0,
412
+ k1: 0,
413
+ k2: 0,
414
+ k3: 0,
415
+ k4: 0,
416
+ k: 0,
417
+ kernelMatrix: 1,
418
+ kernelUnitLength: 1,
419
+ kerning: 0,
420
+ keyPoints: 1,
421
+ keySplines: 1,
422
+ keyTimes: 1,
423
+ lengthAdjust: 1,
424
+ letterSpacing: 1,
425
+ 'letter-spacing': 'letterSpacing',
426
+ lightingColor: 1,
427
+ 'lighting-color': 'lightingColor',
428
+ limitingConeAngle: 1,
429
+ local: 0,
430
+ markerEnd: 1,
431
+ 'marker-end': 'markerEnd',
432
+ markerHeight: 1,
433
+ markerMid: 1,
434
+ 'marker-mid': 'markerMid',
435
+ markerStart: 1,
436
+ 'marker-start': 'markerStart',
437
+ markerUnits: 1,
438
+ markerWidth: 1,
439
+ mask: 0,
440
+ maskContentUnits: 1,
441
+ maskUnits: 1,
442
+ mathematical: 0,
443
+ mode: 0,
444
+ numOctaves: 1,
445
+ offset: 0,
446
+ opacity: 0,
447
+ operator: 0,
448
+ order: 0,
449
+ orient: 0,
450
+ orientation: 0,
451
+ origin: 0,
452
+ overflow: 0,
453
+ overlinePosition: 1,
454
+ 'overline-position': 'overlinePosition',
455
+ overlineThickness: 1,
456
+ 'overline-thickness': 'overlineThickness',
457
+ paintOrder: 1,
458
+ 'paint-order': 'paintOrder',
459
+ panose1: 0,
460
+ 'panose-1': 'panose1',
461
+ pathLength: 1,
462
+ patternContentUnits: 1,
463
+ patternTransform: 1,
464
+ patternUnits: 1,
465
+ pointerEvents: 1,
466
+ 'pointer-events': 'pointerEvents',
467
+ points: 0,
468
+ pointsAtX: 1,
469
+ pointsAtY: 1,
470
+ pointsAtZ: 1,
471
+ prefix: 0,
472
+ preserveAlpha: 1,
473
+ preserveAspectRatio: 1,
474
+ primitiveUnits: 1,
475
+ property: 0,
476
+ r: 0,
477
+ radius: 0,
478
+ refX: 1,
479
+ refY: 1,
480
+ renderingIntent: 1,
481
+ 'rendering-intent': 'renderingIntent',
482
+ repeatCount: 1,
483
+ repeatDur: 1,
484
+ requiredExtensions: 1,
485
+ requiredFeatures: 1,
486
+ resource: 0,
487
+ restart: 0,
488
+ result: 0,
489
+ results: 0,
490
+ rotate: 0,
491
+ rx: 0,
492
+ ry: 0,
493
+ scale: 0,
494
+ security: 0,
495
+ seed: 0,
496
+ shapeRendering: 1,
497
+ 'shape-rendering': 'shapeRendering',
498
+ slope: 0,
499
+ spacing: 0,
500
+ specularConstant: 1,
501
+ specularExponent: 1,
502
+ speed: 0,
503
+ spreadMethod: 1,
504
+ startOffset: 1,
505
+ stdDeviation: 1,
506
+ stemh: 0,
507
+ stemv: 0,
508
+ stitchTiles: 1,
509
+ stopColor: 1,
510
+ 'stop-color': 'stopColor',
511
+ stopOpacity: 1,
512
+ 'stop-opacity': 'stopOpacity',
513
+ strikethroughPosition: 1,
514
+ 'strikethrough-position': 'strikethroughPosition',
515
+ strikethroughThickness: 1,
516
+ 'strikethrough-thickness': 'strikethroughThickness',
517
+ string: 0,
518
+ stroke: 0,
519
+ strokeDasharray: 1,
520
+ 'stroke-dasharray': 'strokeDasharray',
521
+ strokeDashoffset: 1,
522
+ 'stroke-dashoffset': 'strokeDashoffset',
523
+ strokeLinecap: 1,
524
+ 'stroke-linecap': 'strokeLinecap',
525
+ strokeLinejoin: 1,
526
+ 'stroke-linejoin': 'strokeLinejoin',
527
+ strokeMiterlimit: 1,
528
+ 'stroke-miterlimit': 'strokeMiterlimit',
529
+ strokeWidth: 1,
530
+ 'stroke-width': 'strokeWidth',
531
+ strokeOpacity: 1,
532
+ 'stroke-opacity': 'strokeOpacity',
533
+ suppressContentEditableWarning: 1,
534
+ suppressHydrationWarning: 1,
535
+ surfaceScale: 1,
536
+ systemLanguage: 1,
537
+ tableValues: 1,
538
+ targetX: 1,
539
+ targetY: 1,
540
+ textAnchor: 1,
541
+ 'text-anchor': 'textAnchor',
542
+ textDecoration: 1,
543
+ 'text-decoration': 'textDecoration',
544
+ textLength: 1,
545
+ textRendering: 1,
546
+ 'text-rendering': 'textRendering',
547
+ to: 0,
548
+ transform: 0,
549
+ typeof: 0,
550
+ u1: 0,
551
+ u2: 0,
552
+ underlinePosition: 1,
553
+ 'underline-position': 'underlinePosition',
554
+ underlineThickness: 1,
555
+ 'underline-thickness': 'underlineThickness',
556
+ unicode: 0,
557
+ unicodeBidi: 1,
558
+ 'unicode-bidi': 'unicodeBidi',
559
+ unicodeRange: 1,
560
+ 'unicode-range': 'unicodeRange',
561
+ unitsPerEm: 1,
562
+ 'units-per-em': 'unitsPerEm',
563
+ unselectable: 0,
564
+ vAlphabetic: 1,
565
+ 'v-alphabetic': 'vAlphabetic',
566
+ values: 0,
567
+ vectorEffect: 1,
568
+ 'vector-effect': 'vectorEffect',
569
+ version: 0,
570
+ vertAdvY: 1,
571
+ 'vert-adv-y': 'vertAdvY',
572
+ vertOriginX: 1,
573
+ 'vert-origin-x': 'vertOriginX',
574
+ vertOriginY: 1,
575
+ 'vert-origin-y': 'vertOriginY',
576
+ vHanging: 1,
577
+ 'v-hanging': 'vHanging',
578
+ vIdeographic: 1,
579
+ 'v-ideographic': 'vIdeographic',
580
+ viewBox: 1,
581
+ viewTarget: 1,
582
+ visibility: 0,
583
+ vMathematical: 1,
584
+ 'v-mathematical': 'vMathematical',
585
+ vocab: 0,
586
+ widths: 0,
587
+ wordSpacing: 1,
588
+ 'word-spacing': 'wordSpacing',
589
+ writingMode: 1,
590
+ 'writing-mode': 'writingMode',
591
+ x1: 0,
592
+ x2: 0,
593
+ x: 0,
594
+ xChannelSelector: 1,
595
+ xHeight: 1,
596
+ 'x-height': 'xHeight',
597
+ xlinkActuate: 1,
598
+ 'xlink:actuate': 'xlinkActuate',
599
+ xlinkArcrole: 1,
600
+ 'xlink:arcrole': 'xlinkArcrole',
601
+ xlinkHref: 1,
602
+ 'xlink:href': 'xlinkHref',
603
+ xlinkRole: 1,
604
+ 'xlink:role': 'xlinkRole',
605
+ xlinkShow: 1,
606
+ 'xlink:show': 'xlinkShow',
607
+ xlinkTitle: 1,
608
+ 'xlink:title': 'xlinkTitle',
609
+ xlinkType: 1,
610
+ 'xlink:type': 'xlinkType',
611
+ xmlBase: 1,
612
+ 'xml:base': 'xmlBase',
613
+ xmlLang: 1,
614
+ 'xml:lang': 'xmlLang',
615
+ xmlns: 0,
616
+ 'xml:space': 'xmlSpace',
617
+ xmlnsXlink: 1,
618
+ 'xmlns:xlink': 'xmlnsXlink',
619
+ xmlSpace: 1,
620
+ y1: 0,
621
+ y2: 0,
622
+ y: 0,
623
+ yChannelSelector: 1,
624
+ z: 0,
625
+ zoomAndPan: 1
626
+ };
627
+
628
+ var possibleStandardNamesOptimized$1 = {
629
+ SAME: SAME_1,
630
+ CAMELCASE: CAMELCASE_1,
631
+ possibleStandardNames: possibleStandardNames$1
632
+ };
633
+
634
+ function _slicedToArray(arr, i) {
635
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
636
+ }
637
+
638
+ function _arrayWithHoles(arr) {
639
+ if (Array.isArray(arr)) return arr;
640
+ }
641
+
642
+ function _iterableToArrayLimit(arr, i) {
643
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
644
+
645
+ if (_i == null) return;
646
+ var _arr = [];
647
+ var _n = true;
648
+ var _d = false;
649
+
650
+ var _s, _e;
651
+
652
+ try {
653
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
654
+ _arr.push(_s.value);
655
+
656
+ if (i && _arr.length === i) break;
657
+ }
658
+ } catch (err) {
659
+ _d = true;
660
+ _e = err;
661
+ } finally {
662
+ try {
663
+ if (!_n && _i["return"] != null) _i["return"]();
664
+ } finally {
665
+ if (_d) throw _e;
666
+ }
667
+ }
668
+
669
+ return _arr;
670
+ }
671
+
672
+ function _unsupportedIterableToArray(o, minLen) {
673
+ if (!o) return;
674
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
675
+ var n = Object.prototype.toString.call(o).slice(8, -1);
676
+ if (n === "Object" && o.constructor) n = o.constructor.name;
677
+ if (n === "Map" || n === "Set") return Array.from(o);
678
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
679
+ }
680
+
681
+ function _arrayLikeToArray(arr, len) {
682
+ if (len == null || len > arr.length) len = arr.length;
683
+
684
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
685
+
686
+ return arr2;
687
+ }
688
+
689
+ function _nonIterableRest() {
690
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
691
+ }
692
+
693
+ // A reserved attribute.
694
+ // It is handled by React separately and shouldn't be written to the DOM.
695
+ var RESERVED = 0; // A simple string attribute.
696
+ // Attributes that aren't in the filter are presumed to have this type.
697
+
698
+ var STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called
699
+ // "enumerated" attributes with "true" and "false" as possible values.
700
+ // When true, it should be set to a "true" string.
701
+ // When false, it should be set to a "false" string.
702
+
703
+ var BOOLEANISH_STRING = 2; // A real boolean attribute.
704
+ // When true, it should be present (set either to an empty string or its name).
705
+ // When false, it should be omitted.
706
+
707
+ var BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.
708
+ // When true, it should be present (set either to an empty string or its name).
709
+ // When false, it should be omitted.
710
+ // For any other value, should be present with that value.
711
+
712
+ var OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.
713
+ // When falsy, it should be removed.
714
+
715
+ var NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.
716
+ // When falsy, it should be removed.
717
+
718
+ var POSITIVE_NUMERIC = 6;
719
+ function getPropertyInfo(name) {
720
+ return properties.hasOwnProperty(name) ? properties[name] : null;
721
+ }
722
+
723
+ function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {
724
+ this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;
725
+ this.attributeName = attributeName;
726
+ this.attributeNamespace = attributeNamespace;
727
+ this.mustUseProperty = mustUseProperty;
728
+ this.propertyName = name;
729
+ this.type = type;
730
+ this.sanitizeURL = sanitizeURL;
731
+ this.removeEmptyString = removeEmptyString;
732
+ } // When adding attributes to this list, be sure to also add them to
733
+ // the `possibleStandardNames` module to ensure casing and incorrect
734
+ // name warnings.
735
+
736
+
737
+ var properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.
738
+
739
+ var reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular
740
+ // elements (not just inputs). Now that ReactDOMInput assigns to the
741
+ // defaultValue property -- do we need this?
742
+ 'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];
743
+ reservedProps.forEach(function (name) {
744
+ properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty
745
+ name, // attributeName
746
+ null, // attributeNamespace
747
+ false, // sanitizeURL
748
+ false);
749
+ }); // A few React string attributes have a different name.
750
+ // This is a mapping from React prop names to the attribute names.
751
+
752
+ [['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {
753
+ var _ref2 = _slicedToArray(_ref, 2),
754
+ name = _ref2[0],
755
+ attributeName = _ref2[1];
756
+
757
+ properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
758
+ attributeName, // attributeName
759
+ null, // attributeNamespace
760
+ false, // sanitizeURL
761
+ false);
762
+ }); // These are "enumerated" HTML attributes that accept "true" and "false".
763
+ // In React, we let users pass `true` and `false` even though technically
764
+ // these aren't boolean attributes (they are coerced to strings).
765
+
766
+ ['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {
767
+ properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
768
+ name.toLowerCase(), // attributeName
769
+ null, // attributeNamespace
770
+ false, // sanitizeURL
771
+ false);
772
+ }); // These are "enumerated" SVG attributes that accept "true" and "false".
773
+ // In React, we let users pass `true` and `false` even though technically
774
+ // these aren't boolean attributes (they are coerced to strings).
775
+ // Since these are SVG attributes, their attribute names are case-sensitive.
776
+
777
+ ['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {
778
+ properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
779
+ name, // attributeName
780
+ null, // attributeNamespace
781
+ false, // sanitizeURL
782
+ false);
783
+ }); // These are HTML boolean attributes.
784
+
785
+ ['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM
786
+ // on the client side because the browsers are inconsistent. Instead we call focus().
787
+ 'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata
788
+ 'itemScope'].forEach(function (name) {
789
+ properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty
790
+ name.toLowerCase(), // attributeName
791
+ null, // attributeNamespace
792
+ false, // sanitizeURL
793
+ false);
794
+ }); // These are the few React props that we set as DOM properties
795
+ // rather than attributes. These are all booleans.
796
+
797
+ ['checked', // Note: `option.selected` is not updated if `select.multiple` is
798
+ // disabled with `removeAttribute`. We have special logic for handling this.
799
+ 'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,
800
+ // you'll need to set attributeName to name.toLowerCase()
801
+ // instead in the assignment below.
802
+ ].forEach(function (name) {
803
+ properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty
804
+ name, // attributeName
805
+ null, // attributeNamespace
806
+ false, // sanitizeURL
807
+ false);
808
+ }); // These are HTML attributes that are "overloaded booleans": they behave like
809
+ // booleans, but can also accept a string value.
810
+
811
+ ['capture', 'download' // NOTE: if you add a camelCased prop to this list,
812
+ // you'll need to set attributeName to name.toLowerCase()
813
+ // instead in the assignment below.
814
+ ].forEach(function (name) {
815
+ properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty
816
+ name, // attributeName
817
+ null, // attributeNamespace
818
+ false, // sanitizeURL
819
+ false);
820
+ }); // These are HTML attributes that must be positive numbers.
821
+
822
+ ['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,
823
+ // you'll need to set attributeName to name.toLowerCase()
824
+ // instead in the assignment below.
825
+ ].forEach(function (name) {
826
+ properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty
827
+ name, // attributeName
828
+ null, // attributeNamespace
829
+ false, // sanitizeURL
830
+ false);
831
+ }); // These are HTML attributes that must be numbers.
832
+
833
+ ['rowSpan', 'start'].forEach(function (name) {
834
+ properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty
835
+ name.toLowerCase(), // attributeName
836
+ null, // attributeNamespace
837
+ false, // sanitizeURL
838
+ false);
839
+ });
840
+ var CAMELIZE = /[\-\:]([a-z])/g;
841
+
842
+ var capitalize = function capitalize(token) {
843
+ return token[1].toUpperCase();
844
+ }; // This is a list of all SVG attributes that need special casing, namespacing,
845
+ // or boolean value assignment. Regular attributes that just accept strings
846
+ // and have the same names are omitted, just like in the HTML attribute filter.
847
+ // Some of these attributes can be hard to find. This list was created by
848
+ // scraping the MDN documentation.
849
+
850
+
851
+ ['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,
852
+ // you'll need to set attributeName to name.toLowerCase()
853
+ // instead in the assignment below.
854
+ ].forEach(function (attributeName) {
855
+ var name = attributeName.replace(CAMELIZE, capitalize);
856
+ properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
857
+ attributeName, null, // attributeNamespace
858
+ false, // sanitizeURL
859
+ false);
860
+ }); // String SVG attributes with the xlink namespace.
861
+
862
+ ['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,
863
+ // you'll need to set attributeName to name.toLowerCase()
864
+ // instead in the assignment below.
865
+ ].forEach(function (attributeName) {
866
+ var name = attributeName.replace(CAMELIZE, capitalize);
867
+ properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
868
+ attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL
869
+ false);
870
+ }); // String SVG attributes with the xml namespace.
871
+
872
+ ['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,
873
+ // you'll need to set attributeName to name.toLowerCase()
874
+ // instead in the assignment below.
875
+ ].forEach(function (attributeName) {
876
+ var name = attributeName.replace(CAMELIZE, capitalize);
877
+ properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
878
+ attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL
879
+ false);
880
+ }); // These attribute exists both in HTML and SVG.
881
+ // The attribute name is case-sensitive in SVG so we can't just use
882
+ // the React name like we do for attributes that exist only in HTML.
883
+
884
+ ['tabIndex', 'crossOrigin'].forEach(function (attributeName) {
885
+ properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
886
+ attributeName.toLowerCase(), // attributeName
887
+ null, // attributeNamespace
888
+ false, // sanitizeURL
889
+ false);
890
+ }); // These attributes accept URLs. These must not allow javascript: URLS.
891
+ // These will also need to accept Trusted Types object in the future.
892
+
893
+ var xlinkHref = 'xlinkHref';
894
+ properties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty
895
+ 'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL
896
+ false);
897
+ ['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {
898
+ properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
899
+ attributeName.toLowerCase(), // attributeName
900
+ null, // attributeNamespace
901
+ true, // sanitizeURL
902
+ true);
903
+ });
904
+
905
+ var CAMELCASE = possibleStandardNamesOptimized$1.CAMELCASE,
906
+ SAME = possibleStandardNamesOptimized$1.SAME,
907
+ possibleStandardNamesOptimized = possibleStandardNamesOptimized$1.possibleStandardNames;
908
+
909
+ var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
910
+ var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
911
+ /**
912
+ * Checks whether a property name is a custom attribute.
913
+ *
914
+ * @see {@link https://github.com/facebook/react/blob/15-stable/src/renderers/dom/shared/HTMLDOMPropertyConfig.js#L23-L25}
915
+ *
916
+ * @param {string}
917
+ * @return {boolean}
918
+ */
919
+
920
+ var isCustomAttribute = RegExp.prototype.test.bind( // eslint-disable-next-line no-misleading-character-class
921
+ new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));
922
+ var possibleStandardNames = Object.keys(possibleStandardNamesOptimized).reduce(function (accumulator, standardName) {
923
+ var propName = possibleStandardNamesOptimized[standardName];
924
+
925
+ if (propName === SAME) {
926
+ accumulator[standardName] = standardName;
927
+ } else if (propName === CAMELCASE) {
928
+ accumulator[standardName.toLowerCase()] = standardName;
929
+ } else {
930
+ accumulator[standardName] = propName;
931
+ }
932
+
933
+ return accumulator;
934
+ }, {});
935
+
936
+ var BOOLEAN_1 = BOOLEAN;
937
+ var BOOLEANISH_STRING_1 = BOOLEANISH_STRING;
938
+ var NUMERIC_1 = NUMERIC;
939
+ var OVERLOADED_BOOLEAN_1 = OVERLOADED_BOOLEAN;
940
+ var POSITIVE_NUMERIC_1 = POSITIVE_NUMERIC;
941
+ var RESERVED_1 = RESERVED;
942
+ var STRING_1 = STRING;
943
+ var getPropertyInfo_1 = getPropertyInfo;
944
+ var isCustomAttribute_1 = isCustomAttribute;
945
+ var possibleStandardNames_1 = possibleStandardNames;
946
+
947
+ var lib$2 = /*#__PURE__*/Object.defineProperty({
948
+ BOOLEAN: BOOLEAN_1,
949
+ BOOLEANISH_STRING: BOOLEANISH_STRING_1,
950
+ NUMERIC: NUMERIC_1,
951
+ OVERLOADED_BOOLEAN: OVERLOADED_BOOLEAN_1,
952
+ POSITIVE_NUMERIC: POSITIVE_NUMERIC_1,
953
+ RESERVED: RESERVED_1,
954
+ STRING: STRING_1,
955
+ getPropertyInfo: getPropertyInfo_1,
956
+ isCustomAttribute: isCustomAttribute_1,
957
+ possibleStandardNames: possibleStandardNames_1
958
+ }, '__esModule', {value: true});
959
+
960
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
961
+
962
+ function createCommonjsModule(fn) {
963
+ var module = { exports: {} };
964
+ return fn(module, module.exports), module.exports;
965
+ }
966
+
967
+ // http://www.w3.org/TR/CSS21/grammar.html
968
+ // https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027
969
+ var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g;
970
+
971
+ var NEWLINE_REGEX = /\n/g;
972
+ var WHITESPACE_REGEX = /^\s*/;
973
+
974
+ // declaration
975
+ var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/;
976
+ var COLON_REGEX = /^:\s*/;
977
+ var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/;
978
+ var SEMICOLON_REGEX = /^[;\s]*/;
979
+
980
+ // https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill
981
+ var TRIM_REGEX = /^\s+|\s+$/g;
982
+
983
+ // strings
984
+ var NEWLINE = '\n';
985
+ var FORWARD_SLASH = '/';
986
+ var ASTERISK = '*';
987
+ var EMPTY_STRING = '';
988
+
989
+ // types
990
+ var TYPE_COMMENT = 'comment';
991
+ var TYPE_DECLARATION = 'declaration';
992
+
993
+ /**
994
+ * @param {String} style
995
+ * @param {Object} [options]
996
+ * @return {Object[]}
997
+ * @throws {TypeError}
998
+ * @throws {Error}
999
+ */
1000
+ var inlineStyleParser = function(style, options) {
1001
+ if (typeof style !== 'string') {
1002
+ throw new TypeError('First argument must be a string');
1003
+ }
1004
+
1005
+ if (!style) return [];
1006
+
1007
+ options = options || {};
1008
+
1009
+ /**
1010
+ * Positional.
1011
+ */
1012
+ var lineno = 1;
1013
+ var column = 1;
1014
+
1015
+ /**
1016
+ * Update lineno and column based on `str`.
1017
+ *
1018
+ * @param {String} str
1019
+ */
1020
+ function updatePosition(str) {
1021
+ var lines = str.match(NEWLINE_REGEX);
1022
+ if (lines) lineno += lines.length;
1023
+ var i = str.lastIndexOf(NEWLINE);
1024
+ column = ~i ? str.length - i : column + str.length;
1025
+ }
1026
+
1027
+ /**
1028
+ * Mark position and patch `node.position`.
1029
+ *
1030
+ * @return {Function}
1031
+ */
1032
+ function position() {
1033
+ var start = { line: lineno, column: column };
1034
+ return function(node) {
1035
+ node.position = new Position(start);
1036
+ whitespace();
1037
+ return node;
1038
+ };
1039
+ }
1040
+
1041
+ /**
1042
+ * Store position information for a node.
1043
+ *
1044
+ * @constructor
1045
+ * @property {Object} start
1046
+ * @property {Object} end
1047
+ * @property {undefined|String} source
1048
+ */
1049
+ function Position(start) {
1050
+ this.start = start;
1051
+ this.end = { line: lineno, column: column };
1052
+ this.source = options.source;
1053
+ }
1054
+
1055
+ /**
1056
+ * Non-enumerable source string.
1057
+ */
1058
+ Position.prototype.content = style;
1059
+
1060
+ /**
1061
+ * Error `msg`.
1062
+ *
1063
+ * @param {String} msg
1064
+ * @throws {Error}
1065
+ */
1066
+ function error(msg) {
1067
+ var err = new Error(
1068
+ options.source + ':' + lineno + ':' + column + ': ' + msg
1069
+ );
1070
+ err.reason = msg;
1071
+ err.filename = options.source;
1072
+ err.line = lineno;
1073
+ err.column = column;
1074
+ err.source = style;
1075
+
1076
+ if (options.silent) ; else {
1077
+ throw err;
1078
+ }
1079
+ }
1080
+
1081
+ /**
1082
+ * Match `re` and return captures.
1083
+ *
1084
+ * @param {RegExp} re
1085
+ * @return {undefined|Array}
1086
+ */
1087
+ function match(re) {
1088
+ var m = re.exec(style);
1089
+ if (!m) return;
1090
+ var str = m[0];
1091
+ updatePosition(str);
1092
+ style = style.slice(str.length);
1093
+ return m;
1094
+ }
1095
+
1096
+ /**
1097
+ * Parse whitespace.
1098
+ */
1099
+ function whitespace() {
1100
+ match(WHITESPACE_REGEX);
1101
+ }
1102
+
1103
+ /**
1104
+ * Parse comments.
1105
+ *
1106
+ * @param {Object[]} [rules]
1107
+ * @return {Object[]}
1108
+ */
1109
+ function comments(rules) {
1110
+ var c;
1111
+ rules = rules || [];
1112
+ while ((c = comment())) {
1113
+ if (c !== false) {
1114
+ rules.push(c);
1115
+ }
1116
+ }
1117
+ return rules;
1118
+ }
1119
+
1120
+ /**
1121
+ * Parse comment.
1122
+ *
1123
+ * @return {Object}
1124
+ * @throws {Error}
1125
+ */
1126
+ function comment() {
1127
+ var pos = position();
1128
+ if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;
1129
+
1130
+ var i = 2;
1131
+ while (
1132
+ EMPTY_STRING != style.charAt(i) &&
1133
+ (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))
1134
+ ) {
1135
+ ++i;
1136
+ }
1137
+ i += 2;
1138
+
1139
+ if (EMPTY_STRING === style.charAt(i - 1)) {
1140
+ return error('End of comment missing');
1141
+ }
1142
+
1143
+ var str = style.slice(2, i - 2);
1144
+ column += 2;
1145
+ updatePosition(str);
1146
+ style = style.slice(i);
1147
+ column += 2;
1148
+
1149
+ return pos({
1150
+ type: TYPE_COMMENT,
1151
+ comment: str
1152
+ });
1153
+ }
1154
+
1155
+ /**
1156
+ * Parse declaration.
1157
+ *
1158
+ * @return {Object}
1159
+ * @throws {Error}
1160
+ */
1161
+ function declaration() {
1162
+ var pos = position();
1163
+
1164
+ // prop
1165
+ var prop = match(PROPERTY_REGEX);
1166
+ if (!prop) return;
1167
+ comment();
1168
+
1169
+ // :
1170
+ if (!match(COLON_REGEX)) return error("property missing ':'");
1171
+
1172
+ // val
1173
+ var val = match(VALUE_REGEX);
1174
+
1175
+ var ret = pos({
1176
+ type: TYPE_DECLARATION,
1177
+ property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),
1178
+ value: val
1179
+ ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))
1180
+ : EMPTY_STRING
1181
+ });
1182
+
1183
+ // ;
1184
+ match(SEMICOLON_REGEX);
1185
+
1186
+ return ret;
1187
+ }
1188
+
1189
+ /**
1190
+ * Parse declarations.
1191
+ *
1192
+ * @return {Object[]}
1193
+ */
1194
+ function declarations() {
1195
+ var decls = [];
1196
+
1197
+ comments(decls);
1198
+
1199
+ // declarations
1200
+ var decl;
1201
+ while ((decl = declaration())) {
1202
+ if (decl !== false) {
1203
+ decls.push(decl);
1204
+ comments(decls);
1205
+ }
1206
+ }
1207
+
1208
+ return decls;
1209
+ }
1210
+
1211
+ whitespace();
1212
+ return declarations();
1213
+ };
1214
+
1215
+ /**
1216
+ * Trim `str`.
1217
+ *
1218
+ * @param {String} str
1219
+ * @return {String}
1220
+ */
1221
+ function trim(str) {
1222
+ return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;
1223
+ }
1224
+
1225
+ /**
1226
+ * Parses inline style to object.
1227
+ *
1228
+ * @example
1229
+ * // returns { 'line-height': '42' }
1230
+ * StyleToObject('line-height: 42;');
1231
+ *
1232
+ * @param {String} style - The inline style.
1233
+ * @param {Function} [iterator] - The iterator function.
1234
+ * @return {null|Object}
1235
+ */
1236
+ function StyleToObject(style, iterator) {
1237
+ var output = null;
1238
+ if (!style || typeof style !== 'string') {
1239
+ return output;
1240
+ }
1241
+
1242
+ var declaration;
1243
+ var declarations = inlineStyleParser(style);
1244
+ var hasIterator = typeof iterator === 'function';
1245
+ var property;
1246
+ var value;
1247
+
1248
+ for (var i = 0, len = declarations.length; i < len; i++) {
1249
+ declaration = declarations[i];
1250
+ property = declaration.property;
1251
+ value = declaration.value;
1252
+
1253
+ if (hasIterator) {
1254
+ iterator(property, value, declaration);
1255
+ } else if (value) {
1256
+ output || (output = {});
1257
+ output[property] = value;
1258
+ }
1259
+ }
1260
+
1261
+ return output;
1262
+ }
1263
+
1264
+ var styleToObject = StyleToObject;
1265
+
1266
+ var utilities$2 = createCommonjsModule(function (module, exports) {
1267
+ exports.__esModule = true;
1268
+ exports.camelCase = void 0;
1269
+ var CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/;
1270
+ var HYPHEN_REGEX = /-([a-z])/g;
1271
+ var NO_HYPHEN_REGEX = /^[^-]+$/;
1272
+ var VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;
1273
+ var skipCamelCase = function (property) {
1274
+ return !property ||
1275
+ NO_HYPHEN_REGEX.test(property) ||
1276
+ CUSTOM_PROPERTY_REGEX.test(property);
1277
+ };
1278
+ var capitalize = function (match, character) {
1279
+ return character.toUpperCase();
1280
+ };
1281
+ var trimHyphen = function (match, prefix) { return prefix + "-"; };
1282
+ var camelCase = function (property, options) {
1283
+ if (options === void 0) { options = {}; }
1284
+ if (skipCamelCase(property)) {
1285
+ return property;
1286
+ }
1287
+ property = property.toLowerCase();
1288
+ if (!options.reactCompat) {
1289
+ property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);
1290
+ }
1291
+ return property.replace(HYPHEN_REGEX, capitalize);
1292
+ };
1293
+ exports.camelCase = camelCase;
1294
+ });
1295
+
1296
+ var cjs = createCommonjsModule(function (module, exports) {
1297
+ var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
1298
+ return (mod && mod.__esModule) ? mod : { "default": mod };
1299
+ };
1300
+ exports.__esModule = true;
1301
+ var style_to_object_1 = __importDefault(styleToObject);
1302
+
1303
+ function StyleToJS(style, options) {
1304
+ var output = {};
1305
+ if (!style || typeof style !== 'string') {
1306
+ return output;
1307
+ }
1308
+ style_to_object_1["default"](style, function (property, value) {
1309
+ if (property && value) {
1310
+ output[utilities$2.camelCase(property, options)] = value;
1311
+ }
1312
+ });
1313
+ return output;
1314
+ }
1315
+ exports["default"] = StyleToJS;
1316
+ });
1317
+
1318
+ var styleToJS = cjs.default;
1319
+
1320
+ /**
1321
+ * Swap key with value in an object.
1322
+ *
1323
+ * @param {Object} obj - The object.
1324
+ * @param {Function} [override] - The override method.
1325
+ * @return {Object} - The inverted object.
1326
+ */
1327
+ function invertObject(obj, override) {
1328
+ if (!obj || typeof obj !== 'object') {
1329
+ throw new TypeError('First argument must be an object');
1330
+ }
1331
+
1332
+ var key;
1333
+ var value;
1334
+ var isOverridePresent = typeof override === 'function';
1335
+ var overrides = {};
1336
+ var result = {};
1337
+
1338
+ for (key in obj) {
1339
+ value = obj[key];
1340
+
1341
+ if (isOverridePresent) {
1342
+ overrides = override(key, value);
1343
+ if (overrides && overrides.length === 2) {
1344
+ result[overrides[0]] = overrides[1];
1345
+ continue;
1346
+ }
1347
+ }
1348
+
1349
+ if (typeof value === 'string') {
1350
+ result[value] = key;
1351
+ }
1352
+ }
1353
+
1354
+ return result;
1355
+ }
1356
+
1357
+ /**
1358
+ * Check if a given tag is a custom component.
1359
+ *
1360
+ * @see {@link https://github.com/facebook/react/blob/v16.6.3/packages/react-dom/src/shared/isCustomComponent.js}
1361
+ *
1362
+ * @param {string} tagName - The name of the html tag.
1363
+ * @param {Object} props - The props being passed to the element.
1364
+ * @return {boolean}
1365
+ */
1366
+ function isCustomComponent(tagName, props) {
1367
+ if (tagName.indexOf('-') === -1) {
1368
+ return props && typeof props.is === 'string';
1369
+ }
1370
+
1371
+ switch (tagName) {
1372
+ // These are reserved SVG and MathML elements.
1373
+ // We don't mind this whitelist too much because we expect it to never grow.
1374
+ // The alternative is to track the namespace in a few places which is convoluted.
1375
+ // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts
1376
+ case 'annotation-xml':
1377
+ case 'color-profile':
1378
+ case 'font-face':
1379
+ case 'font-face-src':
1380
+ case 'font-face-uri':
1381
+ case 'font-face-format':
1382
+ case 'font-face-name':
1383
+ case 'missing-glyph':
1384
+ return false;
1385
+ default:
1386
+ return true;
1387
+ }
1388
+ }
1389
+
1390
+ var styleToJSOptions = { reactCompat: true };
1391
+
1392
+ /**
1393
+ * Sets style prop.
1394
+ *
1395
+ * @param {null|undefined|string} style
1396
+ * @param {object} props
1397
+ */
1398
+ function setStyleProp$1(style, props) {
1399
+ if (style === null || style === undefined) {
1400
+ return;
1401
+ }
1402
+ try {
1403
+ props.style = styleToJS(style, styleToJSOptions);
1404
+ } catch (err) {
1405
+ props.style = {};
1406
+ }
1407
+ }
1408
+
1409
+ /**
1410
+ * @constant {boolean}
1411
+ * @see {@link https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html}
1412
+ */
1413
+ var PRESERVE_CUSTOM_ATTRIBUTES = React__default["default"].version.split('.')[0] >= 16;
1414
+
1415
+ // Taken from
1416
+ // https://github.com/facebook/react/blob/cae635054e17a6f107a39d328649137b83f25972/packages/react-dom/src/client/validateDOMNesting.js#L213
1417
+ var elementsWithNoTextChildren = new Set([
1418
+ 'tr',
1419
+ 'tbody',
1420
+ 'thead',
1421
+ 'tfoot',
1422
+ 'colgroup',
1423
+ 'table',
1424
+ 'head',
1425
+ 'html',
1426
+ 'frameset'
1427
+ ]);
1428
+
1429
+ /**
1430
+ * Checks if the given node can contain text nodes
1431
+ *
1432
+ * @param {DomElement} node
1433
+ * @returns {boolean}
1434
+ */
1435
+ function canTextBeChildOfNode$1(node) {
1436
+ return !elementsWithNoTextChildren.has(node.name);
1437
+ }
1438
+
1439
+ var utilities$1 = {
1440
+ PRESERVE_CUSTOM_ATTRIBUTES: PRESERVE_CUSTOM_ATTRIBUTES,
1441
+ invertObject: invertObject,
1442
+ isCustomComponent: isCustomComponent,
1443
+ setStyleProp: setStyleProp$1,
1444
+ canTextBeChildOfNode: canTextBeChildOfNode$1,
1445
+ elementsWithNoTextChildren: elementsWithNoTextChildren
1446
+ };
1447
+
1448
+ /**
1449
+ * Converts HTML/SVG DOM attributes to React props.
1450
+ *
1451
+ * @param {object} [attributes={}] - HTML/SVG DOM attributes.
1452
+ * @return {object} - React props.
1453
+ */
1454
+ var attributesToProps = function attributesToProps(attributes) {
1455
+ attributes = attributes || {};
1456
+
1457
+ var valueOnlyInputs = {
1458
+ reset: true,
1459
+ submit: true
1460
+ };
1461
+
1462
+ var attributeName;
1463
+ var attributeNameLowerCased;
1464
+ var attributeValue;
1465
+ var propName;
1466
+ var propertyInfo;
1467
+ var props = {};
1468
+ var inputIsValueOnly = attributes.type && valueOnlyInputs[attributes.type];
1469
+
1470
+ for (attributeName in attributes) {
1471
+ attributeValue = attributes[attributeName];
1472
+
1473
+ // ARIA (aria-*) or custom data (data-*) attribute
1474
+ if (lib$2.isCustomAttribute(attributeName)) {
1475
+ props[attributeName] = attributeValue;
1476
+ continue;
1477
+ }
1478
+
1479
+ // convert HTML/SVG attribute to React prop
1480
+ attributeNameLowerCased = attributeName.toLowerCase();
1481
+ propName = getPropName(attributeNameLowerCased);
1482
+
1483
+ if (propName) {
1484
+ propertyInfo = lib$2.getPropertyInfo(propName);
1485
+
1486
+ // convert attribute to uncontrolled component prop (e.g., `value` to `defaultValue`)
1487
+ // https://reactjs.org/docs/uncontrolled-components.html
1488
+ if (
1489
+ (propName === 'checked' || propName === 'value') &&
1490
+ !inputIsValueOnly
1491
+ ) {
1492
+ propName = getPropName('default' + attributeNameLowerCased);
1493
+ }
1494
+
1495
+ props[propName] = attributeValue;
1496
+
1497
+ switch (propertyInfo && propertyInfo.type) {
1498
+ case lib$2.BOOLEAN:
1499
+ props[propName] = true;
1500
+ break;
1501
+ case lib$2.OVERLOADED_BOOLEAN:
1502
+ if (attributeValue === '') {
1503
+ props[propName] = true;
1504
+ }
1505
+ break;
1506
+ }
1507
+ continue;
1508
+ }
1509
+
1510
+ // preserve custom attribute if React >=16
1511
+ if (utilities$1.PRESERVE_CUSTOM_ATTRIBUTES) {
1512
+ props[attributeName] = attributeValue;
1513
+ }
1514
+ }
1515
+
1516
+ // transform inline style to object
1517
+ utilities$1.setStyleProp(attributes.style, props);
1518
+
1519
+ return props;
1520
+ };
1521
+
1522
+ /**
1523
+ * Gets prop name from lowercased attribute name.
1524
+ *
1525
+ * @param {string} attributeName - Lowercased attribute name.
1526
+ * @return {string}
1527
+ */
1528
+ function getPropName(attributeName) {
1529
+ return lib$2.possibleStandardNames[attributeName];
1530
+ }
1531
+
1532
+ var setStyleProp = utilities$1.setStyleProp;
1533
+ var canTextBeChildOfNode = utilities$1.canTextBeChildOfNode;
1534
+
1535
+ /**
1536
+ * Converts DOM nodes to JSX element(s).
1537
+ *
1538
+ * @param {DomElement[]} nodes - DOM nodes.
1539
+ * @param {object} [options={}] - Options.
1540
+ * @param {Function} [options.replace] - Replacer.
1541
+ * @param {object} [options.library] - Library (React/Preact/etc.).
1542
+ * @return {string|JSX.Element|JSX.Element[]}
1543
+ */
1544
+ function domToReact(nodes, options) {
1545
+ options = options || {};
1546
+
1547
+ var library = options.library || React__default["default"];
1548
+ var cloneElement = library.cloneElement;
1549
+ var createElement = library.createElement;
1550
+ var isValidElement = library.isValidElement;
1551
+
1552
+ var result = [];
1553
+ var node;
1554
+ var isWhitespace;
1555
+ var hasReplace = typeof options.replace === 'function';
1556
+ var replaceElement;
1557
+ var props;
1558
+ var children;
1559
+ var trim = options.trim;
1560
+
1561
+ for (var i = 0, len = nodes.length; i < len; i++) {
1562
+ node = nodes[i];
1563
+
1564
+ // replace with custom React element (if present)
1565
+ if (hasReplace) {
1566
+ replaceElement = options.replace(node);
1567
+
1568
+ if (isValidElement(replaceElement)) {
1569
+ // set "key" prop for sibling elements
1570
+ // https://fb.me/react-warning-keys
1571
+ if (len > 1) {
1572
+ replaceElement = cloneElement(replaceElement, {
1573
+ key: replaceElement.key || i
1574
+ });
1575
+ }
1576
+ result.push(replaceElement);
1577
+ continue;
1578
+ }
1579
+ }
1580
+
1581
+ if (node.type === 'text') {
1582
+ isWhitespace = !node.data.trim().length;
1583
+
1584
+ if (isWhitespace && node.parent && !canTextBeChildOfNode(node.parent)) {
1585
+ // We have a whitespace node that can't be nested in its parent
1586
+ // so skip it
1587
+ continue;
1588
+ }
1589
+
1590
+ if (trim && isWhitespace) {
1591
+ // Trim is enabled and we have a whitespace node
1592
+ // so skip it
1593
+ continue;
1594
+ }
1595
+
1596
+ // We have a text node that's not whitespace and it can be nested
1597
+ // in its parent so add it to the results
1598
+ result.push(node.data);
1599
+ continue;
1600
+ }
1601
+
1602
+ props = node.attribs;
1603
+ if (skipAttributesToProps(node)) {
1604
+ setStyleProp(props.style, props);
1605
+ } else if (props) {
1606
+ props = attributesToProps(props);
1607
+ }
1608
+
1609
+ children = null;
1610
+
1611
+ switch (node.type) {
1612
+ case 'script':
1613
+ case 'style':
1614
+ // prevent text in <script> or <style> from being escaped
1615
+ // https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml
1616
+ if (node.children[0]) {
1617
+ props.dangerouslySetInnerHTML = {
1618
+ __html: node.children[0].data
1619
+ };
1620
+ }
1621
+ break;
1622
+
1623
+ case 'tag':
1624
+ // setting textarea value in children is an antipattern in React
1625
+ // https://reactjs.org/docs/forms.html#the-textarea-tag
1626
+ if (node.name === 'textarea' && node.children[0]) {
1627
+ props.defaultValue = node.children[0].data;
1628
+ } else if (node.children && node.children.length) {
1629
+ // continue recursion of creating React elements (if applicable)
1630
+ children = domToReact(node.children, options);
1631
+ }
1632
+ break;
1633
+
1634
+ // skip all other cases (e.g., comment)
1635
+ default:
1636
+ continue;
1637
+ }
1638
+
1639
+ // set "key" prop for sibling elements
1640
+ // https://fb.me/react-warning-keys
1641
+ if (len > 1) {
1642
+ props.key = i;
1643
+ }
1644
+
1645
+ result.push(createElement(node.name, props, children));
1646
+ }
1647
+
1648
+ return result.length === 1 ? result[0] : result;
1649
+ }
1650
+
1651
+ /**
1652
+ * Determines whether DOM element attributes should be transformed to props.
1653
+ * Web Components should not have their attributes transformed except for `style`.
1654
+ *
1655
+ * @param {DomElement} node
1656
+ * @return {boolean}
1657
+ */
1658
+ function skipAttributesToProps(node) {
1659
+ return (
1660
+ utilities$1.PRESERVE_CUSTOM_ATTRIBUTES &&
1661
+ node.type === 'tag' &&
1662
+ utilities$1.isCustomComponent(node.name, node.attribs)
1663
+ );
1664
+ }
1665
+
1666
+ var domToReact_1 = domToReact;
1667
+
1668
+ // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
1669
+
1670
+ var decodeMap = new Map([
1671
+ [0, 65533],
1672
+ [128, 8364],
1673
+ [130, 8218],
1674
+ [131, 402],
1675
+ [132, 8222],
1676
+ [133, 8230],
1677
+ [134, 8224],
1678
+ [135, 8225],
1679
+ [136, 710],
1680
+ [137, 8240],
1681
+ [138, 352],
1682
+ [139, 8249],
1683
+ [140, 338],
1684
+ [142, 381],
1685
+ [145, 8216],
1686
+ [146, 8217],
1687
+ [147, 8220],
1688
+ [148, 8221],
1689
+ [149, 8226],
1690
+ [150, 8211],
1691
+ [151, 8212],
1692
+ [152, 732],
1693
+ [153, 8482],
1694
+ [154, 353],
1695
+ [155, 8250],
1696
+ [156, 339],
1697
+ [158, 382],
1698
+ [159, 376],
1699
+ ]);
1700
+ var fromCodePoint =
1701
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
1702
+ String.fromCodePoint ||
1703
+ function (codePoint) {
1704
+ var output = "";
1705
+ if (codePoint > 0xffff) {
1706
+ codePoint -= 0x10000;
1707
+ output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
1708
+ codePoint = 0xdc00 | (codePoint & 0x3ff);
1709
+ }
1710
+ output += String.fromCharCode(codePoint);
1711
+ return output;
1712
+ };
1713
+ function decodeCodePoint(codePoint) {
1714
+ var _a;
1715
+ if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
1716
+ return "\uFFFD";
1717
+ }
1718
+ return fromCodePoint((_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint);
1719
+ }
1720
+ var _default$4 = decodeCodePoint;
1721
+
1722
+ var decode_codepoint = /*#__PURE__*/Object.defineProperty({
1723
+ default: _default$4
1724
+ }, '__esModule', {value: true});
1725
+
1726
+ // Generated using scripts/write-decode-map.ts
1727
+ // prettier-ignore
1728
+ var _default$3 = new Uint16Array([14866, 60, 237, 340, 721, 1312, 1562, 1654, 1838, 1957, 2183, 2239, 2301, 2958, 3037, 3893, 4123, 4298, 4330, 4801, 5191, 5395, 5752, 5903, 5943, 5972, 6050, 0, 0, 0, 0, 0, 0, 6135, 6565, 7422, 8183, 8738, 9242, 9503, 9938, 10189, 10573, 10637, 10715, 11950, 12246, 13539, 13950, 14445, 14533, 15364, 16514, 16980, 17390, 17763, 17849, 18036, 18125, 4096, 69, 77, 97, 98, 99, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 92, 100, 106, 115, 122, 137, 142, 151, 157, 163, 167, 182, 196, 204, 220, 229, 108, 105, 103, 33024, 198, 59, 32768, 198, 80, 33024, 38, 59, 32768, 38, 99, 117, 116, 101, 33024, 193, 59, 32768, 193, 114, 101, 118, 101, 59, 32768, 258, 512, 105, 121, 127, 134, 114, 99, 33024, 194, 59, 32768, 194, 59, 32768, 1040, 114, 59, 32896, 55349, 56580, 114, 97, 118, 101, 33024, 192, 59, 32768, 192, 112, 104, 97, 59, 32768, 913, 97, 99, 114, 59, 32768, 256, 100, 59, 32768, 10835, 512, 103, 112, 172, 177, 111, 110, 59, 32768, 260, 102, 59, 32896, 55349, 56632, 112, 108, 121, 70, 117, 110, 99, 116, 105, 111, 110, 59, 32768, 8289, 105, 110, 103, 33024, 197, 59, 32768, 197, 512, 99, 115, 209, 214, 114, 59, 32896, 55349, 56476, 105, 103, 110, 59, 32768, 8788, 105, 108, 100, 101, 33024, 195, 59, 32768, 195, 109, 108, 33024, 196, 59, 32768, 196, 2048, 97, 99, 101, 102, 111, 114, 115, 117, 253, 278, 282, 310, 315, 321, 327, 332, 512, 99, 114, 258, 267, 107, 115, 108, 97, 115, 104, 59, 32768, 8726, 583, 271, 274, 59, 32768, 10983, 101, 100, 59, 32768, 8966, 121, 59, 32768, 1041, 768, 99, 114, 116, 289, 296, 306, 97, 117, 115, 101, 59, 32768, 8757, 110, 111, 117, 108, 108, 105, 115, 59, 32768, 8492, 97, 59, 32768, 914, 114, 59, 32896, 55349, 56581, 112, 102, 59, 32896, 55349, 56633, 101, 118, 101, 59, 32768, 728, 99, 114, 59, 32768, 8492, 109, 112, 101, 113, 59, 32768, 8782, 3584, 72, 79, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 117, 368, 373, 380, 426, 461, 466, 487, 491, 495, 533, 593, 695, 701, 707, 99, 121, 59, 32768, 1063, 80, 89, 33024, 169, 59, 32768, 169, 768, 99, 112, 121, 387, 393, 419, 117, 116, 101, 59, 32768, 262, 512, 59, 105, 398, 400, 32768, 8914, 116, 97, 108, 68, 105, 102, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 32768, 8517, 108, 101, 121, 115, 59, 32768, 8493, 1024, 97, 101, 105, 111, 435, 441, 449, 454, 114, 111, 110, 59, 32768, 268, 100, 105, 108, 33024, 199, 59, 32768, 199, 114, 99, 59, 32768, 264, 110, 105, 110, 116, 59, 32768, 8752, 111, 116, 59, 32768, 266, 512, 100, 110, 471, 478, 105, 108, 108, 97, 59, 32768, 184, 116, 101, 114, 68, 111, 116, 59, 32768, 183, 114, 59, 32768, 8493, 105, 59, 32768, 935, 114, 99, 108, 101, 1024, 68, 77, 80, 84, 508, 513, 520, 526, 111, 116, 59, 32768, 8857, 105, 110, 117, 115, 59, 32768, 8854, 108, 117, 115, 59, 32768, 8853, 105, 109, 101, 115, 59, 32768, 8855, 111, 512, 99, 115, 539, 562, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8754, 101, 67, 117, 114, 108, 121, 512, 68, 81, 573, 586, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 32768, 8221, 117, 111, 116, 101, 59, 32768, 8217, 1024, 108, 110, 112, 117, 602, 614, 648, 664, 111, 110, 512, 59, 101, 609, 611, 32768, 8759, 59, 32768, 10868, 768, 103, 105, 116, 621, 629, 634, 114, 117, 101, 110, 116, 59, 32768, 8801, 110, 116, 59, 32768, 8751, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8750, 512, 102, 114, 653, 656, 59, 32768, 8450, 111, 100, 117, 99, 116, 59, 32768, 8720, 110, 116, 101, 114, 67, 108, 111, 99, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8755, 111, 115, 115, 59, 32768, 10799, 99, 114, 59, 32896, 55349, 56478, 112, 512, 59, 67, 713, 715, 32768, 8915, 97, 112, 59, 32768, 8781, 2816, 68, 74, 83, 90, 97, 99, 101, 102, 105, 111, 115, 743, 758, 763, 768, 773, 795, 809, 821, 826, 910, 1295, 512, 59, 111, 748, 750, 32768, 8517, 116, 114, 97, 104, 100, 59, 32768, 10513, 99, 121, 59, 32768, 1026, 99, 121, 59, 32768, 1029, 99, 121, 59, 32768, 1039, 768, 103, 114, 115, 780, 786, 790, 103, 101, 114, 59, 32768, 8225, 114, 59, 32768, 8609, 104, 118, 59, 32768, 10980, 512, 97, 121, 800, 806, 114, 111, 110, 59, 32768, 270, 59, 32768, 1044, 108, 512, 59, 116, 815, 817, 32768, 8711, 97, 59, 32768, 916, 114, 59, 32896, 55349, 56583, 512, 97, 102, 831, 897, 512, 99, 109, 836, 891, 114, 105, 116, 105, 99, 97, 108, 1024, 65, 68, 71, 84, 852, 859, 877, 884, 99, 117, 116, 101, 59, 32768, 180, 111, 581, 864, 867, 59, 32768, 729, 98, 108, 101, 65, 99, 117, 116, 101, 59, 32768, 733, 114, 97, 118, 101, 59, 32768, 96, 105, 108, 100, 101, 59, 32768, 732, 111, 110, 100, 59, 32768, 8900, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 32768, 8518, 2113, 920, 0, 0, 0, 925, 946, 0, 1139, 102, 59, 32896, 55349, 56635, 768, 59, 68, 69, 931, 933, 938, 32768, 168, 111, 116, 59, 32768, 8412, 113, 117, 97, 108, 59, 32768, 8784, 98, 108, 101, 1536, 67, 68, 76, 82, 85, 86, 961, 978, 996, 1080, 1101, 1125, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8751, 111, 1093, 985, 0, 0, 988, 59, 32768, 168, 110, 65, 114, 114, 111, 119, 59, 32768, 8659, 512, 101, 111, 1001, 1034, 102, 116, 768, 65, 82, 84, 1010, 1017, 1029, 114, 114, 111, 119, 59, 32768, 8656, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8660, 101, 101, 59, 32768, 10980, 110, 103, 512, 76, 82, 1041, 1068, 101, 102, 116, 512, 65, 82, 1049, 1056, 114, 114, 111, 119, 59, 32768, 10232, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10234, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10233, 105, 103, 104, 116, 512, 65, 84, 1089, 1096, 114, 114, 111, 119, 59, 32768, 8658, 101, 101, 59, 32768, 8872, 112, 1042, 1108, 0, 0, 1115, 114, 114, 111, 119, 59, 32768, 8657, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8661, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8741, 110, 1536, 65, 66, 76, 82, 84, 97, 1152, 1179, 1186, 1236, 1272, 1288, 114, 114, 111, 119, 768, 59, 66, 85, 1163, 1165, 1170, 32768, 8595, 97, 114, 59, 32768, 10515, 112, 65, 114, 114, 111, 119, 59, 32768, 8693, 114, 101, 118, 101, 59, 32768, 785, 101, 102, 116, 1315, 1196, 0, 1209, 0, 1220, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 32768, 10576, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10590, 101, 99, 116, 111, 114, 512, 59, 66, 1229, 1231, 32768, 8637, 97, 114, 59, 32768, 10582, 105, 103, 104, 116, 805, 1245, 0, 1256, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10591, 101, 99, 116, 111, 114, 512, 59, 66, 1265, 1267, 32768, 8641, 97, 114, 59, 32768, 10583, 101, 101, 512, 59, 65, 1279, 1281, 32768, 8868, 114, 114, 111, 119, 59, 32768, 8615, 114, 114, 111, 119, 59, 32768, 8659, 512, 99, 116, 1300, 1305, 114, 59, 32896, 55349, 56479, 114, 111, 107, 59, 32768, 272, 4096, 78, 84, 97, 99, 100, 102, 103, 108, 109, 111, 112, 113, 115, 116, 117, 120, 1344, 1348, 1354, 1363, 1386, 1391, 1396, 1405, 1413, 1460, 1475, 1483, 1514, 1527, 1531, 1538, 71, 59, 32768, 330, 72, 33024, 208, 59, 32768, 208, 99, 117, 116, 101, 33024, 201, 59, 32768, 201, 768, 97, 105, 121, 1370, 1376, 1383, 114, 111, 110, 59, 32768, 282, 114, 99, 33024, 202, 59, 32768, 202, 59, 32768, 1069, 111, 116, 59, 32768, 278, 114, 59, 32896, 55349, 56584, 114, 97, 118, 101, 33024, 200, 59, 32768, 200, 101, 109, 101, 110, 116, 59, 32768, 8712, 512, 97, 112, 1418, 1423, 99, 114, 59, 32768, 274, 116, 121, 1060, 1431, 0, 0, 1444, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9723, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9643, 512, 103, 112, 1465, 1470, 111, 110, 59, 32768, 280, 102, 59, 32896, 55349, 56636, 115, 105, 108, 111, 110, 59, 32768, 917, 117, 512, 97, 105, 1489, 1504, 108, 512, 59, 84, 1495, 1497, 32768, 10869, 105, 108, 100, 101, 59, 32768, 8770, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 8652, 512, 99, 105, 1519, 1523, 114, 59, 32768, 8496, 109, 59, 32768, 10867, 97, 59, 32768, 919, 109, 108, 33024, 203, 59, 32768, 203, 512, 105, 112, 1543, 1549, 115, 116, 115, 59, 32768, 8707, 111, 110, 101, 110, 116, 105, 97, 108, 69, 59, 32768, 8519, 1280, 99, 102, 105, 111, 115, 1572, 1576, 1581, 1620, 1648, 121, 59, 32768, 1060, 114, 59, 32896, 55349, 56585, 108, 108, 101, 100, 1060, 1591, 0, 0, 1604, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9724, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9642, 1601, 1628, 0, 1633, 0, 0, 1639, 102, 59, 32896, 55349, 56637, 65, 108, 108, 59, 32768, 8704, 114, 105, 101, 114, 116, 114, 102, 59, 32768, 8497, 99, 114, 59, 32768, 8497, 3072, 74, 84, 97, 98, 99, 100, 102, 103, 111, 114, 115, 116, 1678, 1683, 1688, 1701, 1708, 1729, 1734, 1739, 1742, 1748, 1828, 1834, 99, 121, 59, 32768, 1027, 33024, 62, 59, 32768, 62, 109, 109, 97, 512, 59, 100, 1696, 1698, 32768, 915, 59, 32768, 988, 114, 101, 118, 101, 59, 32768, 286, 768, 101, 105, 121, 1715, 1721, 1726, 100, 105, 108, 59, 32768, 290, 114, 99, 59, 32768, 284, 59, 32768, 1043, 111, 116, 59, 32768, 288, 114, 59, 32896, 55349, 56586, 59, 32768, 8921, 112, 102, 59, 32896, 55349, 56638, 101, 97, 116, 101, 114, 1536, 69, 70, 71, 76, 83, 84, 1766, 1783, 1794, 1803, 1809, 1821, 113, 117, 97, 108, 512, 59, 76, 1775, 1777, 32768, 8805, 101, 115, 115, 59, 32768, 8923, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8807, 114, 101, 97, 116, 101, 114, 59, 32768, 10914, 101, 115, 115, 59, 32768, 8823, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 10878, 105, 108, 100, 101, 59, 32768, 8819, 99, 114, 59, 32896, 55349, 56482, 59, 32768, 8811, 2048, 65, 97, 99, 102, 105, 111, 115, 117, 1854, 1861, 1874, 1880, 1884, 1897, 1919, 1934, 82, 68, 99, 121, 59, 32768, 1066, 512, 99, 116, 1866, 1871, 101, 107, 59, 32768, 711, 59, 32768, 94, 105, 114, 99, 59, 32768, 292, 114, 59, 32768, 8460, 108, 98, 101, 114, 116, 83, 112, 97, 99, 101, 59, 32768, 8459, 833, 1902, 0, 1906, 102, 59, 32768, 8461, 105, 122, 111, 110, 116, 97, 108, 76, 105, 110, 101, 59, 32768, 9472, 512, 99, 116, 1924, 1928, 114, 59, 32768, 8459, 114, 111, 107, 59, 32768, 294, 109, 112, 533, 1940, 1950, 111, 119, 110, 72, 117, 109, 112, 59, 32768, 8782, 113, 117, 97, 108, 59, 32768, 8783, 3584, 69, 74, 79, 97, 99, 100, 102, 103, 109, 110, 111, 115, 116, 117, 1985, 1990, 1996, 2001, 2010, 2025, 2030, 2034, 2043, 2077, 2134, 2155, 2160, 2167, 99, 121, 59, 32768, 1045, 108, 105, 103, 59, 32768, 306, 99, 121, 59, 32768, 1025, 99, 117, 116, 101, 33024, 205, 59, 32768, 205, 512, 105, 121, 2015, 2022, 114, 99, 33024, 206, 59, 32768, 206, 59, 32768, 1048, 111, 116, 59, 32768, 304, 114, 59, 32768, 8465, 114, 97, 118, 101, 33024, 204, 59, 32768, 204, 768, 59, 97, 112, 2050, 2052, 2070, 32768, 8465, 512, 99, 103, 2057, 2061, 114, 59, 32768, 298, 105, 110, 97, 114, 121, 73, 59, 32768, 8520, 108, 105, 101, 115, 59, 32768, 8658, 837, 2082, 0, 2110, 512, 59, 101, 2086, 2088, 32768, 8748, 512, 103, 114, 2093, 2099, 114, 97, 108, 59, 32768, 8747, 115, 101, 99, 116, 105, 111, 110, 59, 32768, 8898, 105, 115, 105, 98, 108, 101, 512, 67, 84, 2120, 2127, 111, 109, 109, 97, 59, 32768, 8291, 105, 109, 101, 115, 59, 32768, 8290, 768, 103, 112, 116, 2141, 2146, 2151, 111, 110, 59, 32768, 302, 102, 59, 32896, 55349, 56640, 97, 59, 32768, 921, 99, 114, 59, 32768, 8464, 105, 108, 100, 101, 59, 32768, 296, 828, 2172, 0, 2177, 99, 121, 59, 32768, 1030, 108, 33024, 207, 59, 32768, 207, 1280, 99, 102, 111, 115, 117, 2193, 2206, 2211, 2217, 2232, 512, 105, 121, 2198, 2203, 114, 99, 59, 32768, 308, 59, 32768, 1049, 114, 59, 32896, 55349, 56589, 112, 102, 59, 32896, 55349, 56641, 820, 2222, 0, 2227, 114, 59, 32896, 55349, 56485, 114, 99, 121, 59, 32768, 1032, 107, 99, 121, 59, 32768, 1028, 1792, 72, 74, 97, 99, 102, 111, 115, 2253, 2258, 2263, 2269, 2283, 2288, 2294, 99, 121, 59, 32768, 1061, 99, 121, 59, 32768, 1036, 112, 112, 97, 59, 32768, 922, 512, 101, 121, 2274, 2280, 100, 105, 108, 59, 32768, 310, 59, 32768, 1050, 114, 59, 32896, 55349, 56590, 112, 102, 59, 32896, 55349, 56642, 99, 114, 59, 32896, 55349, 56486, 2816, 74, 84, 97, 99, 101, 102, 108, 109, 111, 115, 116, 2323, 2328, 2333, 2374, 2396, 2775, 2780, 2797, 2804, 2934, 2954, 99, 121, 59, 32768, 1033, 33024, 60, 59, 32768, 60, 1280, 99, 109, 110, 112, 114, 2344, 2350, 2356, 2360, 2370, 117, 116, 101, 59, 32768, 313, 98, 100, 97, 59, 32768, 923, 103, 59, 32768, 10218, 108, 97, 99, 101, 116, 114, 102, 59, 32768, 8466, 114, 59, 32768, 8606, 768, 97, 101, 121, 2381, 2387, 2393, 114, 111, 110, 59, 32768, 317, 100, 105, 108, 59, 32768, 315, 59, 32768, 1051, 512, 102, 115, 2401, 2702, 116, 2560, 65, 67, 68, 70, 82, 84, 85, 86, 97, 114, 2423, 2470, 2479, 2530, 2537, 2561, 2618, 2666, 2683, 2690, 512, 110, 114, 2428, 2441, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10216, 114, 111, 119, 768, 59, 66, 82, 2451, 2453, 2458, 32768, 8592, 97, 114, 59, 32768, 8676, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8646, 101, 105, 108, 105, 110, 103, 59, 32768, 8968, 111, 838, 2485, 0, 2498, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10214, 110, 805, 2503, 0, 2514, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10593, 101, 99, 116, 111, 114, 512, 59, 66, 2523, 2525, 32768, 8643, 97, 114, 59, 32768, 10585, 108, 111, 111, 114, 59, 32768, 8970, 105, 103, 104, 116, 512, 65, 86, 2546, 2553, 114, 114, 111, 119, 59, 32768, 8596, 101, 99, 116, 111, 114, 59, 32768, 10574, 512, 101, 114, 2566, 2591, 101, 768, 59, 65, 86, 2574, 2576, 2583, 32768, 8867, 114, 114, 111, 119, 59, 32768, 8612, 101, 99, 116, 111, 114, 59, 32768, 10586, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 2604, 2606, 2611, 32768, 8882, 97, 114, 59, 32768, 10703, 113, 117, 97, 108, 59, 32768, 8884, 112, 768, 68, 84, 86, 2626, 2638, 2649, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 32768, 10577, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10592, 101, 99, 116, 111, 114, 512, 59, 66, 2659, 2661, 32768, 8639, 97, 114, 59, 32768, 10584, 101, 99, 116, 111, 114, 512, 59, 66, 2676, 2678, 32768, 8636, 97, 114, 59, 32768, 10578, 114, 114, 111, 119, 59, 32768, 8656, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8660, 115, 1536, 69, 70, 71, 76, 83, 84, 2716, 2730, 2741, 2750, 2756, 2768, 113, 117, 97, 108, 71, 114, 101, 97, 116, 101, 114, 59, 32768, 8922, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8806, 114, 101, 97, 116, 101, 114, 59, 32768, 8822, 101, 115, 115, 59, 32768, 10913, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 10877, 105, 108, 100, 101, 59, 32768, 8818, 114, 59, 32896, 55349, 56591, 512, 59, 101, 2785, 2787, 32768, 8920, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8666, 105, 100, 111, 116, 59, 32768, 319, 768, 110, 112, 119, 2811, 2899, 2904, 103, 1024, 76, 82, 108, 114, 2821, 2848, 2860, 2887, 101, 102, 116, 512, 65, 82, 2829, 2836, 114, 114, 111, 119, 59, 32768, 10229, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10231, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10230, 101, 102, 116, 512, 97, 114, 2868, 2875, 114, 114, 111, 119, 59, 32768, 10232, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10234, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10233, 102, 59, 32896, 55349, 56643, 101, 114, 512, 76, 82, 2911, 2922, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8601, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8600, 768, 99, 104, 116, 2941, 2945, 2948, 114, 59, 32768, 8466, 59, 32768, 8624, 114, 111, 107, 59, 32768, 321, 59, 32768, 8810, 2048, 97, 99, 101, 102, 105, 111, 115, 117, 2974, 2978, 2982, 3007, 3012, 3022, 3028, 3033, 112, 59, 32768, 10501, 121, 59, 32768, 1052, 512, 100, 108, 2987, 2998, 105, 117, 109, 83, 112, 97, 99, 101, 59, 32768, 8287, 108, 105, 110, 116, 114, 102, 59, 32768, 8499, 114, 59, 32896, 55349, 56592, 110, 117, 115, 80, 108, 117, 115, 59, 32768, 8723, 112, 102, 59, 32896, 55349, 56644, 99, 114, 59, 32768, 8499, 59, 32768, 924, 2304, 74, 97, 99, 101, 102, 111, 115, 116, 117, 3055, 3060, 3067, 3089, 3201, 3206, 3874, 3880, 3889, 99, 121, 59, 32768, 1034, 99, 117, 116, 101, 59, 32768, 323, 768, 97, 101, 121, 3074, 3080, 3086, 114, 111, 110, 59, 32768, 327, 100, 105, 108, 59, 32768, 325, 59, 32768, 1053, 768, 103, 115, 119, 3096, 3160, 3194, 97, 116, 105, 118, 101, 768, 77, 84, 86, 3108, 3121, 3145, 101, 100, 105, 117, 109, 83, 112, 97, 99, 101, 59, 32768, 8203, 104, 105, 512, 99, 110, 3128, 3137, 107, 83, 112, 97, 99, 101, 59, 32768, 8203, 83, 112, 97, 99, 101, 59, 32768, 8203, 101, 114, 121, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 32768, 8203, 116, 101, 100, 512, 71, 76, 3168, 3184, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 32768, 8811, 101, 115, 115, 76, 101, 115, 115, 59, 32768, 8810, 76, 105, 110, 101, 59, 32768, 10, 114, 59, 32896, 55349, 56593, 1024, 66, 110, 112, 116, 3215, 3222, 3238, 3242, 114, 101, 97, 107, 59, 32768, 8288, 66, 114, 101, 97, 107, 105, 110, 103, 83, 112, 97, 99, 101, 59, 32768, 160, 102, 59, 32768, 8469, 3328, 59, 67, 68, 69, 71, 72, 76, 78, 80, 82, 83, 84, 86, 3269, 3271, 3293, 3312, 3352, 3430, 3455, 3551, 3589, 3625, 3678, 3821, 3861, 32768, 10988, 512, 111, 117, 3276, 3286, 110, 103, 114, 117, 101, 110, 116, 59, 32768, 8802, 112, 67, 97, 112, 59, 32768, 8813, 111, 117, 98, 108, 101, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8742, 768, 108, 113, 120, 3319, 3327, 3345, 101, 109, 101, 110, 116, 59, 32768, 8713, 117, 97, 108, 512, 59, 84, 3335, 3337, 32768, 8800, 105, 108, 100, 101, 59, 32896, 8770, 824, 105, 115, 116, 115, 59, 32768, 8708, 114, 101, 97, 116, 101, 114, 1792, 59, 69, 70, 71, 76, 83, 84, 3373, 3375, 3382, 3394, 3404, 3410, 3423, 32768, 8815, 113, 117, 97, 108, 59, 32768, 8817, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32896, 8807, 824, 114, 101, 97, 116, 101, 114, 59, 32896, 8811, 824, 101, 115, 115, 59, 32768, 8825, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32896, 10878, 824, 105, 108, 100, 101, 59, 32768, 8821, 117, 109, 112, 533, 3437, 3448, 111, 119, 110, 72, 117, 109, 112, 59, 32896, 8782, 824, 113, 117, 97, 108, 59, 32896, 8783, 824, 101, 512, 102, 115, 3461, 3492, 116, 84, 114, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 3477, 3479, 3485, 32768, 8938, 97, 114, 59, 32896, 10703, 824, 113, 117, 97, 108, 59, 32768, 8940, 115, 1536, 59, 69, 71, 76, 83, 84, 3506, 3508, 3515, 3524, 3531, 3544, 32768, 8814, 113, 117, 97, 108, 59, 32768, 8816, 114, 101, 97, 116, 101, 114, 59, 32768, 8824, 101, 115, 115, 59, 32896, 8810, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32896, 10877, 824, 105, 108, 100, 101, 59, 32768, 8820, 101, 115, 116, 101, 100, 512, 71, 76, 3561, 3578, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 32896, 10914, 824, 101, 115, 115, 76, 101, 115, 115, 59, 32896, 10913, 824, 114, 101, 99, 101, 100, 101, 115, 768, 59, 69, 83, 3603, 3605, 3613, 32768, 8832, 113, 117, 97, 108, 59, 32896, 10927, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8928, 512, 101, 105, 3630, 3645, 118, 101, 114, 115, 101, 69, 108, 101, 109, 101, 110, 116, 59, 32768, 8716, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 3663, 3665, 3671, 32768, 8939, 97, 114, 59, 32896, 10704, 824, 113, 117, 97, 108, 59, 32768, 8941, 512, 113, 117, 3683, 3732, 117, 97, 114, 101, 83, 117, 512, 98, 112, 3694, 3712, 115, 101, 116, 512, 59, 69, 3702, 3705, 32896, 8847, 824, 113, 117, 97, 108, 59, 32768, 8930, 101, 114, 115, 101, 116, 512, 59, 69, 3722, 3725, 32896, 8848, 824, 113, 117, 97, 108, 59, 32768, 8931, 768, 98, 99, 112, 3739, 3757, 3801, 115, 101, 116, 512, 59, 69, 3747, 3750, 32896, 8834, 8402, 113, 117, 97, 108, 59, 32768, 8840, 99, 101, 101, 100, 115, 1024, 59, 69, 83, 84, 3771, 3773, 3781, 3793, 32768, 8833, 113, 117, 97, 108, 59, 32896, 10928, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8929, 105, 108, 100, 101, 59, 32896, 8831, 824, 101, 114, 115, 101, 116, 512, 59, 69, 3811, 3814, 32896, 8835, 8402, 113, 117, 97, 108, 59, 32768, 8841, 105, 108, 100, 101, 1024, 59, 69, 70, 84, 3834, 3836, 3843, 3854, 32768, 8769, 113, 117, 97, 108, 59, 32768, 8772, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8775, 105, 108, 100, 101, 59, 32768, 8777, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8740, 99, 114, 59, 32896, 55349, 56489, 105, 108, 100, 101, 33024, 209, 59, 32768, 209, 59, 32768, 925, 3584, 69, 97, 99, 100, 102, 103, 109, 111, 112, 114, 115, 116, 117, 118, 3921, 3927, 3936, 3951, 3958, 3963, 3972, 3996, 4002, 4034, 4037, 4055, 4071, 4078, 108, 105, 103, 59, 32768, 338, 99, 117, 116, 101, 33024, 211, 59, 32768, 211, 512, 105, 121, 3941, 3948, 114, 99, 33024, 212, 59, 32768, 212, 59, 32768, 1054, 98, 108, 97, 99, 59, 32768, 336, 114, 59, 32896, 55349, 56594, 114, 97, 118, 101, 33024, 210, 59, 32768, 210, 768, 97, 101, 105, 3979, 3984, 3989, 99, 114, 59, 32768, 332, 103, 97, 59, 32768, 937, 99, 114, 111, 110, 59, 32768, 927, 112, 102, 59, 32896, 55349, 56646, 101, 110, 67, 117, 114, 108, 121, 512, 68, 81, 4014, 4027, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 32768, 8220, 117, 111, 116, 101, 59, 32768, 8216, 59, 32768, 10836, 512, 99, 108, 4042, 4047, 114, 59, 32896, 55349, 56490, 97, 115, 104, 33024, 216, 59, 32768, 216, 105, 573, 4060, 4067, 100, 101, 33024, 213, 59, 32768, 213, 101, 115, 59, 32768, 10807, 109, 108, 33024, 214, 59, 32768, 214, 101, 114, 512, 66, 80, 4085, 4109, 512, 97, 114, 4090, 4094, 114, 59, 32768, 8254, 97, 99, 512, 101, 107, 4101, 4104, 59, 32768, 9182, 101, 116, 59, 32768, 9140, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 32768, 9180, 2304, 97, 99, 102, 104, 105, 108, 111, 114, 115, 4141, 4150, 4154, 4159, 4163, 4166, 4176, 4198, 4284, 114, 116, 105, 97, 108, 68, 59, 32768, 8706, 121, 59, 32768, 1055, 114, 59, 32896, 55349, 56595, 105, 59, 32768, 934, 59, 32768, 928, 117, 115, 77, 105, 110, 117, 115, 59, 32768, 177, 512, 105, 112, 4181, 4194, 110, 99, 97, 114, 101, 112, 108, 97, 110, 101, 59, 32768, 8460, 102, 59, 32768, 8473, 1024, 59, 101, 105, 111, 4207, 4209, 4251, 4256, 32768, 10939, 99, 101, 100, 101, 115, 1024, 59, 69, 83, 84, 4223, 4225, 4232, 4244, 32768, 8826, 113, 117, 97, 108, 59, 32768, 10927, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8828, 105, 108, 100, 101, 59, 32768, 8830, 109, 101, 59, 32768, 8243, 512, 100, 112, 4261, 4267, 117, 99, 116, 59, 32768, 8719, 111, 114, 116, 105, 111, 110, 512, 59, 97, 4278, 4280, 32768, 8759, 108, 59, 32768, 8733, 512, 99, 105, 4289, 4294, 114, 59, 32896, 55349, 56491, 59, 32768, 936, 1024, 85, 102, 111, 115, 4306, 4313, 4318, 4323, 79, 84, 33024, 34, 59, 32768, 34, 114, 59, 32896, 55349, 56596, 112, 102, 59, 32768, 8474, 99, 114, 59, 32896, 55349, 56492, 3072, 66, 69, 97, 99, 101, 102, 104, 105, 111, 114, 115, 117, 4354, 4360, 4366, 4395, 4417, 4473, 4477, 4481, 4743, 4764, 4776, 4788, 97, 114, 114, 59, 32768, 10512, 71, 33024, 174, 59, 32768, 174, 768, 99, 110, 114, 4373, 4379, 4383, 117, 116, 101, 59, 32768, 340, 103, 59, 32768, 10219, 114, 512, 59, 116, 4389, 4391, 32768, 8608, 108, 59, 32768, 10518, 768, 97, 101, 121, 4402, 4408, 4414, 114, 111, 110, 59, 32768, 344, 100, 105, 108, 59, 32768, 342, 59, 32768, 1056, 512, 59, 118, 4422, 4424, 32768, 8476, 101, 114, 115, 101, 512, 69, 85, 4433, 4458, 512, 108, 113, 4438, 4446, 101, 109, 101, 110, 116, 59, 32768, 8715, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 8651, 112, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 10607, 114, 59, 32768, 8476, 111, 59, 32768, 929, 103, 104, 116, 2048, 65, 67, 68, 70, 84, 85, 86, 97, 4501, 4547, 4556, 4607, 4614, 4671, 4719, 4736, 512, 110, 114, 4506, 4519, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10217, 114, 111, 119, 768, 59, 66, 76, 4529, 4531, 4536, 32768, 8594, 97, 114, 59, 32768, 8677, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8644, 101, 105, 108, 105, 110, 103, 59, 32768, 8969, 111, 838, 4562, 0, 4575, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10215, 110, 805, 4580, 0, 4591, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10589, 101, 99, 116, 111, 114, 512, 59, 66, 4600, 4602, 32768, 8642, 97, 114, 59, 32768, 10581, 108, 111, 111, 114, 59, 32768, 8971, 512, 101, 114, 4619, 4644, 101, 768, 59, 65, 86, 4627, 4629, 4636, 32768, 8866, 114, 114, 111, 119, 59, 32768, 8614, 101, 99, 116, 111, 114, 59, 32768, 10587, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 4657, 4659, 4664, 32768, 8883, 97, 114, 59, 32768, 10704, 113, 117, 97, 108, 59, 32768, 8885, 112, 768, 68, 84, 86, 4679, 4691, 4702, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 32768, 10575, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10588, 101, 99, 116, 111, 114, 512, 59, 66, 4712, 4714, 32768, 8638, 97, 114, 59, 32768, 10580, 101, 99, 116, 111, 114, 512, 59, 66, 4729, 4731, 32768, 8640, 97, 114, 59, 32768, 10579, 114, 114, 111, 119, 59, 32768, 8658, 512, 112, 117, 4748, 4752, 102, 59, 32768, 8477, 110, 100, 73, 109, 112, 108, 105, 101, 115, 59, 32768, 10608, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8667, 512, 99, 104, 4781, 4785, 114, 59, 32768, 8475, 59, 32768, 8625, 108, 101, 68, 101, 108, 97, 121, 101, 100, 59, 32768, 10740, 3328, 72, 79, 97, 99, 102, 104, 105, 109, 111, 113, 115, 116, 117, 4827, 4842, 4849, 4856, 4889, 4894, 4949, 4955, 4967, 4973, 5059, 5065, 5070, 512, 67, 99, 4832, 4838, 72, 99, 121, 59, 32768, 1065, 121, 59, 32768, 1064, 70, 84, 99, 121, 59, 32768, 1068, 99, 117, 116, 101, 59, 32768, 346, 1280, 59, 97, 101, 105, 121, 4867, 4869, 4875, 4881, 4886, 32768, 10940, 114, 111, 110, 59, 32768, 352, 100, 105, 108, 59, 32768, 350, 114, 99, 59, 32768, 348, 59, 32768, 1057, 114, 59, 32896, 55349, 56598, 111, 114, 116, 1024, 68, 76, 82, 85, 4906, 4917, 4928, 4940, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8595, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8592, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8594, 112, 65, 114, 114, 111, 119, 59, 32768, 8593, 103, 109, 97, 59, 32768, 931, 97, 108, 108, 67, 105, 114, 99, 108, 101, 59, 32768, 8728, 112, 102, 59, 32896, 55349, 56650, 1091, 4979, 0, 0, 4983, 116, 59, 32768, 8730, 97, 114, 101, 1024, 59, 73, 83, 85, 4994, 4996, 5010, 5052, 32768, 9633, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 59, 32768, 8851, 117, 512, 98, 112, 5016, 5033, 115, 101, 116, 512, 59, 69, 5024, 5026, 32768, 8847, 113, 117, 97, 108, 59, 32768, 8849, 101, 114, 115, 101, 116, 512, 59, 69, 5043, 5045, 32768, 8848, 113, 117, 97, 108, 59, 32768, 8850, 110, 105, 111, 110, 59, 32768, 8852, 99, 114, 59, 32896, 55349, 56494, 97, 114, 59, 32768, 8902, 1024, 98, 99, 109, 112, 5079, 5102, 5155, 5158, 512, 59, 115, 5084, 5086, 32768, 8912, 101, 116, 512, 59, 69, 5093, 5095, 32768, 8912, 113, 117, 97, 108, 59, 32768, 8838, 512, 99, 104, 5107, 5148, 101, 101, 100, 115, 1024, 59, 69, 83, 84, 5120, 5122, 5129, 5141, 32768, 8827, 113, 117, 97, 108, 59, 32768, 10928, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8829, 105, 108, 100, 101, 59, 32768, 8831, 84, 104, 97, 116, 59, 32768, 8715, 59, 32768, 8721, 768, 59, 101, 115, 5165, 5167, 5185, 32768, 8913, 114, 115, 101, 116, 512, 59, 69, 5176, 5178, 32768, 8835, 113, 117, 97, 108, 59, 32768, 8839, 101, 116, 59, 32768, 8913, 2816, 72, 82, 83, 97, 99, 102, 104, 105, 111, 114, 115, 5213, 5221, 5227, 5241, 5252, 5274, 5279, 5323, 5362, 5368, 5378, 79, 82, 78, 33024, 222, 59, 32768, 222, 65, 68, 69, 59, 32768, 8482, 512, 72, 99, 5232, 5237, 99, 121, 59, 32768, 1035, 121, 59, 32768, 1062, 512, 98, 117, 5246, 5249, 59, 32768, 9, 59, 32768, 932, 768, 97, 101, 121, 5259, 5265, 5271, 114, 111, 110, 59, 32768, 356, 100, 105, 108, 59, 32768, 354, 59, 32768, 1058, 114, 59, 32896, 55349, 56599, 512, 101, 105, 5284, 5300, 835, 5289, 0, 5297, 101, 102, 111, 114, 101, 59, 32768, 8756, 97, 59, 32768, 920, 512, 99, 110, 5305, 5315, 107, 83, 112, 97, 99, 101, 59, 32896, 8287, 8202, 83, 112, 97, 99, 101, 59, 32768, 8201, 108, 100, 101, 1024, 59, 69, 70, 84, 5335, 5337, 5344, 5355, 32768, 8764, 113, 117, 97, 108, 59, 32768, 8771, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8773, 105, 108, 100, 101, 59, 32768, 8776, 112, 102, 59, 32896, 55349, 56651, 105, 112, 108, 101, 68, 111, 116, 59, 32768, 8411, 512, 99, 116, 5383, 5388, 114, 59, 32896, 55349, 56495, 114, 111, 107, 59, 32768, 358, 5426, 5417, 5444, 5458, 5473, 0, 5480, 5485, 0, 0, 0, 0, 0, 5494, 5500, 5564, 5579, 0, 5726, 5732, 5738, 5745, 512, 99, 114, 5421, 5429, 117, 116, 101, 33024, 218, 59, 32768, 218, 114, 512, 59, 111, 5435, 5437, 32768, 8607, 99, 105, 114, 59, 32768, 10569, 114, 820, 5449, 0, 5453, 121, 59, 32768, 1038, 118, 101, 59, 32768, 364, 512, 105, 121, 5462, 5469, 114, 99, 33024, 219, 59, 32768, 219, 59, 32768, 1059, 98, 108, 97, 99, 59, 32768, 368, 114, 59, 32896, 55349, 56600, 114, 97, 118, 101, 33024, 217, 59, 32768, 217, 97, 99, 114, 59, 32768, 362, 512, 100, 105, 5504, 5548, 101, 114, 512, 66, 80, 5511, 5535, 512, 97, 114, 5516, 5520, 114, 59, 32768, 95, 97, 99, 512, 101, 107, 5527, 5530, 59, 32768, 9183, 101, 116, 59, 32768, 9141, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 32768, 9181, 111, 110, 512, 59, 80, 5555, 5557, 32768, 8899, 108, 117, 115, 59, 32768, 8846, 512, 103, 112, 5568, 5573, 111, 110, 59, 32768, 370, 102, 59, 32896, 55349, 56652, 2048, 65, 68, 69, 84, 97, 100, 112, 115, 5595, 5624, 5635, 5648, 5664, 5671, 5682, 5712, 114, 114, 111, 119, 768, 59, 66, 68, 5606, 5608, 5613, 32768, 8593, 97, 114, 59, 32768, 10514, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8645, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8597, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 10606, 101, 101, 512, 59, 65, 5655, 5657, 32768, 8869, 114, 114, 111, 119, 59, 32768, 8613, 114, 114, 111, 119, 59, 32768, 8657, 111, 119, 110, 97, 114, 114, 111, 119, 59, 32768, 8661, 101, 114, 512, 76, 82, 5689, 5700, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8598, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8599, 105, 512, 59, 108, 5718, 5720, 32768, 978, 111, 110, 59, 32768, 933, 105, 110, 103, 59, 32768, 366, 99, 114, 59, 32896, 55349, 56496, 105, 108, 100, 101, 59, 32768, 360, 109, 108, 33024, 220, 59, 32768, 220, 2304, 68, 98, 99, 100, 101, 102, 111, 115, 118, 5770, 5776, 5781, 5785, 5798, 5878, 5883, 5889, 5895, 97, 115, 104, 59, 32768, 8875, 97, 114, 59, 32768, 10987, 121, 59, 32768, 1042, 97, 115, 104, 512, 59, 108, 5793, 5795, 32768, 8873, 59, 32768, 10982, 512, 101, 114, 5803, 5806, 59, 32768, 8897, 768, 98, 116, 121, 5813, 5818, 5866, 97, 114, 59, 32768, 8214, 512, 59, 105, 5823, 5825, 32768, 8214, 99, 97, 108, 1024, 66, 76, 83, 84, 5837, 5842, 5848, 5859, 97, 114, 59, 32768, 8739, 105, 110, 101, 59, 32768, 124, 101, 112, 97, 114, 97, 116, 111, 114, 59, 32768, 10072, 105, 108, 100, 101, 59, 32768, 8768, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 32768, 8202, 114, 59, 32896, 55349, 56601, 112, 102, 59, 32896, 55349, 56653, 99, 114, 59, 32896, 55349, 56497, 100, 97, 115, 104, 59, 32768, 8874, 1280, 99, 101, 102, 111, 115, 5913, 5919, 5925, 5930, 5936, 105, 114, 99, 59, 32768, 372, 100, 103, 101, 59, 32768, 8896, 114, 59, 32896, 55349, 56602, 112, 102, 59, 32896, 55349, 56654, 99, 114, 59, 32896, 55349, 56498, 1024, 102, 105, 111, 115, 5951, 5956, 5959, 5965, 114, 59, 32896, 55349, 56603, 59, 32768, 926, 112, 102, 59, 32896, 55349, 56655, 99, 114, 59, 32896, 55349, 56499, 2304, 65, 73, 85, 97, 99, 102, 111, 115, 117, 5990, 5995, 6000, 6005, 6014, 6027, 6032, 6038, 6044, 99, 121, 59, 32768, 1071, 99, 121, 59, 32768, 1031, 99, 121, 59, 32768, 1070, 99, 117, 116, 101, 33024, 221, 59, 32768, 221, 512, 105, 121, 6019, 6024, 114, 99, 59, 32768, 374, 59, 32768, 1067, 114, 59, 32896, 55349, 56604, 112, 102, 59, 32896, 55349, 56656, 99, 114, 59, 32896, 55349, 56500, 109, 108, 59, 32768, 376, 2048, 72, 97, 99, 100, 101, 102, 111, 115, 6066, 6071, 6078, 6092, 6097, 6119, 6123, 6128, 99, 121, 59, 32768, 1046, 99, 117, 116, 101, 59, 32768, 377, 512, 97, 121, 6083, 6089, 114, 111, 110, 59, 32768, 381, 59, 32768, 1047, 111, 116, 59, 32768, 379, 835, 6102, 0, 6116, 111, 87, 105, 100, 116, 104, 83, 112, 97, 99, 101, 59, 32768, 8203, 97, 59, 32768, 918, 114, 59, 32768, 8488, 112, 102, 59, 32768, 8484, 99, 114, 59, 32896, 55349, 56501, 5938, 6159, 6168, 6175, 0, 6214, 6222, 6233, 0, 0, 0, 0, 6242, 6267, 6290, 6429, 6444, 0, 6495, 6503, 6531, 6540, 0, 6547, 99, 117, 116, 101, 33024, 225, 59, 32768, 225, 114, 101, 118, 101, 59, 32768, 259, 1536, 59, 69, 100, 105, 117, 121, 6187, 6189, 6193, 6196, 6203, 6210, 32768, 8766, 59, 32896, 8766, 819, 59, 32768, 8767, 114, 99, 33024, 226, 59, 32768, 226, 116, 101, 33024, 180, 59, 32768, 180, 59, 32768, 1072, 108, 105, 103, 33024, 230, 59, 32768, 230, 512, 59, 114, 6226, 6228, 32768, 8289, 59, 32896, 55349, 56606, 114, 97, 118, 101, 33024, 224, 59, 32768, 224, 512, 101, 112, 6246, 6261, 512, 102, 112, 6251, 6257, 115, 121, 109, 59, 32768, 8501, 104, 59, 32768, 8501, 104, 97, 59, 32768, 945, 512, 97, 112, 6271, 6284, 512, 99, 108, 6276, 6280, 114, 59, 32768, 257, 103, 59, 32768, 10815, 33024, 38, 59, 32768, 38, 1077, 6295, 0, 0, 6326, 1280, 59, 97, 100, 115, 118, 6305, 6307, 6312, 6315, 6322, 32768, 8743, 110, 100, 59, 32768, 10837, 59, 32768, 10844, 108, 111, 112, 101, 59, 32768, 10840, 59, 32768, 10842, 1792, 59, 101, 108, 109, 114, 115, 122, 6340, 6342, 6345, 6349, 6391, 6410, 6422, 32768, 8736, 59, 32768, 10660, 101, 59, 32768, 8736, 115, 100, 512, 59, 97, 6356, 6358, 32768, 8737, 2098, 6368, 6371, 6374, 6377, 6380, 6383, 6386, 6389, 59, 32768, 10664, 59, 32768, 10665, 59, 32768, 10666, 59, 32768, 10667, 59, 32768, 10668, 59, 32768, 10669, 59, 32768, 10670, 59, 32768, 10671, 116, 512, 59, 118, 6397, 6399, 32768, 8735, 98, 512, 59, 100, 6405, 6407, 32768, 8894, 59, 32768, 10653, 512, 112, 116, 6415, 6419, 104, 59, 32768, 8738, 59, 32768, 197, 97, 114, 114, 59, 32768, 9084, 512, 103, 112, 6433, 6438, 111, 110, 59, 32768, 261, 102, 59, 32896, 55349, 56658, 1792, 59, 69, 97, 101, 105, 111, 112, 6458, 6460, 6463, 6469, 6472, 6476, 6480, 32768, 8776, 59, 32768, 10864, 99, 105, 114, 59, 32768, 10863, 59, 32768, 8778, 100, 59, 32768, 8779, 115, 59, 32768, 39, 114, 111, 120, 512, 59, 101, 6488, 6490, 32768, 8776, 113, 59, 32768, 8778, 105, 110, 103, 33024, 229, 59, 32768, 229, 768, 99, 116, 121, 6509, 6514, 6517, 114, 59, 32896, 55349, 56502, 59, 32768, 42, 109, 112, 512, 59, 101, 6524, 6526, 32768, 8776, 113, 59, 32768, 8781, 105, 108, 100, 101, 33024, 227, 59, 32768, 227, 109, 108, 33024, 228, 59, 32768, 228, 512, 99, 105, 6551, 6559, 111, 110, 105, 110, 116, 59, 32768, 8755, 110, 116, 59, 32768, 10769, 4096, 78, 97, 98, 99, 100, 101, 102, 105, 107, 108, 110, 111, 112, 114, 115, 117, 6597, 6602, 6673, 6688, 6701, 6707, 6768, 6773, 6891, 6898, 6999, 7023, 7309, 7316, 7334, 7383, 111, 116, 59, 32768, 10989, 512, 99, 114, 6607, 6652, 107, 1024, 99, 101, 112, 115, 6617, 6623, 6632, 6639, 111, 110, 103, 59, 32768, 8780, 112, 115, 105, 108, 111, 110, 59, 32768, 1014, 114, 105, 109, 101, 59, 32768, 8245, 105, 109, 512, 59, 101, 6646, 6648, 32768, 8765, 113, 59, 32768, 8909, 583, 6656, 6661, 101, 101, 59, 32768, 8893, 101, 100, 512, 59, 103, 6667, 6669, 32768, 8965, 101, 59, 32768, 8965, 114, 107, 512, 59, 116, 6680, 6682, 32768, 9141, 98, 114, 107, 59, 32768, 9142, 512, 111, 121, 6693, 6698, 110, 103, 59, 32768, 8780, 59, 32768, 1073, 113, 117, 111, 59, 32768, 8222, 1280, 99, 109, 112, 114, 116, 6718, 6731, 6738, 6743, 6749, 97, 117, 115, 512, 59, 101, 6726, 6728, 32768, 8757, 59, 32768, 8757, 112, 116, 121, 118, 59, 32768, 10672, 115, 105, 59, 32768, 1014, 110, 111, 117, 59, 32768, 8492, 768, 97, 104, 119, 6756, 6759, 6762, 59, 32768, 946, 59, 32768, 8502, 101, 101, 110, 59, 32768, 8812, 114, 59, 32896, 55349, 56607, 103, 1792, 99, 111, 115, 116, 117, 118, 119, 6789, 6809, 6834, 6850, 6872, 6879, 6884, 768, 97, 105, 117, 6796, 6800, 6805, 112, 59, 32768, 8898, 114, 99, 59, 32768, 9711, 112, 59, 32768, 8899, 768, 100, 112, 116, 6816, 6821, 6827, 111, 116, 59, 32768, 10752, 108, 117, 115, 59, 32768, 10753, 105, 109, 101, 115, 59, 32768, 10754, 1090, 6840, 0, 0, 6846, 99, 117, 112, 59, 32768, 10758, 97, 114, 59, 32768, 9733, 114, 105, 97, 110, 103, 108, 101, 512, 100, 117, 6862, 6868, 111, 119, 110, 59, 32768, 9661, 112, 59, 32768, 9651, 112, 108, 117, 115, 59, 32768, 10756, 101, 101, 59, 32768, 8897, 101, 100, 103, 101, 59, 32768, 8896, 97, 114, 111, 119, 59, 32768, 10509, 768, 97, 107, 111, 6905, 6976, 6994, 512, 99, 110, 6910, 6972, 107, 768, 108, 115, 116, 6918, 6927, 6935, 111, 122, 101, 110, 103, 101, 59, 32768, 10731, 113, 117, 97, 114, 101, 59, 32768, 9642, 114, 105, 97, 110, 103, 108, 101, 1024, 59, 100, 108, 114, 6951, 6953, 6959, 6965, 32768, 9652, 111, 119, 110, 59, 32768, 9662, 101, 102, 116, 59, 32768, 9666, 105, 103, 104, 116, 59, 32768, 9656, 107, 59, 32768, 9251, 770, 6981, 0, 6991, 771, 6985, 0, 6988, 59, 32768, 9618, 59, 32768, 9617, 52, 59, 32768, 9619, 99, 107, 59, 32768, 9608, 512, 101, 111, 7004, 7019, 512, 59, 113, 7009, 7012, 32896, 61, 8421, 117, 105, 118, 59, 32896, 8801, 8421, 116, 59, 32768, 8976, 1024, 112, 116, 119, 120, 7032, 7037, 7049, 7055, 102, 59, 32896, 55349, 56659, 512, 59, 116, 7042, 7044, 32768, 8869, 111, 109, 59, 32768, 8869, 116, 105, 101, 59, 32768, 8904, 3072, 68, 72, 85, 86, 98, 100, 104, 109, 112, 116, 117, 118, 7080, 7101, 7126, 7147, 7182, 7187, 7208, 7233, 7240, 7246, 7253, 7274, 1024, 76, 82, 108, 114, 7089, 7092, 7095, 7098, 59, 32768, 9559, 59, 32768, 9556, 59, 32768, 9558, 59, 32768, 9555, 1280, 59, 68, 85, 100, 117, 7112, 7114, 7117, 7120, 7123, 32768, 9552, 59, 32768, 9574, 59, 32768, 9577, 59, 32768, 9572, 59, 32768, 9575, 1024, 76, 82, 108, 114, 7135, 7138, 7141, 7144, 59, 32768, 9565, 59, 32768, 9562, 59, 32768, 9564, 59, 32768, 9561, 1792, 59, 72, 76, 82, 104, 108, 114, 7162, 7164, 7167, 7170, 7173, 7176, 7179, 32768, 9553, 59, 32768, 9580, 59, 32768, 9571, 59, 32768, 9568, 59, 32768, 9579, 59, 32768, 9570, 59, 32768, 9567, 111, 120, 59, 32768, 10697, 1024, 76, 82, 108, 114, 7196, 7199, 7202, 7205, 59, 32768, 9557, 59, 32768, 9554, 59, 32768, 9488, 59, 32768, 9484, 1280, 59, 68, 85, 100, 117, 7219, 7221, 7224, 7227, 7230, 32768, 9472, 59, 32768, 9573, 59, 32768, 9576, 59, 32768, 9516, 59, 32768, 9524, 105, 110, 117, 115, 59, 32768, 8863, 108, 117, 115, 59, 32768, 8862, 105, 109, 101, 115, 59, 32768, 8864, 1024, 76, 82, 108, 114, 7262, 7265, 7268, 7271, 59, 32768, 9563, 59, 32768, 9560, 59, 32768, 9496, 59, 32768, 9492, 1792, 59, 72, 76, 82, 104, 108, 114, 7289, 7291, 7294, 7297, 7300, 7303, 7306, 32768, 9474, 59, 32768, 9578, 59, 32768, 9569, 59, 32768, 9566, 59, 32768, 9532, 59, 32768, 9508, 59, 32768, 9500, 114, 105, 109, 101, 59, 32768, 8245, 512, 101, 118, 7321, 7326, 118, 101, 59, 32768, 728, 98, 97, 114, 33024, 166, 59, 32768, 166, 1024, 99, 101, 105, 111, 7343, 7348, 7353, 7364, 114, 59, 32896, 55349, 56503, 109, 105, 59, 32768, 8271, 109, 512, 59, 101, 7359, 7361, 32768, 8765, 59, 32768, 8909, 108, 768, 59, 98, 104, 7372, 7374, 7377, 32768, 92, 59, 32768, 10693, 115, 117, 98, 59, 32768, 10184, 573, 7387, 7399, 108, 512, 59, 101, 7392, 7394, 32768, 8226, 116, 59, 32768, 8226, 112, 768, 59, 69, 101, 7406, 7408, 7411, 32768, 8782, 59, 32768, 10926, 512, 59, 113, 7416, 7418, 32768, 8783, 59, 32768, 8783, 6450, 7448, 0, 7523, 7571, 7576, 7613, 0, 7618, 7647, 0, 0, 7764, 0, 0, 7779, 0, 0, 7899, 7914, 7949, 7955, 0, 8158, 0, 8176, 768, 99, 112, 114, 7454, 7460, 7509, 117, 116, 101, 59, 32768, 263, 1536, 59, 97, 98, 99, 100, 115, 7473, 7475, 7480, 7487, 7500, 7505, 32768, 8745, 110, 100, 59, 32768, 10820, 114, 99, 117, 112, 59, 32768, 10825, 512, 97, 117, 7492, 7496, 112, 59, 32768, 10827, 112, 59, 32768, 10823, 111, 116, 59, 32768, 10816, 59, 32896, 8745, 65024, 512, 101, 111, 7514, 7518, 116, 59, 32768, 8257, 110, 59, 32768, 711, 1024, 97, 101, 105, 117, 7531, 7544, 7552, 7557, 833, 7536, 0, 7540, 115, 59, 32768, 10829, 111, 110, 59, 32768, 269, 100, 105, 108, 33024, 231, 59, 32768, 231, 114, 99, 59, 32768, 265, 112, 115, 512, 59, 115, 7564, 7566, 32768, 10828, 109, 59, 32768, 10832, 111, 116, 59, 32768, 267, 768, 100, 109, 110, 7582, 7589, 7596, 105, 108, 33024, 184, 59, 32768, 184, 112, 116, 121, 118, 59, 32768, 10674, 116, 33280, 162, 59, 101, 7603, 7605, 32768, 162, 114, 100, 111, 116, 59, 32768, 183, 114, 59, 32896, 55349, 56608, 768, 99, 101, 105, 7624, 7628, 7643, 121, 59, 32768, 1095, 99, 107, 512, 59, 109, 7635, 7637, 32768, 10003, 97, 114, 107, 59, 32768, 10003, 59, 32768, 967, 114, 1792, 59, 69, 99, 101, 102, 109, 115, 7662, 7664, 7667, 7742, 7745, 7752, 7757, 32768, 9675, 59, 32768, 10691, 768, 59, 101, 108, 7674, 7676, 7680, 32768, 710, 113, 59, 32768, 8791, 101, 1074, 7687, 0, 0, 7709, 114, 114, 111, 119, 512, 108, 114, 7695, 7701, 101, 102, 116, 59, 32768, 8634, 105, 103, 104, 116, 59, 32768, 8635, 1280, 82, 83, 97, 99, 100, 7719, 7722, 7725, 7730, 7736, 59, 32768, 174, 59, 32768, 9416, 115, 116, 59, 32768, 8859, 105, 114, 99, 59, 32768, 8858, 97, 115, 104, 59, 32768, 8861, 59, 32768, 8791, 110, 105, 110, 116, 59, 32768, 10768, 105, 100, 59, 32768, 10991, 99, 105, 114, 59, 32768, 10690, 117, 98, 115, 512, 59, 117, 7771, 7773, 32768, 9827, 105, 116, 59, 32768, 9827, 1341, 7785, 7804, 7850, 0, 7871, 111, 110, 512, 59, 101, 7791, 7793, 32768, 58, 512, 59, 113, 7798, 7800, 32768, 8788, 59, 32768, 8788, 1086, 7809, 0, 0, 7820, 97, 512, 59, 116, 7814, 7816, 32768, 44, 59, 32768, 64, 768, 59, 102, 108, 7826, 7828, 7832, 32768, 8705, 110, 59, 32768, 8728, 101, 512, 109, 120, 7838, 7844, 101, 110, 116, 59, 32768, 8705, 101, 115, 59, 32768, 8450, 824, 7854, 0, 7866, 512, 59, 100, 7858, 7860, 32768, 8773, 111, 116, 59, 32768, 10861, 110, 116, 59, 32768, 8750, 768, 102, 114, 121, 7877, 7881, 7886, 59, 32896, 55349, 56660, 111, 100, 59, 32768, 8720, 33280, 169, 59, 115, 7892, 7894, 32768, 169, 114, 59, 32768, 8471, 512, 97, 111, 7903, 7908, 114, 114, 59, 32768, 8629, 115, 115, 59, 32768, 10007, 512, 99, 117, 7918, 7923, 114, 59, 32896, 55349, 56504, 512, 98, 112, 7928, 7938, 512, 59, 101, 7933, 7935, 32768, 10959, 59, 32768, 10961, 512, 59, 101, 7943, 7945, 32768, 10960, 59, 32768, 10962, 100, 111, 116, 59, 32768, 8943, 1792, 100, 101, 108, 112, 114, 118, 119, 7969, 7983, 7996, 8009, 8057, 8147, 8152, 97, 114, 114, 512, 108, 114, 7977, 7980, 59, 32768, 10552, 59, 32768, 10549, 1089, 7989, 0, 0, 7993, 114, 59, 32768, 8926, 99, 59, 32768, 8927, 97, 114, 114, 512, 59, 112, 8004, 8006, 32768, 8630, 59, 32768, 10557, 1536, 59, 98, 99, 100, 111, 115, 8022, 8024, 8031, 8044, 8049, 8053, 32768, 8746, 114, 99, 97, 112, 59, 32768, 10824, 512, 97, 117, 8036, 8040, 112, 59, 32768, 10822, 112, 59, 32768, 10826, 111, 116, 59, 32768, 8845, 114, 59, 32768, 10821, 59, 32896, 8746, 65024, 1024, 97, 108, 114, 118, 8066, 8078, 8116, 8123, 114, 114, 512, 59, 109, 8073, 8075, 32768, 8631, 59, 32768, 10556, 121, 768, 101, 118, 119, 8086, 8104, 8109, 113, 1089, 8093, 0, 0, 8099, 114, 101, 99, 59, 32768, 8926, 117, 99, 99, 59, 32768, 8927, 101, 101, 59, 32768, 8910, 101, 100, 103, 101, 59, 32768, 8911, 101, 110, 33024, 164, 59, 32768, 164, 101, 97, 114, 114, 111, 119, 512, 108, 114, 8134, 8140, 101, 102, 116, 59, 32768, 8630, 105, 103, 104, 116, 59, 32768, 8631, 101, 101, 59, 32768, 8910, 101, 100, 59, 32768, 8911, 512, 99, 105, 8162, 8170, 111, 110, 105, 110, 116, 59, 32768, 8754, 110, 116, 59, 32768, 8753, 108, 99, 116, 121, 59, 32768, 9005, 4864, 65, 72, 97, 98, 99, 100, 101, 102, 104, 105, 106, 108, 111, 114, 115, 116, 117, 119, 122, 8221, 8226, 8231, 8267, 8282, 8296, 8327, 8351, 8366, 8379, 8466, 8471, 8487, 8621, 8647, 8676, 8697, 8712, 8720, 114, 114, 59, 32768, 8659, 97, 114, 59, 32768, 10597, 1024, 103, 108, 114, 115, 8240, 8246, 8252, 8256, 103, 101, 114, 59, 32768, 8224, 101, 116, 104, 59, 32768, 8504, 114, 59, 32768, 8595, 104, 512, 59, 118, 8262, 8264, 32768, 8208, 59, 32768, 8867, 572, 8271, 8278, 97, 114, 111, 119, 59, 32768, 10511, 97, 99, 59, 32768, 733, 512, 97, 121, 8287, 8293, 114, 111, 110, 59, 32768, 271, 59, 32768, 1076, 768, 59, 97, 111, 8303, 8305, 8320, 32768, 8518, 512, 103, 114, 8310, 8316, 103, 101, 114, 59, 32768, 8225, 114, 59, 32768, 8650, 116, 115, 101, 113, 59, 32768, 10871, 768, 103, 108, 109, 8334, 8339, 8344, 33024, 176, 59, 32768, 176, 116, 97, 59, 32768, 948, 112, 116, 121, 118, 59, 32768, 10673, 512, 105, 114, 8356, 8362, 115, 104, 116, 59, 32768, 10623, 59, 32896, 55349, 56609, 97, 114, 512, 108, 114, 8373, 8376, 59, 32768, 8643, 59, 32768, 8642, 1280, 97, 101, 103, 115, 118, 8390, 8418, 8421, 8428, 8433, 109, 768, 59, 111, 115, 8398, 8400, 8415, 32768, 8900, 110, 100, 512, 59, 115, 8407, 8409, 32768, 8900, 117, 105, 116, 59, 32768, 9830, 59, 32768, 9830, 59, 32768, 168, 97, 109, 109, 97, 59, 32768, 989, 105, 110, 59, 32768, 8946, 768, 59, 105, 111, 8440, 8442, 8461, 32768, 247, 100, 101, 33280, 247, 59, 111, 8450, 8452, 32768, 247, 110, 116, 105, 109, 101, 115, 59, 32768, 8903, 110, 120, 59, 32768, 8903, 99, 121, 59, 32768, 1106, 99, 1088, 8478, 0, 0, 8483, 114, 110, 59, 32768, 8990, 111, 112, 59, 32768, 8973, 1280, 108, 112, 116, 117, 119, 8498, 8504, 8509, 8556, 8570, 108, 97, 114, 59, 32768, 36, 102, 59, 32896, 55349, 56661, 1280, 59, 101, 109, 112, 115, 8520, 8522, 8535, 8542, 8548, 32768, 729, 113, 512, 59, 100, 8528, 8530, 32768, 8784, 111, 116, 59, 32768, 8785, 105, 110, 117, 115, 59, 32768, 8760, 108, 117, 115, 59, 32768, 8724, 113, 117, 97, 114, 101, 59, 32768, 8865, 98, 108, 101, 98, 97, 114, 119, 101, 100, 103, 101, 59, 32768, 8966, 110, 768, 97, 100, 104, 8578, 8585, 8597, 114, 114, 111, 119, 59, 32768, 8595, 111, 119, 110, 97, 114, 114, 111, 119, 115, 59, 32768, 8650, 97, 114, 112, 111, 111, 110, 512, 108, 114, 8608, 8614, 101, 102, 116, 59, 32768, 8643, 105, 103, 104, 116, 59, 32768, 8642, 563, 8625, 8633, 107, 97, 114, 111, 119, 59, 32768, 10512, 1088, 8638, 0, 0, 8643, 114, 110, 59, 32768, 8991, 111, 112, 59, 32768, 8972, 768, 99, 111, 116, 8654, 8666, 8670, 512, 114, 121, 8659, 8663, 59, 32896, 55349, 56505, 59, 32768, 1109, 108, 59, 32768, 10742, 114, 111, 107, 59, 32768, 273, 512, 100, 114, 8681, 8686, 111, 116, 59, 32768, 8945, 105, 512, 59, 102, 8692, 8694, 32768, 9663, 59, 32768, 9662, 512, 97, 104, 8702, 8707, 114, 114, 59, 32768, 8693, 97, 114, 59, 32768, 10607, 97, 110, 103, 108, 101, 59, 32768, 10662, 512, 99, 105, 8725, 8729, 121, 59, 32768, 1119, 103, 114, 97, 114, 114, 59, 32768, 10239, 4608, 68, 97, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 8774, 8788, 8807, 8844, 8849, 8852, 8866, 8895, 8929, 8977, 8989, 9004, 9046, 9136, 9151, 9171, 9184, 9199, 512, 68, 111, 8779, 8784, 111, 116, 59, 32768, 10871, 116, 59, 32768, 8785, 512, 99, 115, 8793, 8801, 117, 116, 101, 33024, 233, 59, 32768, 233, 116, 101, 114, 59, 32768, 10862, 1024, 97, 105, 111, 121, 8816, 8822, 8835, 8841, 114, 111, 110, 59, 32768, 283, 114, 512, 59, 99, 8828, 8830, 32768, 8790, 33024, 234, 59, 32768, 234, 108, 111, 110, 59, 32768, 8789, 59, 32768, 1101, 111, 116, 59, 32768, 279, 59, 32768, 8519, 512, 68, 114, 8857, 8862, 111, 116, 59, 32768, 8786, 59, 32896, 55349, 56610, 768, 59, 114, 115, 8873, 8875, 8883, 32768, 10906, 97, 118, 101, 33024, 232, 59, 32768, 232, 512, 59, 100, 8888, 8890, 32768, 10902, 111, 116, 59, 32768, 10904, 1024, 59, 105, 108, 115, 8904, 8906, 8914, 8917, 32768, 10905, 110, 116, 101, 114, 115, 59, 32768, 9191, 59, 32768, 8467, 512, 59, 100, 8922, 8924, 32768, 10901, 111, 116, 59, 32768, 10903, 768, 97, 112, 115, 8936, 8941, 8960, 99, 114, 59, 32768, 275, 116, 121, 768, 59, 115, 118, 8950, 8952, 8957, 32768, 8709, 101, 116, 59, 32768, 8709, 59, 32768, 8709, 112, 512, 49, 59, 8966, 8975, 516, 8970, 8973, 59, 32768, 8196, 59, 32768, 8197, 32768, 8195, 512, 103, 115, 8982, 8985, 59, 32768, 331, 112, 59, 32768, 8194, 512, 103, 112, 8994, 8999, 111, 110, 59, 32768, 281, 102, 59, 32896, 55349, 56662, 768, 97, 108, 115, 9011, 9023, 9028, 114, 512, 59, 115, 9017, 9019, 32768, 8917, 108, 59, 32768, 10723, 117, 115, 59, 32768, 10865, 105, 768, 59, 108, 118, 9036, 9038, 9043, 32768, 949, 111, 110, 59, 32768, 949, 59, 32768, 1013, 1024, 99, 115, 117, 118, 9055, 9071, 9099, 9128, 512, 105, 111, 9060, 9065, 114, 99, 59, 32768, 8790, 108, 111, 110, 59, 32768, 8789, 1082, 9077, 0, 0, 9081, 109, 59, 32768, 8770, 97, 110, 116, 512, 103, 108, 9088, 9093, 116, 114, 59, 32768, 10902, 101, 115, 115, 59, 32768, 10901, 768, 97, 101, 105, 9106, 9111, 9116, 108, 115, 59, 32768, 61, 115, 116, 59, 32768, 8799, 118, 512, 59, 68, 9122, 9124, 32768, 8801, 68, 59, 32768, 10872, 112, 97, 114, 115, 108, 59, 32768, 10725, 512, 68, 97, 9141, 9146, 111, 116, 59, 32768, 8787, 114, 114, 59, 32768, 10609, 768, 99, 100, 105, 9158, 9162, 9167, 114, 59, 32768, 8495, 111, 116, 59, 32768, 8784, 109, 59, 32768, 8770, 512, 97, 104, 9176, 9179, 59, 32768, 951, 33024, 240, 59, 32768, 240, 512, 109, 114, 9189, 9195, 108, 33024, 235, 59, 32768, 235, 111, 59, 32768, 8364, 768, 99, 105, 112, 9206, 9210, 9215, 108, 59, 32768, 33, 115, 116, 59, 32768, 8707, 512, 101, 111, 9220, 9230, 99, 116, 97, 116, 105, 111, 110, 59, 32768, 8496, 110, 101, 110, 116, 105, 97, 108, 101, 59, 32768, 8519, 4914, 9262, 0, 9276, 0, 9280, 9287, 0, 0, 9318, 9324, 0, 9331, 0, 9352, 9357, 9386, 0, 9395, 9497, 108, 108, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 32768, 8786, 121, 59, 32768, 1092, 109, 97, 108, 101, 59, 32768, 9792, 768, 105, 108, 114, 9293, 9299, 9313, 108, 105, 103, 59, 32768, 64259, 1082, 9305, 0, 0, 9309, 103, 59, 32768, 64256, 105, 103, 59, 32768, 64260, 59, 32896, 55349, 56611, 108, 105, 103, 59, 32768, 64257, 108, 105, 103, 59, 32896, 102, 106, 768, 97, 108, 116, 9337, 9341, 9346, 116, 59, 32768, 9837, 105, 103, 59, 32768, 64258, 110, 115, 59, 32768, 9649, 111, 102, 59, 32768, 402, 833, 9361, 0, 9366, 102, 59, 32896, 55349, 56663, 512, 97, 107, 9370, 9375, 108, 108, 59, 32768, 8704, 512, 59, 118, 9380, 9382, 32768, 8916, 59, 32768, 10969, 97, 114, 116, 105, 110, 116, 59, 32768, 10765, 512, 97, 111, 9399, 9491, 512, 99, 115, 9404, 9487, 1794, 9413, 9443, 9453, 9470, 9474, 0, 9484, 1795, 9421, 9426, 9429, 9434, 9437, 0, 9440, 33024, 189, 59, 32768, 189, 59, 32768, 8531, 33024, 188, 59, 32768, 188, 59, 32768, 8533, 59, 32768, 8537, 59, 32768, 8539, 772, 9447, 0, 9450, 59, 32768, 8532, 59, 32768, 8534, 1285, 9459, 9464, 0, 0, 9467, 33024, 190, 59, 32768, 190, 59, 32768, 8535, 59, 32768, 8540, 53, 59, 32768, 8536, 775, 9478, 0, 9481, 59, 32768, 8538, 59, 32768, 8541, 56, 59, 32768, 8542, 108, 59, 32768, 8260, 119, 110, 59, 32768, 8994, 99, 114, 59, 32896, 55349, 56507, 4352, 69, 97, 98, 99, 100, 101, 102, 103, 105, 106, 108, 110, 111, 114, 115, 116, 118, 9537, 9547, 9575, 9582, 9595, 9600, 9679, 9684, 9694, 9700, 9705, 9725, 9773, 9779, 9785, 9810, 9917, 512, 59, 108, 9542, 9544, 32768, 8807, 59, 32768, 10892, 768, 99, 109, 112, 9554, 9560, 9572, 117, 116, 101, 59, 32768, 501, 109, 97, 512, 59, 100, 9567, 9569, 32768, 947, 59, 32768, 989, 59, 32768, 10886, 114, 101, 118, 101, 59, 32768, 287, 512, 105, 121, 9587, 9592, 114, 99, 59, 32768, 285, 59, 32768, 1075, 111, 116, 59, 32768, 289, 1024, 59, 108, 113, 115, 9609, 9611, 9614, 9633, 32768, 8805, 59, 32768, 8923, 768, 59, 113, 115, 9621, 9623, 9626, 32768, 8805, 59, 32768, 8807, 108, 97, 110, 116, 59, 32768, 10878, 1024, 59, 99, 100, 108, 9642, 9644, 9648, 9667, 32768, 10878, 99, 59, 32768, 10921, 111, 116, 512, 59, 111, 9655, 9657, 32768, 10880, 512, 59, 108, 9662, 9664, 32768, 10882, 59, 32768, 10884, 512, 59, 101, 9672, 9675, 32896, 8923, 65024, 115, 59, 32768, 10900, 114, 59, 32896, 55349, 56612, 512, 59, 103, 9689, 9691, 32768, 8811, 59, 32768, 8921, 109, 101, 108, 59, 32768, 8503, 99, 121, 59, 32768, 1107, 1024, 59, 69, 97, 106, 9714, 9716, 9719, 9722, 32768, 8823, 59, 32768, 10898, 59, 32768, 10917, 59, 32768, 10916, 1024, 69, 97, 101, 115, 9734, 9737, 9751, 9768, 59, 32768, 8809, 112, 512, 59, 112, 9743, 9745, 32768, 10890, 114, 111, 120, 59, 32768, 10890, 512, 59, 113, 9756, 9758, 32768, 10888, 512, 59, 113, 9763, 9765, 32768, 10888, 59, 32768, 8809, 105, 109, 59, 32768, 8935, 112, 102, 59, 32896, 55349, 56664, 97, 118, 101, 59, 32768, 96, 512, 99, 105, 9790, 9794, 114, 59, 32768, 8458, 109, 768, 59, 101, 108, 9802, 9804, 9807, 32768, 8819, 59, 32768, 10894, 59, 32768, 10896, 34304, 62, 59, 99, 100, 108, 113, 114, 9824, 9826, 9838, 9843, 9849, 9856, 32768, 62, 512, 99, 105, 9831, 9834, 59, 32768, 10919, 114, 59, 32768, 10874, 111, 116, 59, 32768, 8919, 80, 97, 114, 59, 32768, 10645, 117, 101, 115, 116, 59, 32768, 10876, 1280, 97, 100, 101, 108, 115, 9867, 9882, 9887, 9906, 9912, 833, 9872, 0, 9879, 112, 114, 111, 120, 59, 32768, 10886, 114, 59, 32768, 10616, 111, 116, 59, 32768, 8919, 113, 512, 108, 113, 9893, 9899, 101, 115, 115, 59, 32768, 8923, 108, 101, 115, 115, 59, 32768, 10892, 101, 115, 115, 59, 32768, 8823, 105, 109, 59, 32768, 8819, 512, 101, 110, 9922, 9932, 114, 116, 110, 101, 113, 113, 59, 32896, 8809, 65024, 69, 59, 32896, 8809, 65024, 2560, 65, 97, 98, 99, 101, 102, 107, 111, 115, 121, 9958, 9963, 10015, 10020, 10026, 10060, 10065, 10085, 10147, 10171, 114, 114, 59, 32768, 8660, 1024, 105, 108, 109, 114, 9972, 9978, 9982, 9988, 114, 115, 112, 59, 32768, 8202, 102, 59, 32768, 189, 105, 108, 116, 59, 32768, 8459, 512, 100, 114, 9993, 9998, 99, 121, 59, 32768, 1098, 768, 59, 99, 119, 10005, 10007, 10012, 32768, 8596, 105, 114, 59, 32768, 10568, 59, 32768, 8621, 97, 114, 59, 32768, 8463, 105, 114, 99, 59, 32768, 293, 768, 97, 108, 114, 10033, 10048, 10054, 114, 116, 115, 512, 59, 117, 10041, 10043, 32768, 9829, 105, 116, 59, 32768, 9829, 108, 105, 112, 59, 32768, 8230, 99, 111, 110, 59, 32768, 8889, 114, 59, 32896, 55349, 56613, 115, 512, 101, 119, 10071, 10078, 97, 114, 111, 119, 59, 32768, 10533, 97, 114, 111, 119, 59, 32768, 10534, 1280, 97, 109, 111, 112, 114, 10096, 10101, 10107, 10136, 10141, 114, 114, 59, 32768, 8703, 116, 104, 116, 59, 32768, 8763, 107, 512, 108, 114, 10113, 10124, 101, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8617, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8618, 102, 59, 32896, 55349, 56665, 98, 97, 114, 59, 32768, 8213, 768, 99, 108, 116, 10154, 10159, 10165, 114, 59, 32896, 55349, 56509, 97, 115, 104, 59, 32768, 8463, 114, 111, 107, 59, 32768, 295, 512, 98, 112, 10176, 10182, 117, 108, 108, 59, 32768, 8259, 104, 101, 110, 59, 32768, 8208, 5426, 10211, 0, 10220, 0, 10239, 10255, 10267, 0, 10276, 10312, 0, 0, 10318, 10371, 10458, 10485, 10491, 0, 10500, 10545, 10558, 99, 117, 116, 101, 33024, 237, 59, 32768, 237, 768, 59, 105, 121, 10226, 10228, 10235, 32768, 8291, 114, 99, 33024, 238, 59, 32768, 238, 59, 32768, 1080, 512, 99, 120, 10243, 10247, 121, 59, 32768, 1077, 99, 108, 33024, 161, 59, 32768, 161, 512, 102, 114, 10259, 10262, 59, 32768, 8660, 59, 32896, 55349, 56614, 114, 97, 118, 101, 33024, 236, 59, 32768, 236, 1024, 59, 105, 110, 111, 10284, 10286, 10300, 10306, 32768, 8520, 512, 105, 110, 10291, 10296, 110, 116, 59, 32768, 10764, 116, 59, 32768, 8749, 102, 105, 110, 59, 32768, 10716, 116, 97, 59, 32768, 8489, 108, 105, 103, 59, 32768, 307, 768, 97, 111, 112, 10324, 10361, 10365, 768, 99, 103, 116, 10331, 10335, 10357, 114, 59, 32768, 299, 768, 101, 108, 112, 10342, 10345, 10351, 59, 32768, 8465, 105, 110, 101, 59, 32768, 8464, 97, 114, 116, 59, 32768, 8465, 104, 59, 32768, 305, 102, 59, 32768, 8887, 101, 100, 59, 32768, 437, 1280, 59, 99, 102, 111, 116, 10381, 10383, 10389, 10403, 10409, 32768, 8712, 97, 114, 101, 59, 32768, 8453, 105, 110, 512, 59, 116, 10396, 10398, 32768, 8734, 105, 101, 59, 32768, 10717, 100, 111, 116, 59, 32768, 305, 1280, 59, 99, 101, 108, 112, 10420, 10422, 10427, 10444, 10451, 32768, 8747, 97, 108, 59, 32768, 8890, 512, 103, 114, 10432, 10438, 101, 114, 115, 59, 32768, 8484, 99, 97, 108, 59, 32768, 8890, 97, 114, 104, 107, 59, 32768, 10775, 114, 111, 100, 59, 32768, 10812, 1024, 99, 103, 112, 116, 10466, 10470, 10475, 10480, 121, 59, 32768, 1105, 111, 110, 59, 32768, 303, 102, 59, 32896, 55349, 56666, 97, 59, 32768, 953, 114, 111, 100, 59, 32768, 10812, 117, 101, 115, 116, 33024, 191, 59, 32768, 191, 512, 99, 105, 10504, 10509, 114, 59, 32896, 55349, 56510, 110, 1280, 59, 69, 100, 115, 118, 10521, 10523, 10526, 10531, 10541, 32768, 8712, 59, 32768, 8953, 111, 116, 59, 32768, 8949, 512, 59, 118, 10536, 10538, 32768, 8948, 59, 32768, 8947, 59, 32768, 8712, 512, 59, 105, 10549, 10551, 32768, 8290, 108, 100, 101, 59, 32768, 297, 828, 10562, 0, 10567, 99, 121, 59, 32768, 1110, 108, 33024, 239, 59, 32768, 239, 1536, 99, 102, 109, 111, 115, 117, 10585, 10598, 10603, 10609, 10615, 10630, 512, 105, 121, 10590, 10595, 114, 99, 59, 32768, 309, 59, 32768, 1081, 114, 59, 32896, 55349, 56615, 97, 116, 104, 59, 32768, 567, 112, 102, 59, 32896, 55349, 56667, 820, 10620, 0, 10625, 114, 59, 32896, 55349, 56511, 114, 99, 121, 59, 32768, 1112, 107, 99, 121, 59, 32768, 1108, 2048, 97, 99, 102, 103, 104, 106, 111, 115, 10653, 10666, 10680, 10685, 10692, 10697, 10702, 10708, 112, 112, 97, 512, 59, 118, 10661, 10663, 32768, 954, 59, 32768, 1008, 512, 101, 121, 10671, 10677, 100, 105, 108, 59, 32768, 311, 59, 32768, 1082, 114, 59, 32896, 55349, 56616, 114, 101, 101, 110, 59, 32768, 312, 99, 121, 59, 32768, 1093, 99, 121, 59, 32768, 1116, 112, 102, 59, 32896, 55349, 56668, 99, 114, 59, 32896, 55349, 56512, 5888, 65, 66, 69, 72, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 10761, 10783, 10789, 10799, 10804, 10957, 11011, 11047, 11094, 11349, 11372, 11382, 11409, 11414, 11451, 11478, 11526, 11698, 11711, 11755, 11823, 11910, 11929, 768, 97, 114, 116, 10768, 10773, 10777, 114, 114, 59, 32768, 8666, 114, 59, 32768, 8656, 97, 105, 108, 59, 32768, 10523, 97, 114, 114, 59, 32768, 10510, 512, 59, 103, 10794, 10796, 32768, 8806, 59, 32768, 10891, 97, 114, 59, 32768, 10594, 4660, 10824, 0, 10830, 0, 10838, 0, 0, 0, 0, 0, 10844, 10850, 0, 10867, 10870, 10877, 0, 10933, 117, 116, 101, 59, 32768, 314, 109, 112, 116, 121, 118, 59, 32768, 10676, 114, 97, 110, 59, 32768, 8466, 98, 100, 97, 59, 32768, 955, 103, 768, 59, 100, 108, 10857, 10859, 10862, 32768, 10216, 59, 32768, 10641, 101, 59, 32768, 10216, 59, 32768, 10885, 117, 111, 33024, 171, 59, 32768, 171, 114, 2048, 59, 98, 102, 104, 108, 112, 115, 116, 10894, 10896, 10907, 10911, 10915, 10919, 10923, 10928, 32768, 8592, 512, 59, 102, 10901, 10903, 32768, 8676, 115, 59, 32768, 10527, 115, 59, 32768, 10525, 107, 59, 32768, 8617, 112, 59, 32768, 8619, 108, 59, 32768, 10553, 105, 109, 59, 32768, 10611, 108, 59, 32768, 8610, 768, 59, 97, 101, 10939, 10941, 10946, 32768, 10923, 105, 108, 59, 32768, 10521, 512, 59, 115, 10951, 10953, 32768, 10925, 59, 32896, 10925, 65024, 768, 97, 98, 114, 10964, 10969, 10974, 114, 114, 59, 32768, 10508, 114, 107, 59, 32768, 10098, 512, 97, 107, 10979, 10991, 99, 512, 101, 107, 10985, 10988, 59, 32768, 123, 59, 32768, 91, 512, 101, 115, 10996, 10999, 59, 32768, 10635, 108, 512, 100, 117, 11005, 11008, 59, 32768, 10639, 59, 32768, 10637, 1024, 97, 101, 117, 121, 11020, 11026, 11040, 11044, 114, 111, 110, 59, 32768, 318, 512, 100, 105, 11031, 11036, 105, 108, 59, 32768, 316, 108, 59, 32768, 8968, 98, 59, 32768, 123, 59, 32768, 1083, 1024, 99, 113, 114, 115, 11056, 11060, 11072, 11090, 97, 59, 32768, 10550, 117, 111, 512, 59, 114, 11067, 11069, 32768, 8220, 59, 32768, 8222, 512, 100, 117, 11077, 11083, 104, 97, 114, 59, 32768, 10599, 115, 104, 97, 114, 59, 32768, 10571, 104, 59, 32768, 8626, 1280, 59, 102, 103, 113, 115, 11105, 11107, 11228, 11231, 11250, 32768, 8804, 116, 1280, 97, 104, 108, 114, 116, 11119, 11136, 11157, 11169, 11216, 114, 114, 111, 119, 512, 59, 116, 11128, 11130, 32768, 8592, 97, 105, 108, 59, 32768, 8610, 97, 114, 112, 111, 111, 110, 512, 100, 117, 11147, 11153, 111, 119, 110, 59, 32768, 8637, 112, 59, 32768, 8636, 101, 102, 116, 97, 114, 114, 111, 119, 115, 59, 32768, 8647, 105, 103, 104, 116, 768, 97, 104, 115, 11180, 11194, 11204, 114, 114, 111, 119, 512, 59, 115, 11189, 11191, 32768, 8596, 59, 32768, 8646, 97, 114, 112, 111, 111, 110, 115, 59, 32768, 8651, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 32768, 8621, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 32768, 8907, 59, 32768, 8922, 768, 59, 113, 115, 11238, 11240, 11243, 32768, 8804, 59, 32768, 8806, 108, 97, 110, 116, 59, 32768, 10877, 1280, 59, 99, 100, 103, 115, 11261, 11263, 11267, 11286, 11298, 32768, 10877, 99, 59, 32768, 10920, 111, 116, 512, 59, 111, 11274, 11276, 32768, 10879, 512, 59, 114, 11281, 11283, 32768, 10881, 59, 32768, 10883, 512, 59, 101, 11291, 11294, 32896, 8922, 65024, 115, 59, 32768, 10899, 1280, 97, 100, 101, 103, 115, 11309, 11317, 11322, 11339, 11344, 112, 112, 114, 111, 120, 59, 32768, 10885, 111, 116, 59, 32768, 8918, 113, 512, 103, 113, 11328, 11333, 116, 114, 59, 32768, 8922, 103, 116, 114, 59, 32768, 10891, 116, 114, 59, 32768, 8822, 105, 109, 59, 32768, 8818, 768, 105, 108, 114, 11356, 11362, 11368, 115, 104, 116, 59, 32768, 10620, 111, 111, 114, 59, 32768, 8970, 59, 32896, 55349, 56617, 512, 59, 69, 11377, 11379, 32768, 8822, 59, 32768, 10897, 562, 11386, 11405, 114, 512, 100, 117, 11391, 11394, 59, 32768, 8637, 512, 59, 108, 11399, 11401, 32768, 8636, 59, 32768, 10602, 108, 107, 59, 32768, 9604, 99, 121, 59, 32768, 1113, 1280, 59, 97, 99, 104, 116, 11425, 11427, 11432, 11440, 11446, 32768, 8810, 114, 114, 59, 32768, 8647, 111, 114, 110, 101, 114, 59, 32768, 8990, 97, 114, 100, 59, 32768, 10603, 114, 105, 59, 32768, 9722, 512, 105, 111, 11456, 11462, 100, 111, 116, 59, 32768, 320, 117, 115, 116, 512, 59, 97, 11470, 11472, 32768, 9136, 99, 104, 101, 59, 32768, 9136, 1024, 69, 97, 101, 115, 11487, 11490, 11504, 11521, 59, 32768, 8808, 112, 512, 59, 112, 11496, 11498, 32768, 10889, 114, 111, 120, 59, 32768, 10889, 512, 59, 113, 11509, 11511, 32768, 10887, 512, 59, 113, 11516, 11518, 32768, 10887, 59, 32768, 8808, 105, 109, 59, 32768, 8934, 2048, 97, 98, 110, 111, 112, 116, 119, 122, 11543, 11556, 11561, 11616, 11640, 11660, 11667, 11680, 512, 110, 114, 11548, 11552, 103, 59, 32768, 10220, 114, 59, 32768, 8701, 114, 107, 59, 32768, 10214, 103, 768, 108, 109, 114, 11569, 11596, 11604, 101, 102, 116, 512, 97, 114, 11577, 11584, 114, 114, 111, 119, 59, 32768, 10229, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10231, 97, 112, 115, 116, 111, 59, 32768, 10236, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10230, 112, 97, 114, 114, 111, 119, 512, 108, 114, 11627, 11633, 101, 102, 116, 59, 32768, 8619, 105, 103, 104, 116, 59, 32768, 8620, 768, 97, 102, 108, 11647, 11651, 11655, 114, 59, 32768, 10629, 59, 32896, 55349, 56669, 117, 115, 59, 32768, 10797, 105, 109, 101, 115, 59, 32768, 10804, 562, 11671, 11676, 115, 116, 59, 32768, 8727, 97, 114, 59, 32768, 95, 768, 59, 101, 102, 11687, 11689, 11695, 32768, 9674, 110, 103, 101, 59, 32768, 9674, 59, 32768, 10731, 97, 114, 512, 59, 108, 11705, 11707, 32768, 40, 116, 59, 32768, 10643, 1280, 97, 99, 104, 109, 116, 11722, 11727, 11735, 11747, 11750, 114, 114, 59, 32768, 8646, 111, 114, 110, 101, 114, 59, 32768, 8991, 97, 114, 512, 59, 100, 11742, 11744, 32768, 8651, 59, 32768, 10605, 59, 32768, 8206, 114, 105, 59, 32768, 8895, 1536, 97, 99, 104, 105, 113, 116, 11768, 11774, 11779, 11782, 11798, 11817, 113, 117, 111, 59, 32768, 8249, 114, 59, 32896, 55349, 56513, 59, 32768, 8624, 109, 768, 59, 101, 103, 11790, 11792, 11795, 32768, 8818, 59, 32768, 10893, 59, 32768, 10895, 512, 98, 117, 11803, 11806, 59, 32768, 91, 111, 512, 59, 114, 11812, 11814, 32768, 8216, 59, 32768, 8218, 114, 111, 107, 59, 32768, 322, 34816, 60, 59, 99, 100, 104, 105, 108, 113, 114, 11841, 11843, 11855, 11860, 11866, 11872, 11878, 11885, 32768, 60, 512, 99, 105, 11848, 11851, 59, 32768, 10918, 114, 59, 32768, 10873, 111, 116, 59, 32768, 8918, 114, 101, 101, 59, 32768, 8907, 109, 101, 115, 59, 32768, 8905, 97, 114, 114, 59, 32768, 10614, 117, 101, 115, 116, 59, 32768, 10875, 512, 80, 105, 11890, 11895, 97, 114, 59, 32768, 10646, 768, 59, 101, 102, 11902, 11904, 11907, 32768, 9667, 59, 32768, 8884, 59, 32768, 9666, 114, 512, 100, 117, 11916, 11923, 115, 104, 97, 114, 59, 32768, 10570, 104, 97, 114, 59, 32768, 10598, 512, 101, 110, 11934, 11944, 114, 116, 110, 101, 113, 113, 59, 32896, 8808, 65024, 69, 59, 32896, 8808, 65024, 3584, 68, 97, 99, 100, 101, 102, 104, 105, 108, 110, 111, 112, 115, 117, 11978, 11984, 12061, 12075, 12081, 12095, 12100, 12104, 12170, 12181, 12188, 12204, 12207, 12223, 68, 111, 116, 59, 32768, 8762, 1024, 99, 108, 112, 114, 11993, 11999, 12019, 12055, 114, 33024, 175, 59, 32768, 175, 512, 101, 116, 12004, 12007, 59, 32768, 9794, 512, 59, 101, 12012, 12014, 32768, 10016, 115, 101, 59, 32768, 10016, 512, 59, 115, 12024, 12026, 32768, 8614, 116, 111, 1024, 59, 100, 108, 117, 12037, 12039, 12045, 12051, 32768, 8614, 111, 119, 110, 59, 32768, 8615, 101, 102, 116, 59, 32768, 8612, 112, 59, 32768, 8613, 107, 101, 114, 59, 32768, 9646, 512, 111, 121, 12066, 12072, 109, 109, 97, 59, 32768, 10793, 59, 32768, 1084, 97, 115, 104, 59, 32768, 8212, 97, 115, 117, 114, 101, 100, 97, 110, 103, 108, 101, 59, 32768, 8737, 114, 59, 32896, 55349, 56618, 111, 59, 32768, 8487, 768, 99, 100, 110, 12111, 12118, 12146, 114, 111, 33024, 181, 59, 32768, 181, 1024, 59, 97, 99, 100, 12127, 12129, 12134, 12139, 32768, 8739, 115, 116, 59, 32768, 42, 105, 114, 59, 32768, 10992, 111, 116, 33024, 183, 59, 32768, 183, 117, 115, 768, 59, 98, 100, 12155, 12157, 12160, 32768, 8722, 59, 32768, 8863, 512, 59, 117, 12165, 12167, 32768, 8760, 59, 32768, 10794, 564, 12174, 12178, 112, 59, 32768, 10971, 114, 59, 32768, 8230, 112, 108, 117, 115, 59, 32768, 8723, 512, 100, 112, 12193, 12199, 101, 108, 115, 59, 32768, 8871, 102, 59, 32896, 55349, 56670, 59, 32768, 8723, 512, 99, 116, 12212, 12217, 114, 59, 32896, 55349, 56514, 112, 111, 115, 59, 32768, 8766, 768, 59, 108, 109, 12230, 12232, 12240, 32768, 956, 116, 105, 109, 97, 112, 59, 32768, 8888, 97, 112, 59, 32768, 8888, 6144, 71, 76, 82, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 12294, 12315, 12364, 12376, 12393, 12472, 12496, 12547, 12553, 12636, 12641, 12703, 12725, 12747, 12752, 12876, 12881, 12957, 13033, 13089, 13294, 13359, 13384, 13499, 512, 103, 116, 12299, 12303, 59, 32896, 8921, 824, 512, 59, 118, 12308, 12311, 32896, 8811, 8402, 59, 32896, 8811, 824, 768, 101, 108, 116, 12322, 12348, 12352, 102, 116, 512, 97, 114, 12329, 12336, 114, 114, 111, 119, 59, 32768, 8653, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8654, 59, 32896, 8920, 824, 512, 59, 118, 12357, 12360, 32896, 8810, 8402, 59, 32896, 8810, 824, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8655, 512, 68, 100, 12381, 12387, 97, 115, 104, 59, 32768, 8879, 97, 115, 104, 59, 32768, 8878, 1280, 98, 99, 110, 112, 116, 12404, 12409, 12415, 12420, 12452, 108, 97, 59, 32768, 8711, 117, 116, 101, 59, 32768, 324, 103, 59, 32896, 8736, 8402, 1280, 59, 69, 105, 111, 112, 12431, 12433, 12437, 12442, 12446, 32768, 8777, 59, 32896, 10864, 824, 100, 59, 32896, 8779, 824, 115, 59, 32768, 329, 114, 111, 120, 59, 32768, 8777, 117, 114, 512, 59, 97, 12459, 12461, 32768, 9838, 108, 512, 59, 115, 12467, 12469, 32768, 9838, 59, 32768, 8469, 836, 12477, 0, 12483, 112, 33024, 160, 59, 32768, 160, 109, 112, 512, 59, 101, 12489, 12492, 32896, 8782, 824, 59, 32896, 8783, 824, 1280, 97, 101, 111, 117, 121, 12507, 12519, 12525, 12540, 12544, 833, 12512, 0, 12515, 59, 32768, 10819, 111, 110, 59, 32768, 328, 100, 105, 108, 59, 32768, 326, 110, 103, 512, 59, 100, 12532, 12534, 32768, 8775, 111, 116, 59, 32896, 10861, 824, 112, 59, 32768, 10818, 59, 32768, 1085, 97, 115, 104, 59, 32768, 8211, 1792, 59, 65, 97, 100, 113, 115, 120, 12568, 12570, 12575, 12596, 12602, 12608, 12623, 32768, 8800, 114, 114, 59, 32768, 8663, 114, 512, 104, 114, 12581, 12585, 107, 59, 32768, 10532, 512, 59, 111, 12590, 12592, 32768, 8599, 119, 59, 32768, 8599, 111, 116, 59, 32896, 8784, 824, 117, 105, 118, 59, 32768, 8802, 512, 101, 105, 12613, 12618, 97, 114, 59, 32768, 10536, 109, 59, 32896, 8770, 824, 105, 115, 116, 512, 59, 115, 12631, 12633, 32768, 8708, 59, 32768, 8708, 114, 59, 32896, 55349, 56619, 1024, 69, 101, 115, 116, 12650, 12654, 12688, 12693, 59, 32896, 8807, 824, 768, 59, 113, 115, 12661, 12663, 12684, 32768, 8817, 768, 59, 113, 115, 12670, 12672, 12676, 32768, 8817, 59, 32896, 8807, 824, 108, 97, 110, 116, 59, 32896, 10878, 824, 59, 32896, 10878, 824, 105, 109, 59, 32768, 8821, 512, 59, 114, 12698, 12700, 32768, 8815, 59, 32768, 8815, 768, 65, 97, 112, 12710, 12715, 12720, 114, 114, 59, 32768, 8654, 114, 114, 59, 32768, 8622, 97, 114, 59, 32768, 10994, 768, 59, 115, 118, 12732, 12734, 12744, 32768, 8715, 512, 59, 100, 12739, 12741, 32768, 8956, 59, 32768, 8954, 59, 32768, 8715, 99, 121, 59, 32768, 1114, 1792, 65, 69, 97, 100, 101, 115, 116, 12767, 12772, 12776, 12781, 12785, 12853, 12858, 114, 114, 59, 32768, 8653, 59, 32896, 8806, 824, 114, 114, 59, 32768, 8602, 114, 59, 32768, 8229, 1024, 59, 102, 113, 115, 12794, 12796, 12821, 12842, 32768, 8816, 116, 512, 97, 114, 12802, 12809, 114, 114, 111, 119, 59, 32768, 8602, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8622, 768, 59, 113, 115, 12828, 12830, 12834, 32768, 8816, 59, 32896, 8806, 824, 108, 97, 110, 116, 59, 32896, 10877, 824, 512, 59, 115, 12847, 12850, 32896, 10877, 824, 59, 32768, 8814, 105, 109, 59, 32768, 8820, 512, 59, 114, 12863, 12865, 32768, 8814, 105, 512, 59, 101, 12871, 12873, 32768, 8938, 59, 32768, 8940, 105, 100, 59, 32768, 8740, 512, 112, 116, 12886, 12891, 102, 59, 32896, 55349, 56671, 33536, 172, 59, 105, 110, 12899, 12901, 12936, 32768, 172, 110, 1024, 59, 69, 100, 118, 12911, 12913, 12917, 12923, 32768, 8713, 59, 32896, 8953, 824, 111, 116, 59, 32896, 8949, 824, 818, 12928, 12931, 12934, 59, 32768, 8713, 59, 32768, 8951, 59, 32768, 8950, 105, 512, 59, 118, 12942, 12944, 32768, 8716, 818, 12949, 12952, 12955, 59, 32768, 8716, 59, 32768, 8958, 59, 32768, 8957, 768, 97, 111, 114, 12964, 12992, 12999, 114, 1024, 59, 97, 115, 116, 12974, 12976, 12983, 12988, 32768, 8742, 108, 108, 101, 108, 59, 32768, 8742, 108, 59, 32896, 11005, 8421, 59, 32896, 8706, 824, 108, 105, 110, 116, 59, 32768, 10772, 768, 59, 99, 101, 13006, 13008, 13013, 32768, 8832, 117, 101, 59, 32768, 8928, 512, 59, 99, 13018, 13021, 32896, 10927, 824, 512, 59, 101, 13026, 13028, 32768, 8832, 113, 59, 32896, 10927, 824, 1024, 65, 97, 105, 116, 13042, 13047, 13066, 13077, 114, 114, 59, 32768, 8655, 114, 114, 768, 59, 99, 119, 13056, 13058, 13062, 32768, 8603, 59, 32896, 10547, 824, 59, 32896, 8605, 824, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8603, 114, 105, 512, 59, 101, 13084, 13086, 32768, 8939, 59, 32768, 8941, 1792, 99, 104, 105, 109, 112, 113, 117, 13104, 13128, 13151, 13169, 13174, 13179, 13194, 1024, 59, 99, 101, 114, 13113, 13115, 13120, 13124, 32768, 8833, 117, 101, 59, 32768, 8929, 59, 32896, 10928, 824, 59, 32896, 55349, 56515, 111, 114, 116, 1086, 13137, 0, 0, 13142, 105, 100, 59, 32768, 8740, 97, 114, 97, 108, 108, 101, 108, 59, 32768, 8742, 109, 512, 59, 101, 13157, 13159, 32768, 8769, 512, 59, 113, 13164, 13166, 32768, 8772, 59, 32768, 8772, 105, 100, 59, 32768, 8740, 97, 114, 59, 32768, 8742, 115, 117, 512, 98, 112, 13186, 13190, 101, 59, 32768, 8930, 101, 59, 32768, 8931, 768, 98, 99, 112, 13201, 13241, 13254, 1024, 59, 69, 101, 115, 13210, 13212, 13216, 13219, 32768, 8836, 59, 32896, 10949, 824, 59, 32768, 8840, 101, 116, 512, 59, 101, 13226, 13229, 32896, 8834, 8402, 113, 512, 59, 113, 13235, 13237, 32768, 8840, 59, 32896, 10949, 824, 99, 512, 59, 101, 13247, 13249, 32768, 8833, 113, 59, 32896, 10928, 824, 1024, 59, 69, 101, 115, 13263, 13265, 13269, 13272, 32768, 8837, 59, 32896, 10950, 824, 59, 32768, 8841, 101, 116, 512, 59, 101, 13279, 13282, 32896, 8835, 8402, 113, 512, 59, 113, 13288, 13290, 32768, 8841, 59, 32896, 10950, 824, 1024, 103, 105, 108, 114, 13303, 13307, 13315, 13319, 108, 59, 32768, 8825, 108, 100, 101, 33024, 241, 59, 32768, 241, 103, 59, 32768, 8824, 105, 97, 110, 103, 108, 101, 512, 108, 114, 13330, 13344, 101, 102, 116, 512, 59, 101, 13338, 13340, 32768, 8938, 113, 59, 32768, 8940, 105, 103, 104, 116, 512, 59, 101, 13353, 13355, 32768, 8939, 113, 59, 32768, 8941, 512, 59, 109, 13364, 13366, 32768, 957, 768, 59, 101, 115, 13373, 13375, 13380, 32768, 35, 114, 111, 59, 32768, 8470, 112, 59, 32768, 8199, 2304, 68, 72, 97, 100, 103, 105, 108, 114, 115, 13403, 13409, 13415, 13420, 13426, 13439, 13446, 13476, 13493, 97, 115, 104, 59, 32768, 8877, 97, 114, 114, 59, 32768, 10500, 112, 59, 32896, 8781, 8402, 97, 115, 104, 59, 32768, 8876, 512, 101, 116, 13431, 13435, 59, 32896, 8805, 8402, 59, 32896, 62, 8402, 110, 102, 105, 110, 59, 32768, 10718, 768, 65, 101, 116, 13453, 13458, 13462, 114, 114, 59, 32768, 10498, 59, 32896, 8804, 8402, 512, 59, 114, 13467, 13470, 32896, 60, 8402, 105, 101, 59, 32896, 8884, 8402, 512, 65, 116, 13481, 13486, 114, 114, 59, 32768, 10499, 114, 105, 101, 59, 32896, 8885, 8402, 105, 109, 59, 32896, 8764, 8402, 768, 65, 97, 110, 13506, 13511, 13532, 114, 114, 59, 32768, 8662, 114, 512, 104, 114, 13517, 13521, 107, 59, 32768, 10531, 512, 59, 111, 13526, 13528, 32768, 8598, 119, 59, 32768, 8598, 101, 97, 114, 59, 32768, 10535, 9252, 13576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13579, 0, 13596, 13617, 13653, 13659, 13673, 13695, 13708, 0, 0, 13713, 13750, 0, 13788, 13794, 0, 13815, 13890, 13913, 13937, 13944, 59, 32768, 9416, 512, 99, 115, 13583, 13591, 117, 116, 101, 33024, 243, 59, 32768, 243, 116, 59, 32768, 8859, 512, 105, 121, 13600, 13613, 114, 512, 59, 99, 13606, 13608, 32768, 8858, 33024, 244, 59, 32768, 244, 59, 32768, 1086, 1280, 97, 98, 105, 111, 115, 13627, 13632, 13638, 13642, 13646, 115, 104, 59, 32768, 8861, 108, 97, 99, 59, 32768, 337, 118, 59, 32768, 10808, 116, 59, 32768, 8857, 111, 108, 100, 59, 32768, 10684, 108, 105, 103, 59, 32768, 339, 512, 99, 114, 13663, 13668, 105, 114, 59, 32768, 10687, 59, 32896, 55349, 56620, 1600, 13680, 0, 0, 13684, 0, 13692, 110, 59, 32768, 731, 97, 118, 101, 33024, 242, 59, 32768, 242, 59, 32768, 10689, 512, 98, 109, 13699, 13704, 97, 114, 59, 32768, 10677, 59, 32768, 937, 110, 116, 59, 32768, 8750, 1024, 97, 99, 105, 116, 13721, 13726, 13741, 13746, 114, 114, 59, 32768, 8634, 512, 105, 114, 13731, 13735, 114, 59, 32768, 10686, 111, 115, 115, 59, 32768, 10683, 110, 101, 59, 32768, 8254, 59, 32768, 10688, 768, 97, 101, 105, 13756, 13761, 13766, 99, 114, 59, 32768, 333, 103, 97, 59, 32768, 969, 768, 99, 100, 110, 13773, 13779, 13782, 114, 111, 110, 59, 32768, 959, 59, 32768, 10678, 117, 115, 59, 32768, 8854, 112, 102, 59, 32896, 55349, 56672, 768, 97, 101, 108, 13800, 13804, 13809, 114, 59, 32768, 10679, 114, 112, 59, 32768, 10681, 117, 115, 59, 32768, 8853, 1792, 59, 97, 100, 105, 111, 115, 118, 13829, 13831, 13836, 13869, 13875, 13879, 13886, 32768, 8744, 114, 114, 59, 32768, 8635, 1024, 59, 101, 102, 109, 13845, 13847, 13859, 13864, 32768, 10845, 114, 512, 59, 111, 13853, 13855, 32768, 8500, 102, 59, 32768, 8500, 33024, 170, 59, 32768, 170, 33024, 186, 59, 32768, 186, 103, 111, 102, 59, 32768, 8886, 114, 59, 32768, 10838, 108, 111, 112, 101, 59, 32768, 10839, 59, 32768, 10843, 768, 99, 108, 111, 13896, 13900, 13908, 114, 59, 32768, 8500, 97, 115, 104, 33024, 248, 59, 32768, 248, 108, 59, 32768, 8856, 105, 573, 13917, 13924, 100, 101, 33024, 245, 59, 32768, 245, 101, 115, 512, 59, 97, 13930, 13932, 32768, 8855, 115, 59, 32768, 10806, 109, 108, 33024, 246, 59, 32768, 246, 98, 97, 114, 59, 32768, 9021, 5426, 13972, 0, 14013, 0, 14017, 14053, 0, 14058, 14086, 0, 0, 14107, 14199, 0, 14202, 0, 0, 14229, 14425, 0, 14438, 114, 1024, 59, 97, 115, 116, 13981, 13983, 13997, 14009, 32768, 8741, 33280, 182, 59, 108, 13989, 13991, 32768, 182, 108, 101, 108, 59, 32768, 8741, 1082, 14003, 0, 0, 14007, 109, 59, 32768, 10995, 59, 32768, 11005, 59, 32768, 8706, 121, 59, 32768, 1087, 114, 1280, 99, 105, 109, 112, 116, 14028, 14033, 14038, 14043, 14046, 110, 116, 59, 32768, 37, 111, 100, 59, 32768, 46, 105, 108, 59, 32768, 8240, 59, 32768, 8869, 101, 110, 107, 59, 32768, 8241, 114, 59, 32896, 55349, 56621, 768, 105, 109, 111, 14064, 14074, 14080, 512, 59, 118, 14069, 14071, 32768, 966, 59, 32768, 981, 109, 97, 116, 59, 32768, 8499, 110, 101, 59, 32768, 9742, 768, 59, 116, 118, 14092, 14094, 14103, 32768, 960, 99, 104, 102, 111, 114, 107, 59, 32768, 8916, 59, 32768, 982, 512, 97, 117, 14111, 14132, 110, 512, 99, 107, 14117, 14128, 107, 512, 59, 104, 14123, 14125, 32768, 8463, 59, 32768, 8462, 118, 59, 32768, 8463, 115, 2304, 59, 97, 98, 99, 100, 101, 109, 115, 116, 14152, 14154, 14160, 14163, 14168, 14179, 14182, 14188, 14193, 32768, 43, 99, 105, 114, 59, 32768, 10787, 59, 32768, 8862, 105, 114, 59, 32768, 10786, 512, 111, 117, 14173, 14176, 59, 32768, 8724, 59, 32768, 10789, 59, 32768, 10866, 110, 33024, 177, 59, 32768, 177, 105, 109, 59, 32768, 10790, 119, 111, 59, 32768, 10791, 59, 32768, 177, 768, 105, 112, 117, 14208, 14216, 14221, 110, 116, 105, 110, 116, 59, 32768, 10773, 102, 59, 32896, 55349, 56673, 110, 100, 33024, 163, 59, 32768, 163, 2560, 59, 69, 97, 99, 101, 105, 110, 111, 115, 117, 14249, 14251, 14254, 14258, 14263, 14336, 14348, 14367, 14413, 14418, 32768, 8826, 59, 32768, 10931, 112, 59, 32768, 10935, 117, 101, 59, 32768, 8828, 512, 59, 99, 14268, 14270, 32768, 10927, 1536, 59, 97, 99, 101, 110, 115, 14283, 14285, 14293, 14302, 14306, 14331, 32768, 8826, 112, 112, 114, 111, 120, 59, 32768, 10935, 117, 114, 108, 121, 101, 113, 59, 32768, 8828, 113, 59, 32768, 10927, 768, 97, 101, 115, 14313, 14321, 14326, 112, 112, 114, 111, 120, 59, 32768, 10937, 113, 113, 59, 32768, 10933, 105, 109, 59, 32768, 8936, 105, 109, 59, 32768, 8830, 109, 101, 512, 59, 115, 14343, 14345, 32768, 8242, 59, 32768, 8473, 768, 69, 97, 115, 14355, 14358, 14362, 59, 32768, 10933, 112, 59, 32768, 10937, 105, 109, 59, 32768, 8936, 768, 100, 102, 112, 14374, 14377, 14402, 59, 32768, 8719, 768, 97, 108, 115, 14384, 14390, 14396, 108, 97, 114, 59, 32768, 9006, 105, 110, 101, 59, 32768, 8978, 117, 114, 102, 59, 32768, 8979, 512, 59, 116, 14407, 14409, 32768, 8733, 111, 59, 32768, 8733, 105, 109, 59, 32768, 8830, 114, 101, 108, 59, 32768, 8880, 512, 99, 105, 14429, 14434, 114, 59, 32896, 55349, 56517, 59, 32768, 968, 110, 99, 115, 112, 59, 32768, 8200, 1536, 102, 105, 111, 112, 115, 117, 14457, 14462, 14467, 14473, 14480, 14486, 114, 59, 32896, 55349, 56622, 110, 116, 59, 32768, 10764, 112, 102, 59, 32896, 55349, 56674, 114, 105, 109, 101, 59, 32768, 8279, 99, 114, 59, 32896, 55349, 56518, 768, 97, 101, 111, 14493, 14513, 14526, 116, 512, 101, 105, 14499, 14508, 114, 110, 105, 111, 110, 115, 59, 32768, 8461, 110, 116, 59, 32768, 10774, 115, 116, 512, 59, 101, 14520, 14522, 32768, 63, 113, 59, 32768, 8799, 116, 33024, 34, 59, 32768, 34, 5376, 65, 66, 72, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 110, 111, 112, 114, 115, 116, 117, 120, 14575, 14597, 14603, 14608, 14775, 14829, 14865, 14901, 14943, 14966, 15000, 15139, 15159, 15176, 15182, 15236, 15261, 15267, 15309, 15352, 15360, 768, 97, 114, 116, 14582, 14587, 14591, 114, 114, 59, 32768, 8667, 114, 59, 32768, 8658, 97, 105, 108, 59, 32768, 10524, 97, 114, 114, 59, 32768, 10511, 97, 114, 59, 32768, 10596, 1792, 99, 100, 101, 110, 113, 114, 116, 14623, 14637, 14642, 14650, 14672, 14679, 14751, 512, 101, 117, 14628, 14632, 59, 32896, 8765, 817, 116, 101, 59, 32768, 341, 105, 99, 59, 32768, 8730, 109, 112, 116, 121, 118, 59, 32768, 10675, 103, 1024, 59, 100, 101, 108, 14660, 14662, 14665, 14668, 32768, 10217, 59, 32768, 10642, 59, 32768, 10661, 101, 59, 32768, 10217, 117, 111, 33024, 187, 59, 32768, 187, 114, 2816, 59, 97, 98, 99, 102, 104, 108, 112, 115, 116, 119, 14703, 14705, 14709, 14720, 14723, 14727, 14731, 14735, 14739, 14744, 14748, 32768, 8594, 112, 59, 32768, 10613, 512, 59, 102, 14714, 14716, 32768, 8677, 115, 59, 32768, 10528, 59, 32768, 10547, 115, 59, 32768, 10526, 107, 59, 32768, 8618, 112, 59, 32768, 8620, 108, 59, 32768, 10565, 105, 109, 59, 32768, 10612, 108, 59, 32768, 8611, 59, 32768, 8605, 512, 97, 105, 14756, 14761, 105, 108, 59, 32768, 10522, 111, 512, 59, 110, 14767, 14769, 32768, 8758, 97, 108, 115, 59, 32768, 8474, 768, 97, 98, 114, 14782, 14787, 14792, 114, 114, 59, 32768, 10509, 114, 107, 59, 32768, 10099, 512, 97, 107, 14797, 14809, 99, 512, 101, 107, 14803, 14806, 59, 32768, 125, 59, 32768, 93, 512, 101, 115, 14814, 14817, 59, 32768, 10636, 108, 512, 100, 117, 14823, 14826, 59, 32768, 10638, 59, 32768, 10640, 1024, 97, 101, 117, 121, 14838, 14844, 14858, 14862, 114, 111, 110, 59, 32768, 345, 512, 100, 105, 14849, 14854, 105, 108, 59, 32768, 343, 108, 59, 32768, 8969, 98, 59, 32768, 125, 59, 32768, 1088, 1024, 99, 108, 113, 115, 14874, 14878, 14885, 14897, 97, 59, 32768, 10551, 100, 104, 97, 114, 59, 32768, 10601, 117, 111, 512, 59, 114, 14892, 14894, 32768, 8221, 59, 32768, 8221, 104, 59, 32768, 8627, 768, 97, 99, 103, 14908, 14934, 14938, 108, 1024, 59, 105, 112, 115, 14918, 14920, 14925, 14931, 32768, 8476, 110, 101, 59, 32768, 8475, 97, 114, 116, 59, 32768, 8476, 59, 32768, 8477, 116, 59, 32768, 9645, 33024, 174, 59, 32768, 174, 768, 105, 108, 114, 14950, 14956, 14962, 115, 104, 116, 59, 32768, 10621, 111, 111, 114, 59, 32768, 8971, 59, 32896, 55349, 56623, 512, 97, 111, 14971, 14990, 114, 512, 100, 117, 14977, 14980, 59, 32768, 8641, 512, 59, 108, 14985, 14987, 32768, 8640, 59, 32768, 10604, 512, 59, 118, 14995, 14997, 32768, 961, 59, 32768, 1009, 768, 103, 110, 115, 15007, 15123, 15127, 104, 116, 1536, 97, 104, 108, 114, 115, 116, 15022, 15039, 15060, 15086, 15099, 15111, 114, 114, 111, 119, 512, 59, 116, 15031, 15033, 32768, 8594, 97, 105, 108, 59, 32768, 8611, 97, 114, 112, 111, 111, 110, 512, 100, 117, 15050, 15056, 111, 119, 110, 59, 32768, 8641, 112, 59, 32768, 8640, 101, 102, 116, 512, 97, 104, 15068, 15076, 114, 114, 111, 119, 115, 59, 32768, 8644, 97, 114, 112, 111, 111, 110, 115, 59, 32768, 8652, 105, 103, 104, 116, 97, 114, 114, 111, 119, 115, 59, 32768, 8649, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 32768, 8605, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 32768, 8908, 103, 59, 32768, 730, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 32768, 8787, 768, 97, 104, 109, 15146, 15151, 15156, 114, 114, 59, 32768, 8644, 97, 114, 59, 32768, 8652, 59, 32768, 8207, 111, 117, 115, 116, 512, 59, 97, 15168, 15170, 32768, 9137, 99, 104, 101, 59, 32768, 9137, 109, 105, 100, 59, 32768, 10990, 1024, 97, 98, 112, 116, 15191, 15204, 15209, 15229, 512, 110, 114, 15196, 15200, 103, 59, 32768, 10221, 114, 59, 32768, 8702, 114, 107, 59, 32768, 10215, 768, 97, 102, 108, 15216, 15220, 15224, 114, 59, 32768, 10630, 59, 32896, 55349, 56675, 117, 115, 59, 32768, 10798, 105, 109, 101, 115, 59, 32768, 10805, 512, 97, 112, 15241, 15253, 114, 512, 59, 103, 15247, 15249, 32768, 41, 116, 59, 32768, 10644, 111, 108, 105, 110, 116, 59, 32768, 10770, 97, 114, 114, 59, 32768, 8649, 1024, 97, 99, 104, 113, 15276, 15282, 15287, 15290, 113, 117, 111, 59, 32768, 8250, 114, 59, 32896, 55349, 56519, 59, 32768, 8625, 512, 98, 117, 15295, 15298, 59, 32768, 93, 111, 512, 59, 114, 15304, 15306, 32768, 8217, 59, 32768, 8217, 768, 104, 105, 114, 15316, 15322, 15328, 114, 101, 101, 59, 32768, 8908, 109, 101, 115, 59, 32768, 8906, 105, 1024, 59, 101, 102, 108, 15338, 15340, 15343, 15346, 32768, 9657, 59, 32768, 8885, 59, 32768, 9656, 116, 114, 105, 59, 32768, 10702, 108, 117, 104, 97, 114, 59, 32768, 10600, 59, 32768, 8478, 6706, 15391, 15398, 15404, 15499, 15516, 15592, 0, 15606, 15660, 0, 0, 15752, 15758, 0, 15827, 15863, 15886, 16000, 16006, 16038, 16086, 0, 16467, 0, 0, 16506, 99, 117, 116, 101, 59, 32768, 347, 113, 117, 111, 59, 32768, 8218, 2560, 59, 69, 97, 99, 101, 105, 110, 112, 115, 121, 15424, 15426, 15429, 15441, 15446, 15458, 15463, 15482, 15490, 15495, 32768, 8827, 59, 32768, 10932, 833, 15434, 0, 15437, 59, 32768, 10936, 111, 110, 59, 32768, 353, 117, 101, 59, 32768, 8829, 512, 59, 100, 15451, 15453, 32768, 10928, 105, 108, 59, 32768, 351, 114, 99, 59, 32768, 349, 768, 69, 97, 115, 15470, 15473, 15477, 59, 32768, 10934, 112, 59, 32768, 10938, 105, 109, 59, 32768, 8937, 111, 108, 105, 110, 116, 59, 32768, 10771, 105, 109, 59, 32768, 8831, 59, 32768, 1089, 111, 116, 768, 59, 98, 101, 15507, 15509, 15512, 32768, 8901, 59, 32768, 8865, 59, 32768, 10854, 1792, 65, 97, 99, 109, 115, 116, 120, 15530, 15535, 15556, 15562, 15566, 15572, 15587, 114, 114, 59, 32768, 8664, 114, 512, 104, 114, 15541, 15545, 107, 59, 32768, 10533, 512, 59, 111, 15550, 15552, 32768, 8600, 119, 59, 32768, 8600, 116, 33024, 167, 59, 32768, 167, 105, 59, 32768, 59, 119, 97, 114, 59, 32768, 10537, 109, 512, 105, 110, 15578, 15584, 110, 117, 115, 59, 32768, 8726, 59, 32768, 8726, 116, 59, 32768, 10038, 114, 512, 59, 111, 15597, 15600, 32896, 55349, 56624, 119, 110, 59, 32768, 8994, 1024, 97, 99, 111, 121, 15614, 15619, 15632, 15654, 114, 112, 59, 32768, 9839, 512, 104, 121, 15624, 15629, 99, 121, 59, 32768, 1097, 59, 32768, 1096, 114, 116, 1086, 15640, 0, 0, 15645, 105, 100, 59, 32768, 8739, 97, 114, 97, 108, 108, 101, 108, 59, 32768, 8741, 33024, 173, 59, 32768, 173, 512, 103, 109, 15664, 15681, 109, 97, 768, 59, 102, 118, 15673, 15675, 15678, 32768, 963, 59, 32768, 962, 59, 32768, 962, 2048, 59, 100, 101, 103, 108, 110, 112, 114, 15698, 15700, 15705, 15715, 15725, 15735, 15739, 15745, 32768, 8764, 111, 116, 59, 32768, 10858, 512, 59, 113, 15710, 15712, 32768, 8771, 59, 32768, 8771, 512, 59, 69, 15720, 15722, 32768, 10910, 59, 32768, 10912, 512, 59, 69, 15730, 15732, 32768, 10909, 59, 32768, 10911, 101, 59, 32768, 8774, 108, 117, 115, 59, 32768, 10788, 97, 114, 114, 59, 32768, 10610, 97, 114, 114, 59, 32768, 8592, 1024, 97, 101, 105, 116, 15766, 15788, 15796, 15808, 512, 108, 115, 15771, 15783, 108, 115, 101, 116, 109, 105, 110, 117, 115, 59, 32768, 8726, 104, 112, 59, 32768, 10803, 112, 97, 114, 115, 108, 59, 32768, 10724, 512, 100, 108, 15801, 15804, 59, 32768, 8739, 101, 59, 32768, 8995, 512, 59, 101, 15813, 15815, 32768, 10922, 512, 59, 115, 15820, 15822, 32768, 10924, 59, 32896, 10924, 65024, 768, 102, 108, 112, 15833, 15839, 15857, 116, 99, 121, 59, 32768, 1100, 512, 59, 98, 15844, 15846, 32768, 47, 512, 59, 97, 15851, 15853, 32768, 10692, 114, 59, 32768, 9023, 102, 59, 32896, 55349, 56676, 97, 512, 100, 114, 15868, 15882, 101, 115, 512, 59, 117, 15875, 15877, 32768, 9824, 105, 116, 59, 32768, 9824, 59, 32768, 8741, 768, 99, 115, 117, 15892, 15921, 15977, 512, 97, 117, 15897, 15909, 112, 512, 59, 115, 15903, 15905, 32768, 8851, 59, 32896, 8851, 65024, 112, 512, 59, 115, 15915, 15917, 32768, 8852, 59, 32896, 8852, 65024, 117, 512, 98, 112, 15927, 15952, 768, 59, 101, 115, 15934, 15936, 15939, 32768, 8847, 59, 32768, 8849, 101, 116, 512, 59, 101, 15946, 15948, 32768, 8847, 113, 59, 32768, 8849, 768, 59, 101, 115, 15959, 15961, 15964, 32768, 8848, 59, 32768, 8850, 101, 116, 512, 59, 101, 15971, 15973, 32768, 8848, 113, 59, 32768, 8850, 768, 59, 97, 102, 15984, 15986, 15996, 32768, 9633, 114, 566, 15991, 15994, 59, 32768, 9633, 59, 32768, 9642, 59, 32768, 9642, 97, 114, 114, 59, 32768, 8594, 1024, 99, 101, 109, 116, 16014, 16019, 16025, 16031, 114, 59, 32896, 55349, 56520, 116, 109, 110, 59, 32768, 8726, 105, 108, 101, 59, 32768, 8995, 97, 114, 102, 59, 32768, 8902, 512, 97, 114, 16042, 16053, 114, 512, 59, 102, 16048, 16050, 32768, 9734, 59, 32768, 9733, 512, 97, 110, 16058, 16081, 105, 103, 104, 116, 512, 101, 112, 16067, 16076, 112, 115, 105, 108, 111, 110, 59, 32768, 1013, 104, 105, 59, 32768, 981, 115, 59, 32768, 175, 1280, 98, 99, 109, 110, 112, 16096, 16221, 16288, 16291, 16295, 2304, 59, 69, 100, 101, 109, 110, 112, 114, 115, 16115, 16117, 16120, 16125, 16137, 16143, 16154, 16160, 16166, 32768, 8834, 59, 32768, 10949, 111, 116, 59, 32768, 10941, 512, 59, 100, 16130, 16132, 32768, 8838, 111, 116, 59, 32768, 10947, 117, 108, 116, 59, 32768, 10945, 512, 69, 101, 16148, 16151, 59, 32768, 10955, 59, 32768, 8842, 108, 117, 115, 59, 32768, 10943, 97, 114, 114, 59, 32768, 10617, 768, 101, 105, 117, 16173, 16206, 16210, 116, 768, 59, 101, 110, 16181, 16183, 16194, 32768, 8834, 113, 512, 59, 113, 16189, 16191, 32768, 8838, 59, 32768, 10949, 101, 113, 512, 59, 113, 16201, 16203, 32768, 8842, 59, 32768, 10955, 109, 59, 32768, 10951, 512, 98, 112, 16215, 16218, 59, 32768, 10965, 59, 32768, 10963, 99, 1536, 59, 97, 99, 101, 110, 115, 16235, 16237, 16245, 16254, 16258, 16283, 32768, 8827, 112, 112, 114, 111, 120, 59, 32768, 10936, 117, 114, 108, 121, 101, 113, 59, 32768, 8829, 113, 59, 32768, 10928, 768, 97, 101, 115, 16265, 16273, 16278, 112, 112, 114, 111, 120, 59, 32768, 10938, 113, 113, 59, 32768, 10934, 105, 109, 59, 32768, 8937, 105, 109, 59, 32768, 8831, 59, 32768, 8721, 103, 59, 32768, 9834, 3328, 49, 50, 51, 59, 69, 100, 101, 104, 108, 109, 110, 112, 115, 16322, 16327, 16332, 16337, 16339, 16342, 16356, 16368, 16382, 16388, 16394, 16405, 16411, 33024, 185, 59, 32768, 185, 33024, 178, 59, 32768, 178, 33024, 179, 59, 32768, 179, 32768, 8835, 59, 32768, 10950, 512, 111, 115, 16347, 16351, 116, 59, 32768, 10942, 117, 98, 59, 32768, 10968, 512, 59, 100, 16361, 16363, 32768, 8839, 111, 116, 59, 32768, 10948, 115, 512, 111, 117, 16374, 16378, 108, 59, 32768, 10185, 98, 59, 32768, 10967, 97, 114, 114, 59, 32768, 10619, 117, 108, 116, 59, 32768, 10946, 512, 69, 101, 16399, 16402, 59, 32768, 10956, 59, 32768, 8843, 108, 117, 115, 59, 32768, 10944, 768, 101, 105, 117, 16418, 16451, 16455, 116, 768, 59, 101, 110, 16426, 16428, 16439, 32768, 8835, 113, 512, 59, 113, 16434, 16436, 32768, 8839, 59, 32768, 10950, 101, 113, 512, 59, 113, 16446, 16448, 32768, 8843, 59, 32768, 10956, 109, 59, 32768, 10952, 512, 98, 112, 16460, 16463, 59, 32768, 10964, 59, 32768, 10966, 768, 65, 97, 110, 16473, 16478, 16499, 114, 114, 59, 32768, 8665, 114, 512, 104, 114, 16484, 16488, 107, 59, 32768, 10534, 512, 59, 111, 16493, 16495, 32768, 8601, 119, 59, 32768, 8601, 119, 97, 114, 59, 32768, 10538, 108, 105, 103, 33024, 223, 59, 32768, 223, 5938, 16538, 16552, 16557, 16579, 16584, 16591, 0, 16596, 16692, 0, 0, 0, 0, 0, 16731, 16780, 0, 16787, 16908, 0, 0, 0, 16938, 1091, 16543, 0, 0, 16549, 103, 101, 116, 59, 32768, 8982, 59, 32768, 964, 114, 107, 59, 32768, 9140, 768, 97, 101, 121, 16563, 16569, 16575, 114, 111, 110, 59, 32768, 357, 100, 105, 108, 59, 32768, 355, 59, 32768, 1090, 111, 116, 59, 32768, 8411, 108, 114, 101, 99, 59, 32768, 8981, 114, 59, 32896, 55349, 56625, 1024, 101, 105, 107, 111, 16604, 16641, 16670, 16684, 835, 16609, 0, 16624, 101, 512, 52, 102, 16614, 16617, 59, 32768, 8756, 111, 114, 101, 59, 32768, 8756, 97, 768, 59, 115, 118, 16631, 16633, 16638, 32768, 952, 121, 109, 59, 32768, 977, 59, 32768, 977, 512, 99, 110, 16646, 16665, 107, 512, 97, 115, 16652, 16660, 112, 112, 114, 111, 120, 59, 32768, 8776, 105, 109, 59, 32768, 8764, 115, 112, 59, 32768, 8201, 512, 97, 115, 16675, 16679, 112, 59, 32768, 8776, 105, 109, 59, 32768, 8764, 114, 110, 33024, 254, 59, 32768, 254, 829, 16696, 16701, 16727, 100, 101, 59, 32768, 732, 101, 115, 33536, 215, 59, 98, 100, 16710, 16712, 16723, 32768, 215, 512, 59, 97, 16717, 16719, 32768, 8864, 114, 59, 32768, 10801, 59, 32768, 10800, 116, 59, 32768, 8749, 768, 101, 112, 115, 16737, 16741, 16775, 97, 59, 32768, 10536, 1024, 59, 98, 99, 102, 16750, 16752, 16757, 16762, 32768, 8868, 111, 116, 59, 32768, 9014, 105, 114, 59, 32768, 10993, 512, 59, 111, 16767, 16770, 32896, 55349, 56677, 114, 107, 59, 32768, 10970, 97, 59, 32768, 10537, 114, 105, 109, 101, 59, 32768, 8244, 768, 97, 105, 112, 16793, 16798, 16899, 100, 101, 59, 32768, 8482, 1792, 97, 100, 101, 109, 112, 115, 116, 16813, 16868, 16873, 16876, 16883, 16889, 16893, 110, 103, 108, 101, 1280, 59, 100, 108, 113, 114, 16828, 16830, 16836, 16850, 16853, 32768, 9653, 111, 119, 110, 59, 32768, 9663, 101, 102, 116, 512, 59, 101, 16844, 16846, 32768, 9667, 113, 59, 32768, 8884, 59, 32768, 8796, 105, 103, 104, 116, 512, 59, 101, 16862, 16864, 32768, 9657, 113, 59, 32768, 8885, 111, 116, 59, 32768, 9708, 59, 32768, 8796, 105, 110, 117, 115, 59, 32768, 10810, 108, 117, 115, 59, 32768, 10809, 98, 59, 32768, 10701, 105, 109, 101, 59, 32768, 10811, 101, 122, 105, 117, 109, 59, 32768, 9186, 768, 99, 104, 116, 16914, 16926, 16931, 512, 114, 121, 16919, 16923, 59, 32896, 55349, 56521, 59, 32768, 1094, 99, 121, 59, 32768, 1115, 114, 111, 107, 59, 32768, 359, 512, 105, 111, 16942, 16947, 120, 116, 59, 32768, 8812, 104, 101, 97, 100, 512, 108, 114, 16956, 16967, 101, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8606, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8608, 4608, 65, 72, 97, 98, 99, 100, 102, 103, 104, 108, 109, 111, 112, 114, 115, 116, 117, 119, 17016, 17021, 17026, 17043, 17057, 17072, 17095, 17110, 17119, 17139, 17172, 17187, 17202, 17290, 17330, 17336, 17365, 17381, 114, 114, 59, 32768, 8657, 97, 114, 59, 32768, 10595, 512, 99, 114, 17031, 17039, 117, 116, 101, 33024, 250, 59, 32768, 250, 114, 59, 32768, 8593, 114, 820, 17049, 0, 17053, 121, 59, 32768, 1118, 118, 101, 59, 32768, 365, 512, 105, 121, 17062, 17069, 114, 99, 33024, 251, 59, 32768, 251, 59, 32768, 1091, 768, 97, 98, 104, 17079, 17084, 17090, 114, 114, 59, 32768, 8645, 108, 97, 99, 59, 32768, 369, 97, 114, 59, 32768, 10606, 512, 105, 114, 17100, 17106, 115, 104, 116, 59, 32768, 10622, 59, 32896, 55349, 56626, 114, 97, 118, 101, 33024, 249, 59, 32768, 249, 562, 17123, 17135, 114, 512, 108, 114, 17128, 17131, 59, 32768, 8639, 59, 32768, 8638, 108, 107, 59, 32768, 9600, 512, 99, 116, 17144, 17167, 1088, 17150, 0, 0, 17163, 114, 110, 512, 59, 101, 17156, 17158, 32768, 8988, 114, 59, 32768, 8988, 111, 112, 59, 32768, 8975, 114, 105, 59, 32768, 9720, 512, 97, 108, 17177, 17182, 99, 114, 59, 32768, 363, 33024, 168, 59, 32768, 168, 512, 103, 112, 17192, 17197, 111, 110, 59, 32768, 371, 102, 59, 32896, 55349, 56678, 1536, 97, 100, 104, 108, 115, 117, 17215, 17222, 17233, 17257, 17262, 17280, 114, 114, 111, 119, 59, 32768, 8593, 111, 119, 110, 97, 114, 114, 111, 119, 59, 32768, 8597, 97, 114, 112, 111, 111, 110, 512, 108, 114, 17244, 17250, 101, 102, 116, 59, 32768, 8639, 105, 103, 104, 116, 59, 32768, 8638, 117, 115, 59, 32768, 8846, 105, 768, 59, 104, 108, 17270, 17272, 17275, 32768, 965, 59, 32768, 978, 111, 110, 59, 32768, 965, 112, 97, 114, 114, 111, 119, 115, 59, 32768, 8648, 768, 99, 105, 116, 17297, 17320, 17325, 1088, 17303, 0, 0, 17316, 114, 110, 512, 59, 101, 17309, 17311, 32768, 8989, 114, 59, 32768, 8989, 111, 112, 59, 32768, 8974, 110, 103, 59, 32768, 367, 114, 105, 59, 32768, 9721, 99, 114, 59, 32896, 55349, 56522, 768, 100, 105, 114, 17343, 17348, 17354, 111, 116, 59, 32768, 8944, 108, 100, 101, 59, 32768, 361, 105, 512, 59, 102, 17360, 17362, 32768, 9653, 59, 32768, 9652, 512, 97, 109, 17370, 17375, 114, 114, 59, 32768, 8648, 108, 33024, 252, 59, 32768, 252, 97, 110, 103, 108, 101, 59, 32768, 10663, 3840, 65, 66, 68, 97, 99, 100, 101, 102, 108, 110, 111, 112, 114, 115, 122, 17420, 17425, 17437, 17443, 17613, 17617, 17623, 17667, 17672, 17678, 17693, 17699, 17705, 17711, 17754, 114, 114, 59, 32768, 8661, 97, 114, 512, 59, 118, 17432, 17434, 32768, 10984, 59, 32768, 10985, 97, 115, 104, 59, 32768, 8872, 512, 110, 114, 17448, 17454, 103, 114, 116, 59, 32768, 10652, 1792, 101, 107, 110, 112, 114, 115, 116, 17469, 17478, 17485, 17494, 17515, 17526, 17578, 112, 115, 105, 108, 111, 110, 59, 32768, 1013, 97, 112, 112, 97, 59, 32768, 1008, 111, 116, 104, 105, 110, 103, 59, 32768, 8709, 768, 104, 105, 114, 17501, 17505, 17508, 105, 59, 32768, 981, 59, 32768, 982, 111, 112, 116, 111, 59, 32768, 8733, 512, 59, 104, 17520, 17522, 32768, 8597, 111, 59, 32768, 1009, 512, 105, 117, 17531, 17537, 103, 109, 97, 59, 32768, 962, 512, 98, 112, 17542, 17560, 115, 101, 116, 110, 101, 113, 512, 59, 113, 17553, 17556, 32896, 8842, 65024, 59, 32896, 10955, 65024, 115, 101, 116, 110, 101, 113, 512, 59, 113, 17571, 17574, 32896, 8843, 65024, 59, 32896, 10956, 65024, 512, 104, 114, 17583, 17589, 101, 116, 97, 59, 32768, 977, 105, 97, 110, 103, 108, 101, 512, 108, 114, 17600, 17606, 101, 102, 116, 59, 32768, 8882, 105, 103, 104, 116, 59, 32768, 8883, 121, 59, 32768, 1074, 97, 115, 104, 59, 32768, 8866, 768, 101, 108, 114, 17630, 17648, 17654, 768, 59, 98, 101, 17637, 17639, 17644, 32768, 8744, 97, 114, 59, 32768, 8891, 113, 59, 32768, 8794, 108, 105, 112, 59, 32768, 8942, 512, 98, 116, 17659, 17664, 97, 114, 59, 32768, 124, 59, 32768, 124, 114, 59, 32896, 55349, 56627, 116, 114, 105, 59, 32768, 8882, 115, 117, 512, 98, 112, 17685, 17689, 59, 32896, 8834, 8402, 59, 32896, 8835, 8402, 112, 102, 59, 32896, 55349, 56679, 114, 111, 112, 59, 32768, 8733, 116, 114, 105, 59, 32768, 8883, 512, 99, 117, 17716, 17721, 114, 59, 32896, 55349, 56523, 512, 98, 112, 17726, 17740, 110, 512, 69, 101, 17732, 17736, 59, 32896, 10955, 65024, 59, 32896, 8842, 65024, 110, 512, 69, 101, 17746, 17750, 59, 32896, 10956, 65024, 59, 32896, 8843, 65024, 105, 103, 122, 97, 103, 59, 32768, 10650, 1792, 99, 101, 102, 111, 112, 114, 115, 17777, 17783, 17815, 17820, 17826, 17829, 17842, 105, 114, 99, 59, 32768, 373, 512, 100, 105, 17788, 17809, 512, 98, 103, 17793, 17798, 97, 114, 59, 32768, 10847, 101, 512, 59, 113, 17804, 17806, 32768, 8743, 59, 32768, 8793, 101, 114, 112, 59, 32768, 8472, 114, 59, 32896, 55349, 56628, 112, 102, 59, 32896, 55349, 56680, 59, 32768, 8472, 512, 59, 101, 17834, 17836, 32768, 8768, 97, 116, 104, 59, 32768, 8768, 99, 114, 59, 32896, 55349, 56524, 5428, 17871, 17891, 0, 17897, 0, 17902, 17917, 0, 0, 17920, 17935, 17940, 17945, 0, 0, 17977, 17992, 0, 18008, 18024, 18029, 768, 97, 105, 117, 17877, 17881, 17886, 112, 59, 32768, 8898, 114, 99, 59, 32768, 9711, 112, 59, 32768, 8899, 116, 114, 105, 59, 32768, 9661, 114, 59, 32896, 55349, 56629, 512, 65, 97, 17906, 17911, 114, 114, 59, 32768, 10234, 114, 114, 59, 32768, 10231, 59, 32768, 958, 512, 65, 97, 17924, 17929, 114, 114, 59, 32768, 10232, 114, 114, 59, 32768, 10229, 97, 112, 59, 32768, 10236, 105, 115, 59, 32768, 8955, 768, 100, 112, 116, 17951, 17956, 17970, 111, 116, 59, 32768, 10752, 512, 102, 108, 17961, 17965, 59, 32896, 55349, 56681, 117, 115, 59, 32768, 10753, 105, 109, 101, 59, 32768, 10754, 512, 65, 97, 17981, 17986, 114, 114, 59, 32768, 10233, 114, 114, 59, 32768, 10230, 512, 99, 113, 17996, 18001, 114, 59, 32896, 55349, 56525, 99, 117, 112, 59, 32768, 10758, 512, 112, 116, 18012, 18018, 108, 117, 115, 59, 32768, 10756, 114, 105, 59, 32768, 9651, 101, 101, 59, 32768, 8897, 101, 100, 103, 101, 59, 32768, 8896, 2048, 97, 99, 101, 102, 105, 111, 115, 117, 18052, 18068, 18081, 18087, 18092, 18097, 18103, 18109, 99, 512, 117, 121, 18058, 18065, 116, 101, 33024, 253, 59, 32768, 253, 59, 32768, 1103, 512, 105, 121, 18073, 18078, 114, 99, 59, 32768, 375, 59, 32768, 1099, 110, 33024, 165, 59, 32768, 165, 114, 59, 32896, 55349, 56630, 99, 121, 59, 32768, 1111, 112, 102, 59, 32896, 55349, 56682, 99, 114, 59, 32896, 55349, 56526, 512, 99, 109, 18114, 18118, 121, 59, 32768, 1102, 108, 33024, 255, 59, 32768, 255, 2560, 97, 99, 100, 101, 102, 104, 105, 111, 115, 119, 18145, 18152, 18166, 18171, 18186, 18191, 18196, 18204, 18210, 18216, 99, 117, 116, 101, 59, 32768, 378, 512, 97, 121, 18157, 18163, 114, 111, 110, 59, 32768, 382, 59, 32768, 1079, 111, 116, 59, 32768, 380, 512, 101, 116, 18176, 18182, 116, 114, 102, 59, 32768, 8488, 97, 59, 32768, 950, 114, 59, 32896, 55349, 56631, 99, 121, 59, 32768, 1078, 103, 114, 97, 114, 114, 59, 32768, 8669, 112, 102, 59, 32896, 55349, 56683, 99, 114, 59, 32896, 55349, 56527, 512, 106, 110, 18221, 18224, 59, 32768, 8205, 106, 59, 32768, 8204]);
1729
+
1730
+ var decodeDataHtml = /*#__PURE__*/Object.defineProperty({
1731
+ default: _default$3
1732
+ }, '__esModule', {value: true});
1733
+
1734
+ // Generated using scripts/write-decode-map.ts
1735
+ // prettier-ignore
1736
+ var _default$2 = new Uint16Array([1024, 97, 103, 108, 113, 9, 23, 27, 31, 1086, 15, 0, 0, 19, 112, 59, 32768, 38, 111, 115, 59, 32768, 39, 116, 59, 32768, 62, 116, 59, 32768, 60, 117, 111, 116, 59, 32768, 34]);
1737
+
1738
+ var decodeDataXml = /*#__PURE__*/Object.defineProperty({
1739
+ default: _default$2
1740
+ }, '__esModule', {value: true});
1741
+
1742
+ var require$$0$3 = decodeDataHtml;
1743
+
1744
+ var require$$1$2 = decodeDataXml;
1745
+
1746
+ var require$$0$2 = decode_codepoint;
1747
+
1748
+ var decode = createCommonjsModule(function (module, exports) {
1749
+ var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
1750
+ return (mod && mod.__esModule) ? mod : { "default": mod };
1751
+ };
1752
+ Object.defineProperty(exports, "__esModule", { value: true });
1753
+ exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTML = exports.determineBranch = exports.JUMP_OFFSET_BASE = exports.BinTrieFlags = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;
1754
+ var decode_data_html_1 = __importDefault(require$$0$3);
1755
+ exports.htmlDecodeTree = decode_data_html_1.default;
1756
+ var decode_data_xml_1 = __importDefault(require$$1$2);
1757
+ exports.xmlDecodeTree = decode_data_xml_1.default;
1758
+ var decode_codepoint_1 = __importDefault(require$$0$2);
1759
+ var BinTrieFlags;
1760
+ (function (BinTrieFlags) {
1761
+ BinTrieFlags[BinTrieFlags["HAS_VALUE"] = 32768] = "HAS_VALUE";
1762
+ BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 32512] = "BRANCH_LENGTH";
1763
+ BinTrieFlags[BinTrieFlags["MULTI_BYTE"] = 128] = "MULTI_BYTE";
1764
+ BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
1765
+ })(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));
1766
+ exports.JUMP_OFFSET_BASE = 48 /* ZERO */ - 1;
1767
+ function getDecoder(decodeTree) {
1768
+ return function decodeHTMLBinary(str, strict) {
1769
+ var ret = "";
1770
+ var lastIdx = 0;
1771
+ var strIdx = 0;
1772
+ while ((strIdx = str.indexOf("&", strIdx)) >= 0) {
1773
+ ret += str.slice(lastIdx, strIdx);
1774
+ lastIdx = strIdx;
1775
+ // Skip the "&"
1776
+ strIdx += 1;
1777
+ // If we have a numeric entity, handle this separately.
1778
+ if (str.charCodeAt(strIdx) === 35 /* NUM */) {
1779
+ // Skip the leading "&#". For hex entities, also skip the leading "x".
1780
+ var start = strIdx + 1;
1781
+ var base = 10;
1782
+ var cp = str.charCodeAt(start);
1783
+ if ((cp | 32 /* To_LOWER_BIT */) === 120 /* LOWER_X */) {
1784
+ base = 16;
1785
+ strIdx += 1;
1786
+ start += 1;
1787
+ }
1788
+ while (((cp = str.charCodeAt(++strIdx)) >= 48 /* ZERO */ &&
1789
+ cp <= 57 /* NINE */) ||
1790
+ (base === 16 &&
1791
+ (cp | 32 /* To_LOWER_BIT */) >= 97 /* LOWER_A */ &&
1792
+ (cp | 32 /* To_LOWER_BIT */) <= 102 /* LOWER_F */))
1793
+ ;
1794
+ if (start !== strIdx) {
1795
+ var entity = str.substring(start, strIdx);
1796
+ var parsed = parseInt(entity, base);
1797
+ if (str.charCodeAt(strIdx) === 59 /* SEMI */) {
1798
+ strIdx += 1;
1799
+ }
1800
+ else if (strict) {
1801
+ continue;
1802
+ }
1803
+ ret += decode_codepoint_1.default(parsed);
1804
+ lastIdx = strIdx;
1805
+ }
1806
+ continue;
1807
+ }
1808
+ var result = null;
1809
+ var excess = 1;
1810
+ var treeIdx = 0;
1811
+ var current = decodeTree[treeIdx];
1812
+ for (; strIdx < str.length; strIdx++, excess++) {
1813
+ treeIdx = determineBranch(decodeTree, current, treeIdx + 1, str.charCodeAt(strIdx));
1814
+ if (treeIdx < 0)
1815
+ break;
1816
+ current = decodeTree[treeIdx];
1817
+ // If the branch is a value, store it and continue
1818
+ if (current & BinTrieFlags.HAS_VALUE) {
1819
+ // If we have a legacy entity while parsing strictly, just skip the number of bytes
1820
+ if (strict && str.charCodeAt(strIdx) !== 59 /* SEMI */) {
1821
+ // No need to consider multi-byte values, as the legacy entity is always a single byte
1822
+ treeIdx += 1;
1823
+ }
1824
+ else {
1825
+ // If this is a surrogate pair, combine the higher bits from the node with the next byte
1826
+ result =
1827
+ current & BinTrieFlags.MULTI_BYTE
1828
+ ? String.fromCharCode(decodeTree[++treeIdx], decodeTree[++treeIdx])
1829
+ : String.fromCharCode(decodeTree[++treeIdx]);
1830
+ excess = 0;
1831
+ }
1832
+ }
1833
+ }
1834
+ if (result != null) {
1835
+ ret += result;
1836
+ lastIdx = strIdx - excess + 1;
1837
+ }
1838
+ }
1839
+ return ret + str.slice(lastIdx);
1840
+ };
1841
+ }
1842
+ function determineBranch(decodeTree, current, nodeIdx, char) {
1843
+ if (current <= 128) {
1844
+ return char === current ? nodeIdx : -1;
1845
+ }
1846
+ var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 8;
1847
+ if (branchCount === 0) {
1848
+ return -1;
1849
+ }
1850
+ if (branchCount === 1) {
1851
+ return char === decodeTree[nodeIdx] ? nodeIdx + 1 : -1;
1852
+ }
1853
+ var jumpOffset = current & BinTrieFlags.JUMP_TABLE;
1854
+ if (jumpOffset) {
1855
+ var value = char - exports.JUMP_OFFSET_BASE - jumpOffset;
1856
+ return value < 0 || value > branchCount
1857
+ ? -1
1858
+ : decodeTree[nodeIdx + value] - 1;
1859
+ }
1860
+ // Binary search for the character.
1861
+ var lo = nodeIdx;
1862
+ var hi = lo + branchCount - 1;
1863
+ while (lo <= hi) {
1864
+ var mid = (lo + hi) >>> 1;
1865
+ var midVal = decodeTree[mid];
1866
+ if (midVal < char) {
1867
+ lo = mid + 1;
1868
+ }
1869
+ else if (midVal > char) {
1870
+ hi = mid - 1;
1871
+ }
1872
+ else {
1873
+ return decodeTree[mid + branchCount];
1874
+ }
1875
+ }
1876
+ return -1;
1877
+ }
1878
+ exports.determineBranch = determineBranch;
1879
+ var htmlDecoder = getDecoder(decode_data_html_1.default);
1880
+ var xmlDecoder = getDecoder(decode_data_xml_1.default);
1881
+ function decodeHTML(str) {
1882
+ return htmlDecoder(str, false);
1883
+ }
1884
+ exports.decodeHTML = decodeHTML;
1885
+ function decodeHTMLStrict(str) {
1886
+ return htmlDecoder(str, true);
1887
+ }
1888
+ exports.decodeHTMLStrict = decodeHTMLStrict;
1889
+ function decodeXML(str) {
1890
+ return xmlDecoder(str, true);
1891
+ }
1892
+ exports.decodeXML = decodeXML;
1893
+ });
1894
+
1895
+ var decode_1 = decode;
1896
+
1897
+ var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
1898
+ return (mod && mod.__esModule) ? mod : { "default": mod };
1899
+ };
1900
+
1901
+ var decode_codepoint_1 = __importDefault(require$$0$2);
1902
+
1903
+ function isWhitespace(c) {
1904
+ return (c === 32 /* Space */ ||
1905
+ c === 10 /* NewLine */ ||
1906
+ c === 9 /* Tab */ ||
1907
+ c === 12 /* FormFeed */ ||
1908
+ c === 13 /* CarriageReturn */);
1909
+ }
1910
+ function isEndOfTagSection(c) {
1911
+ return c === 47 /* Slash */ || c === 62 /* Gt */ || isWhitespace(c);
1912
+ }
1913
+ function isNumber(c) {
1914
+ return c >= 48 /* Zero */ && c <= 57 /* Nine */;
1915
+ }
1916
+ function isASCIIAlpha(c) {
1917
+ return ((c >= 97 /* LowerA */ && c <= 122 /* LowerZ */) ||
1918
+ (c >= 65 /* UpperA */ && c <= 90 /* UpperZ */));
1919
+ }
1920
+ /**
1921
+ * Sequences used to match longer strings.
1922
+ *
1923
+ * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End
1924
+ * sequences with an increased offset.
1925
+ */
1926
+ var Sequences = {
1927
+ Cdata: new Uint16Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]),
1928
+ CdataEnd: new Uint16Array([0x5d, 0x5d, 0x3e]),
1929
+ CommentEnd: new Uint16Array([0x2d, 0x2d, 0x3e]),
1930
+ ScriptEnd: new Uint16Array([
1931
+ 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
1932
+ ]),
1933
+ StyleEnd: new Uint16Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]),
1934
+ TitleEnd: new Uint16Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`
1935
+ };
1936
+ var Tokenizer = /** @class */ (function () {
1937
+ function Tokenizer(_a, cbs) {
1938
+ var _b = _a.xmlMode, xmlMode = _b === void 0 ? false : _b, _c = _a.decodeEntities, decodeEntities = _c === void 0 ? true : _c;
1939
+ this.cbs = cbs;
1940
+ /** The current state the tokenizer is in. */
1941
+ this._state = 1 /* Text */;
1942
+ /** The read buffer. */
1943
+ this.buffer = "";
1944
+ /** The beginning of the section that is currently being read. */
1945
+ this.sectionStart = 0;
1946
+ /** The index within the buffer that we are currently looking at. */
1947
+ this._index = 0;
1948
+ /**
1949
+ * Data that has already been processed will be removed from the buffer occasionally.
1950
+ * `_bufferOffset` keeps track of how many characters have been removed, to make sure position information is accurate.
1951
+ */
1952
+ this.bufferOffset = 0;
1953
+ /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
1954
+ this.baseState = 1 /* Text */;
1955
+ /** For special parsing behavior inside of script and style tags. */
1956
+ this.isSpecial = false;
1957
+ /** Indicates whether the tokenizer has been paused. */
1958
+ this.running = true;
1959
+ /** Indicates whether the tokenizer has finished running / `.end` has been called. */
1960
+ this.ended = false;
1961
+ this.sequenceIndex = 0;
1962
+ this.trieIndex = 0;
1963
+ this.trieCurrent = 0;
1964
+ this.trieResult = null;
1965
+ this.entityExcess = 0;
1966
+ this.xmlMode = xmlMode;
1967
+ this.decodeEntities = decodeEntities;
1968
+ this.entityTrie = xmlMode ? decode_1.xmlDecodeTree : decode_1.htmlDecodeTree;
1969
+ }
1970
+ Tokenizer.prototype.reset = function () {
1971
+ this._state = 1 /* Text */;
1972
+ this.buffer = "";
1973
+ this.sectionStart = 0;
1974
+ this._index = 0;
1975
+ this.bufferOffset = 0;
1976
+ this.baseState = 1 /* Text */;
1977
+ this.currentSequence = undefined;
1978
+ this.running = true;
1979
+ this.ended = false;
1980
+ };
1981
+ Tokenizer.prototype.write = function (chunk) {
1982
+ if (this.ended)
1983
+ return this.cbs.onerror(Error(".write() after done!"));
1984
+ this.buffer += chunk;
1985
+ this.parse();
1986
+ };
1987
+ Tokenizer.prototype.end = function (chunk) {
1988
+ if (this.ended)
1989
+ return this.cbs.onerror(Error(".end() after done!"));
1990
+ if (chunk)
1991
+ this.write(chunk);
1992
+ this.ended = true;
1993
+ if (this.running)
1994
+ this.finish();
1995
+ };
1996
+ Tokenizer.prototype.pause = function () {
1997
+ this.running = false;
1998
+ };
1999
+ Tokenizer.prototype.resume = function () {
2000
+ this.running = true;
2001
+ if (this._index < this.buffer.length) {
2002
+ this.parse();
2003
+ }
2004
+ if (this.ended) {
2005
+ this.finish();
2006
+ }
2007
+ };
2008
+ /**
2009
+ * The start of the current section.
2010
+ */
2011
+ Tokenizer.prototype.getAbsoluteSectionStart = function () {
2012
+ return this.sectionStart + this.bufferOffset;
2013
+ };
2014
+ /**
2015
+ * The current index within all of the written data.
2016
+ */
2017
+ Tokenizer.prototype.getAbsoluteIndex = function () {
2018
+ return this.bufferOffset + this._index;
2019
+ };
2020
+ Tokenizer.prototype.stateText = function (c) {
2021
+ if (c === 60 /* Lt */ ||
2022
+ (!this.decodeEntities && this.fastForwardTo(60 /* Lt */))) {
2023
+ if (this._index > this.sectionStart) {
2024
+ this.cbs.ontext(this.getSection());
2025
+ }
2026
+ this._state = 2 /* BeforeTagName */;
2027
+ this.sectionStart = this._index;
2028
+ }
2029
+ else if (this.decodeEntities && c === 38 /* Amp */) {
2030
+ this._state = 25 /* BeforeEntity */;
2031
+ }
2032
+ };
2033
+ Tokenizer.prototype.stateSpecialStartSequence = function (c) {
2034
+ var isEnd = this.sequenceIndex === this.currentSequence.length;
2035
+ var isMatch = isEnd
2036
+ ? // If we are at the end of the sequence, make sure the tag name has ended
2037
+ isEndOfTagSection(c)
2038
+ : // Otherwise, do a case-insensitive comparison
2039
+ (c | 0x20) === this.currentSequence[this.sequenceIndex];
2040
+ if (!isMatch) {
2041
+ this.isSpecial = false;
2042
+ }
2043
+ else if (!isEnd) {
2044
+ this.sequenceIndex++;
2045
+ return;
2046
+ }
2047
+ this.sequenceIndex = 0;
2048
+ this._state = 3 /* InTagName */;
2049
+ this.stateInTagName(c);
2050
+ };
2051
+ /** Look for an end tag. For <title> tags, also decode entities. */
2052
+ Tokenizer.prototype.stateInSpecialTag = function (c) {
2053
+ if (this.sequenceIndex === this.currentSequence.length) {
2054
+ if (c === 62 /* Gt */ || isWhitespace(c)) {
2055
+ var endOfText = this._index - this.currentSequence.length;
2056
+ if (this.sectionStart < endOfText) {
2057
+ // Spoof the index so that reported locations match up.
2058
+ var actualIndex = this._index;
2059
+ this._index = endOfText;
2060
+ this.cbs.ontext(this.getSection());
2061
+ this._index = actualIndex;
2062
+ }
2063
+ this.isSpecial = false;
2064
+ this.sectionStart = endOfText + 2; // Skip over the `</`
2065
+ this.stateInClosingTagName(c);
2066
+ return; // We are done; skip the rest of the function.
2067
+ }
2068
+ this.sequenceIndex = 0;
2069
+ }
2070
+ if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {
2071
+ this.sequenceIndex += 1;
2072
+ }
2073
+ else if (this.sequenceIndex === 0) {
2074
+ if (this.currentSequence === Sequences.TitleEnd) {
2075
+ // We have to parse entities in <title> tags.
2076
+ if (this.decodeEntities && c === 38 /* Amp */) {
2077
+ this._state = 25 /* BeforeEntity */;
2078
+ }
2079
+ }
2080
+ else if (this.fastForwardTo(60 /* Lt */)) {
2081
+ // Outside of <title> tags, we can fast-forward.
2082
+ this.sequenceIndex = 1;
2083
+ }
2084
+ }
2085
+ else {
2086
+ // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.
2087
+ this.sequenceIndex = Number(c === 60 /* Lt */);
2088
+ }
2089
+ };
2090
+ Tokenizer.prototype.stateCDATASequence = function (c) {
2091
+ if (c === Sequences.Cdata[this.sequenceIndex]) {
2092
+ if (++this.sequenceIndex === Sequences.Cdata.length) {
2093
+ this._state = 21 /* InCommentLike */;
2094
+ this.currentSequence = Sequences.CdataEnd;
2095
+ this.sequenceIndex = 0;
2096
+ this.sectionStart = this._index + 1;
2097
+ }
2098
+ }
2099
+ else {
2100
+ this.sequenceIndex = 0;
2101
+ this._state = 16 /* InDeclaration */;
2102
+ this.stateInDeclaration(c); // Reconsume the character
2103
+ }
2104
+ };
2105
+ /**
2106
+ * When we wait for one specific character, we can speed things up
2107
+ * by skipping through the buffer until we find it.
2108
+ *
2109
+ * @returns Whether the character was found.
2110
+ */
2111
+ Tokenizer.prototype.fastForwardTo = function (c) {
2112
+ while (++this._index < this.buffer.length) {
2113
+ if (this.buffer.charCodeAt(this._index) === c) {
2114
+ return true;
2115
+ }
2116
+ }
2117
+ /*
2118
+ * We increment the index at the end of the `parse` loop,
2119
+ * so set it to `buffer.length - 1` here.
2120
+ *
2121
+ * TODO: Refactor `parse` to increment index before calling states.
2122
+ */
2123
+ this._index = this.buffer.length - 1;
2124
+ return false;
2125
+ };
2126
+ /**
2127
+ * Comments and CDATA end with `-->` and `]]>`.
2128
+ *
2129
+ * Their common qualities are:
2130
+ * - Their end sequences have a distinct character they start with.
2131
+ * - That character is then repeated, so we have to check multiple repeats.
2132
+ * - All characters but the start character of the sequence can be skipped.
2133
+ */
2134
+ Tokenizer.prototype.stateInCommentLike = function (c) {
2135
+ if (c === this.currentSequence[this.sequenceIndex]) {
2136
+ if (++this.sequenceIndex === this.currentSequence.length) {
2137
+ // Remove 2 trailing chars
2138
+ var section = this.buffer.slice(this.sectionStart, this._index - 2);
2139
+ if (this.currentSequence === Sequences.CdataEnd) {
2140
+ this.cbs.oncdata(section);
2141
+ }
2142
+ else {
2143
+ this.cbs.oncomment(section);
2144
+ }
2145
+ this.sequenceIndex = 0;
2146
+ this.sectionStart = this._index + 1;
2147
+ this._state = 1 /* Text */;
2148
+ }
2149
+ }
2150
+ else if (this.sequenceIndex === 0) {
2151
+ // Fast-forward to the first character of the sequence
2152
+ if (this.fastForwardTo(this.currentSequence[0])) {
2153
+ this.sequenceIndex = 1;
2154
+ }
2155
+ }
2156
+ else if (c !== this.currentSequence[this.sequenceIndex - 1]) {
2157
+ // Allow long sequences, eg. --->, ]]]>
2158
+ this.sequenceIndex = 0;
2159
+ }
2160
+ };
2161
+ /**
2162
+ * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
2163
+ *
2164
+ * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
2165
+ * We allow anything that wouldn't end the tag.
2166
+ */
2167
+ Tokenizer.prototype.isTagStartChar = function (c) {
2168
+ return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
2169
+ };
2170
+ Tokenizer.prototype.startSpecial = function (sequence, offset) {
2171
+ this.isSpecial = true;
2172
+ this.currentSequence = sequence;
2173
+ this.sequenceIndex = offset;
2174
+ this._state = 23 /* SpecialStartSequence */;
2175
+ };
2176
+ Tokenizer.prototype.stateBeforeTagName = function (c) {
2177
+ if (c === 33 /* ExclamationMark */) {
2178
+ this._state = 15 /* BeforeDeclaration */;
2179
+ this.sectionStart = this._index + 1;
2180
+ }
2181
+ else if (c === 63 /* Questionmark */) {
2182
+ this._state = 17 /* InProcessingInstruction */;
2183
+ this.sectionStart = this._index + 1;
2184
+ }
2185
+ else if (this.isTagStartChar(c)) {
2186
+ var lower = c | 0x20;
2187
+ this.sectionStart = this._index;
2188
+ if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {
2189
+ this.startSpecial(Sequences.TitleEnd, 3);
2190
+ }
2191
+ else {
2192
+ this._state =
2193
+ !this.xmlMode && lower === Sequences.ScriptEnd[2]
2194
+ ? 22 /* BeforeSpecialS */
2195
+ : 3 /* InTagName */;
2196
+ }
2197
+ }
2198
+ else if (c === 47 /* Slash */) {
2199
+ this._state = 5 /* BeforeClosingTagName */;
2200
+ }
2201
+ else {
2202
+ this._state = 1 /* Text */;
2203
+ this.stateText(c);
2204
+ }
2205
+ };
2206
+ Tokenizer.prototype.stateInTagName = function (c) {
2207
+ if (isEndOfTagSection(c)) {
2208
+ this.cbs.onopentagname(this.getSection());
2209
+ this.sectionStart = -1;
2210
+ this._state = 8 /* BeforeAttributeName */;
2211
+ this.stateBeforeAttributeName(c);
2212
+ }
2213
+ };
2214
+ Tokenizer.prototype.stateBeforeClosingTagName = function (c) {
2215
+ if (isWhitespace(c)) ;
2216
+ else if (c === 62 /* Gt */) {
2217
+ this._state = 1 /* Text */;
2218
+ }
2219
+ else {
2220
+ this._state = this.isTagStartChar(c)
2221
+ ? 6 /* InClosingTagName */
2222
+ : 20 /* InSpecialComment */;
2223
+ this.sectionStart = this._index;
2224
+ }
2225
+ };
2226
+ Tokenizer.prototype.stateInClosingTagName = function (c) {
2227
+ if (c === 62 /* Gt */ || isWhitespace(c)) {
2228
+ this.cbs.onclosetag(this.getSection());
2229
+ this.sectionStart = -1;
2230
+ this._state = 7 /* AfterClosingTagName */;
2231
+ this.stateAfterClosingTagName(c);
2232
+ }
2233
+ };
2234
+ Tokenizer.prototype.stateAfterClosingTagName = function (c) {
2235
+ // Skip everything until ">"
2236
+ if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {
2237
+ this._state = 1 /* Text */;
2238
+ this.sectionStart = this._index + 1;
2239
+ }
2240
+ };
2241
+ Tokenizer.prototype.stateBeforeAttributeName = function (c) {
2242
+ if (c === 62 /* Gt */) {
2243
+ this.cbs.onopentagend();
2244
+ if (this.isSpecial) {
2245
+ this._state = 24 /* InSpecialTag */;
2246
+ this.sequenceIndex = 0;
2247
+ }
2248
+ else {
2249
+ this._state = 1 /* Text */;
2250
+ }
2251
+ this.baseState = this._state;
2252
+ this.sectionStart = this._index + 1;
2253
+ }
2254
+ else if (c === 47 /* Slash */) {
2255
+ this._state = 4 /* InSelfClosingTag */;
2256
+ }
2257
+ else if (!isWhitespace(c)) {
2258
+ this._state = 9 /* InAttributeName */;
2259
+ this.sectionStart = this._index;
2260
+ }
2261
+ };
2262
+ Tokenizer.prototype.stateInSelfClosingTag = function (c) {
2263
+ if (c === 62 /* Gt */) {
2264
+ this.cbs.onselfclosingtag();
2265
+ this._state = 1 /* Text */;
2266
+ this.baseState = 1 /* Text */;
2267
+ this.sectionStart = this._index + 1;
2268
+ this.isSpecial = false; // Reset special state, in case of self-closing special tags
2269
+ }
2270
+ else if (!isWhitespace(c)) {
2271
+ this._state = 8 /* BeforeAttributeName */;
2272
+ this.stateBeforeAttributeName(c);
2273
+ }
2274
+ };
2275
+ Tokenizer.prototype.stateInAttributeName = function (c) {
2276
+ if (c === 61 /* Eq */ || isEndOfTagSection(c)) {
2277
+ this.cbs.onattribname(this.getSection());
2278
+ this.sectionStart = -1;
2279
+ this._state = 10 /* AfterAttributeName */;
2280
+ this.stateAfterAttributeName(c);
2281
+ }
2282
+ };
2283
+ Tokenizer.prototype.stateAfterAttributeName = function (c) {
2284
+ if (c === 61 /* Eq */) {
2285
+ this._state = 11 /* BeforeAttributeValue */;
2286
+ }
2287
+ else if (c === 47 /* Slash */ || c === 62 /* Gt */) {
2288
+ this.cbs.onattribend(undefined);
2289
+ this._state = 8 /* BeforeAttributeName */;
2290
+ this.stateBeforeAttributeName(c);
2291
+ }
2292
+ else if (!isWhitespace(c)) {
2293
+ this.cbs.onattribend(undefined);
2294
+ this._state = 9 /* InAttributeName */;
2295
+ this.sectionStart = this._index;
2296
+ }
2297
+ };
2298
+ Tokenizer.prototype.stateBeforeAttributeValue = function (c) {
2299
+ if (c === 34 /* DoubleQuote */) {
2300
+ this._state = 12 /* InAttributeValueDq */;
2301
+ this.sectionStart = this._index + 1;
2302
+ }
2303
+ else if (c === 39 /* SingleQuote */) {
2304
+ this._state = 13 /* InAttributeValueSq */;
2305
+ this.sectionStart = this._index + 1;
2306
+ }
2307
+ else if (!isWhitespace(c)) {
2308
+ this.sectionStart = this._index;
2309
+ this._state = 14 /* InAttributeValueNq */;
2310
+ this.stateInAttributeValueNoQuotes(c); // Reconsume token
2311
+ }
2312
+ };
2313
+ Tokenizer.prototype.handleInAttributeValue = function (c, quote) {
2314
+ if (c === quote ||
2315
+ (!this.decodeEntities && this.fastForwardTo(quote))) {
2316
+ this.cbs.onattribdata(this.getSection());
2317
+ this.sectionStart = -1;
2318
+ this.cbs.onattribend(String.fromCharCode(quote));
2319
+ this._state = 8 /* BeforeAttributeName */;
2320
+ }
2321
+ else if (this.decodeEntities && c === 38 /* Amp */) {
2322
+ this.baseState = this._state;
2323
+ this._state = 25 /* BeforeEntity */;
2324
+ }
2325
+ };
2326
+ Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {
2327
+ this.handleInAttributeValue(c, 34 /* DoubleQuote */);
2328
+ };
2329
+ Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {
2330
+ this.handleInAttributeValue(c, 39 /* SingleQuote */);
2331
+ };
2332
+ Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {
2333
+ if (isWhitespace(c) || c === 62 /* Gt */) {
2334
+ this.cbs.onattribdata(this.getSection());
2335
+ this.sectionStart = -1;
2336
+ this.cbs.onattribend(null);
2337
+ this._state = 8 /* BeforeAttributeName */;
2338
+ this.stateBeforeAttributeName(c);
2339
+ }
2340
+ else if (this.decodeEntities && c === 38 /* Amp */) {
2341
+ this.baseState = this._state;
2342
+ this._state = 25 /* BeforeEntity */;
2343
+ }
2344
+ };
2345
+ Tokenizer.prototype.stateBeforeDeclaration = function (c) {
2346
+ if (c === 91 /* OpeningSquareBracket */) {
2347
+ this._state = 19 /* CDATASequence */;
2348
+ this.sequenceIndex = 0;
2349
+ }
2350
+ else {
2351
+ this._state =
2352
+ c === 45 /* Dash */
2353
+ ? 18 /* BeforeComment */
2354
+ : 16 /* InDeclaration */;
2355
+ }
2356
+ };
2357
+ Tokenizer.prototype.stateInDeclaration = function (c) {
2358
+ if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {
2359
+ this.cbs.ondeclaration(this.getSection());
2360
+ this._state = 1 /* Text */;
2361
+ this.sectionStart = this._index + 1;
2362
+ }
2363
+ };
2364
+ Tokenizer.prototype.stateInProcessingInstruction = function (c) {
2365
+ if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {
2366
+ this.cbs.onprocessinginstruction(this.getSection());
2367
+ this._state = 1 /* Text */;
2368
+ this.sectionStart = this._index + 1;
2369
+ }
2370
+ };
2371
+ Tokenizer.prototype.stateBeforeComment = function (c) {
2372
+ if (c === 45 /* Dash */) {
2373
+ this._state = 21 /* InCommentLike */;
2374
+ this.currentSequence = Sequences.CommentEnd;
2375
+ // Allow short comments (eg. <!-->)
2376
+ this.sequenceIndex = 2;
2377
+ this.sectionStart = this._index + 1;
2378
+ }
2379
+ else {
2380
+ this._state = 16 /* InDeclaration */;
2381
+ }
2382
+ };
2383
+ Tokenizer.prototype.stateInSpecialComment = function (c) {
2384
+ if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {
2385
+ this.cbs.oncomment(this.getSection());
2386
+ this._state = 1 /* Text */;
2387
+ this.sectionStart = this._index + 1;
2388
+ }
2389
+ };
2390
+ Tokenizer.prototype.stateBeforeSpecialS = function (c) {
2391
+ var lower = c | 0x20;
2392
+ if (lower === Sequences.ScriptEnd[3]) {
2393
+ this.startSpecial(Sequences.ScriptEnd, 4);
2394
+ }
2395
+ else if (lower === Sequences.StyleEnd[3]) {
2396
+ this.startSpecial(Sequences.StyleEnd, 4);
2397
+ }
2398
+ else {
2399
+ this._state = 3 /* InTagName */;
2400
+ this.stateInTagName(c); // Consume the token again
2401
+ }
2402
+ };
2403
+ Tokenizer.prototype.stateBeforeEntity = function (c) {
2404
+ // Start excess with 1 to include the '&'
2405
+ this.entityExcess = 1;
2406
+ if (c === 35 /* Num */) {
2407
+ this._state = 26 /* BeforeNumericEntity */;
2408
+ }
2409
+ else if (c === 38 /* Amp */) ;
2410
+ else {
2411
+ this.trieIndex = 0;
2412
+ this.trieCurrent = this.entityTrie[0];
2413
+ this.trieResult = null;
2414
+ this._state = 27 /* InNamedEntity */;
2415
+ this.stateInNamedEntity(c);
2416
+ }
2417
+ };
2418
+ Tokenizer.prototype.stateInNamedEntity = function (c) {
2419
+ this.entityExcess += 1;
2420
+ this.trieIndex = (0, decode_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);
2421
+ if (this.trieIndex < 0) {
2422
+ this.emitNamedEntity();
2423
+ this._index--;
2424
+ return;
2425
+ }
2426
+ this.trieCurrent = this.entityTrie[this.trieIndex];
2427
+ // If the branch is a value, store it and continue
2428
+ if (this.trieCurrent & decode_1.BinTrieFlags.HAS_VALUE) {
2429
+ // If we have a legacy entity while parsing strictly, just skip the number of bytes
2430
+ if (!this.allowLegacyEntity() && c !== 59 /* Semi */) {
2431
+ // No need to consider multi-byte values, as the legacy entity is always a single byte
2432
+ this.trieIndex += 1;
2433
+ }
2434
+ else {
2435
+ // Add 1 as we have already incremented the excess
2436
+ var entityStart = this._index - this.entityExcess + 1;
2437
+ if (entityStart > this.sectionStart) {
2438
+ this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));
2439
+ }
2440
+ // If this is a surrogate pair, combine the higher bits from the node with the next byte
2441
+ this.trieResult =
2442
+ this.trieCurrent & decode_1.BinTrieFlags.MULTI_BYTE
2443
+ ? String.fromCharCode(this.entityTrie[++this.trieIndex], this.entityTrie[++this.trieIndex])
2444
+ : String.fromCharCode(this.entityTrie[++this.trieIndex]);
2445
+ this.entityExcess = 0;
2446
+ this.sectionStart = this._index + 1;
2447
+ }
2448
+ }
2449
+ };
2450
+ Tokenizer.prototype.emitNamedEntity = function () {
2451
+ if (this.trieResult) {
2452
+ this.emitPartial(this.trieResult);
2453
+ }
2454
+ this._state = this.baseState;
2455
+ };
2456
+ Tokenizer.prototype.stateBeforeNumericEntity = function (c) {
2457
+ if ((c | 0x20) === 120 /* LowerX */) {
2458
+ this.entityExcess++;
2459
+ this._state = 29 /* InHexEntity */;
2460
+ }
2461
+ else {
2462
+ this._state = 28 /* InNumericEntity */;
2463
+ this.stateInNumericEntity(c);
2464
+ }
2465
+ };
2466
+ Tokenizer.prototype.decodeNumericEntity = function (base, strict) {
2467
+ var entityStart = this._index - this.entityExcess - 1;
2468
+ var numberStart = entityStart + 2 + (base >> 4);
2469
+ if (numberStart !== this._index) {
2470
+ // Emit leading data if any
2471
+ if (entityStart > this.sectionStart) {
2472
+ this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));
2473
+ }
2474
+ // Parse entity
2475
+ var entity = this.buffer.substring(numberStart, this._index);
2476
+ var parsed = parseInt(entity, base);
2477
+ this.emitPartial((0, decode_codepoint_1.default)(parsed));
2478
+ this.sectionStart = this._index + Number(strict);
2479
+ }
2480
+ this._state = this.baseState;
2481
+ };
2482
+ Tokenizer.prototype.stateInNumericEntity = function (c) {
2483
+ if (c === 59 /* Semi */) {
2484
+ this.decodeNumericEntity(10, true);
2485
+ }
2486
+ else if (!isNumber(c)) {
2487
+ if (this.allowLegacyEntity()) {
2488
+ this.decodeNumericEntity(10, false);
2489
+ }
2490
+ else {
2491
+ this._state = this.baseState;
2492
+ }
2493
+ this._index--;
2494
+ }
2495
+ else {
2496
+ this.entityExcess++;
2497
+ }
2498
+ };
2499
+ Tokenizer.prototype.stateInHexEntity = function (c) {
2500
+ if (c === 59 /* Semi */) {
2501
+ this.decodeNumericEntity(16, true);
2502
+ }
2503
+ else if ((c < 97 /* LowerA */ || c > 102 /* LowerF */) &&
2504
+ (c < 65 /* UpperA */ || c > 70 /* UpperF */) &&
2505
+ !isNumber(c)) {
2506
+ if (this.allowLegacyEntity()) {
2507
+ this.decodeNumericEntity(16, false);
2508
+ }
2509
+ else {
2510
+ this._state = this.baseState;
2511
+ }
2512
+ this._index--;
2513
+ }
2514
+ else {
2515
+ this.entityExcess++;
2516
+ }
2517
+ };
2518
+ Tokenizer.prototype.allowLegacyEntity = function () {
2519
+ return (!this.xmlMode &&
2520
+ (this.baseState === 1 /* Text */ ||
2521
+ this.baseState === 24 /* InSpecialTag */));
2522
+ };
2523
+ /**
2524
+ * Remove data that has already been consumed from the buffer.
2525
+ */
2526
+ Tokenizer.prototype.cleanup = function () {
2527
+ // If we are inside of text, emit what we already have.
2528
+ if (this.running &&
2529
+ this.sectionStart !== this._index &&
2530
+ (this._state === 1 /* Text */ ||
2531
+ (this._state === 24 /* InSpecialTag */ &&
2532
+ this.sequenceIndex === 0))) {
2533
+ // TODO: We could emit attribute data here as well.
2534
+ this.cbs.ontext(this.buffer.substr(this.sectionStart));
2535
+ this.sectionStart = this._index;
2536
+ }
2537
+ var start = this.sectionStart < 0 ? this._index : this.sectionStart;
2538
+ this.buffer =
2539
+ start === this.buffer.length ? "" : this.buffer.substr(start);
2540
+ this._index -= start;
2541
+ this.bufferOffset += start;
2542
+ if (this.sectionStart > 0) {
2543
+ this.sectionStart = 0;
2544
+ }
2545
+ };
2546
+ Tokenizer.prototype.shouldContinue = function () {
2547
+ return this._index < this.buffer.length && this.running;
2548
+ };
2549
+ /**
2550
+ * Iterates through the buffer, calling the function corresponding to the current state.
2551
+ *
2552
+ * States that are more likely to be hit are higher up, as a performance improvement.
2553
+ */
2554
+ Tokenizer.prototype.parse = function () {
2555
+ while (this.shouldContinue()) {
2556
+ var c = this.buffer.charCodeAt(this._index);
2557
+ if (this._state === 1 /* Text */) {
2558
+ this.stateText(c);
2559
+ }
2560
+ else if (this._state === 23 /* SpecialStartSequence */) {
2561
+ this.stateSpecialStartSequence(c);
2562
+ }
2563
+ else if (this._state === 24 /* InSpecialTag */) {
2564
+ this.stateInSpecialTag(c);
2565
+ }
2566
+ else if (this._state === 19 /* CDATASequence */) {
2567
+ this.stateCDATASequence(c);
2568
+ }
2569
+ else if (this._state === 12 /* InAttributeValueDq */) {
2570
+ this.stateInAttributeValueDoubleQuotes(c);
2571
+ }
2572
+ else if (this._state === 9 /* InAttributeName */) {
2573
+ this.stateInAttributeName(c);
2574
+ }
2575
+ else if (this._state === 21 /* InCommentLike */) {
2576
+ this.stateInCommentLike(c);
2577
+ }
2578
+ else if (this._state === 20 /* InSpecialComment */) {
2579
+ this.stateInSpecialComment(c);
2580
+ }
2581
+ else if (this._state === 8 /* BeforeAttributeName */) {
2582
+ this.stateBeforeAttributeName(c);
2583
+ }
2584
+ else if (this._state === 3 /* InTagName */) {
2585
+ this.stateInTagName(c);
2586
+ }
2587
+ else if (this._state === 6 /* InClosingTagName */) {
2588
+ this.stateInClosingTagName(c);
2589
+ }
2590
+ else if (this._state === 2 /* BeforeTagName */) {
2591
+ this.stateBeforeTagName(c);
2592
+ }
2593
+ else if (this._state === 10 /* AfterAttributeName */) {
2594
+ this.stateAfterAttributeName(c);
2595
+ }
2596
+ else if (this._state === 13 /* InAttributeValueSq */) {
2597
+ this.stateInAttributeValueSingleQuotes(c);
2598
+ }
2599
+ else if (this._state === 11 /* BeforeAttributeValue */) {
2600
+ this.stateBeforeAttributeValue(c);
2601
+ }
2602
+ else if (this._state === 5 /* BeforeClosingTagName */) {
2603
+ this.stateBeforeClosingTagName(c);
2604
+ }
2605
+ else if (this._state === 7 /* AfterClosingTagName */) {
2606
+ this.stateAfterClosingTagName(c);
2607
+ }
2608
+ else if (this._state === 22 /* BeforeSpecialS */) {
2609
+ this.stateBeforeSpecialS(c);
2610
+ }
2611
+ else if (this._state === 14 /* InAttributeValueNq */) {
2612
+ this.stateInAttributeValueNoQuotes(c);
2613
+ }
2614
+ else if (this._state === 4 /* InSelfClosingTag */) {
2615
+ this.stateInSelfClosingTag(c);
2616
+ }
2617
+ else if (this._state === 16 /* InDeclaration */) {
2618
+ this.stateInDeclaration(c);
2619
+ }
2620
+ else if (this._state === 15 /* BeforeDeclaration */) {
2621
+ this.stateBeforeDeclaration(c);
2622
+ }
2623
+ else if (this._state === 18 /* BeforeComment */) {
2624
+ this.stateBeforeComment(c);
2625
+ }
2626
+ else if (this._state === 17 /* InProcessingInstruction */) {
2627
+ this.stateInProcessingInstruction(c);
2628
+ }
2629
+ else if (this._state === 27 /* InNamedEntity */) {
2630
+ this.stateInNamedEntity(c);
2631
+ }
2632
+ else if (this._state === 25 /* BeforeEntity */) {
2633
+ this.stateBeforeEntity(c);
2634
+ }
2635
+ else if (this._state === 29 /* InHexEntity */) {
2636
+ this.stateInHexEntity(c);
2637
+ }
2638
+ else if (this._state === 28 /* InNumericEntity */) {
2639
+ this.stateInNumericEntity(c);
2640
+ }
2641
+ else {
2642
+ // `this._state === State.BeforeNumericEntity`
2643
+ this.stateBeforeNumericEntity(c);
2644
+ }
2645
+ this._index++;
2646
+ }
2647
+ this.cleanup();
2648
+ };
2649
+ Tokenizer.prototype.finish = function () {
2650
+ if (this._state === 27 /* InNamedEntity */) {
2651
+ this.emitNamedEntity();
2652
+ }
2653
+ // If there is remaining data, emit it in a reasonable way
2654
+ if (this.sectionStart < this._index) {
2655
+ this.handleTrailingData();
2656
+ }
2657
+ this.cbs.onend();
2658
+ };
2659
+ /** Handle any trailing data. */
2660
+ Tokenizer.prototype.handleTrailingData = function () {
2661
+ var data = this.buffer.substr(this.sectionStart);
2662
+ if (this._state === 21 /* InCommentLike */) {
2663
+ if (this.currentSequence === Sequences.CdataEnd) {
2664
+ this.cbs.oncdata(data);
2665
+ }
2666
+ else {
2667
+ this.cbs.oncomment(data);
2668
+ }
2669
+ }
2670
+ else if (this._state === 28 /* InNumericEntity */ &&
2671
+ this.allowLegacyEntity()) {
2672
+ this.decodeNumericEntity(10, false);
2673
+ // All trailing data will have been consumed
2674
+ }
2675
+ else if (this._state === 29 /* InHexEntity */ &&
2676
+ this.allowLegacyEntity()) {
2677
+ this.decodeNumericEntity(16, false);
2678
+ // All trailing data will have been consumed
2679
+ }
2680
+ else if (this._state === 3 /* InTagName */ ||
2681
+ this._state === 8 /* BeforeAttributeName */ ||
2682
+ this._state === 11 /* BeforeAttributeValue */ ||
2683
+ this._state === 10 /* AfterAttributeName */ ||
2684
+ this._state === 9 /* InAttributeName */ ||
2685
+ this._state === 13 /* InAttributeValueSq */ ||
2686
+ this._state === 12 /* InAttributeValueDq */ ||
2687
+ this._state === 14 /* InAttributeValueNq */ ||
2688
+ this._state === 6 /* InClosingTagName */) ;
2689
+ else {
2690
+ this.cbs.ontext(data);
2691
+ }
2692
+ };
2693
+ Tokenizer.prototype.getSection = function () {
2694
+ return this.buffer.substring(this.sectionStart, this._index);
2695
+ };
2696
+ Tokenizer.prototype.emitPartial = function (value) {
2697
+ if (this.baseState !== 1 /* Text */ &&
2698
+ this.baseState !== 24 /* InSpecialTag */) {
2699
+ this.cbs.onattribdata(value);
2700
+ }
2701
+ else {
2702
+ this.cbs.ontext(value);
2703
+ }
2704
+ };
2705
+ return Tokenizer;
2706
+ }());
2707
+ var _default$1 = Tokenizer;
2708
+
2709
+ var Tokenizer_1 = /*#__PURE__*/Object.defineProperty({
2710
+ default: _default$1
2711
+ }, '__esModule', {value: true});
2712
+
2713
+ var require$$0$1 = Tokenizer_1;
2714
+
2715
+ var Parser_1 = createCommonjsModule(function (module, exports) {
2716
+ var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
2717
+ return (mod && mod.__esModule) ? mod : { "default": mod };
2718
+ };
2719
+ Object.defineProperty(exports, "__esModule", { value: true });
2720
+ exports.Parser = void 0;
2721
+ var Tokenizer_1 = __importDefault(require$$0$1);
2722
+ var formTags = new Set([
2723
+ "input",
2724
+ "option",
2725
+ "optgroup",
2726
+ "select",
2727
+ "button",
2728
+ "datalist",
2729
+ "textarea",
2730
+ ]);
2731
+ var pTag = new Set(["p"]);
2732
+ var tableSectionTags = new Set(["thead", "tbody"]);
2733
+ var ddtTags = new Set(["dd", "dt"]);
2734
+ var rtpTags = new Set(["rt", "rp"]);
2735
+ var openImpliesClose = new Map([
2736
+ ["tr", new Set(["tr", "th", "td"])],
2737
+ ["th", new Set(["th"])],
2738
+ ["td", new Set(["thead", "th", "td"])],
2739
+ ["body", new Set(["head", "link", "script"])],
2740
+ ["li", new Set(["li"])],
2741
+ ["p", pTag],
2742
+ ["h1", pTag],
2743
+ ["h2", pTag],
2744
+ ["h3", pTag],
2745
+ ["h4", pTag],
2746
+ ["h5", pTag],
2747
+ ["h6", pTag],
2748
+ ["select", formTags],
2749
+ ["input", formTags],
2750
+ ["output", formTags],
2751
+ ["button", formTags],
2752
+ ["datalist", formTags],
2753
+ ["textarea", formTags],
2754
+ ["option", new Set(["option"])],
2755
+ ["optgroup", new Set(["optgroup", "option"])],
2756
+ ["dd", ddtTags],
2757
+ ["dt", ddtTags],
2758
+ ["address", pTag],
2759
+ ["article", pTag],
2760
+ ["aside", pTag],
2761
+ ["blockquote", pTag],
2762
+ ["details", pTag],
2763
+ ["div", pTag],
2764
+ ["dl", pTag],
2765
+ ["fieldset", pTag],
2766
+ ["figcaption", pTag],
2767
+ ["figure", pTag],
2768
+ ["footer", pTag],
2769
+ ["form", pTag],
2770
+ ["header", pTag],
2771
+ ["hr", pTag],
2772
+ ["main", pTag],
2773
+ ["nav", pTag],
2774
+ ["ol", pTag],
2775
+ ["pre", pTag],
2776
+ ["section", pTag],
2777
+ ["table", pTag],
2778
+ ["ul", pTag],
2779
+ ["rt", rtpTags],
2780
+ ["rp", rtpTags],
2781
+ ["tbody", tableSectionTags],
2782
+ ["tfoot", tableSectionTags],
2783
+ ]);
2784
+ var voidElements = new Set([
2785
+ "area",
2786
+ "base",
2787
+ "basefont",
2788
+ "br",
2789
+ "col",
2790
+ "command",
2791
+ "embed",
2792
+ "frame",
2793
+ "hr",
2794
+ "img",
2795
+ "input",
2796
+ "isindex",
2797
+ "keygen",
2798
+ "link",
2799
+ "meta",
2800
+ "param",
2801
+ "source",
2802
+ "track",
2803
+ "wbr",
2804
+ ]);
2805
+ var foreignContextElements = new Set(["math", "svg"]);
2806
+ var htmlIntegrationElements = new Set([
2807
+ "mi",
2808
+ "mo",
2809
+ "mn",
2810
+ "ms",
2811
+ "mtext",
2812
+ "annotation-xml",
2813
+ "foreignobject",
2814
+ "desc",
2815
+ "title",
2816
+ ]);
2817
+ var reNameEnd = /\s|\//;
2818
+ var Parser = /** @class */ (function () {
2819
+ function Parser(cbs, options) {
2820
+ if (options === void 0) { options = {}; }
2821
+ var _a, _b, _c, _d, _e;
2822
+ this.options = options;
2823
+ /** The start index of the last event. */
2824
+ this.startIndex = 0;
2825
+ /** The end index of the last event. */
2826
+ this.endIndex = 0;
2827
+ /**
2828
+ * Store the start index of the current open tag,
2829
+ * so we can update the start index for attributes.
2830
+ */
2831
+ this.openTagStart = 0;
2832
+ this.tagname = "";
2833
+ this.attribname = "";
2834
+ this.attribvalue = "";
2835
+ this.attribs = null;
2836
+ this.stack = [];
2837
+ this.foreignContext = [];
2838
+ this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
2839
+ this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;
2840
+ this.lowerCaseAttributeNames =
2841
+ (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;
2842
+ this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_1.default)(this.options, this);
2843
+ (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);
2844
+ }
2845
+ // Tokenizer event handlers
2846
+ /** @internal */
2847
+ Parser.prototype.ontext = function (data) {
2848
+ var _a, _b;
2849
+ var idx = this.tokenizer.getAbsoluteIndex();
2850
+ this.endIndex = idx - 1;
2851
+ (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);
2852
+ this.startIndex = idx;
2853
+ };
2854
+ Parser.prototype.isVoidElement = function (name) {
2855
+ return !this.options.xmlMode && voidElements.has(name);
2856
+ };
2857
+ /** @internal */
2858
+ Parser.prototype.onopentagname = function (name) {
2859
+ this.endIndex = this.tokenizer.getAbsoluteIndex();
2860
+ if (this.lowerCaseTagNames) {
2861
+ name = name.toLowerCase();
2862
+ }
2863
+ this.emitOpenTag(name);
2864
+ };
2865
+ Parser.prototype.emitOpenTag = function (name) {
2866
+ var _a, _b, _c, _d;
2867
+ this.openTagStart = this.startIndex;
2868
+ this.tagname = name;
2869
+ var impliesClose = !this.options.xmlMode && openImpliesClose.get(name);
2870
+ if (impliesClose) {
2871
+ while (this.stack.length > 0 &&
2872
+ impliesClose.has(this.stack[this.stack.length - 1])) {
2873
+ var el = this.stack.pop();
2874
+ (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, el, true);
2875
+ }
2876
+ }
2877
+ if (!this.isVoidElement(name)) {
2878
+ this.stack.push(name);
2879
+ if (foreignContextElements.has(name)) {
2880
+ this.foreignContext.push(true);
2881
+ }
2882
+ else if (htmlIntegrationElements.has(name)) {
2883
+ this.foreignContext.push(false);
2884
+ }
2885
+ }
2886
+ (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);
2887
+ if (this.cbs.onopentag)
2888
+ this.attribs = {};
2889
+ };
2890
+ Parser.prototype.endOpenTag = function (isImplied) {
2891
+ var _a, _b;
2892
+ this.startIndex = this.openTagStart;
2893
+ this.endIndex = this.tokenizer.getAbsoluteIndex();
2894
+ if (this.attribs) {
2895
+ (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);
2896
+ this.attribs = null;
2897
+ }
2898
+ if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {
2899
+ this.cbs.onclosetag(this.tagname, true);
2900
+ }
2901
+ this.tagname = "";
2902
+ };
2903
+ /** @internal */
2904
+ Parser.prototype.onopentagend = function () {
2905
+ this.endOpenTag(false);
2906
+ // Set `startIndex` for next node
2907
+ this.startIndex = this.endIndex + 1;
2908
+ };
2909
+ /** @internal */
2910
+ Parser.prototype.onclosetag = function (name) {
2911
+ var _a, _b, _c, _d, _e, _f;
2912
+ this.endIndex = this.tokenizer.getAbsoluteIndex();
2913
+ if (this.lowerCaseTagNames) {
2914
+ name = name.toLowerCase();
2915
+ }
2916
+ if (foreignContextElements.has(name) ||
2917
+ htmlIntegrationElements.has(name)) {
2918
+ this.foreignContext.pop();
2919
+ }
2920
+ if (!this.isVoidElement(name)) {
2921
+ var pos = this.stack.lastIndexOf(name);
2922
+ if (pos !== -1) {
2923
+ if (this.cbs.onclosetag) {
2924
+ var count = this.stack.length - pos;
2925
+ while (count--) {
2926
+ // We know the stack has sufficient elements.
2927
+ this.cbs.onclosetag(this.stack.pop(), count !== 0);
2928
+ }
2929
+ }
2930
+ else
2931
+ this.stack.length = pos;
2932
+ }
2933
+ else if (!this.options.xmlMode && name === "p") {
2934
+ this.emitOpenTag(name);
2935
+ this.closeCurrentTag(true);
2936
+ }
2937
+ }
2938
+ else if (!this.options.xmlMode && name === "br") {
2939
+ // We can't go through `emitOpenTag` here, as `br` would be implicitly closed.
2940
+ (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, name);
2941
+ (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, name, {}, true);
2942
+ (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, name, false);
2943
+ }
2944
+ // Set `startIndex` for next node
2945
+ this.startIndex = this.endIndex + 1;
2946
+ };
2947
+ /** @internal */
2948
+ Parser.prototype.onselfclosingtag = function () {
2949
+ if (this.options.xmlMode ||
2950
+ this.options.recognizeSelfClosing ||
2951
+ this.foreignContext[this.foreignContext.length - 1]) {
2952
+ this.closeCurrentTag(false);
2953
+ // Set `startIndex` for next node
2954
+ this.startIndex = this.endIndex + 1;
2955
+ }
2956
+ else {
2957
+ // Ignore the fact that the tag is self-closing.
2958
+ this.onopentagend();
2959
+ }
2960
+ };
2961
+ Parser.prototype.closeCurrentTag = function (isOpenImplied) {
2962
+ var _a, _b;
2963
+ var name = this.tagname;
2964
+ this.endOpenTag(isOpenImplied);
2965
+ // Self-closing tags will be on the top of the stack
2966
+ if (this.stack[this.stack.length - 1] === name) {
2967
+ // If the opening tag isn't implied, the closing tag has to be implied.
2968
+ (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);
2969
+ this.stack.pop();
2970
+ }
2971
+ };
2972
+ /** @internal */
2973
+ Parser.prototype.onattribname = function (name) {
2974
+ this.startIndex = this.tokenizer.getAbsoluteSectionStart();
2975
+ if (this.lowerCaseAttributeNames) {
2976
+ name = name.toLowerCase();
2977
+ }
2978
+ this.attribname = name;
2979
+ };
2980
+ /** @internal */
2981
+ Parser.prototype.onattribdata = function (value) {
2982
+ this.attribvalue += value;
2983
+ };
2984
+ /** @internal */
2985
+ Parser.prototype.onattribend = function (quote) {
2986
+ var _a, _b;
2987
+ this.endIndex = this.tokenizer.getAbsoluteIndex();
2988
+ (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote);
2989
+ if (this.attribs &&
2990
+ !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
2991
+ this.attribs[this.attribname] = this.attribvalue;
2992
+ }
2993
+ this.attribname = "";
2994
+ this.attribvalue = "";
2995
+ };
2996
+ Parser.prototype.getInstructionName = function (value) {
2997
+ var idx = value.search(reNameEnd);
2998
+ var name = idx < 0 ? value : value.substr(0, idx);
2999
+ if (this.lowerCaseTagNames) {
3000
+ name = name.toLowerCase();
3001
+ }
3002
+ return name;
3003
+ };
3004
+ /** @internal */
3005
+ Parser.prototype.ondeclaration = function (value) {
3006
+ this.endIndex = this.tokenizer.getAbsoluteIndex();
3007
+ if (this.cbs.onprocessinginstruction) {
3008
+ var name_1 = this.getInstructionName(value);
3009
+ this.cbs.onprocessinginstruction("!" + name_1, "!" + value);
3010
+ }
3011
+ // Set `startIndex` for next node
3012
+ this.startIndex = this.endIndex + 1;
3013
+ };
3014
+ /** @internal */
3015
+ Parser.prototype.onprocessinginstruction = function (value) {
3016
+ this.endIndex = this.tokenizer.getAbsoluteIndex();
3017
+ if (this.cbs.onprocessinginstruction) {
3018
+ var name_2 = this.getInstructionName(value);
3019
+ this.cbs.onprocessinginstruction("?" + name_2, "?" + value);
3020
+ }
3021
+ // Set `startIndex` for next node
3022
+ this.startIndex = this.endIndex + 1;
3023
+ };
3024
+ /** @internal */
3025
+ Parser.prototype.oncomment = function (value) {
3026
+ var _a, _b, _c, _d;
3027
+ this.endIndex = this.tokenizer.getAbsoluteIndex();
3028
+ (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, value);
3029
+ (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
3030
+ // Set `startIndex` for next node
3031
+ this.startIndex = this.endIndex + 1;
3032
+ };
3033
+ /** @internal */
3034
+ Parser.prototype.oncdata = function (value) {
3035
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
3036
+ this.endIndex = this.tokenizer.getAbsoluteIndex();
3037
+ if (this.options.xmlMode || this.options.recognizeCDATA) {
3038
+ (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);
3039
+ (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
3040
+ (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
3041
+ }
3042
+ else {
3043
+ (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, "[CDATA[" + value + "]]");
3044
+ (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
3045
+ }
3046
+ // Set `startIndex` for next node
3047
+ this.startIndex = this.endIndex + 1;
3048
+ };
3049
+ /** @internal */
3050
+ Parser.prototype.onerror = function (err) {
3051
+ var _a, _b;
3052
+ (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, err);
3053
+ };
3054
+ /** @internal */
3055
+ Parser.prototype.onend = function () {
3056
+ var _a, _b;
3057
+ if (this.cbs.onclosetag) {
3058
+ // Set the end index for all remaining tags
3059
+ this.endIndex = this.startIndex;
3060
+ for (var i = this.stack.length; i > 0; this.cbs.onclosetag(this.stack[--i], true))
3061
+ ;
3062
+ }
3063
+ (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);
3064
+ };
3065
+ /**
3066
+ * Resets the parser to a blank state, ready to parse a new HTML document
3067
+ */
3068
+ Parser.prototype.reset = function () {
3069
+ var _a, _b, _c, _d;
3070
+ (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);
3071
+ this.tokenizer.reset();
3072
+ this.tagname = "";
3073
+ this.attribname = "";
3074
+ this.attribs = null;
3075
+ this.stack = [];
3076
+ this.startIndex = 0;
3077
+ this.endIndex = 0;
3078
+ (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
3079
+ };
3080
+ /**
3081
+ * Resets the parser, then parses a complete document and
3082
+ * pushes it to the handler.
3083
+ *
3084
+ * @param data Document to parse.
3085
+ */
3086
+ Parser.prototype.parseComplete = function (data) {
3087
+ this.reset();
3088
+ this.end(data);
3089
+ };
3090
+ /**
3091
+ * Parses a chunk of data and calls the corresponding callbacks.
3092
+ *
3093
+ * @param chunk Chunk to parse.
3094
+ */
3095
+ Parser.prototype.write = function (chunk) {
3096
+ this.tokenizer.write(chunk);
3097
+ };
3098
+ /**
3099
+ * Parses the end of the buffer and clears the stack, calls onend.
3100
+ *
3101
+ * @param chunk Optional final chunk to parse.
3102
+ */
3103
+ Parser.prototype.end = function (chunk) {
3104
+ this.tokenizer.end(chunk);
3105
+ };
3106
+ /**
3107
+ * Pauses parsing. The parser won't emit events until `resume` is called.
3108
+ */
3109
+ Parser.prototype.pause = function () {
3110
+ this.tokenizer.pause();
3111
+ };
3112
+ /**
3113
+ * Resumes parsing after `pause` was called.
3114
+ */
3115
+ Parser.prototype.resume = function () {
3116
+ this.tokenizer.resume();
3117
+ };
3118
+ /**
3119
+ * Alias of `write`, for backwards compatibility.
3120
+ *
3121
+ * @param chunk Chunk to parse.
3122
+ * @deprecated
3123
+ */
3124
+ Parser.prototype.parseChunk = function (chunk) {
3125
+ this.write(chunk);
3126
+ };
3127
+ /**
3128
+ * Alias of `end`, for backwards compatibility.
3129
+ *
3130
+ * @param chunk Optional final chunk to parse.
3131
+ * @deprecated
3132
+ */
3133
+ Parser.prototype.done = function (chunk) {
3134
+ this.end(chunk);
3135
+ };
3136
+ return Parser;
3137
+ }());
3138
+ exports.Parser = Parser;
3139
+ });
3140
+
3141
+ var lib$1 = createCommonjsModule(function (module, exports) {
3142
+ Object.defineProperty(exports, "__esModule", { value: true });
3143
+ exports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;
3144
+ /** Types of elements found in htmlparser2's DOM */
3145
+ var ElementType;
3146
+ (function (ElementType) {
3147
+ /** Type for the root element of a document */
3148
+ ElementType["Root"] = "root";
3149
+ /** Type for Text */
3150
+ ElementType["Text"] = "text";
3151
+ /** Type for <? ... ?> */
3152
+ ElementType["Directive"] = "directive";
3153
+ /** Type for <!-- ... --> */
3154
+ ElementType["Comment"] = "comment";
3155
+ /** Type for <script> tags */
3156
+ ElementType["Script"] = "script";
3157
+ /** Type for <style> tags */
3158
+ ElementType["Style"] = "style";
3159
+ /** Type for Any tag */
3160
+ ElementType["Tag"] = "tag";
3161
+ /** Type for <![CDATA[ ... ]]> */
3162
+ ElementType["CDATA"] = "cdata";
3163
+ /** Type for <!doctype ...> */
3164
+ ElementType["Doctype"] = "doctype";
3165
+ })(ElementType = exports.ElementType || (exports.ElementType = {}));
3166
+ /**
3167
+ * Tests whether an element is a tag or not.
3168
+ *
3169
+ * @param elem Element to test
3170
+ */
3171
+ function isTag(elem) {
3172
+ return (elem.type === ElementType.Tag ||
3173
+ elem.type === ElementType.Script ||
3174
+ elem.type === ElementType.Style);
49
3175
  }
3176
+ exports.isTag = isTag;
3177
+ // Exports for backwards compatibility
3178
+ /** Type for the root element of a document */
3179
+ exports.Root = ElementType.Root;
3180
+ /** Type for Text */
3181
+ exports.Text = ElementType.Text;
3182
+ /** Type for <? ... ?> */
3183
+ exports.Directive = ElementType.Directive;
3184
+ /** Type for <!-- ... --> */
3185
+ exports.Comment = ElementType.Comment;
3186
+ /** Type for <script> tags */
3187
+ exports.Script = ElementType.Script;
3188
+ /** Type for <style> tags */
3189
+ exports.Style = ElementType.Style;
3190
+ /** Type for Any tag */
3191
+ exports.Tag = ElementType.Tag;
3192
+ /** Type for <![CDATA[ ... ]]> */
3193
+ exports.CDATA = ElementType.CDATA;
3194
+ /** Type for <!doctype ...> */
3195
+ exports.Doctype = ElementType.Doctype;
3196
+ });
50
3197
 
51
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
52
- var languageFilterImplementations__default = /*#__PURE__*/_interopDefaultLegacy(languageFilterImplementations);
53
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
54
- var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
55
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
56
- var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
57
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
58
- var customFlagComponents__namespace = /*#__PURE__*/_interopNamespace(customFlagComponents);
59
- var config__default = /*#__PURE__*/_interopDefaultLegacy(config);
60
- var schemas__default = /*#__PURE__*/_interopDefaultLegacy(schemas);
61
- var client__default = /*#__PURE__*/_interopDefaultLegacy(client);
62
- var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
63
- var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
64
- var languagesLoaderFn__default = /*#__PURE__*/_interopDefaultLegacy(languagesLoaderFn);
65
- var shouldReloadFn__default = /*#__PURE__*/_interopDefaultLegacy(shouldReloadFn);
66
- var documentStore__default = /*#__PURE__*/_interopDefaultLegacy(documentStore);
67
- var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
68
-
69
- var objectSafeGet = get;
3198
+ var domelementtype_1 = lib$1;
70
3199
 
71
- /*
72
- const obj = {a: {aa: {aaa: 2}}, b: 4};
3200
+ var node = createCommonjsModule(function (module, exports) {
3201
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
3202
+ var extendStatics = function (d, b) {
3203
+ extendStatics = Object.setPrototypeOf ||
3204
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3205
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
3206
+ return extendStatics(d, b);
3207
+ };
3208
+ return function (d, b) {
3209
+ if (typeof b !== "function" && b !== null)
3210
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
3211
+ extendStatics(d, b);
3212
+ function __() { this.constructor = d; }
3213
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3214
+ };
3215
+ })();
3216
+ var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {
3217
+ __assign = Object.assign || function(t) {
3218
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3219
+ s = arguments[i];
3220
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
3221
+ t[p] = s[p];
3222
+ }
3223
+ return t;
3224
+ };
3225
+ return __assign.apply(this, arguments);
3226
+ };
3227
+ Object.defineProperty(exports, "__esModule", { value: true });
3228
+ exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;
3229
+
3230
+ var nodeTypes = new Map([
3231
+ [domelementtype_1.ElementType.Tag, 1],
3232
+ [domelementtype_1.ElementType.Script, 1],
3233
+ [domelementtype_1.ElementType.Style, 1],
3234
+ [domelementtype_1.ElementType.Directive, 1],
3235
+ [domelementtype_1.ElementType.Text, 3],
3236
+ [domelementtype_1.ElementType.CDATA, 4],
3237
+ [domelementtype_1.ElementType.Comment, 8],
3238
+ [domelementtype_1.ElementType.Root, 9],
3239
+ ]);
3240
+ /**
3241
+ * This object will be used as the prototype for Nodes when creating a
3242
+ * DOM-Level-1-compliant structure.
3243
+ */
3244
+ var Node = /** @class */ (function () {
3245
+ /**
3246
+ *
3247
+ * @param type The type of the node.
3248
+ */
3249
+ function Node(type) {
3250
+ this.type = type;
3251
+ /** Parent of the node */
3252
+ this.parent = null;
3253
+ /** Previous sibling */
3254
+ this.prev = null;
3255
+ /** Next sibling */
3256
+ this.next = null;
3257
+ /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */
3258
+ this.startIndex = null;
3259
+ /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */
3260
+ this.endIndex = null;
3261
+ }
3262
+ Object.defineProperty(Node.prototype, "nodeType", {
3263
+ // Read-only aliases
3264
+ /**
3265
+ * [DOM spec](https://dom.spec.whatwg.org/#dom-node-nodetype)-compatible
3266
+ * node {@link type}.
3267
+ */
3268
+ get: function () {
3269
+ var _a;
3270
+ return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1;
3271
+ },
3272
+ enumerable: false,
3273
+ configurable: true
3274
+ });
3275
+ Object.defineProperty(Node.prototype, "parentNode", {
3276
+ // Read-write aliases for properties
3277
+ /**
3278
+ * Same as {@link parent}.
3279
+ * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
3280
+ */
3281
+ get: function () {
3282
+ return this.parent;
3283
+ },
3284
+ set: function (parent) {
3285
+ this.parent = parent;
3286
+ },
3287
+ enumerable: false,
3288
+ configurable: true
3289
+ });
3290
+ Object.defineProperty(Node.prototype, "previousSibling", {
3291
+ /**
3292
+ * Same as {@link prev}.
3293
+ * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
3294
+ */
3295
+ get: function () {
3296
+ return this.prev;
3297
+ },
3298
+ set: function (prev) {
3299
+ this.prev = prev;
3300
+ },
3301
+ enumerable: false,
3302
+ configurable: true
3303
+ });
3304
+ Object.defineProperty(Node.prototype, "nextSibling", {
3305
+ /**
3306
+ * Same as {@link next}.
3307
+ * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
3308
+ */
3309
+ get: function () {
3310
+ return this.next;
3311
+ },
3312
+ set: function (next) {
3313
+ this.next = next;
3314
+ },
3315
+ enumerable: false,
3316
+ configurable: true
3317
+ });
3318
+ /**
3319
+ * Clone this node, and optionally its children.
3320
+ *
3321
+ * @param recursive Clone child nodes as well.
3322
+ * @returns A clone of the node.
3323
+ */
3324
+ Node.prototype.cloneNode = function (recursive) {
3325
+ if (recursive === void 0) { recursive = false; }
3326
+ return cloneNode(this, recursive);
3327
+ };
3328
+ return Node;
3329
+ }());
3330
+ exports.Node = Node;
3331
+ /**
3332
+ * A node that contains some data.
3333
+ */
3334
+ var DataNode = /** @class */ (function (_super) {
3335
+ __extends(DataNode, _super);
3336
+ /**
3337
+ * @param type The type of the node
3338
+ * @param data The content of the data node
3339
+ */
3340
+ function DataNode(type, data) {
3341
+ var _this = _super.call(this, type) || this;
3342
+ _this.data = data;
3343
+ return _this;
3344
+ }
3345
+ Object.defineProperty(DataNode.prototype, "nodeValue", {
3346
+ /**
3347
+ * Same as {@link data}.
3348
+ * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
3349
+ */
3350
+ get: function () {
3351
+ return this.data;
3352
+ },
3353
+ set: function (data) {
3354
+ this.data = data;
3355
+ },
3356
+ enumerable: false,
3357
+ configurable: true
3358
+ });
3359
+ return DataNode;
3360
+ }(Node));
3361
+ exports.DataNode = DataNode;
3362
+ /**
3363
+ * Text within the document.
3364
+ */
3365
+ var Text = /** @class */ (function (_super) {
3366
+ __extends(Text, _super);
3367
+ function Text(data) {
3368
+ return _super.call(this, domelementtype_1.ElementType.Text, data) || this;
3369
+ }
3370
+ return Text;
3371
+ }(DataNode));
3372
+ exports.Text = Text;
3373
+ /**
3374
+ * Comments within the document.
3375
+ */
3376
+ var Comment = /** @class */ (function (_super) {
3377
+ __extends(Comment, _super);
3378
+ function Comment(data) {
3379
+ return _super.call(this, domelementtype_1.ElementType.Comment, data) || this;
3380
+ }
3381
+ return Comment;
3382
+ }(DataNode));
3383
+ exports.Comment = Comment;
3384
+ /**
3385
+ * Processing instructions, including doc types.
3386
+ */
3387
+ var ProcessingInstruction = /** @class */ (function (_super) {
3388
+ __extends(ProcessingInstruction, _super);
3389
+ function ProcessingInstruction(name, data) {
3390
+ var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this;
3391
+ _this.name = name;
3392
+ return _this;
3393
+ }
3394
+ return ProcessingInstruction;
3395
+ }(DataNode));
3396
+ exports.ProcessingInstruction = ProcessingInstruction;
3397
+ /**
3398
+ * A `Node` that can have children.
3399
+ */
3400
+ var NodeWithChildren = /** @class */ (function (_super) {
3401
+ __extends(NodeWithChildren, _super);
3402
+ /**
3403
+ * @param type Type of the node.
3404
+ * @param children Children of the node. Only certain node types can have children.
3405
+ */
3406
+ function NodeWithChildren(type, children) {
3407
+ var _this = _super.call(this, type) || this;
3408
+ _this.children = children;
3409
+ return _this;
3410
+ }
3411
+ Object.defineProperty(NodeWithChildren.prototype, "firstChild", {
3412
+ // Aliases
3413
+ /** First child of the node. */
3414
+ get: function () {
3415
+ var _a;
3416
+ return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;
3417
+ },
3418
+ enumerable: false,
3419
+ configurable: true
3420
+ });
3421
+ Object.defineProperty(NodeWithChildren.prototype, "lastChild", {
3422
+ /** Last child of the node. */
3423
+ get: function () {
3424
+ return this.children.length > 0
3425
+ ? this.children[this.children.length - 1]
3426
+ : null;
3427
+ },
3428
+ enumerable: false,
3429
+ configurable: true
3430
+ });
3431
+ Object.defineProperty(NodeWithChildren.prototype, "childNodes", {
3432
+ /**
3433
+ * Same as {@link children}.
3434
+ * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
3435
+ */
3436
+ get: function () {
3437
+ return this.children;
3438
+ },
3439
+ set: function (children) {
3440
+ this.children = children;
3441
+ },
3442
+ enumerable: false,
3443
+ configurable: true
3444
+ });
3445
+ return NodeWithChildren;
3446
+ }(Node));
3447
+ exports.NodeWithChildren = NodeWithChildren;
3448
+ /**
3449
+ * The root node of the document.
3450
+ */
3451
+ var Document = /** @class */ (function (_super) {
3452
+ __extends(Document, _super);
3453
+ function Document(children) {
3454
+ return _super.call(this, domelementtype_1.ElementType.Root, children) || this;
3455
+ }
3456
+ return Document;
3457
+ }(NodeWithChildren));
3458
+ exports.Document = Document;
3459
+ /**
3460
+ * An element within the DOM.
3461
+ */
3462
+ var Element = /** @class */ (function (_super) {
3463
+ __extends(Element, _super);
3464
+ /**
3465
+ * @param name Name of the tag, eg. `div`, `span`.
3466
+ * @param attribs Object mapping attribute names to attribute values.
3467
+ * @param children Children of the node.
3468
+ */
3469
+ function Element(name, attribs, children, type) {
3470
+ if (children === void 0) { children = []; }
3471
+ if (type === void 0) { type = name === "script"
3472
+ ? domelementtype_1.ElementType.Script
3473
+ : name === "style"
3474
+ ? domelementtype_1.ElementType.Style
3475
+ : domelementtype_1.ElementType.Tag; }
3476
+ var _this = _super.call(this, type, children) || this;
3477
+ _this.name = name;
3478
+ _this.attribs = attribs;
3479
+ return _this;
3480
+ }
3481
+ Object.defineProperty(Element.prototype, "tagName", {
3482
+ // DOM Level 1 aliases
3483
+ /**
3484
+ * Same as {@link name}.
3485
+ * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
3486
+ */
3487
+ get: function () {
3488
+ return this.name;
3489
+ },
3490
+ set: function (name) {
3491
+ this.name = name;
3492
+ },
3493
+ enumerable: false,
3494
+ configurable: true
3495
+ });
3496
+ Object.defineProperty(Element.prototype, "attributes", {
3497
+ get: function () {
3498
+ var _this = this;
3499
+ return Object.keys(this.attribs).map(function (name) {
3500
+ var _a, _b;
3501
+ return ({
3502
+ name: name,
3503
+ value: _this.attribs[name],
3504
+ namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name],
3505
+ prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name],
3506
+ });
3507
+ });
3508
+ },
3509
+ enumerable: false,
3510
+ configurable: true
3511
+ });
3512
+ return Element;
3513
+ }(NodeWithChildren));
3514
+ exports.Element = Element;
3515
+ /**
3516
+ * @param node Node to check.
3517
+ * @returns `true` if the node is a `Element`, `false` otherwise.
3518
+ */
3519
+ function isTag(node) {
3520
+ return (0, domelementtype_1.isTag)(node);
3521
+ }
3522
+ exports.isTag = isTag;
3523
+ /**
3524
+ * @param node Node to check.
3525
+ * @returns `true` if the node has the type `CDATA`, `false` otherwise.
3526
+ */
3527
+ function isCDATA(node) {
3528
+ return node.type === domelementtype_1.ElementType.CDATA;
3529
+ }
3530
+ exports.isCDATA = isCDATA;
3531
+ /**
3532
+ * @param node Node to check.
3533
+ * @returns `true` if the node has the type `Text`, `false` otherwise.
3534
+ */
3535
+ function isText(node) {
3536
+ return node.type === domelementtype_1.ElementType.Text;
3537
+ }
3538
+ exports.isText = isText;
3539
+ /**
3540
+ * @param node Node to check.
3541
+ * @returns `true` if the node has the type `Comment`, `false` otherwise.
3542
+ */
3543
+ function isComment(node) {
3544
+ return node.type === domelementtype_1.ElementType.Comment;
3545
+ }
3546
+ exports.isComment = isComment;
3547
+ /**
3548
+ * @param node Node to check.
3549
+ * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
3550
+ */
3551
+ function isDirective(node) {
3552
+ return node.type === domelementtype_1.ElementType.Directive;
3553
+ }
3554
+ exports.isDirective = isDirective;
3555
+ /**
3556
+ * @param node Node to check.
3557
+ * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
3558
+ */
3559
+ function isDocument(node) {
3560
+ return node.type === domelementtype_1.ElementType.Root;
3561
+ }
3562
+ exports.isDocument = isDocument;
3563
+ /**
3564
+ * @param node Node to check.
3565
+ * @returns `true` if the node is a `NodeWithChildren` (has children), `false` otherwise.
3566
+ */
3567
+ function hasChildren(node) {
3568
+ return Object.prototype.hasOwnProperty.call(node, "children");
3569
+ }
3570
+ exports.hasChildren = hasChildren;
3571
+ /**
3572
+ * Clone a node, and optionally its children.
3573
+ *
3574
+ * @param recursive Clone child nodes as well.
3575
+ * @returns A clone of the node.
3576
+ */
3577
+ function cloneNode(node, recursive) {
3578
+ if (recursive === void 0) { recursive = false; }
3579
+ var result;
3580
+ if (isText(node)) {
3581
+ result = new Text(node.data);
3582
+ }
3583
+ else if (isComment(node)) {
3584
+ result = new Comment(node.data);
3585
+ }
3586
+ else if (isTag(node)) {
3587
+ var children = recursive ? cloneChildren(node.children) : [];
3588
+ var clone_1 = new Element(node.name, __assign({}, node.attribs), children);
3589
+ children.forEach(function (child) { return (child.parent = clone_1); });
3590
+ if (node.namespace != null) {
3591
+ clone_1.namespace = node.namespace;
3592
+ }
3593
+ if (node["x-attribsNamespace"]) {
3594
+ clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]);
3595
+ }
3596
+ if (node["x-attribsPrefix"]) {
3597
+ clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]);
3598
+ }
3599
+ result = clone_1;
3600
+ }
3601
+ else if (isCDATA(node)) {
3602
+ var children = recursive ? cloneChildren(node.children) : [];
3603
+ var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children);
3604
+ children.forEach(function (child) { return (child.parent = clone_2); });
3605
+ result = clone_2;
3606
+ }
3607
+ else if (isDocument(node)) {
3608
+ var children = recursive ? cloneChildren(node.children) : [];
3609
+ var clone_3 = new Document(children);
3610
+ children.forEach(function (child) { return (child.parent = clone_3); });
3611
+ if (node["x-mode"]) {
3612
+ clone_3["x-mode"] = node["x-mode"];
3613
+ }
3614
+ result = clone_3;
3615
+ }
3616
+ else if (isDirective(node)) {
3617
+ var instruction = new ProcessingInstruction(node.name, node.data);
3618
+ if (node["x-name"] != null) {
3619
+ instruction["x-name"] = node["x-name"];
3620
+ instruction["x-publicId"] = node["x-publicId"];
3621
+ instruction["x-systemId"] = node["x-systemId"];
3622
+ }
3623
+ result = instruction;
3624
+ }
3625
+ else {
3626
+ throw new Error("Not implemented yet: ".concat(node.type));
3627
+ }
3628
+ result.startIndex = node.startIndex;
3629
+ result.endIndex = node.endIndex;
3630
+ if (node.sourceCodeLocation != null) {
3631
+ result.sourceCodeLocation = node.sourceCodeLocation;
3632
+ }
3633
+ return result;
3634
+ }
3635
+ exports.cloneNode = cloneNode;
3636
+ function cloneChildren(childs) {
3637
+ var children = childs.map(function (child) { return cloneNode(child, true); });
3638
+ for (var i = 1; i < children.length; i++) {
3639
+ children[i].prev = children[i - 1];
3640
+ children[i - 1].next = children[i];
3641
+ }
3642
+ return children;
3643
+ }
3644
+ });
73
3645
 
74
- get(obj, 'a.aa.aaa'); // 2
75
- get(obj, ['a', 'aa', 'aaa']); // 2
3646
+ var require$$1$1 = node;
76
3647
 
77
- get(obj, 'b.bb.bbb'); // undefined
78
- get(obj, ['b', 'bb', 'bbb']); // undefined
3648
+ var lib = createCommonjsModule(function (module, exports) {
3649
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3650
+ if (k2 === undefined) k2 = k;
3651
+ var desc = Object.getOwnPropertyDescriptor(m, k);
3652
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
3653
+ desc = { enumerable: true, get: function() { return m[k]; } };
3654
+ }
3655
+ Object.defineProperty(o, k2, desc);
3656
+ }) : (function(o, m, k, k2) {
3657
+ if (k2 === undefined) k2 = k;
3658
+ o[k2] = m[k];
3659
+ }));
3660
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
3661
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
3662
+ };
3663
+ Object.defineProperty(exports, "__esModule", { value: true });
3664
+ exports.DomHandler = void 0;
3665
+
3666
+
3667
+ __exportStar(require$$1$1, exports);
3668
+ var reWhitespace = /\s+/g;
3669
+ // Default options
3670
+ var defaultOpts = {
3671
+ normalizeWhitespace: false,
3672
+ withStartIndices: false,
3673
+ withEndIndices: false,
3674
+ xmlMode: false,
3675
+ };
3676
+ var DomHandler = /** @class */ (function () {
3677
+ /**
3678
+ * @param callback Called once parsing has completed.
3679
+ * @param options Settings for the handler.
3680
+ * @param elementCB Callback whenever a tag is closed.
3681
+ */
3682
+ function DomHandler(callback, options, elementCB) {
3683
+ /** The elements of the DOM */
3684
+ this.dom = [];
3685
+ /** The root element for the DOM */
3686
+ this.root = new require$$1$1.Document(this.dom);
3687
+ /** Indicated whether parsing has been completed. */
3688
+ this.done = false;
3689
+ /** Stack of open tags. */
3690
+ this.tagStack = [this.root];
3691
+ /** A data node that is still being written to. */
3692
+ this.lastNode = null;
3693
+ /** Reference to the parser instance. Used for location information. */
3694
+ this.parser = null;
3695
+ // Make it possible to skip arguments, for backwards-compatibility
3696
+ if (typeof options === "function") {
3697
+ elementCB = options;
3698
+ options = defaultOpts;
3699
+ }
3700
+ if (typeof callback === "object") {
3701
+ options = callback;
3702
+ callback = undefined;
3703
+ }
3704
+ this.callback = callback !== null && callback !== void 0 ? callback : null;
3705
+ this.options = options !== null && options !== void 0 ? options : defaultOpts;
3706
+ this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
3707
+ }
3708
+ DomHandler.prototype.onparserinit = function (parser) {
3709
+ this.parser = parser;
3710
+ };
3711
+ // Resets the handler back to starting state
3712
+ DomHandler.prototype.onreset = function () {
3713
+ this.dom = [];
3714
+ this.root = new require$$1$1.Document(this.dom);
3715
+ this.done = false;
3716
+ this.tagStack = [this.root];
3717
+ this.lastNode = null;
3718
+ this.parser = null;
3719
+ };
3720
+ // Signals the handler that parsing is done
3721
+ DomHandler.prototype.onend = function () {
3722
+ if (this.done)
3723
+ return;
3724
+ this.done = true;
3725
+ this.parser = null;
3726
+ this.handleCallback(null);
3727
+ };
3728
+ DomHandler.prototype.onerror = function (error) {
3729
+ this.handleCallback(error);
3730
+ };
3731
+ DomHandler.prototype.onclosetag = function () {
3732
+ this.lastNode = null;
3733
+ var elem = this.tagStack.pop();
3734
+ if (this.options.withEndIndices) {
3735
+ elem.endIndex = this.parser.endIndex;
3736
+ }
3737
+ if (this.elementCB)
3738
+ this.elementCB(elem);
3739
+ };
3740
+ DomHandler.prototype.onopentag = function (name, attribs) {
3741
+ var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;
3742
+ var element = new require$$1$1.Element(name, attribs, undefined, type);
3743
+ this.addNode(element);
3744
+ this.tagStack.push(element);
3745
+ };
3746
+ DomHandler.prototype.ontext = function (data) {
3747
+ var normalizeWhitespace = this.options.normalizeWhitespace;
3748
+ var lastNode = this.lastNode;
3749
+ if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {
3750
+ if (normalizeWhitespace) {
3751
+ lastNode.data = (lastNode.data + data).replace(reWhitespace, " ");
3752
+ }
3753
+ else {
3754
+ lastNode.data += data;
3755
+ }
3756
+ if (this.options.withEndIndices) {
3757
+ lastNode.endIndex = this.parser.endIndex;
3758
+ }
3759
+ }
3760
+ else {
3761
+ if (normalizeWhitespace) {
3762
+ data = data.replace(reWhitespace, " ");
3763
+ }
3764
+ var node = new require$$1$1.Text(data);
3765
+ this.addNode(node);
3766
+ this.lastNode = node;
3767
+ }
3768
+ };
3769
+ DomHandler.prototype.oncomment = function (data) {
3770
+ if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {
3771
+ this.lastNode.data += data;
3772
+ return;
3773
+ }
3774
+ var node = new require$$1$1.Comment(data);
3775
+ this.addNode(node);
3776
+ this.lastNode = node;
3777
+ };
3778
+ DomHandler.prototype.oncommentend = function () {
3779
+ this.lastNode = null;
3780
+ };
3781
+ DomHandler.prototype.oncdatastart = function () {
3782
+ var text = new require$$1$1.Text("");
3783
+ var node = new require$$1$1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text]);
3784
+ this.addNode(node);
3785
+ text.parent = node;
3786
+ this.lastNode = text;
3787
+ };
3788
+ DomHandler.prototype.oncdataend = function () {
3789
+ this.lastNode = null;
3790
+ };
3791
+ DomHandler.prototype.onprocessinginstruction = function (name, data) {
3792
+ var node = new require$$1$1.ProcessingInstruction(name, data);
3793
+ this.addNode(node);
3794
+ };
3795
+ DomHandler.prototype.handleCallback = function (error) {
3796
+ if (typeof this.callback === "function") {
3797
+ this.callback(error, this.dom);
3798
+ }
3799
+ else if (error) {
3800
+ throw error;
3801
+ }
3802
+ };
3803
+ DomHandler.prototype.addNode = function (node) {
3804
+ var parent = this.tagStack[this.tagStack.length - 1];
3805
+ var previousSibling = parent.children[parent.children.length - 1];
3806
+ if (this.options.withStartIndices) {
3807
+ node.startIndex = this.parser.startIndex;
3808
+ }
3809
+ if (this.options.withEndIndices) {
3810
+ node.endIndex = this.parser.endIndex;
3811
+ }
3812
+ parent.children.push(node);
3813
+ if (previousSibling) {
3814
+ node.prev = previousSibling;
3815
+ previousSibling.next = node;
3816
+ }
3817
+ node.parent = parent;
3818
+ this.lastNode = null;
3819
+ };
3820
+ return DomHandler;
3821
+ }());
3822
+ exports.DomHandler = DomHandler;
3823
+ exports.default = DomHandler;
3824
+ });
79
3825
 
80
- get(obj.a, 'aa.aaa'); // 2
81
- get(obj.a, ['aa', 'aaa']); // 2
3826
+ /**
3827
+ * Sets root parent to null.
3828
+ *
3829
+ * @param {Array<Comment|Element|ProcessingInstruction|Text>} nodes
3830
+ * @return {Array<Comment|Element|ProcessingInstruction|Text>}
3831
+ */
3832
+ function unsetRootParent$1(nodes) {
3833
+ for (var index = 0, len = nodes.length; index < len; index++) {
3834
+ var node = nodes[index];
3835
+ node.parent = null;
3836
+ }
3837
+ return nodes;
3838
+ }
82
3839
 
83
- get(obj.b, 'bb.bbb'); // undefined
84
- get(obj.b, ['bb', 'bbb']); // undefined
3840
+ var utilities = {
3841
+ unsetRootParent: unsetRootParent$1
3842
+ };
85
3843
 
86
- get(obj.b, 'bb.bbb', 42); // 42
87
- get(obj.b, ['bb', 'bbb'], 42); // 42
3844
+ var require$$0 = Parser_1;
88
3845
 
89
- get(null, 'a'); // undefined
90
- get(undefined, ['a']); // undefined
3846
+ var require$$1 = lib;
91
3847
 
92
- get(null, 'a', 42); // 42
93
- get(undefined, ['a'], 42); // 42
3848
+ var Parser = require$$0.Parser;
3849
+ var DomHandler = require$$1.DomHandler;
94
3850
 
95
- const obj = {a: {}};
96
- const sym = Symbol();
97
- obj.a[sym] = 4;
98
- get(obj.a, sym); // 4
99
- */
3851
+ var unsetRootParent = utilities.unsetRootParent;
100
3852
 
101
- function get(obj, propsArg, defaultValue) {
102
- if (!obj) {
103
- return defaultValue;
104
- }
105
- var props, prop;
106
- if (Array.isArray(propsArg)) {
107
- props = propsArg.slice(0);
108
- }
109
- if (typeof propsArg == 'string') {
110
- props = propsArg.split('.');
111
- }
112
- if (typeof propsArg == 'symbol') {
113
- props = [propsArg];
114
- }
115
- if (!Array.isArray(props)) {
116
- throw new Error('props arg must be an array, a string or a symbol');
3853
+ /**
3854
+ * Parses HTML string to DOM nodes in Node.js.
3855
+ *
3856
+ * This is the same method as `require('htmlparser2').parseDOM`
3857
+ * https://github.com/fb55/htmlparser2/blob/v6.0.0/src/index.ts#L29-L41
3858
+ *
3859
+ * @param {string} html - HTML markup.
3860
+ * @param {DomHandlerOptions} [options] - Parser options (https://github.com/fb55/domhandler/tree/v4.0.0#readme).
3861
+ * @return {Array<Comment|Element|ProcessingInstruction|Text>} - DOM nodes.
3862
+ */
3863
+ function HTMLDOMParser(html, options) {
3864
+ if (typeof html !== 'string') {
3865
+ throw new TypeError('First argument must be a string.');
117
3866
  }
118
- while (props.length) {
119
- prop = props.shift();
120
- if (!obj) {
121
- return defaultValue;
122
- }
123
- obj = obj[prop];
124
- if (obj === undefined) {
125
- return defaultValue;
126
- }
3867
+
3868
+ if (html === '') {
3869
+ return [];
127
3870
  }
128
- return obj;
3871
+
3872
+ var handler = new DomHandler(undefined, options);
3873
+ new Parser(handler, options).end(html);
3874
+ return unsetRootParent(handler.dom);
129
3875
  }
130
3876
 
3877
+ var htmlToDom = HTMLDOMParser;
3878
+
131
3879
  /**
132
- * @var {Object} cache
133
- */
134
- var cache = new Map();
135
- /**
136
- * Check if emoji is supported with cache
3880
+ * When running on Node.js, use the server parser.
3881
+ * When bundling for the browser, use the client parser.
137
3882
  *
138
- * @params {string} unicode
139
- * @returns {boolean}
3883
+ * @see {@link https://github.com/substack/node-browserify#browser-field}
140
3884
  */
141
- function isEmojiSupported(unicode) {
142
- if (cache.has(unicode)) {
143
- return cache.get(unicode);
144
- }
145
- var supported = isSupported(unicode);
146
- cache.set(unicode, supported);
147
- return supported;
148
- }
3885
+
3886
+ var htmlDomParser = htmlToDom;
3887
+
3888
+ var htmlToDOM = htmlDomParser;
3889
+
3890
+ // support backwards compatibility for ES Module
3891
+ htmlToDOM =
3892
+ /* istanbul ignore next */
3893
+ typeof htmlToDOM.default === 'function' ? htmlToDOM.default : htmlToDOM;
3894
+
3895
+ var domParserOptions = { lowerCaseAttributeNames: false };
3896
+
149
3897
  /**
150
- * Check if the two pixels parts are perfectly the sames
3898
+ * Converts HTML string to React elements.
151
3899
  *
152
- * @params {string} unicode
153
- * @returns {boolean}
3900
+ * @param {String} html - HTML string.
3901
+ * @param {Object} [options] - Parser options.
3902
+ * @param {Object} [options.htmlparser2] - htmlparser2 options.
3903
+ * @param {Object} [options.library] - Library for React, Preact, etc.
3904
+ * @param {Function} [options.replace] - Replace method.
3905
+ * @return {JSX.Element|JSX.Element[]|String} - React element(s), empty array, or string.
154
3906
  */
155
- var isSupported = (function () {
156
- var ctx = null;
157
- try {
158
- ctx = document.createElement('canvas').getContext('2d');
159
- }
160
- catch (_a) { }
161
- // Not in browser env
162
- if (!ctx) {
163
- return function () { return false; };
164
- }
165
- var CANVAS_HEIGHT = 25;
166
- var CANVAS_WIDTH = 20;
167
- var textSize = Math.floor(CANVAS_HEIGHT / 2);
168
- // Initialize convas context
169
- ctx.font = textSize + 'px Arial, Sans-Serif';
170
- ctx.textBaseline = 'top';
171
- ctx.canvas.width = CANVAS_WIDTH * 2;
172
- ctx.canvas.height = CANVAS_HEIGHT;
173
- return function (unicode) {
174
- ctx.clearRect(0, 0, CANVAS_WIDTH * 2, CANVAS_HEIGHT);
175
- // Draw in red on the left
176
- ctx.fillStyle = '#FF0000';
177
- ctx.fillText(unicode, 0, 22);
178
- // Draw in blue on right
179
- ctx.fillStyle = '#0000FF';
180
- ctx.fillText(unicode, CANVAS_WIDTH, 22);
181
- var a = ctx.getImageData(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT).data;
182
- var count = a.length;
183
- var i = 0;
184
- // Search the first visible pixel
185
- for (; i < count && !a[i + 3]; i += 4)
186
- ;
187
- // No visible pixel
188
- if (i >= count) {
189
- return false;
190
- }
191
- // Emoji has immutable color, so we check the color of the emoji in two different colors
192
- // the result show be the same.
193
- var x = CANVAS_WIDTH + ((i / 4) % CANVAS_WIDTH);
194
- var y = Math.floor(i / 4 / CANVAS_WIDTH);
195
- var b = ctx.getImageData(x, y, 1, 1).data;
196
- if (a[i] !== b[0] || a[i + 2] !== b[2]) {
197
- return false;
198
- }
199
- // Some emojis are a contraction of different ones, so if it's not
200
- // supported, it will show multiple characters
201
- if (ctx.measureText(unicode).width >= CANVAS_WIDTH) {
202
- return false;
203
- }
204
- // Supported
205
- return true;
206
- };
207
- })();
3907
+ function HTMLReactParser(html, options) {
3908
+ if (typeof html !== 'string') {
3909
+ throw new TypeError('First argument must be a string');
3910
+ }
3911
+ if (html === '') {
3912
+ return [];
3913
+ }
3914
+ options = options || {};
3915
+ return domToReact_1(
3916
+ htmlToDOM(html, options.htmlparser2 || domParserOptions),
3917
+ options
3918
+ );
3919
+ }
3920
+
3921
+ HTMLReactParser.domToReact = domToReact_1;
3922
+ HTMLReactParser.htmlToDOM = htmlToDOM;
3923
+ HTMLReactParser.attributesToProps = attributesToProps;
3924
+ HTMLReactParser.Element = require$$1$1.Element;
208
3925
 
209
- function t(t="Twemoji Country Flags",e="https://cdn.jsdelivr.net/npm/country-flag-emoji-polyfill@0.1/dist/TwemojiCountryFlags.woff2"){if(isEmojiSupported("😊")&&!isEmojiSupported("🇨🇭")){const n=document.createElement("style");return n.textContent=`@font-face {\n font-family: "${t}";\n unicode-range: U+1F1E6-1F1FF, U+1F3F4, U+E0062-E0063, U+E0065, U+E0067,\n U+E006C, U+E006E, U+E0073-E0074, U+E0077, U+E007F;\n src: url('${e}') format('woff2');\n }`,document.head.appendChild(n),!0}return !1}
3926
+ // support CommonJS and ES Modules
3927
+ var htmlReactParser = HTMLReactParser;
3928
+ var _default = HTMLReactParser;
3929
+ htmlReactParser.default = _default;
210
3930
 
211
3931
  /*
212
3932
  These magic numbers are charCode math, where we take advantage of the offset
@@ -925,7 +4645,7 @@ var UiMessages = {
925
4645
  publishing: 'Publishing...',
926
4646
  publish: 'Publish',
927
4647
  updatingIntlFields: 'Updating i18n fields',
928
- intlFieldsUpdated: 'I18n fields updated',
4648
+ intlFieldsUpdated: 'i18n fields updated',
929
4649
  baseDocumentCopied: 'Base document copied',
930
4650
  translationCreatedToast: {
931
4651
  title: function title(name) {
@@ -997,25 +4717,32 @@ var getFlagCode = function getFlagCode() {
997
4717
  }
998
4718
 
999
4719
  switch (code.toLocaleLowerCase()) {
4720
+ // Return :flag-gb: for English
1000
4721
  case "en":
1001
4722
  return "gb";
4723
+ // Return :flag-al: (Albania) for `sq` language code
4724
+
4725
+ case "sq":
4726
+ return "al";
1002
4727
 
1003
4728
  default:
1004
4729
  return code;
1005
4730
  }
1006
4731
  };
1007
4732
 
1008
- var _templateObject$2, _templateObject2$2;
1009
- t();
1010
- var FlagImageContainer = styled__default["default"].span(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral__default["default"](["\n display: block;\n font-size: 19px;\n transform: translateY(-1px);\n\n & img {\n display: block;\n }\n"])));
1011
- var EmojiSpan = styled__default["default"].span(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteral__default["default"](["\n font-family: 'Twemoji Country Flags';\n"])));
4733
+ var _templateObject$2;
4734
+ var EmojiBox = styled__default["default"](ui.Box)(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral__default["default"](["\n min-width: 24px;\n transform: translateY(1px);\n"])));
1012
4735
  var SingleFlag = function SingleFlag(_ref) {
1013
4736
  var code = _ref.code,
1014
- langCulture = _ref.langCulture,
1015
- className = _ref.className;
4737
+ langCulture = _ref.langCulture;
1016
4738
  var flagEmoji = React.useMemo(function () {
1017
4739
  return code && getFlag(code);
1018
4740
  }, [code]);
4741
+ var flagHtml = twemoji.parse(flagEmoji !== null && flagEmoji !== void 0 ? flagEmoji : "\uD83C\uDDFA\uD83C\uDDF3", {
4742
+ folder: 'svg',
4743
+ ext: '.svg'
4744
+ });
4745
+ var flagReact = htmlReactParser(flagHtml);
1019
4746
  var CustomFlagComponent = React.useMemo(function () {
1020
4747
  if (langCulture && customFlagComponents__namespace) {
1021
4748
  var exportedName = langCulture.replace(/[^a-zA-Z0-9_]/g, '_');
@@ -1027,12 +4754,11 @@ var SingleFlag = function SingleFlag(_ref) {
1027
4754
 
1028
4755
  return null;
1029
4756
  }, [langCulture]);
1030
- return /*#__PURE__*/React__default["default"].createElement(FlagImageContainer, {
1031
- "aria-label": code,
1032
- className: className
4757
+ return /*#__PURE__*/React__default["default"].createElement(ui.Box, {
4758
+ "aria-label": code
1033
4759
  }, CustomFlagComponent && code ? /*#__PURE__*/React__default["default"].createElement(CustomFlagComponent, {
1034
4760
  code: code
1035
- }) : /*#__PURE__*/React__default["default"].createElement(EmojiSpan, null, flagEmoji) || '🏳️‍🌈');
4761
+ }) : /*#__PURE__*/React__default["default"].createElement(EmojiBox, null, flagReact));
1036
4762
  };
1037
4763
 
1038
4764
  var getSchema = function getSchema(name) {
@@ -1611,14 +5337,6 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
1611
5337
  var flagCode = React__default["default"].useMemo(function () {
1612
5338
  return language.id.split(/[_-]/).pop();
1613
5339
  }, [language.id]);
1614
- var FlagIcon = React__default["default"].useMemo(function () {
1615
- return function FlagIconComponent(props) {
1616
- return /*#__PURE__*/React__default["default"].createElement(SingleFlag, _extends__default["default"]({
1617
- code: flagCode,
1618
- langCulture: language.id
1619
- }, props));
1620
- };
1621
- }, [flagCode, language]);
1622
5340
  var translatedId = React__default["default"].useMemo(function () {
1623
5341
  return language.id === (baseLanguage === null || baseLanguage === void 0 ? void 0 : baseLanguage.id) ? baseId : buildDocId(baseId, language.id);
1624
5342
  }, [baseId, language.id, baseLanguage]);
@@ -1657,7 +5375,7 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
1657
5375
  routerContext.navigateUrl(href);
1658
5376
  }, [routerContext, routerPanesState, groupIndex]);
1659
5377
  var handleCreateClick = React__default["default"].useCallback( /*#__PURE__*/_asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
1660
- var baseDocument, langFieldName;
5378
+ var baseDocument, langFieldName, referencesFieldName, baseFieldName;
1661
5379
  return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
1662
5380
  while (1) {
1663
5381
  switch (_context.prev = _context.next) {
@@ -1666,13 +5384,18 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
1666
5384
  setPending(true);
1667
5385
  baseDocument = baseDocumentEditState.draft || baseDocumentEditState.published;
1668
5386
  langFieldName = config.fieldNames.lang;
1669
- _context.next = 6;
1670
- return getSanityClient().createIfNotExists(_objectSpread$2(_objectSpread$2({}, baseDocument ? objectOmit(baseDocument, [config.fieldNames.references]) : {}), {}, _defineProperty__default["default"]({
5387
+ referencesFieldName = config.fieldNames.references;
5388
+ baseFieldName = config.fieldNames.baseReference;
5389
+ _context.next = 8;
5390
+ return getSanityClient().createIfNotExists(_objectSpread$2(_objectSpread$2({
1671
5391
  _id: "drafts.".concat(translatedId),
1672
5392
  _type: currentDocumentType
1673
- }, langFieldName, language.id)));
5393
+ }, baseDocument ? objectOmit(baseDocument, ["_id", "_type", referencesFieldName]) : {}), {}, _defineProperty__default["default"]({}, langFieldName, language.id), baseDocument !== null && baseDocument !== void 0 && baseDocument._id ? _defineProperty__default["default"]({}, baseFieldName, {
5394
+ _type: 'reference',
5395
+ _ref: baseDocument._id.replace("drafts.*", "")
5396
+ }) : {}));
1674
5397
 
1675
- case 6:
5398
+ case 8:
1676
5399
  toast.push({
1677
5400
  closable: true,
1678
5401
  status: 'success',
@@ -1680,11 +5403,11 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
1680
5403
  description: baseLanguage ? UiMessages.translationCreatedToast.description(baseLanguage.title) : undefined
1681
5404
  });
1682
5405
  openDocumentInCurrentPane(translatedId, currentDocumentType);
1683
- _context.next = 13;
5406
+ _context.next = 15;
1684
5407
  break;
1685
5408
 
1686
- case 10:
1687
- _context.prev = 10;
5409
+ case 12:
5410
+ _context.prev = 12;
1688
5411
  _context.t0 = _context["catch"](0);
1689
5412
  toast.push({
1690
5413
  closable: true,
@@ -1692,18 +5415,18 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
1692
5415
  title: _context.t0.toString()
1693
5416
  });
1694
5417
 
1695
- case 13:
1696
- _context.prev = 13;
5418
+ case 15:
5419
+ _context.prev = 15;
1697
5420
  setPending(false);
1698
- return _context.finish(13);
5421
+ return _context.finish(15);
1699
5422
 
1700
- case 16:
5423
+ case 18:
1701
5424
  case "end":
1702
5425
  return _context.stop();
1703
5426
  }
1704
5427
  }
1705
- }, _callee, null, [[0, 10, 13, 16]]);
1706
- })), [toast, language.id, language.title, baseLanguage, translatedId, currentDocumentType, config.fieldNames.lang, config.fieldNames.references, openDocumentInCurrentPane, baseDocumentEditState.draft, baseDocumentEditState.published]);
5428
+ }, _callee, null, [[0, 12, 15, 18]]);
5429
+ })), [baseDocumentEditState.draft, baseDocumentEditState.published, config.fieldNames.lang, config.fieldNames.references, config.fieldNames.baseReference, translatedId, currentDocumentType, language.id, language.title, toast, baseLanguage, openDocumentInCurrentPane]);
1707
5430
  var handleOpenClick = React__default["default"].useCallback(function () {
1708
5431
  openDocumentInCurrentPane(translatedId, currentDocumentType);
1709
5432
  }, [openDocumentInCurrentPane, translatedId, currentDocumentType]);
@@ -1727,13 +5450,20 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
1727
5450
  "data-as": "button",
1728
5451
  "data-selected": language.isCurrentLanguage,
1729
5452
  selected: language.isCurrentLanguage,
1730
- icon: FlagIcon,
1731
- iconRight: !!baseTranslationBadgeLabel && /*#__PURE__*/React__default["default"].createElement(ui.Badge, {
1732
- fontSize: 0
1733
- }, baseTranslationBadgeLabel),
1734
- text: language.title,
1735
- onClick: handleOpenClick
1736
- }), !language.isCurrentLanguage && /*#__PURE__*/React__default["default"].createElement(ListItemSplitButton, {
5453
+ onClick: handleOpenClick,
5454
+ paddingY: 1,
5455
+ paddingX: 2
5456
+ }, /*#__PURE__*/React__default["default"].createElement(ui.Flex, {
5457
+ align: "center",
5458
+ gap: 2
5459
+ }, /*#__PURE__*/React__default["default"].createElement(SingleFlag, {
5460
+ code: flagCode,
5461
+ langCulture: language.id
5462
+ }), /*#__PURE__*/React__default["default"].createElement(ui.Box, {
5463
+ flex: 1
5464
+ }, /*#__PURE__*/React__default["default"].createElement(ui.Text, null, language.title)), baseTranslationBadgeLabel ? /*#__PURE__*/React__default["default"].createElement(ui.Badge, {
5465
+ fontSize: 0
5466
+ }, baseTranslationBadgeLabel) : null)), !language.isCurrentLanguage && /*#__PURE__*/React__default["default"].createElement(ListItemSplitButton, {
1737
5467
  type: "button",
1738
5468
  tone: "default",
1739
5469
  mode: "bleed",
@@ -1930,16 +5660,22 @@ var LanguageSelect = function LanguageSelect(_ref) {
1930
5660
  id: "document-internationalization/language-select",
1931
5661
  popover: POPOVER_PROPS,
1932
5662
  button: /*#__PURE__*/React__default["default"].createElement(ui.Button, {
5663
+ paddingY: 1,
5664
+ paddingX: 2,
1933
5665
  mode: "bleed",
1934
- icon: /*#__PURE__*/React__default["default"].createElement(SingleFlag, {
1935
- code: currentLanguageFlagCode,
1936
- langCulture: currentLanguageCode
1937
- }),
1938
- iconRight: icons.ChevronDownIcon,
1939
- padding: 3,
1940
- title: (_currentLanguageObjec = currentLanguageObject.title) !== null && _currentLanguageObjec !== void 0 ? _currentLanguageObjec : currentLanguageObject.id,
1941
- text: (_currentLanguageObjec2 = currentLanguageObject.title) !== null && _currentLanguageObjec2 !== void 0 ? _currentLanguageObjec2 : currentLanguageObject.id
1942
- }),
5666
+ title: (_currentLanguageObjec = currentLanguageObject.title) !== null && _currentLanguageObjec !== void 0 ? _currentLanguageObjec : currentLanguageObject.id
5667
+ }, /*#__PURE__*/React__default["default"].createElement(ui.Flex, {
5668
+ align: "center",
5669
+ gap: 2
5670
+ }, /*#__PURE__*/React__default["default"].createElement(SingleFlag, {
5671
+ code: currentLanguageFlagCode,
5672
+ langCulture: currentLanguageCode
5673
+ }), /*#__PURE__*/React__default["default"].createElement(ui.Box, {
5674
+ flex: 1
5675
+ }, /*#__PURE__*/React__default["default"].createElement(ui.Text, null, (_currentLanguageObjec2 = currentLanguageObject.title) !== null && _currentLanguageObjec2 !== void 0 ? _currentLanguageObjec2 : currentLanguageObject.id)), /*#__PURE__*/React__default["default"].createElement(icons.ChevronDownIcon, {
5676
+ width: 19,
5677
+ height: 19
5678
+ }))),
1943
5679
  menu: /*#__PURE__*/React__default["default"].createElement(ui.Menu, null, /*#__PURE__*/React__default["default"].createElement(LanguageSelectList, languagesObjects))
1944
5680
  }));
1945
5681
  };