{"version":3,"sources":["node_modules/bech32/index.js","node_modules/elliptic/package.json","node_modules/elliptic/node_modules/bn.js/lib/bn.js","node_modules/elliptic/lib/elliptic/utils.js","node_modules/elliptic/lib/elliptic/curve/base.js","node_modules/elliptic/lib/elliptic/curve/short.js","node_modules/elliptic/lib/elliptic/curve/mont.js","node_modules/elliptic/lib/elliptic/curve/edwards.js","node_modules/elliptic/lib/elliptic/curve/index.js","node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","node_modules/elliptic/lib/elliptic/curves.js","node_modules/elliptic/lib/elliptic/ec/key.js","node_modules/elliptic/lib/elliptic/ec/signature.js","node_modules/elliptic/lib/elliptic/ec/index.js","node_modules/elliptic/lib/elliptic/eddsa/key.js","node_modules/elliptic/lib/elliptic/eddsa/signature.js","node_modules/elliptic/lib/elliptic/eddsa/index.js","node_modules/elliptic/lib/elliptic.js","node_modules/@noble/hashes/_assert.js","node_modules/@noble/hashes/_u64.js","node_modules/@noble/hashes/crypto.js","node_modules/@noble/hashes/utils.js","node_modules/@noble/hashes/sha3.js","node_modules/object-keys/isArguments.js","node_modules/object-keys/implementation.js","node_modules/object-keys/index.js","node_modules/es-errors/index.js","node_modules/es-errors/eval.js","node_modules/es-errors/range.js","node_modules/es-errors/ref.js","node_modules/es-errors/syntax.js","node_modules/es-errors/type.js","node_modules/es-errors/uri.js","node_modules/has-symbols/shams.js","node_modules/has-symbols/index.js","node_modules/has-proto/index.js","node_modules/function-bind/implementation.js","node_modules/function-bind/index.js","node_modules/hasown/index.js","node_modules/get-intrinsic/index.js","node_modules/es-define-property/index.js","node_modules/gopd/index.js","node_modules/define-data-property/index.js","node_modules/has-property-descriptors/index.js","node_modules/define-properties/index.js"],"sourcesContent":["'use strict';\n\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {};\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z);\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous');\n ALPHABET_MAP[x] = z;\n}\nfunction polymodStep(pre) {\n var b = pre >> 25;\n return (pre & 0x1FFFFFF) << 5 ^ -(b >> 0 & 1) & 0x3b6a57b2 ^ -(b >> 1 & 1) & 0x26508e6d ^ -(b >> 2 & 1) & 0x1ea119fa ^ -(b >> 3 & 1) & 0x3d4233dd ^ -(b >> 4 & 1) & 0x2a1462b3;\n}\nfunction prefixChk(prefix) {\n var chk = 1;\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i);\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')';\n chk = polymodStep(chk) ^ c >> 5;\n }\n chk = polymodStep(chk);\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i);\n chk = polymodStep(chk) ^ v & 0x1f;\n }\n return chk;\n}\nfunction encode(prefix, words, LIMIT) {\n LIMIT = LIMIT || 90;\n if (prefix.length + 7 + words.length > LIMIT) throw new TypeError('Exceeds length limit');\n prefix = prefix.toLowerCase();\n\n // determine chk mod\n var chk = prefixChk(prefix);\n if (typeof chk === 'string') throw new Error(chk);\n var result = prefix + '1';\n for (var i = 0; i < words.length; ++i) {\n var x = words[i];\n if (x >> 5 !== 0) throw new Error('Non 5-bit word');\n chk = polymodStep(chk) ^ x;\n result += ALPHABET.charAt(x);\n }\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk);\n }\n chk ^= 1;\n for (i = 0; i < 6; ++i) {\n var v = chk >> (5 - i) * 5 & 0x1f;\n result += ALPHABET.charAt(v);\n }\n return result;\n}\nfunction __decode(str, LIMIT) {\n LIMIT = LIMIT || 90;\n if (str.length < 8) return str + ' too short';\n if (str.length > LIMIT) return 'Exceeds length limit';\n\n // don't allow mixed case\n var lowered = str.toLowerCase();\n var uppered = str.toUpperCase();\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str;\n str = lowered;\n var split = str.lastIndexOf('1');\n if (split === -1) return 'No separator character for ' + str;\n if (split === 0) return 'Missing prefix for ' + str;\n var prefix = str.slice(0, split);\n var wordChars = str.slice(split + 1);\n if (wordChars.length < 6) return 'Data too short';\n var chk = prefixChk(prefix);\n if (typeof chk === 'string') return chk;\n var words = [];\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i);\n var v = ALPHABET_MAP[c];\n if (v === undefined) return 'Unknown character ' + c;\n chk = polymodStep(chk) ^ v;\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue;\n words.push(v);\n }\n if (chk !== 1) return 'Invalid checksum for ' + str;\n return {\n prefix: prefix,\n words: words\n };\n}\nfunction decodeUnsafe() {\n var res = __decode.apply(null, arguments);\n if (typeof res === 'object') return res;\n}\nfunction decode(str) {\n var res = __decode.apply(null, arguments);\n if (typeof res === 'object') return res;\n throw new Error(res);\n}\nfunction convert(data, inBits, outBits, pad) {\n var value = 0;\n var bits = 0;\n var maxV = (1 << outBits) - 1;\n var result = [];\n for (var i = 0; i < data.length; ++i) {\n value = value << inBits | data[i];\n bits += inBits;\n while (bits >= outBits) {\n bits -= outBits;\n result.push(value >> bits & maxV);\n }\n }\n if (pad) {\n if (bits > 0) {\n result.push(value << outBits - bits & maxV);\n }\n } else {\n if (bits >= inBits) return 'Excess padding';\n if (value << outBits - bits & maxV) return 'Non-zero padding';\n }\n return result;\n}\nfunction toWordsUnsafe(bytes) {\n var res = convert(bytes, 8, 5, true);\n if (Array.isArray(res)) return res;\n}\nfunction toWords(bytes) {\n var res = convert(bytes, 8, 5, true);\n if (Array.isArray(res)) return res;\n throw new Error(res);\n}\nfunction fromWordsUnsafe(words) {\n var res = convert(words, 5, 8, false);\n if (Array.isArray(res)) return res;\n}\nfunction fromWords(words) {\n var res = convert(words, 5, 8, false);\n if (Array.isArray(res)) return res;\n throw new Error(res);\n}\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n};","{\n \"name\": \"elliptic\",\n \"version\": \"6.6.1\",\n \"description\": \"EC cryptography\",\n \"main\": \"lib/elliptic.js\",\n \"files\": [\n \"lib\"\n ],\n \"scripts\": {\n \"lint\": \"eslint lib test\",\n \"lint:fix\": \"npm run lint -- --fix\",\n \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n \"test\": \"npm run lint && npm run unit\",\n \"version\": \"grunt dist && git add dist/\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git@github.com:indutny/elliptic\"\n },\n \"keywords\": [\n \"EC\",\n \"Elliptic\",\n \"curve\",\n \"Cryptography\"\n ],\n \"author\": \"Fedor Indutny \",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/indutny/elliptic/issues\"\n },\n \"homepage\": \"https://github.com/indutny/elliptic\",\n \"devDependencies\": {\n \"brfs\": \"^2.0.2\",\n \"coveralls\": \"^3.1.0\",\n \"eslint\": \"^7.6.0\",\n \"grunt\": \"^1.2.1\",\n \"grunt-browserify\": \"^5.3.0\",\n \"grunt-cli\": \"^1.3.2\",\n \"grunt-contrib-connect\": \"^3.0.0\",\n \"grunt-contrib-copy\": \"^1.0.0\",\n \"grunt-contrib-uglify\": \"^5.0.0\",\n \"grunt-mocha-istanbul\": \"^5.0.2\",\n \"grunt-saucelabs\": \"^9.0.1\",\n \"istanbul\": \"^0.4.5\",\n \"mocha\": \"^8.0.1\"\n },\n \"dependencies\": {\n \"bn.js\": \"^4.11.9\",\n \"brorand\": \"^1.1.0\",\n \"hash.js\": \"^1.0.0\",\n \"hmac-drbg\": \"^1.0.1\",\n \"inherits\": \"^2.0.4\",\n \"minimalistic-assert\": \"^1.0.1\",\n \"minimalistic-crypto-utils\": \"^1.0.1\"\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n this.strip();\n };\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n this.strip();\n };\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n assert(false, 'Base should be between 2 and 36');\n };\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return this.negative !== 0 ? -ret : ret;\n };\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\n };\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\n };\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\n };\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\n };\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd(num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add(num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\n }\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\n };\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n if (r !== 0) {\n var carry = 0;\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\n };\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\n };\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n x1.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n x2.iushrn(1);\n }\n }\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n a.isub(b);\n } while (true);\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red(num) {\n return new Red(num);\n };\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\n };\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n var ws = 1 << w + 1;\n var k = num.clone();\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod;else z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n naf[i] = z;\n k.iushrn(1);\n }\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [[], []];\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = k1.andln(3) + d1 & 3;\n var m24 = k2.andln(3) + d2 & 3;\n if (m14 === 3) m14 = -1;\n if (m24 === 3) m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = k1.andln(7) + d1 & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;else u1 = m14;\n }\n jsf[0].push(u1);\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = k2.andln(7) + d2 & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2) u2 = -m24;else u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1) d1 = 1 - d1;\n if (2 * d2 === u2 + 1) d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n return jsf;\n}\nutils.getJSF = getJSF;\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] : this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : bytes;\n}\nutils.parseBytes = parseBytes;\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--) nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i) b = b.mixedAdd(doubles.points[j]);else if (nafW === -i) b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--) l++;\n if (i >= 0) l++;\n acc = acc.dblp(l);\n if (i < 0) break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0) acc = acc.mixedAdd(wnd[z - 1 >> 1]);else acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg());\n } else {\n // J +- J\n if (z > 0) acc = acc.add(wnd[z - 1 >> 1]);else acc = acc.add(wnd[-z - 1 >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n var comb = [points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n var index = [-3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */];\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0) zero = false;\n }\n if (!zero) break;\n k++;\n i--;\n }\n if (i >= 0) k++;\n acc = acc.dblp(k);\n if (i < 0) break;\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0) continue;else if (z > 0) p = wnd[j][z - 1 >> 1];else if (z < 0) p = wnd[j][-z - 1 >> 1].neg();\n if (p.type === 'affine') acc = acc.mixedAdd(p);else acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++) wnd[i] = null;\n if (jacobianResult) return acc;else return acc.toP();\n};\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\nBasePoint.prototype.eq = function eq( /*other*/\n) {\n throw new Error('Not implemented');\n};\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06) assert(bytes[bytes.length - 1] % 2 === 0);else if (bytes[0] === 0x07) assert(bytes[bytes.length - 1] % 2 === 1);\n var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n if (compact) return [this.getY().isEven() ? 0x02 : 0x03].concat(x);\n return [0x04].concat(x, this.getY().toArray('be', len));\n};\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed) return this;\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n return this;\n};\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed) return false;\n var doubles = this.precomputed.doubles;\n if (!doubles) return false;\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;\n var doubles = [this];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++) acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;\n var res = [this];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++) res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++) r = r.dbl();\n return r;\n};","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\nvar assert = utils.assert;\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function (vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [l1, l2];\n};\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n return [{\n a: a1,\n b: b1\n }, {\n a: a2,\n b: b2\n }];\n};\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return {\n k1: k1,\n k2: k2\n };\n};\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf) return true;\n var x = point.x;\n var y = point.y;\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\nShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo) return;\n var pre = this.precomputed;\n if (pre && pre.beta) return pre.beta;\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function (p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed) return [this.x, this.y];\n return [this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n }];\n};\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string') obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2]) return res;\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [res].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [res].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf) return p;\n\n // P + O = P\n if (p.inf) return this;\n\n // P + P = 2P\n if (this.eq(p)) return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p)) return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0) return this.curve.point(null, null);\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0) c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\nPoint.prototype.dbl = function dbl() {\n if (this.inf) return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0) return this.curve.point(null, null);\n var a = this.curve.a;\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity()) return this;else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k]);else return this.curve._wnafMul(this, k);\n};\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);else return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\nPoint.prototype.eq = function eq(p) {\n return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf) return this;\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function (p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\nPoint.prototype.toJ = function toJ() {\n if (this.inf) return this.curve.jpoint(null, null, null);\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity()) return this.curve.point(null, null);\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n return this.curve.point(ax, ay);\n};\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity()) return p;\n\n // P + O = P\n if (p.isInfinity()) return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity()) return p.toJ();\n\n // P + O = P\n if (p.isInfinity()) return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0) return this;\n if (this.isInfinity()) return this;\n if (!pow) return this.dbl();\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++) r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow) jz4 = jz4.redMul(jyd4);\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this;\n if (this.curve.zeroA) return this._zeroDbl();else if (this.curve.threeA) return this._threeDbl();else return this._dbl();\n};\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA) return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n return this.curve._wnafMul(this, k);\n};\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine') return this.eq(p.toJ());\n if (this === p) return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n};\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\nvar utils = require('../utils');\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n return y.redSqr().cmp(rhs) === 0;\n};\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) bits.push(t.andln(1));\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n return this.x.fromRed();\n};","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\nvar assert = utils.assert;\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n Base.call(this, 'edwards', conf);\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA) return num.redNeg();else return this.a.redMul(num);\n};\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC) return num;else return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point');\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red) y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n if (x2.cmp(this.zero) === 0) {\n if (odd) throw new Error('invalid point');else return this.point(this.zero, y);\n }\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error('invalid point');\n if (x.fromRed().isOdd() !== odd) x = x.redNeg();\n return this.point(x, y);\n};\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity()) return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n return lhs.cmp(rhs) === 0;\n};\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);\n};\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this;\n\n // Double in extended coordinates\n if (this.curve.extended) return this._extDbl();else return this._projDbl();\n};\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\nPoint.prototype.add = function add(p) {\n if (this.isInfinity()) return p;\n if (p.isInfinity()) return this;\n if (this.curve.extended) return this._extAdd(p);else return this._projAdd(p);\n};\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else return this.curve._wnafMul(this, k);\n};\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false);\n};\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true);\n};\nPoint.prototype.normalize = function normalize() {\n if (this.zOne) return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t) this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n};\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\nPoint.prototype.eq = function eq(other) {\n return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n};\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;","'use strict';\n\nvar curve = exports;\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');","module.exports = {\n doubles: {\n step: 4,\n points: [['e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'], ['8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'], ['175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'], ['363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'], ['8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'], ['723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'], ['eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'], ['100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'], ['e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'], ['feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'], ['da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'], ['53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'], ['8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'], ['385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'], ['6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'], ['3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'], ['85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'], ['948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'], ['6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'], ['e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'], ['e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'], ['213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'], ['4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'], ['fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'], ['76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'], ['c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'], ['d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'], ['b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'], ['e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'], ['a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'], ['90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'], ['8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'], ['e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'], ['8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'], ['e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'], ['b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'], ['d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'], ['324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'], ['4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'], ['9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'], ['6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'], ['a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'], ['7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'], ['928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'], ['85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'], ['ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'], ['827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'], ['eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'], ['e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'], ['1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'], ['146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'], ['fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'], ['da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'], ['a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'], ['174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'], ['959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'], ['d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'], ['64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'], ['8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'], ['13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'], ['bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'], ['8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'], ['8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'], ['dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'], ['f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82']]\n },\n naf: {\n wnd: 7,\n points: [['f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'], ['2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'], ['5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'], ['acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'], ['774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'], ['f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'], ['d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'], ['defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'], ['2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'], ['352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'], ['2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'], ['9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'], ['daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'], ['c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'], ['6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'], ['1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'], ['605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'], ['62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'], ['80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'], ['7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'], ['d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'], ['49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'], ['77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'], ['f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'], ['463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'], ['f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'], ['caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'], ['2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'], ['7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'], ['754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'], ['e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'], ['186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'], ['df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'], ['5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'], ['290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'], ['af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'], ['766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'], ['59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'], ['f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'], ['7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'], ['948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'], ['7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'], ['3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'], ['d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'], ['1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'], ['733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'], ['15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'], ['a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'], ['e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'], ['311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'], ['34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'], ['f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'], ['d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'], ['32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'], ['7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'], ['ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'], ['16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'], ['eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'], ['78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'], ['494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'], ['a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'], ['c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'], ['841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'], ['5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'], ['36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'], ['336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'], ['8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'], ['1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'], ['85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'], ['29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'], ['a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'], ['4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'], ['d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'], ['ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'], ['af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'], ['e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'], ['591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'], ['11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'], ['3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'], ['cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'], ['c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'], ['c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'], ['a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'], ['347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'], ['da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'], ['c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'], ['4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'], ['3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'], ['cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'], ['b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'], ['d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'], ['48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'], ['dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'], ['6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'], ['e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'], ['eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'], ['13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'], ['ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'], ['b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'], ['ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'], ['8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'], ['52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'], ['e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'], ['7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'], ['5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'], ['32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'], ['e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'], ['8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'], ['4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'], ['3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'], ['674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'], ['d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'], ['30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'], ['be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'], ['93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'], ['b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'], ['d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'], ['d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'], ['463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'], ['7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'], ['74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'], ['30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'], ['9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'], ['176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'], ['75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'], ['809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'], ['1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9']]\n }\n};","'use strict';\n\nvar curves = exports;\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\nvar assert = utils.assert;\nfunction PresetCurve(options) {\n if (options.type === 'short') this.curve = new curve.short(options);else if (options.type === 'edwards') this.curve = new curve.edwards(options);else this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function () {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: ['188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811']\n});\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: ['b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34']\n});\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: ['6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5']\n});\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: ['aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + '5502f25d bf55296c 3a545e38 72760ab7', '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f']\n});\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: ['000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + '3fad0761 353c7086 a272c240 88be9476 9fd16650']\n});\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['9']\n});\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658']\n});\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [{\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n }, {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }],\n gRed: false,\n g: ['79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', pre]\n});","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv) this._importPrivate(options.priv, options.privEnc);\n if (options.pub) this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair) return priv;\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n if (pub.isInfinity()) return {\n result: false,\n reason: 'Invalid public key'\n };\n if (!pub.validate()) return {\n result: false,\n reason: 'Public key is not a point'\n };\n if (!pub.mul(this.ec.curve.n).isInfinity()) return {\n result: false,\n reason: 'Public key * N != O'\n };\n return {\n result: true,\n reason: null\n };\n};\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n if (!this.pub) this.pub = this.ec.g.mul(this.priv);\n if (!enc) return this.pub;\n return this.pub.encode(enc, compact);\n};\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex') return this.priv.toString(16, 2);else return this.priv;\n};\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' || this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if (!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\nKeyPair.prototype.verify = function verify(msg, signature, options) {\n return this.ec.verify(msg, signature, this, undefined, options);\n};\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nfunction Signature(options, enc) {\n if (options instanceof Signature) return options;\n if (this._importDER(options, enc)) return;\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined) this.recoveryParam = null;else this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\nfunction Position() {\n this.place = 0;\n}\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n if (buf[p.place] === 0x00) {\n return false;\n }\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n p.place = off;\n return val;\n}\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if (len + p.place !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n return true;\n};\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push(len >>> (octets << 3) & 0xff);\n }\n arr.push(len);\n}\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r);\n // Pad values\n if (s[0] & 0x80) s = [0].concat(s);\n r = rmPadding(r);\n s = rmPadding(s);\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [0x02];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [0x30];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\nfunction EC(options) {\n if (!(this instanceof EC)) return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options), 'Unknown curve ' + options);\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve) options = {\n curve: options\n };\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options) options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray()\n });\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0) continue;\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) {\n var byteLength;\n if (BN.isBN(msg) || typeof msg === 'number') {\n msg = new BN(msg, 16);\n byteLength = msg.byteLength();\n } else if (typeof msg === 'object') {\n // BN assumes an array-like input and asserts length\n byteLength = msg.length;\n msg = new BN(msg, 16);\n } else {\n // BN converts the value to string\n var str = msg.toString();\n // HEX encoding\n byteLength = str.length + 1 >>> 1;\n msg = new BN(str, 16);\n }\n // Allow overriding\n if (typeof bitLength !== 'number') {\n bitLength = byteLength * 8;\n }\n var delta = bitLength - this.n.bitLength();\n if (delta > 0) msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);else return msg;\n};\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options) options = {};\n if (typeof msg !== 'string' && typeof msg !== 'number' && !BN.isBN(msg)) {\n assert(typeof msg === 'object' && msg && typeof msg.length === 'number', 'Expected message to be an array-like, a hex string, or a BN instance');\n assert(msg.length >>> 0 === msg.length); // non-negative 32-bit integer\n for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);\n }\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(msg, false, options.msgBitLength);\n\n // Would fail further checks, but let's make the error message clear\n assert(!msg.isNeg(), 'Can not sign a negative message');\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Recheck nonce to be bijective to msg\n assert(new BN(nonce).eq(msg), 'Can not sign message');\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8'\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n for (var iter = 0;; iter++) {\n var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) continue;\n var kp = this.g.mul(k);\n if (kp.isInfinity()) continue;\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0) continue;\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0) continue;\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n return new Signature({\n r: r,\n s: s,\n recoveryParam: recoveryParam\n });\n }\n};\nEC.prototype.verify = function verify(msg, signature, key, enc, options) {\n if (!options) options = {};\n msg = this._truncateToN(msg, false, options.msgBitLength);\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false;\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\nEC.prototype.recoverPubKey = function (msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey) r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);else r = this.curve.pointFromX(r, isYOdd);\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\nEC.prototype.getKeyRecoveryParam = function (e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null) return signature.recoveryParam;\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n if (Qprime.eq(Q)) return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub)) this._pub = params.pub;else this._pubBytes = parseBytes(params.pub);\n}\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(eddsa, {\n pub: pub\n });\n};\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair) return secret;\n return new KeyPair(eddsa, {\n secret: secret\n });\n};\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n return a;\n});\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\nmodule.exports = KeyPair;","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n if (typeof sig !== 'object') sig = parseBytes(sig);\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength)\n };\n }\n assert(sig.R && sig.S, 'Signature without R or S');\n if (eddsa.isPoint(sig.R)) this._R = sig.R;\n if (sig.S instanceof BN) this._S = sig.S;\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\nmodule.exports = Signature;","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n if (!(this instanceof EDDSA)) return new EDDSA(curve);\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({\n R: R,\n S: S,\n Rencoded: Rencoded\n });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++) hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature) return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};","'use strict';\n\nvar elliptic = exports;\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.anumber = anumber;\nexports.number = anumber;\nexports.abytes = abytes;\nexports.bytes = abytes;\nexports.ahash = ahash;\nexports.aexists = aexists;\nexports.aoutput = aoutput;\nfunction anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n// copied from utils\nfunction isBytes(a) {\n return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array';\n}\nfunction abytes(b, ...lengths) {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length)) throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function') throw new Error('Hash should be wrapped by utils.wrapConstructor');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\nfunction aexists(instance, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\nconst assert = {\n number: anumber,\n bytes: abytes,\n hash: ahash,\n exists: aexists,\n output: aoutput\n};\nexports.default = assert;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.add5L = exports.add5H = exports.add4H = exports.add4L = exports.add3H = exports.add3L = exports.rotlBL = exports.rotlBH = exports.rotlSL = exports.rotlSH = exports.rotr32L = exports.rotr32H = exports.rotrBL = exports.rotrBH = exports.rotrSL = exports.rotrSH = exports.shrSL = exports.shrSH = exports.toBig = void 0;\nexports.fromBig = fromBig;\nexports.split = split;\nexports.add = add;\nconst U32_MASK64 = /* @__PURE__ */BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */BigInt(32);\n// BigUint64Array is too slow as per 2024, so we implement it using Uint32Array.\n// TODO: re-check https://issues.chromium.org/issues/42212588\nfunction fromBig(n, le = false) {\n if (le) return {\n h: Number(n & U32_MASK64),\n l: Number(n >> _32n & U32_MASK64)\n };\n return {\n h: Number(n >> _32n & U32_MASK64) | 0,\n l: Number(n & U32_MASK64) | 0\n };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const {\n h,\n l\n } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => BigInt(h >>> 0) << _32n | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nexports.shrSH = shrSH;\nconst shrSL = (h, l, s) => h << 32 - s | l >>> s;\nexports.shrSL = shrSL;\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => h >>> s | l << 32 - s;\nexports.rotrSH = rotrSH;\nconst rotrSL = (h, l, s) => h << 32 - s | l >>> s;\nexports.rotrSL = rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => h << 64 - s | l >>> s - 32;\nexports.rotrBH = rotrBH;\nconst rotrBL = (h, l, s) => h >>> s - 32 | l << 64 - s;\nexports.rotrBL = rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nexports.rotr32H = rotr32H;\nconst rotr32L = (h, _l) => h;\nexports.rotr32L = rotr32L;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => h << s | l >>> 32 - s;\nexports.rotlSH = rotlSH;\nconst rotlSL = (h, l, s) => l << s | h >>> 32 - s;\nexports.rotlSL = rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => l << s - 32 | h >>> 64 - s;\nexports.rotlBH = rotlBH;\nconst rotlBL = (h, l, s) => h << s - 32 | l >>> 64 - s;\nexports.rotlBL = rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return {\n h: Ah + Bh + (l / 2 ** 32 | 0) | 0,\n l: l | 0\n };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexports.add3L = add3L;\nconst add3H = (low, Ah, Bh, Ch) => Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0;\nexports.add3H = add3H;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexports.add4L = add4L;\nconst add4H = (low, Ah, Bh, Ch, Dh) => Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0;\nexports.add4H = add4H;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexports.add5L = add5L;\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0;\nexports.add5H = add5H;\n// prettier-ignore\nconst u64 = {\n fromBig,\n split,\n toBig,\n shrSH,\n shrSL,\n rotrSH,\n rotrSL,\n rotrBH,\n rotrBL,\n rotr32H,\n rotr32L,\n rotlSH,\n rotlSL,\n rotlBH,\n rotlBL,\n add,\n add3L,\n add3H,\n add4L,\n add4H,\n add5H,\n add5L\n};\nexports.default = u64;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crypto = void 0;\nexports.crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","\"use strict\";\n\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Hash = exports.nextTick = exports.byteSwapIfBE = exports.byteSwap = exports.isLE = exports.rotl = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\nexports.isBytes = isBytes;\nexports.byteSwap32 = byteSwap32;\nexports.bytesToHex = bytesToHex;\nexports.hexToBytes = hexToBytes;\nexports.asyncLoop = asyncLoop;\nexports.utf8ToBytes = utf8ToBytes;\nexports.toBytes = toBytes;\nexports.concatBytes = concatBytes;\nexports.checkOpts = checkOpts;\nexports.wrapConstructor = wrapConstructor;\nexports.wrapConstructorWithOpts = wrapConstructorWithOpts;\nexports.wrapXOFConstructorWithOpts = wrapXOFConstructorWithOpts;\nexports.randomBytes = randomBytes;\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\nconst _assert_js_1 = require(\"./_assert.js\");\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nfunction isBytes(a) {\n return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array';\n}\n// Cast array to different type\nconst u8 = arr => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.u8 = u8;\nconst u32 = arr => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nexports.u32 = u32;\n// Cast array to view\nconst createView = arr => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.createView = createView;\n// The rotate right (circular right shift) operation for uint32\nconst rotr = (word, shift) => word << 32 - shift | word >>> shift;\nexports.rotr = rotr;\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => word << shift | word >>> 32 - shift >>> 0;\nexports.rotl = rotl;\nexports.isLE = (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n// The byte swap operation for uint32\nconst byteSwap = word => word << 24 & 0xff000000 | word << 8 & 0xff0000 | word >>> 8 & 0xff00 | word >>> 24 & 0xff;\nexports.byteSwap = byteSwap;\n// Conditionally byte swap if on a big-endian platform\nexports.byteSwapIfBE = exports.isLE ? n => n : n => (0, exports.byteSwap)(n);\n// In place byte swap for Uint32Array\nfunction byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = (0, exports.byteSwap)(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */Array.from({\n length: 256\n}, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nfunction bytesToHex(bytes) {\n (0, _assert_js_1.abytes)(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = {\n _0: 48,\n _9: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102\n};\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nconst nextTick = async () => {};\nexports.nextTick = nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string') throw new Error('utf8ToBytes expected string, got ' + typeof str);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nfunction toBytes(data) {\n if (typeof data === 'string') data = utf8ToBytes(data);\n (0, _assert_js_1.abytes)(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nfunction concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n (0, _assert_js_1.abytes)(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nclass Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexports.Hash = Hash;\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]') throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nfunction wrapConstructor(hashCons) {\n const hashC = msg => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nfunction wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = opts => hashCons(opts);\n return hashC;\n}\nfunction wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = opts => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === 'function') {\n return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === 'function') {\n return crypto_1.crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shake256 = exports.shake128 = exports.keccak_512 = exports.keccak_384 = exports.keccak_256 = exports.keccak_224 = exports.sha3_512 = exports.sha3_384 = exports.sha3_256 = exports.sha3_224 = exports.Keccak = void 0;\nexports.keccakP = keccakP;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst _u64_js_1 = require(\"./_u64.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nconst _0n = /* @__PURE__ */BigInt(0);\nconst _1n = /* @__PURE__ */BigInt(1);\nconst _2n = /* @__PURE__ */BigInt(2);\nconst _7n = /* @__PURE__ */BigInt(7);\nconst _256n = /* @__PURE__ */BigInt(256);\nconst _0x71n = /* @__PURE__ */BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((round + 1) * (round + 2) / 2 % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = (R << _1n ^ (R >> _7n) * _0x71n) % _256n;\n if (R & _2n) t ^= _1n << (_1n << /* @__PURE__ */BigInt(j)) - _1n;\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */(0, _u64_js_1.split)(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => s > 32 ? (0, _u64_js_1.rotlBH)(h, l, s) : (0, _u64_js_1.rotlSH)(h, l, s);\nconst rotlL = (h, l, s) => s > 32 ? (0, _u64_js_1.rotlBL)(h, l, s) : (0, _u64_js_1.rotlSL)(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nfunction keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nclass Keccak extends utils_js_1.Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n (0, _assert_js_1.anumber)(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200) throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = (0, utils_js_1.u32)(this.state);\n }\n keccak() {\n if (!utils_js_1.isLE) (0, utils_js_1.byteSwap32)(this.state32);\n keccakP(this.state32, this.rounds);\n if (!utils_js_1.isLE) (0, utils_js_1.byteSwap32)(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n (0, _assert_js_1.aexists)(this);\n const {\n blockLen,\n state\n } = this;\n data = (0, utils_js_1.toBytes)(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished) return;\n this.finished = true;\n const {\n state,\n suffix,\n pos,\n blockLen\n } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n (0, _assert_js_1.aexists)(this, false);\n (0, _assert_js_1.abytes)(out);\n this.finish();\n const bufferOut = this.state;\n const {\n blockLen\n } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n (0, _assert_js_1.anumber)(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n (0, _assert_js_1.aoutput)(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const {\n blockLen,\n suffix,\n outputLen,\n rounds,\n enableXOF\n } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nexports.Keccak = Keccak;\nconst gen = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapConstructor)(() => new Keccak(blockLen, suffix, outputLen));\nexports.sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexports.sha3_256 = gen(0x06, 136, 256 / 8);\nexports.sha3_384 = gen(0x06, 104, 384 / 8);\nexports.sha3_512 = gen(0x06, 72, 512 / 8);\nexports.keccak_224 = gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexports.keccak_256 = gen(0x01, 136, 256 / 8);\nexports.keccak_384 = gen(0x01, 104, 384 / 8);\nexports.keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapXOFConstructorWithOpts)((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexports.shake128 = genShake(0x1f, 168, 128 / 8);\nexports.shake256 = genShake(0x1f, 136, 256 / 8);\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nmodule.exports = function isArguments(value) {\n var str = toStr.call(value);\n var isArgs = str === '[object Arguments]';\n if (!isArgs) {\n isArgs = str !== '[object Array]' && value !== null && typeof value === 'object' && typeof value.length === 'number' && value.length >= 0 && toStr.call(value.callee) === '[object Function]';\n }\n return isArgs;\n};","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n // modified from https://github.com/es-shims/es5-shim\n var has = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n var isArgs = require('./isArguments'); // eslint-disable-line global-require\n var isEnumerable = Object.prototype.propertyIsEnumerable;\n var hasDontEnumBug = !isEnumerable.call({\n toString: null\n }, 'toString');\n var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n var dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'];\n var equalsConstructorPrototype = function (o) {\n var ctor = o.constructor;\n return ctor && ctor.prototype === o;\n };\n var excludedKeys = {\n $applicationCache: true,\n $console: true,\n $external: true,\n $frame: true,\n $frameElement: true,\n $frames: true,\n $innerHeight: true,\n $innerWidth: true,\n $onmozfullscreenchange: true,\n $onmozfullscreenerror: true,\n $outerHeight: true,\n $outerWidth: true,\n $pageXOffset: true,\n $pageYOffset: true,\n $parent: true,\n $scrollLeft: true,\n $scrollTop: true,\n $scrollX: true,\n $scrollY: true,\n $self: true,\n $webkitIndexedDB: true,\n $webkitStorageInfo: true,\n $window: true\n };\n var hasAutomationEqualityBug = function () {\n /* global window */\n if (typeof window === 'undefined') {\n return false;\n }\n for (var k in window) {\n try {\n if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n try {\n equalsConstructorPrototype(window[k]);\n } catch (e) {\n return true;\n }\n }\n } catch (e) {\n return true;\n }\n }\n return false;\n }();\n var equalsConstructorPrototypeIfNotBuggy = function (o) {\n /* global window */\n if (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n return equalsConstructorPrototype(o);\n }\n try {\n return equalsConstructorPrototype(o);\n } catch (e) {\n return false;\n }\n };\n keysShim = function keys(object) {\n var isObject = object !== null && typeof object === 'object';\n var isFunction = toStr.call(object) === '[object Function]';\n var isArguments = isArgs(object);\n var isString = isObject && toStr.call(object) === '[object String]';\n var theKeys = [];\n if (!isObject && !isFunction && !isArguments) {\n throw new TypeError('Object.keys called on a non-object');\n }\n var skipProto = hasProtoEnumBug && isFunction;\n if (isString && object.length > 0 && !has.call(object, 0)) {\n for (var i = 0; i < object.length; ++i) {\n theKeys.push(String(i));\n }\n }\n if (isArguments && object.length > 0) {\n for (var j = 0; j < object.length; ++j) {\n theKeys.push(String(j));\n }\n } else {\n for (var name in object) {\n if (!(skipProto && name === 'prototype') && has.call(object, name)) {\n theKeys.push(String(name));\n }\n }\n }\n if (hasDontEnumBug) {\n var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n for (var k = 0; k < dontEnums.length; ++k) {\n if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n theKeys.push(dontEnums[k]);\n }\n }\n }\n return theKeys;\n };\n}\nmodule.exports = keysShim;","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) {\n return origKeys(o);\n} : require('./implementation');\nvar originalKeys = Object.keys;\nkeysShim.shim = function shimObjectKeys() {\n if (Object.keys) {\n var keysWorksWithArguments = function () {\n // Safari 5.0 bug\n var args = Object.keys(arguments);\n return args && args.length === arguments.length;\n }(1, 2);\n if (!keysWorksWithArguments) {\n Object.keys = function keys(object) {\n // eslint-disable-line func-name-matching\n if (isArgs(object)) {\n return originalKeys(slice.call(object));\n }\n return originalKeys(object);\n };\n }\n } else {\n Object.keys = keysShim;\n }\n return Object.keys || keysShim;\n};\nmodule.exports = keysShim;","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') {\n return false;\n }\n if (typeof Symbol.iterator === 'symbol') {\n return true;\n }\n var obj = {};\n var sym = Symbol('test');\n var symObj = Object(sym);\n if (typeof sym === 'string') {\n return false;\n }\n if (Object.prototype.toString.call(sym) !== '[object Symbol]') {\n return false;\n }\n if (Object.prototype.toString.call(symObj) !== '[object Symbol]') {\n return false;\n }\n\n // temp disabled per https://github.com/ljharb/object.assign/issues/17\n // if (sym instanceof Symbol) { return false; }\n // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n // if (!(symObj instanceof Symbol)) { return false; }\n\n // if (typeof Symbol.prototype.toString !== 'function') { return false; }\n // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n var symVal = 42;\n obj[sym] = symVal;\n for (sym in obj) {\n return false;\n } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) {\n return false;\n }\n if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) {\n return false;\n }\n var syms = Object.getOwnPropertySymbols(obj);\n if (syms.length !== 1 || syms[0] !== sym) {\n return false;\n }\n if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) {\n return false;\n }\n if (typeof Object.getOwnPropertyDescriptor === 'function') {\n var descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n if (descriptor.value !== symVal || descriptor.enumerable !== true) {\n return false;\n }\n }\n return true;\n};","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\nmodule.exports = function hasNativeSymbols() {\n if (typeof origSymbol !== 'function') {\n return false;\n }\n if (typeof Symbol !== 'function') {\n return false;\n }\n if (typeof origSymbol('foo') !== 'symbol') {\n return false;\n }\n if (typeof Symbol('bar') !== 'symbol') {\n return false;\n }\n return hasSymbolSham();\n};","'use strict';\n\nvar test = {\n __proto__: null,\n foo: {}\n};\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n // @ts-expect-error: TS errors on an inherited property for some reason\n return {\n __proto__: test\n }.foo === test.foo && !(test instanceof $Object);\n};","'use strict';\n\n/* eslint no-invalid-this: 1 */\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\nvar concatty = function concatty(a, b) {\n var arr = [];\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n return arr;\n};\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(this, concatty(args, arguments));\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(that, concatty(args, arguments));\n };\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n return bound;\n};","'use strict';\n\nvar implementation = require('./implementation');\nmodule.exports = Function.prototype.bind || implementation;","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);","'use strict';\n\nvar undefined;\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n try {\n return $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n } catch (e) {}\n};\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n try {\n $gOPD({}, '');\n } catch (e) {\n $gOPD = null; // this is IE 8, which has a broken gOPD\n }\n}\nvar throwTypeError = function () {\n throw new $TypeError();\n};\nvar ThrowTypeError = $gOPD ? function () {\n try {\n // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n arguments.callee; // IE 8 does not throw here\n return throwTypeError;\n } catch (calleeThrows) {\n try {\n // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n return $gOPD(arguments, 'callee').get;\n } catch (gOPDthrows) {\n return throwTypeError;\n }\n }\n}() : throwTypeError;\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\nvar getProto = Object.getPrototypeOf || (hasProto ? function (x) {\n return x.__proto__;\n} // eslint-disable-line no-proto\n: null);\nvar needsEval = {};\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\nvar INTRINSICS = {\n __proto__: null,\n '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n '%Array%': Array,\n '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n '%AsyncFromSyncIteratorPrototype%': undefined,\n '%AsyncFunction%': needsEval,\n '%AsyncGenerator%': needsEval,\n '%AsyncGeneratorFunction%': needsEval,\n '%AsyncIteratorPrototype%': needsEval,\n '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n '%Boolean%': Boolean,\n '%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n '%Date%': Date,\n '%decodeURI%': decodeURI,\n '%decodeURIComponent%': decodeURIComponent,\n '%encodeURI%': encodeURI,\n '%encodeURIComponent%': encodeURIComponent,\n '%Error%': $Error,\n '%eval%': eval,\n // eslint-disable-line no-eval\n '%EvalError%': $EvalError,\n '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n '%Function%': $Function,\n '%GeneratorFunction%': needsEval,\n '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n '%isFinite%': isFinite,\n '%isNaN%': isNaN,\n '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n '%JSON%': typeof JSON === 'object' ? JSON : undefined,\n '%Map%': typeof Map === 'undefined' ? undefined : Map,\n '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n '%Math%': Math,\n '%Number%': Number,\n '%Object%': Object,\n '%parseFloat%': parseFloat,\n '%parseInt%': parseInt,\n '%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n '%RangeError%': $RangeError,\n '%ReferenceError%': $ReferenceError,\n '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n '%RegExp%': RegExp,\n '%Set%': typeof Set === 'undefined' ? undefined : Set,\n '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n '%String%': String,\n '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n '%Symbol%': hasSymbols ? Symbol : undefined,\n '%SyntaxError%': $SyntaxError,\n '%ThrowTypeError%': ThrowTypeError,\n '%TypedArray%': TypedArray,\n '%TypeError%': $TypeError,\n '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n '%URIError%': $URIError,\n '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\nif (getProto) {\n try {\n null.error; // eslint-disable-line no-unused-expressions\n } catch (e) {\n // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n var errorProto = getProto(getProto(e));\n INTRINSICS['%Error.prototype%'] = errorProto;\n }\n}\nvar doEval = function doEval(name) {\n var value;\n if (name === '%AsyncFunction%') {\n value = getEvalledConstructor('async function () {}');\n } else if (name === '%GeneratorFunction%') {\n value = getEvalledConstructor('function* () {}');\n } else if (name === '%AsyncGeneratorFunction%') {\n value = getEvalledConstructor('async function* () {}');\n } else if (name === '%AsyncGenerator%') {\n var fn = doEval('%AsyncGeneratorFunction%');\n if (fn) {\n value = fn.prototype;\n }\n } else if (name === '%AsyncIteratorPrototype%') {\n var gen = doEval('%AsyncGenerator%');\n if (gen && getProto) {\n value = getProto(gen.prototype);\n }\n }\n INTRINSICS[name] = value;\n return value;\n};\nvar LEGACY_ALIASES = {\n __proto__: null,\n '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n '%ArrayPrototype%': ['Array', 'prototype'],\n '%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n '%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n '%ArrayProto_values%': ['Array', 'prototype', 'values'],\n '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n '%BooleanPrototype%': ['Boolean', 'prototype'],\n '%DataViewPrototype%': ['DataView', 'prototype'],\n '%DatePrototype%': ['Date', 'prototype'],\n '%ErrorPrototype%': ['Error', 'prototype'],\n '%EvalErrorPrototype%': ['EvalError', 'prototype'],\n '%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n '%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n '%FunctionPrototype%': ['Function', 'prototype'],\n '%Generator%': ['GeneratorFunction', 'prototype'],\n '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n '%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n '%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n '%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n '%JSONParse%': ['JSON', 'parse'],\n '%JSONStringify%': ['JSON', 'stringify'],\n '%MapPrototype%': ['Map', 'prototype'],\n '%NumberPrototype%': ['Number', 'prototype'],\n '%ObjectPrototype%': ['Object', 'prototype'],\n '%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n '%PromisePrototype%': ['Promise', 'prototype'],\n '%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n '%Promise_all%': ['Promise', 'all'],\n '%Promise_reject%': ['Promise', 'reject'],\n '%Promise_resolve%': ['Promise', 'resolve'],\n '%RangeErrorPrototype%': ['RangeError', 'prototype'],\n '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n '%RegExpPrototype%': ['RegExp', 'prototype'],\n '%SetPrototype%': ['Set', 'prototype'],\n '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n '%StringPrototype%': ['String', 'prototype'],\n '%SymbolPrototype%': ['Symbol', 'prototype'],\n '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n '%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n '%TypeErrorPrototype%': ['TypeError', 'prototype'],\n '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n '%URIErrorPrototype%': ['URIError', 'prototype'],\n '%WeakMapPrototype%': ['WeakMap', 'prototype'],\n '%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n var first = $strSlice(string, 0, 1);\n var last = $strSlice(string, -1);\n if (first === '%' && last !== '%') {\n throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n } else if (last === '%' && first !== '%') {\n throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n }\n var result = [];\n $replace(string, rePropName, function (match, number, quote, subString) {\n result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n });\n return result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n var intrinsicName = name;\n var alias;\n if (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n alias = LEGACY_ALIASES[intrinsicName];\n intrinsicName = '%' + alias[0] + '%';\n }\n if (hasOwn(INTRINSICS, intrinsicName)) {\n var value = INTRINSICS[intrinsicName];\n if (value === needsEval) {\n value = doEval(intrinsicName);\n }\n if (typeof value === 'undefined' && !allowMissing) {\n throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n }\n return {\n alias: alias,\n name: intrinsicName,\n value: value\n };\n }\n throw new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n if (typeof name !== 'string' || name.length === 0) {\n throw new $TypeError('intrinsic name must be a non-empty string');\n }\n if (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n throw new $TypeError('\"allowMissing\" argument must be a boolean');\n }\n if ($exec(/^%?[^%]*%?$/, name) === null) {\n throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n }\n var parts = stringToPath(name);\n var intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n var intrinsicRealName = intrinsic.name;\n var value = intrinsic.value;\n var skipFurtherCaching = false;\n var alias = intrinsic.alias;\n if (alias) {\n intrinsicBaseName = alias[0];\n $spliceApply(parts, $concat([0, 1], alias));\n }\n for (var i = 1, isOwn = true; i < parts.length; i += 1) {\n var part = parts[i];\n var first = $strSlice(part, 0, 1);\n var last = $strSlice(part, -1);\n if ((first === '\"' || first === \"'\" || first === '`' || last === '\"' || last === \"'\" || last === '`') && first !== last) {\n throw new $SyntaxError('property names with quotes must have matching quotes');\n }\n if (part === 'constructor' || !isOwn) {\n skipFurtherCaching = true;\n }\n intrinsicBaseName += '.' + part;\n intrinsicRealName = '%' + intrinsicBaseName + '%';\n if (hasOwn(INTRINSICS, intrinsicRealName)) {\n value = INTRINSICS[intrinsicRealName];\n } else if (value != null) {\n if (!(part in value)) {\n if (!allowMissing) {\n throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n }\n return void undefined;\n }\n if ($gOPD && i + 1 >= parts.length) {\n var desc = $gOPD(value, part);\n isOwn = !!desc;\n\n // By convention, when a data property is converted to an accessor\n // property to emulate a data property that does not suffer from\n // the override mistake, that accessor's getter is marked with\n // an `originalValue` property. Here, when we detect this, we\n // uphold the illusion by pretending to see that original data\n // property, i.e., returning the value rather than the getter\n // itself.\n if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n value = desc.get;\n } else {\n value = value[part];\n }\n } else {\n isOwn = hasOwn(value, part);\n value = value[part];\n }\n if (isOwn && !skipFurtherCaching) {\n INTRINSICS[intrinsicRealName] = value;\n }\n }\n }\n return value;\n};","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n try {\n $defineProperty({}, 'a', {\n value: 1\n });\n } catch (e) {\n // IE 8 has a broken defineProperty\n $defineProperty = false;\n }\n}\nmodule.exports = $defineProperty;","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nif ($gOPD) {\n try {\n $gOPD([], 'length');\n } catch (e) {\n // IE 8 has a broken gOPD\n $gOPD = null;\n }\n}\nmodule.exports = $gOPD;","'use strict';\n\nvar $defineProperty = require('es-define-property');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(obj, property, value) {\n if (!obj || typeof obj !== 'object' && typeof obj !== 'function') {\n throw new $TypeError('`obj` must be an object or a function`');\n }\n if (typeof property !== 'string' && typeof property !== 'symbol') {\n throw new $TypeError('`property` must be a string or a symbol`');\n }\n if (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n }\n if (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n throw new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n }\n if (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n }\n if (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n throw new $TypeError('`loose`, if provided, must be a boolean');\n }\n var nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n var nonWritable = arguments.length > 4 ? arguments[4] : null;\n var nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n var loose = arguments.length > 6 ? arguments[6] : false;\n\n /* @type {false | TypedPropertyDescriptor} */\n var desc = !!gopd && gopd(obj, property);\n if ($defineProperty) {\n $defineProperty(obj, property, {\n configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n value: value,\n writable: nonWritable === null && desc ? desc.writable : !nonWritable\n });\n } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) {\n // must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n obj[property] = value; // eslint-disable-line no-param-reassign\n } else {\n throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n }\n};","'use strict';\n\nvar $defineProperty = require('es-define-property');\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n return !!$defineProperty;\n};\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n // node v0.6 has a bug where array lengths can be Set but not Defined\n if (!$defineProperty) {\n return null;\n }\n try {\n return $defineProperty([], 'length', {\n value: 1\n }).length !== 1;\n } catch (e) {\n // In Firefox 4-22, defining length on an array throws an exception.\n return true;\n }\n};\nmodule.exports = hasPropertyDescriptors;","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\nvar isFunction = function (fn) {\n return typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\nvar supportsDescriptors = require('has-property-descriptors')();\nvar defineProperty = function (object, name, value, predicate) {\n if (name in object) {\n if (predicate === true) {\n if (object[name] === value) {\n return;\n }\n } else if (!isFunction(predicate) || !predicate()) {\n return;\n }\n }\n if (supportsDescriptors) {\n defineDataProperty(object, name, value, true);\n } else {\n defineDataProperty(object, name, value);\n }\n};\nvar defineProperties = function (object, map) {\n var predicates = arguments.length > 2 ? arguments[2] : {};\n var props = keys(map);\n if (hasSymbols) {\n props = concat.call(props, Object.getOwnPropertySymbols(map));\n }\n for (var i = 0; i < props.length; i += 1) {\n defineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n }\n};\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\nmodule.exports = defineProperties;"],"mappings":"yIAAA,IAAAA,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAW,mCAGXC,GAAe,CAAC,EACpB,IAASC,GAAI,EAAGA,GAAIF,GAAS,OAAQE,KAAK,CAExC,GADIC,GAAIH,GAAS,OAAOE,EAAC,EACrBD,GAAaE,EAAC,IAAM,OAAW,MAAM,IAAI,UAAUA,GAAI,eAAe,EAC1EF,GAAaE,EAAC,EAAID,EACpB,CAHM,IAAAC,GADGD,GAKT,SAASE,GAAYC,EAAK,CACxB,IAAIC,EAAID,GAAO,GACf,OAAQA,EAAM,WAAc,EAAI,EAAEC,GAAK,EAAI,GAAK,UAAa,EAAEA,GAAK,EAAI,GAAK,UAAa,EAAEA,GAAK,EAAI,GAAK,UAAa,EAAEA,GAAK,EAAI,GAAK,WAAa,EAAEA,GAAK,EAAI,GAAK,SACtK,CACA,SAASC,GAAUC,EAAQ,CAEzB,QADIC,EAAM,EACDC,EAAI,EAAGA,EAAIF,EAAO,OAAQ,EAAEE,EAAG,CACtC,IAAIC,EAAIH,EAAO,WAAWE,CAAC,EAC3B,GAAIC,EAAI,IAAMA,EAAI,IAAK,MAAO,mBAAqBH,EAAS,IAC5DC,EAAML,GAAYK,CAAG,EAAIE,GAAK,CAChC,CAEA,IADAF,EAAML,GAAYK,CAAG,EAChBC,EAAI,EAAGA,EAAIF,EAAO,OAAQ,EAAEE,EAAG,CAClC,IAAIE,EAAIJ,EAAO,WAAWE,CAAC,EAC3BD,EAAML,GAAYK,CAAG,EAAIG,EAAI,EAC/B,CACA,OAAOH,CACT,CACA,SAASI,GAAOL,EAAQM,EAAOC,EAAO,CAEpC,GADAA,EAAQA,GAAS,GACbP,EAAO,OAAS,EAAIM,EAAM,OAASC,EAAO,MAAM,IAAI,UAAU,sBAAsB,EACxFP,EAASA,EAAO,YAAY,EAG5B,IAAIC,EAAMF,GAAUC,CAAM,EAC1B,GAAI,OAAOC,GAAQ,SAAU,MAAM,IAAI,MAAMA,CAAG,EAEhD,QADIO,EAASR,EAAS,IACbE,EAAI,EAAGA,EAAII,EAAM,OAAQ,EAAEJ,EAAG,CACrC,IAAIP,EAAIW,EAAMJ,CAAC,EACf,GAAIP,GAAK,EAAS,MAAM,IAAI,MAAM,gBAAgB,EAClDM,EAAML,GAAYK,CAAG,EAAIN,EACzBa,GAAUhB,GAAS,OAAOG,CAAC,CAC7B,CACA,IAAKO,EAAI,EAAGA,EAAI,EAAG,EAAEA,EACnBD,EAAML,GAAYK,CAAG,EAGvB,IADAA,GAAO,EACFC,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAG,CACtB,IAAIE,EAAIH,IAAQ,EAAIC,GAAK,EAAI,GAC7BM,GAAUhB,GAAS,OAAOY,CAAC,CAC7B,CACA,OAAOI,CACT,CACA,SAASC,GAASC,EAAKH,EAAO,CAE5B,GADAA,EAAQA,GAAS,GACbG,EAAI,OAAS,EAAG,OAAOA,EAAM,aACjC,GAAIA,EAAI,OAASH,EAAO,MAAO,uBAG/B,IAAII,EAAUD,EAAI,YAAY,EAC1BE,EAAUF,EAAI,YAAY,EAC9B,GAAIA,IAAQC,GAAWD,IAAQE,EAAS,MAAO,qBAAuBF,EACtEA,EAAMC,EACN,IAAIE,EAAQH,EAAI,YAAY,GAAG,EAC/B,GAAIG,IAAU,GAAI,MAAO,8BAAgCH,EACzD,GAAIG,IAAU,EAAG,MAAO,sBAAwBH,EAChD,IAAIV,EAASU,EAAI,MAAM,EAAGG,CAAK,EAC3BC,EAAYJ,EAAI,MAAMG,EAAQ,CAAC,EACnC,GAAIC,EAAU,OAAS,EAAG,MAAO,iBACjC,IAAIb,EAAMF,GAAUC,CAAM,EAC1B,GAAI,OAAOC,GAAQ,SAAU,OAAOA,EAEpC,QADIK,EAAQ,CAAC,EACJJ,EAAI,EAAGA,EAAIY,EAAU,OAAQ,EAAEZ,EAAG,CACzC,IAAIC,EAAIW,EAAU,OAAOZ,CAAC,EACtBE,EAAIX,GAAaU,CAAC,EACtB,GAAIC,IAAM,OAAW,MAAO,qBAAuBD,EACnDF,EAAML,GAAYK,CAAG,EAAIG,EAGrB,EAAAF,EAAI,GAAKY,EAAU,SACvBR,EAAM,KAAKF,CAAC,CACd,CACA,OAAIH,IAAQ,EAAU,wBAA0BS,EACzC,CACL,OAAQV,EACR,MAAOM,CACT,CACF,CACA,SAASS,IAAe,CACtB,IAAIC,EAAMP,GAAS,MAAM,KAAM,SAAS,EACxC,GAAI,OAAOO,GAAQ,SAAU,OAAOA,CACtC,CACA,SAASC,GAAOP,EAAK,CACnB,IAAIM,EAAMP,GAAS,MAAM,KAAM,SAAS,EACxC,GAAI,OAAOO,GAAQ,SAAU,OAAOA,EACpC,MAAM,IAAI,MAAMA,CAAG,CACrB,CACA,SAASE,GAAQC,EAAMC,EAAQC,EAASC,EAAK,CAK3C,QAJIC,EAAQ,EACRC,EAAO,EACPC,GAAQ,GAAKJ,GAAW,EACxBb,EAAS,CAAC,EACLN,EAAI,EAAGA,EAAIiB,EAAK,OAAQ,EAAEjB,EAGjC,IAFAqB,EAAQA,GAASH,EAASD,EAAKjB,CAAC,EAChCsB,GAAQJ,EACDI,GAAQH,GACbG,GAAQH,EACRb,EAAO,KAAKe,GAASC,EAAOC,CAAI,EAGpC,GAAIH,EACEE,EAAO,GACThB,EAAO,KAAKe,GAASF,EAAUG,EAAOC,CAAI,MAEvC,CACL,GAAID,GAAQJ,EAAQ,MAAO,iBAC3B,GAAIG,GAASF,EAAUG,EAAOC,EAAM,MAAO,kBAC7C,CACA,OAAOjB,CACT,CACA,SAASkB,GAAcC,EAAO,CAC5B,IAAIX,EAAME,GAAQS,EAAO,EAAG,EAAG,EAAI,EACnC,GAAI,MAAM,QAAQX,CAAG,EAAG,OAAOA,CACjC,CACA,SAASY,GAAQD,EAAO,CACtB,IAAIX,EAAME,GAAQS,EAAO,EAAG,EAAG,EAAI,EACnC,GAAI,MAAM,QAAQX,CAAG,EAAG,OAAOA,EAC/B,MAAM,IAAI,MAAMA,CAAG,CACrB,CACA,SAASa,GAAgBvB,EAAO,CAC9B,IAAIU,EAAME,GAAQZ,EAAO,EAAG,EAAG,EAAK,EACpC,GAAI,MAAM,QAAQU,CAAG,EAAG,OAAOA,CACjC,CACA,SAASc,GAAUxB,EAAO,CACxB,IAAIU,EAAME,GAAQZ,EAAO,EAAG,EAAG,EAAK,EACpC,GAAI,MAAM,QAAQU,CAAG,EAAG,OAAOA,EAC/B,MAAM,IAAI,MAAMA,CAAG,CACrB,CACAzB,GAAO,QAAU,CACf,aAAcwB,GACd,OAAQE,GACR,OAAQZ,GACR,cAAeqB,GACf,QAASE,GACT,gBAAiBC,GACjB,UAAWC,EACb,ICnJA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAA,SACE,KAAQ,WACR,QAAW,QACX,YAAe,kBACf,KAAQ,kBACR,MAAS,CACP,KACF,EACA,QAAW,CACT,KAAQ,kBACR,WAAY,wBACZ,KAAQ,qDACR,KAAQ,+BACR,QAAW,6BACb,EACA,WAAc,CACZ,KAAQ,MACR,IAAO,iCACT,EACA,SAAY,CACV,KACA,WACA,QACA,cACF,EACA,OAAU,oCACV,QAAW,MACX,KAAQ,CACN,IAAO,4CACT,EACA,SAAY,sCACZ,gBAAmB,CACjB,KAAQ,SACR,UAAa,SACb,OAAU,SACV,MAAS,SACT,mBAAoB,SACpB,YAAa,SACb,wBAAyB,SACzB,qBAAsB,SACtB,uBAAwB,SACxB,uBAAwB,SACxB,kBAAmB,SACnB,SAAY,SACZ,MAAS,QACX,EACA,aAAgB,CACd,QAAS,UACT,QAAW,SACX,UAAW,SACX,YAAa,SACb,SAAY,SACZ,sBAAuB,SACvB,4BAA6B,QAC/B,CACF,ICvDA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,eAAC,SAAUA,EAAQD,EAAS,CAC1B,aAGA,SAASE,EAAOC,EAAKC,EAAK,CACxB,GAAI,CAACD,EAAK,MAAM,IAAI,MAAMC,GAAO,kBAAkB,CACrD,CAIA,SAASC,EAASC,EAAMC,EAAW,CACjCD,EAAK,OAASC,EACd,IAAIC,EAAW,UAAY,CAAC,EAC5BA,EAAS,UAAYD,EAAU,UAC/BD,EAAK,UAAY,IAAIE,EACrBF,EAAK,UAAU,YAAcA,CAC/B,CAIA,SAASG,EAAGC,EAAQC,EAAMC,EAAQ,CAChC,GAAIH,EAAG,KAAKC,CAAM,EAChB,OAAOA,EAET,KAAK,SAAW,EAChB,KAAK,MAAQ,KACb,KAAK,OAAS,EAGd,KAAK,IAAM,KACPA,IAAW,QACTC,IAAS,MAAQA,IAAS,QAC5BC,EAASD,EACTA,EAAO,IAET,KAAK,MAAMD,GAAU,EAAGC,GAAQ,GAAIC,GAAU,IAAI,EAEtD,CACI,OAAOX,GAAW,SACpBA,EAAO,QAAUQ,EAEjBT,EAAQ,GAAKS,EAEfA,EAAG,GAAKA,EACRA,EAAG,SAAW,GACd,IAAII,EACJ,GAAI,CACE,OAAO,OAAW,KAAe,OAAO,OAAO,OAAW,IAC5DA,EAAS,OAAO,OAEhBA,EAAS,KAAkB,MAE/B,MAAY,CAAC,CACbJ,EAAG,KAAO,SAAcK,EAAK,CAC3B,OAAIA,aAAeL,EACV,GAEFK,IAAQ,MAAQ,OAAOA,GAAQ,UAAYA,EAAI,YAAY,WAAaL,EAAG,UAAY,MAAM,QAAQK,EAAI,KAAK,CACvH,EACAL,EAAG,IAAM,SAAaM,EAAMC,EAAO,CACjC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EACAP,EAAG,IAAM,SAAaM,EAAMC,EAAO,CACjC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EACAP,EAAG,UAAU,MAAQ,SAAcC,EAAQC,EAAMC,EAAQ,CACvD,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,YAAYA,EAAQC,EAAMC,CAAM,EAE9C,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,WAAWA,EAAQC,EAAMC,CAAM,EAEzCD,IAAS,QACXA,EAAO,IAETT,EAAOS,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,EAAE,EACrDD,EAASA,EAAO,SAAS,EAAE,QAAQ,OAAQ,EAAE,EAC7C,IAAIO,EAAQ,EACRP,EAAO,CAAC,IAAM,MAChBO,IACA,KAAK,SAAW,GAEdA,EAAQP,EAAO,SACbC,IAAS,GACX,KAAK,UAAUD,EAAQO,EAAOL,CAAM,GAEpC,KAAK,WAAWF,EAAQC,EAAMM,CAAK,EAC/BL,IAAW,MACb,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,GAIpD,EACAH,EAAG,UAAU,YAAc,SAAqBC,EAAQC,EAAMC,EAAQ,CAChEF,EAAS,IACX,KAAK,SAAW,EAChBA,EAAS,CAACA,GAERA,EAAS,UACX,KAAK,MAAQ,CAACA,EAAS,QAAS,EAChC,KAAK,OAAS,GACLA,EAAS,kBAClB,KAAK,MAAQ,CAACA,EAAS,SAAWA,EAAS,SAAY,QAAS,EAChE,KAAK,OAAS,IAEdR,EAAOQ,EAAS,gBAAgB,EAChC,KAAK,MAAQ,CAACA,EAAS,SAAWA,EAAS,SAAY,SAAW,CAAC,EACnE,KAAK,OAAS,GAEZE,IAAW,MAGf,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,CAC9C,EACAH,EAAG,UAAU,WAAa,SAAoBC,EAAQC,EAAMC,EAAQ,CAGlE,GADAV,EAAO,OAAOQ,EAAO,QAAW,QAAQ,EACpCA,EAAO,QAAU,EACnB,YAAK,MAAQ,CAAC,CAAC,EACf,KAAK,OAAS,EACP,KAET,KAAK,OAAS,KAAK,KAAKA,EAAO,OAAS,CAAC,EACzC,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASQ,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,CAAC,EAAI,EAElB,IAAIC,EAAGC,EACHC,EAAM,EACV,GAAIT,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGS,EAAI,EAAGD,GAAK,EAAGA,GAAK,EAC9CE,EAAIV,EAAOQ,CAAC,EAAIR,EAAOQ,EAAI,CAAC,GAAK,EAAIR,EAAOQ,EAAI,CAAC,GAAK,GACtD,KAAK,MAAMC,CAAC,GAAKC,GAAKC,EAAM,SAC5B,KAAK,MAAMF,EAAI,CAAC,EAAIC,IAAM,GAAKC,EAAM,SACrCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,aAGKP,IAAW,KACpB,IAAKM,EAAI,EAAGC,EAAI,EAAGD,EAAIR,EAAO,OAAQQ,GAAK,EACzCE,EAAIV,EAAOQ,CAAC,EAAIR,EAAOQ,EAAI,CAAC,GAAK,EAAIR,EAAOQ,EAAI,CAAC,GAAK,GACtD,KAAK,MAAMC,CAAC,GAAKC,GAAKC,EAAM,SAC5B,KAAK,MAAMF,EAAI,CAAC,EAAIC,IAAM,GAAKC,EAAM,SACrCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,KAIN,OAAO,KAAK,MAAM,CACpB,EACA,SAASG,EAAcC,EAAQC,EAAO,CACpC,IAAIC,EAAIF,EAAO,WAAWC,CAAK,EAE/B,OAAIC,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGJA,EAAI,GAAK,EAEpB,CACA,SAASC,EAAaH,EAAQI,EAAYH,EAAO,CAC/C,IAAII,EAAIN,EAAcC,EAAQC,CAAK,EACnC,OAAIA,EAAQ,GAAKG,IACfC,GAAKN,EAAcC,EAAQC,EAAQ,CAAC,GAAK,GAEpCI,CACT,CACAnB,EAAG,UAAU,UAAY,SAAmBC,EAAQO,EAAOL,EAAQ,CAEjE,KAAK,OAAS,KAAK,MAAMF,EAAO,OAASO,GAAS,CAAC,EACnD,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,CAAC,EAAI,EAIlB,IAAIG,EAAM,EACNF,EAAI,EACJC,EACJ,GAAIR,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGQ,GAAKD,EAAOC,GAAK,EAC3CE,EAAIM,EAAahB,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,CAAC,GAAKC,EAAI,SACjBC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,CAAC,GAAKC,IAAM,IAEvBC,GAAO,MAGN,CACL,IAAIQ,EAAcnB,EAAO,OAASO,EAClC,IAAKC,EAAIW,EAAc,IAAM,EAAIZ,EAAQ,EAAIA,EAAOC,EAAIR,EAAO,OAAQQ,GAAK,EAC1EE,EAAIM,EAAahB,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,CAAC,GAAKC,EAAI,SACjBC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,CAAC,GAAKC,IAAM,IAEvBC,GAAO,CAGb,CACA,KAAK,MAAM,CACb,EACA,SAASS,EAAUC,EAAKd,EAAOe,EAAKC,EAAK,CAGvC,QAFIL,EAAI,EACJM,EAAM,KAAK,IAAIH,EAAI,OAAQC,CAAG,EACzBd,EAAID,EAAOC,EAAIgB,EAAKhB,IAAK,CAChC,IAAIO,EAAIM,EAAI,WAAWb,CAAC,EAAI,GAC5BU,GAAKK,EAGDR,GAAK,GACPG,GAAKH,EAAI,GAAK,GAGLA,GAAK,GACdG,GAAKH,EAAI,GAAK,GAIdG,GAAKH,CAET,CACA,OAAOG,CACT,CACAnB,EAAG,UAAU,WAAa,SAAoBC,EAAQC,EAAMM,EAAO,CAEjE,KAAK,MAAQ,CAAC,CAAC,EACf,KAAK,OAAS,EAGd,QAASkB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWzB,EAClEwB,IAEFA,IACAC,EAAUA,EAAUzB,EAAO,EAK3B,QAJI0B,EAAQ3B,EAAO,OAASO,EACxBqB,EAAMD,EAAQF,EACdH,EAAM,KAAK,IAAIK,EAAOA,EAAQC,CAAG,EAAIrB,EACrCsB,EAAO,EACFrB,EAAID,EAAOC,EAAIc,EAAKd,GAAKiB,EAChCI,EAAOT,EAAUpB,EAAQQ,EAAGA,EAAIiB,EAASxB,CAAI,EAC7C,KAAK,MAAMyB,CAAO,EACd,KAAK,MAAM,CAAC,EAAIG,EAAO,SACzB,KAAK,MAAM,CAAC,GAAKA,EAEjB,KAAK,OAAOA,CAAI,EAGpB,GAAID,IAAQ,EAAG,CACb,IAAIE,EAAM,EAEV,IADAD,EAAOT,EAAUpB,EAAQQ,EAAGR,EAAO,OAAQC,CAAI,EAC1CO,EAAI,EAAGA,EAAIoB,EAAKpB,IACnBsB,GAAO7B,EAET,KAAK,MAAM6B,CAAG,EACV,KAAK,MAAM,CAAC,EAAID,EAAO,SACzB,KAAK,MAAM,CAAC,GAAKA,EAEjB,KAAK,OAAOA,CAAI,CAEpB,CACA,KAAK,MAAM,CACb,EACA9B,EAAG,UAAU,KAAO,SAAcgC,EAAM,CACtCA,EAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASvB,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/BuB,EAAK,MAAMvB,CAAC,EAAI,KAAK,MAAMA,CAAC,EAE9BuB,EAAK,OAAS,KAAK,OACnBA,EAAK,SAAW,KAAK,SACrBA,EAAK,IAAM,KAAK,GAClB,EACAhC,EAAG,UAAU,MAAQ,UAAiB,CACpC,IAAImB,EAAI,IAAInB,EAAG,IAAI,EACnB,YAAK,KAAKmB,CAAC,EACJA,CACT,EACAnB,EAAG,UAAU,QAAU,SAAiBiC,EAAM,CAC5C,KAAO,KAAK,OAASA,GACnB,KAAK,MAAM,KAAK,QAAQ,EAAI,EAE9B,OAAO,IACT,EAGAjC,EAAG,UAAU,MAAQ,UAAiB,CACpC,KAAO,KAAK,OAAS,GAAK,KAAK,MAAM,KAAK,OAAS,CAAC,IAAM,GACxD,KAAK,SAEP,OAAO,KAAK,UAAU,CACxB,EACAA,EAAG,UAAU,UAAY,UAAqB,CAE5C,OAAI,KAAK,SAAW,GAAK,KAAK,MAAM,CAAC,IAAM,IACzC,KAAK,SAAW,GAEX,IACT,EACAA,EAAG,UAAU,QAAU,UAAmB,CACxC,OAAQ,KAAK,IAAM,UAAY,SAAW,KAAK,SAAS,EAAE,EAAI,GAChE,EA6BA,IAAIkC,EAAQ,CAAC,GAAI,IAAK,KAAM,MAAO,OAAQ,QAAS,SAAU,UAAW,WAAY,YAAa,aAAc,cAAe,eAAgB,gBAAiB,iBAAkB,kBAAmB,mBAAoB,oBAAqB,qBAAsB,sBAAuB,uBAAwB,wBAAyB,yBAA0B,0BAA2B,2BAA4B,2BAA2B,EACpbC,EAAa,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAChIC,EAAa,CAAC,EAAG,EAAG,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAAS,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SAAU,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAQ,EAC9WpC,EAAG,UAAU,SAAW,SAAkBE,EAAMmC,EAAS,CACvDnC,EAAOA,GAAQ,GACfmC,EAAUA,EAAU,GAAK,EACzB,IAAIC,EACJ,GAAIpC,IAAS,IAAMA,IAAS,MAAO,CACjCoC,EAAM,GAGN,QAFI1B,EAAM,EACN2B,EAAQ,EACH9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIE,EAAI,KAAK,MAAMF,CAAC,EAChBqB,IAASnB,GAAKC,EAAM2B,GAAS,UAAU,SAAS,EAAE,EACtDA,EAAQ5B,IAAM,GAAKC,EAAM,SACzBA,GAAO,EACHA,GAAO,KACTA,GAAO,GACPH,KAEE8B,IAAU,GAAK9B,IAAM,KAAK,OAAS,EACrC6B,EAAMJ,EAAM,EAAIJ,EAAK,MAAM,EAAIA,EAAOQ,EAEtCA,EAAMR,EAAOQ,CAEjB,CAIA,IAHIC,IAAU,IACZD,EAAMC,EAAM,SAAS,EAAE,EAAID,GAEtBA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CACA,GAAIpC,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAIsC,EAAYL,EAAWjC,CAAI,EAE3BuC,EAAYL,EAAWlC,CAAI,EAC/BoC,EAAM,GACN,IAAItB,EAAI,KAAK,MAAM,EAEnB,IADAA,EAAE,SAAW,EACN,CAACA,EAAE,OAAO,GAAG,CAClB,IAAIG,EAAIH,EAAE,KAAKyB,CAAS,EAAE,SAASvC,CAAI,EACvCc,EAAIA,EAAE,MAAMyB,CAAS,EAChBzB,EAAE,OAAO,EAGZsB,EAAMnB,EAAImB,EAFVA,EAAMJ,EAAMM,EAAYrB,EAAE,MAAM,EAAIA,EAAImB,CAI5C,CAIA,IAHI,KAAK,OAAO,IACdA,EAAM,IAAMA,GAEPA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CACA7C,EAAO,GAAO,iCAAiC,CACjD,EACAO,EAAG,UAAU,SAAW,UAAoB,CAC1C,IAAI0C,EAAM,KAAK,MAAM,CAAC,EACtB,OAAI,KAAK,SAAW,EAClBA,GAAO,KAAK,MAAM,CAAC,EAAI,SACd,KAAK,SAAW,GAAK,KAAK,MAAM,CAAC,IAAM,EAEhDA,GAAO,iBAAmB,KAAK,MAAM,CAAC,EAAI,SACjC,KAAK,OAAS,GACvBjD,EAAO,GAAO,4CAA4C,EAErD,KAAK,WAAa,EAAI,CAACiD,EAAMA,CACtC,EACA1C,EAAG,UAAU,OAAS,UAAkB,CACtC,OAAO,KAAK,SAAS,EAAE,CACzB,EACAA,EAAG,UAAU,SAAW,SAAkBG,EAAQwC,EAAQ,CACxD,OAAAlD,EAAO,OAAOW,EAAW,GAAW,EAC7B,KAAK,YAAYA,EAAQD,EAAQwC,CAAM,CAChD,EACA3C,EAAG,UAAU,QAAU,SAAiBG,EAAQwC,EAAQ,CACtD,OAAO,KAAK,YAAY,MAAOxC,EAAQwC,CAAM,CAC/C,EACA3C,EAAG,UAAU,YAAc,SAAqB4C,EAAWzC,EAAQwC,EAAQ,CACzE,IAAIE,EAAa,KAAK,WAAW,EAC7BC,EAAYH,GAAU,KAAK,IAAI,EAAGE,CAAU,EAChDpD,EAAOoD,GAAcC,EAAW,uCAAuC,EACvErD,EAAOqD,EAAY,EAAG,6BAA6B,EACnD,KAAK,MAAM,EACX,IAAIC,EAAe5C,IAAW,KAC1B6C,EAAM,IAAIJ,EAAUE,CAAS,EAC7BG,EAAGxC,EACHyC,EAAI,KAAK,MAAM,EACnB,GAAKH,EAUE,CACL,IAAKtC,EAAI,EAAG,CAACyC,EAAE,OAAO,EAAGzC,IACvBwC,EAAIC,EAAE,MAAM,GAAI,EAChBA,EAAE,OAAO,CAAC,EACVF,EAAIvC,CAAC,EAAIwC,EAEX,KAAOxC,EAAIqC,EAAWrC,IACpBuC,EAAIvC,CAAC,EAAI,CAEb,KAnBmB,CAEjB,IAAKA,EAAI,EAAGA,EAAIqC,EAAYD,EAAYpC,IACtCuC,EAAIvC,CAAC,EAAI,EAEX,IAAKA,EAAI,EAAG,CAACyC,EAAE,OAAO,EAAGzC,IACvBwC,EAAIC,EAAE,MAAM,GAAI,EAChBA,EAAE,OAAO,CAAC,EACVF,EAAIF,EAAYrC,EAAI,CAAC,EAAIwC,CAE7B,CAUA,OAAOD,CACT,EACI,KAAK,MACPhD,EAAG,UAAU,WAAa,SAAoBW,EAAG,CAC/C,MAAO,IAAK,KAAK,MAAMA,CAAC,CAC1B,EAEAX,EAAG,UAAU,WAAa,SAAoBW,EAAG,CAC/C,IAAIwC,EAAIxC,EACJQ,EAAI,EACR,OAAIgC,GAAK,OACPhC,GAAK,GACLgC,KAAO,IAELA,GAAK,KACPhC,GAAK,EACLgC,KAAO,GAELA,GAAK,IACPhC,GAAK,EACLgC,KAAO,GAELA,GAAK,IACPhC,GAAK,EACLgC,KAAO,GAEFhC,EAAIgC,CACb,EAEFnD,EAAG,UAAU,UAAY,SAAmBW,EAAG,CAE7C,GAAIA,IAAM,EAAG,MAAO,IACpB,IAAIwC,EAAIxC,EACJQ,EAAI,EACR,OAAKgC,EAAI,OACPhC,GAAK,GACLgC,KAAO,IAEJA,EAAI,MACPhC,GAAK,EACLgC,KAAO,GAEJA,EAAI,KACPhC,GAAK,EACLgC,KAAO,GAEJA,EAAI,IACPhC,GAAK,EACLgC,KAAO,GAEJA,EAAI,GACPhC,IAEKA,CACT,EAGAnB,EAAG,UAAU,UAAY,UAAqB,CAC5C,IAAIW,EAAI,KAAK,MAAM,KAAK,OAAS,CAAC,EAC9ByC,EAAK,KAAK,WAAWzC,CAAC,EAC1B,OAAQ,KAAK,OAAS,GAAK,GAAKyC,CAClC,EACA,SAASC,EAAWhD,EAAK,CAEvB,QADIM,EAAI,IAAI,MAAMN,EAAI,UAAU,CAAC,EACxBiD,EAAM,EAAGA,EAAM3C,EAAE,OAAQ2C,IAAO,CACvC,IAAI1C,EAAM0C,EAAM,GAAK,EACjBC,EAAOD,EAAM,GACjB3C,EAAE2C,CAAG,GAAKjD,EAAI,MAAMO,CAAG,EAAI,GAAK2C,KAAUA,CAC5C,CACA,OAAO5C,CACT,CAGAX,EAAG,UAAU,SAAW,UAAoB,CAC1C,GAAI,KAAK,OAAO,EAAG,MAAO,GAE1B,QADImB,EAAI,EACCV,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIwC,EAAI,KAAK,UAAU,KAAK,MAAMxC,CAAC,CAAC,EAEpC,GADAU,GAAK8B,EACDA,IAAM,GAAI,KAChB,CACA,OAAO9B,CACT,EACAnB,EAAG,UAAU,WAAa,UAAsB,CAC9C,OAAO,KAAK,KAAK,KAAK,UAAU,EAAI,CAAC,CACvC,EACAA,EAAG,UAAU,OAAS,SAAgBwD,EAAO,CAC3C,OAAI,KAAK,WAAa,EACb,KAAK,IAAI,EAAE,MAAMA,CAAK,EAAE,MAAM,CAAC,EAEjC,KAAK,MAAM,CACpB,EACAxD,EAAG,UAAU,SAAW,SAAkBwD,EAAO,CAC/C,OAAI,KAAK,MAAMA,EAAQ,CAAC,EACf,KAAK,KAAKA,CAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAEjC,KAAK,MAAM,CACpB,EACAxD,EAAG,UAAU,MAAQ,UAAiB,CACpC,OAAO,KAAK,WAAa,CAC3B,EAGAA,EAAG,UAAU,IAAM,UAAe,CAChC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EACAA,EAAG,UAAU,KAAO,UAAgB,CAClC,OAAK,KAAK,OAAO,IACf,KAAK,UAAY,GAEZ,IACT,EAGAA,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,KAAO,KAAK,OAASA,EAAI,QACvB,KAAK,MAAM,KAAK,QAAQ,EAAI,EAE9B,QAASI,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAC9B,KAAK,MAAMA,CAAC,EAAI,KAAK,MAAMA,CAAC,EAAIJ,EAAI,MAAMI,CAAC,EAE7C,OAAO,KAAK,MAAM,CACpB,EACAT,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,KAAKA,CAAG,CACtB,EAGAL,EAAG,UAAU,GAAK,SAAYK,EAAK,CACjC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,IAAIA,CAAG,EAClDA,EAAI,MAAM,EAAE,IAAI,IAAI,CAC7B,EACAL,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,MAAQ,SAAeK,EAAK,CAEvC,IAAI4C,EACA,KAAK,OAAS5C,EAAI,OACpB4C,EAAI5C,EAEJ4C,EAAI,KAEN,QAASxC,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5B,KAAK,MAAMA,CAAC,EAAI,KAAK,MAAMA,CAAC,EAAIJ,EAAI,MAAMI,CAAC,EAE7C,YAAK,OAASwC,EAAE,OACT,KAAK,MAAM,CACpB,EACAjD,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EACAL,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAeK,EAAK,CAEvC,IAAIoD,EACAR,EACA,KAAK,OAAS5C,EAAI,QACpBoD,EAAI,KACJR,EAAI5C,IAEJoD,EAAIpD,EACJ4C,EAAI,MAEN,QAASxC,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5B,KAAK,MAAMA,CAAC,EAAIgD,EAAE,MAAMhD,CAAC,EAAIwC,EAAE,MAAMxC,CAAC,EAExC,GAAI,OAASgD,EACX,KAAOhD,EAAIgD,EAAE,OAAQhD,IACnB,KAAK,MAAMA,CAAC,EAAIgD,EAAE,MAAMhD,CAAC,EAG7B,YAAK,OAASgD,EAAE,OACT,KAAK,MAAM,CACpB,EACAzD,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EACAL,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAewD,EAAO,CACzC/D,EAAO,OAAO+D,GAAU,UAAYA,GAAS,CAAC,EAC9C,IAAIE,EAAc,KAAK,KAAKF,EAAQ,EAAE,EAAI,EACtCG,EAAWH,EAAQ,GAGvB,KAAK,QAAQE,CAAW,EACpBC,EAAW,GACbD,IAIF,QAASjD,EAAI,EAAGA,EAAIiD,EAAajD,IAC/B,KAAK,MAAMA,CAAC,EAAI,CAAC,KAAK,MAAMA,CAAC,EAAI,SAInC,OAAIkD,EAAW,IACb,KAAK,MAAMlD,CAAC,EAAI,CAAC,KAAK,MAAMA,CAAC,EAAI,UAAa,GAAKkD,GAI9C,KAAK,MAAM,CACpB,EACA3D,EAAG,UAAU,KAAO,SAAcwD,EAAO,CACvC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAK,CACjC,EAGAxD,EAAG,UAAU,KAAO,SAAcsD,EAAK5D,EAAK,CAC1CD,EAAO,OAAO6D,GAAQ,UAAYA,GAAO,CAAC,EAC1C,IAAI1C,EAAM0C,EAAM,GAAK,EACjBC,EAAOD,EAAM,GACjB,YAAK,QAAQ1C,EAAM,CAAC,EAChBlB,EACF,KAAK,MAAMkB,CAAG,EAAI,KAAK,MAAMA,CAAG,EAAI,GAAK2C,EAEzC,KAAK,MAAM3C,CAAG,EAAI,KAAK,MAAMA,CAAG,EAAI,EAAE,GAAK2C,GAEtC,KAAK,MAAM,CACpB,EAGAvD,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,IAAIc,EAGJ,GAAI,KAAK,WAAa,GAAKd,EAAI,WAAa,EAC1C,YAAK,SAAW,EAChBc,EAAI,KAAK,KAAKd,CAAG,EACjB,KAAK,UAAY,EACV,KAAK,UAAU,EAGjB,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EACjD,OAAAA,EAAI,SAAW,EACfc,EAAI,KAAK,KAAKd,CAAG,EACjBA,EAAI,SAAW,EACRc,EAAE,UAAU,EAIrB,IAAIsC,EAAGR,EACH,KAAK,OAAS5C,EAAI,QACpBoD,EAAI,KACJR,EAAI5C,IAEJoD,EAAIpD,EACJ4C,EAAI,MAGN,QADIV,EAAQ,EACH9B,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5BU,GAAKsC,EAAE,MAAMhD,CAAC,EAAI,IAAMwC,EAAE,MAAMxC,CAAC,EAAI,GAAK8B,EAC1C,KAAK,MAAM9B,CAAC,EAAIU,EAAI,SACpBoB,EAAQpB,IAAM,GAEhB,KAAOoB,IAAU,GAAK9B,EAAIgD,EAAE,OAAQhD,IAClCU,GAAKsC,EAAE,MAAMhD,CAAC,EAAI,GAAK8B,EACvB,KAAK,MAAM9B,CAAC,EAAIU,EAAI,SACpBoB,EAAQpB,IAAM,GAGhB,GADA,KAAK,OAASsC,EAAE,OACZlB,IAAU,EACZ,KAAK,MAAM,KAAK,MAAM,EAAIA,EAC1B,KAAK,iBAEIkB,IAAM,KACf,KAAOhD,EAAIgD,EAAE,OAAQhD,IACnB,KAAK,MAAMA,CAAC,EAAIgD,EAAE,MAAMhD,CAAC,EAG7B,OAAO,IACT,EAGAT,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,IAAI2C,EACJ,OAAI3C,EAAI,WAAa,GAAK,KAAK,WAAa,GAC1CA,EAAI,SAAW,EACf2C,EAAM,KAAK,IAAI3C,CAAG,EAClBA,EAAI,UAAY,EACT2C,GACE3C,EAAI,WAAa,GAAK,KAAK,WAAa,GACjD,KAAK,SAAW,EAChB2C,EAAM3C,EAAI,IAAI,IAAI,EAClB,KAAK,SAAW,EACT2C,GAEL,KAAK,OAAS3C,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,KAAO,SAAcK,EAAK,CAErC,GAAIA,EAAI,WAAa,EAAG,CACtBA,EAAI,SAAW,EACf,IAAIc,EAAI,KAAK,KAAKd,CAAG,EACrB,OAAAA,EAAI,SAAW,EACRc,EAAE,UAAU,CAGrB,SAAW,KAAK,WAAa,EAC3B,YAAK,SAAW,EAChB,KAAK,KAAKd,CAAG,EACb,KAAK,SAAW,EACT,KAAK,UAAU,EAIxB,IAAIuD,EAAM,KAAK,IAAIvD,CAAG,EAGtB,GAAIuD,IAAQ,EACV,YAAK,SAAW,EAChB,KAAK,OAAS,EACd,KAAK,MAAM,CAAC,EAAI,EACT,KAIT,IAAIH,EAAGR,EACHW,EAAM,GACRH,EAAI,KACJR,EAAI5C,IAEJoD,EAAIpD,EACJ4C,EAAI,MAGN,QADIV,EAAQ,EACH9B,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5BU,GAAKsC,EAAE,MAAMhD,CAAC,EAAI,IAAMwC,EAAE,MAAMxC,CAAC,EAAI,GAAK8B,EAC1CA,EAAQpB,GAAK,GACb,KAAK,MAAMV,CAAC,EAAIU,EAAI,SAEtB,KAAOoB,IAAU,GAAK9B,EAAIgD,EAAE,OAAQhD,IAClCU,GAAKsC,EAAE,MAAMhD,CAAC,EAAI,GAAK8B,EACvBA,EAAQpB,GAAK,GACb,KAAK,MAAMV,CAAC,EAAIU,EAAI,SAItB,GAAIoB,IAAU,GAAK9B,EAAIgD,EAAE,QAAUA,IAAM,KACvC,KAAOhD,EAAIgD,EAAE,OAAQhD,IACnB,KAAK,MAAMA,CAAC,EAAIgD,EAAE,MAAMhD,CAAC,EAG7B,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,CAAC,EACjCgD,IAAM,OACR,KAAK,SAAW,GAEX,KAAK,MAAM,CACpB,EAGAzD,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAO,KAAK,MAAM,EAAE,KAAKA,CAAG,CAC9B,EACA,SAASwD,EAAWC,EAAMzD,EAAKiC,EAAK,CAClCA,EAAI,SAAWjC,EAAI,SAAWyD,EAAK,SACnC,IAAIrC,EAAMqC,EAAK,OAASzD,EAAI,OAAS,EACrCiC,EAAI,OAASb,EACbA,EAAMA,EAAM,EAAI,EAGhB,IAAIgC,EAAIK,EAAK,MAAM,CAAC,EAAI,EACpBb,EAAI5C,EAAI,MAAM,CAAC,EAAI,EACnBc,EAAIsC,EAAIR,EACRc,EAAK5C,EAAI,SACToB,EAAQpB,EAAI,SAAY,EAC5BmB,EAAI,MAAM,CAAC,EAAIyB,EACf,QAASC,EAAI,EAAGA,EAAIvC,EAAKuC,IAAK,CAM5B,QAHIC,EAAS1B,IAAU,GACnB2B,EAAQ3B,EAAQ,SAChB4B,EAAO,KAAK,IAAIH,EAAG3D,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAGsD,EAAIF,EAAK,OAAS,CAAC,EAAGpD,GAAKyD,EAAMzD,IAAK,CAC7D,IAAID,EAAIuD,EAAItD,EAAI,EAChB+C,EAAIK,EAAK,MAAMrD,CAAC,EAAI,EACpBwC,EAAI5C,EAAI,MAAMK,CAAC,EAAI,EACnBS,EAAIsC,EAAIR,EAAIiB,EACZD,GAAU9C,EAAI,SAAY,EAC1B+C,EAAQ/C,EAAI,QACd,CACAmB,EAAI,MAAM0B,CAAC,EAAIE,EAAQ,EACvB3B,EAAQ0B,EAAS,CACnB,CACA,OAAI1B,IAAU,EACZD,EAAI,MAAM0B,CAAC,EAAIzB,EAAQ,EAEvBD,EAAI,SAECA,EAAI,MAAM,CACnB,CAKA,IAAI8B,EAAc,SAAqBN,EAAMzD,EAAKiC,EAAK,CACrD,IAAImB,EAAIK,EAAK,MACTb,EAAI5C,EAAI,MACRgE,EAAI/B,EAAI,MACRtB,EAAI,EACJ+C,EACAO,EACAlB,EACAmB,EAAKd,EAAE,CAAC,EAAI,EACZe,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKjB,EAAE,CAAC,EAAI,EACZkB,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,GAAKpB,EAAE,CAAC,EAAI,EACZqB,EAAMD,GAAK,KACXE,EAAMF,KAAO,GACbG,GAAKvB,EAAE,CAAC,EAAI,EACZwB,EAAMD,GAAK,KACXE,EAAMF,KAAO,GACbG,GAAK1B,EAAE,CAAC,EAAI,EACZ2B,EAAMD,GAAK,KACXE,EAAMF,KAAO,GACbG,GAAK7B,EAAE,CAAC,EAAI,EACZ8B,EAAMD,GAAK,KACXE,EAAMF,KAAO,GACbG,GAAKhC,EAAE,CAAC,EAAI,EACZiC,EAAMD,GAAK,KACXE,EAAMF,KAAO,GACbG,GAAKnC,EAAE,CAAC,EAAI,EACZoC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKtC,EAAE,CAAC,EAAI,EACZuC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKzC,EAAE,CAAC,EAAI,EACZ0C,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKpD,EAAE,CAAC,EAAI,EACZqD,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKvD,EAAE,CAAC,EAAI,EACZwD,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK1D,EAAE,CAAC,EAAI,EACZ2D,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK7D,EAAE,CAAC,EAAI,EACZ8D,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKhE,EAAE,CAAC,EAAI,EACZiE,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKnE,EAAE,CAAC,EAAI,EACZoE,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKtE,EAAE,CAAC,EAAI,EACZuE,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKzE,EAAE,CAAC,EAAI,EACZ0E,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK5E,EAAE,CAAC,EAAI,EACZ6E,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK/E,EAAE,CAAC,EAAI,EACZgF,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACjB1F,EAAI,SAAWwB,EAAK,SAAWzD,EAAI,SACnCiC,EAAI,OAAS,GAEbyB,EAAK,KAAK,KAAKS,EAAK8B,EAAG,EACvBhC,EAAM,KAAK,KAAKE,EAAK+B,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAKG,EAAK6B,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAKqB,EAAK8B,EAAG,EACvB,IAAI4B,IAAMnH,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAM6D,KAAO,IAAM,EAC5CA,IAAM,SAENpE,EAAK,KAAK,KAAKY,EAAK2B,EAAG,EACvBhC,EAAM,KAAK,KAAKK,EAAK4B,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAKM,EAAK0B,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAKwB,EAAK2B,EAAG,EACvBxC,EAAKA,EAAK,KAAK,KAAKS,EAAKiC,EAAG,EAAI,EAChCnC,EAAMA,EAAM,KAAK,KAAKE,EAAKkC,EAAG,EAAI,EAClCpC,EAAMA,EAAM,KAAK,KAAKG,EAAKgC,EAAG,EAAI,EAClCrD,EAAKA,EAAK,KAAK,KAAKqB,EAAKiC,EAAG,EAAI,EAChC,IAAI0B,IAAMpH,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAM8D,KAAO,IAAM,EAC5CA,IAAM,SAENrE,EAAK,KAAK,KAAKe,EAAKwB,EAAG,EACvBhC,EAAM,KAAK,KAAKQ,EAAKyB,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAKS,EAAKuB,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAK2B,EAAKwB,EAAG,EACvBxC,EAAKA,EAAK,KAAK,KAAKY,EAAK8B,EAAG,EAAI,EAChCnC,EAAMA,EAAM,KAAK,KAAKK,EAAK+B,EAAG,EAAI,EAClCpC,EAAMA,EAAM,KAAK,KAAKM,EAAK6B,EAAG,EAAI,EAClCrD,EAAKA,EAAK,KAAK,KAAKwB,EAAK8B,EAAG,EAAI,EAChC3C,EAAKA,EAAK,KAAK,KAAKS,EAAKoC,EAAG,EAAI,EAChCtC,EAAMA,EAAM,KAAK,KAAKE,EAAKqC,EAAG,EAAI,EAClCvC,EAAMA,EAAM,KAAK,KAAKG,EAAKmC,EAAG,EAAI,EAClCxD,EAAKA,EAAK,KAAK,KAAKqB,EAAKoC,EAAG,EAAI,EAChC,IAAIwB,IAAMrH,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAM+D,KAAO,IAAM,EAC5CA,IAAM,SAENtE,EAAK,KAAK,KAAKkB,EAAKqB,EAAG,EACvBhC,EAAM,KAAK,KAAKW,EAAKsB,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAKY,EAAKoB,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAK8B,EAAKqB,EAAG,EACvBxC,EAAKA,EAAK,KAAK,KAAKe,EAAK2B,EAAG,EAAI,EAChCnC,EAAMA,EAAM,KAAK,KAAKQ,EAAK4B,EAAG,EAAI,EAClCpC,EAAMA,EAAM,KAAK,KAAKS,EAAK0B,EAAG,EAAI,EAClCrD,EAAKA,EAAK,KAAK,KAAK2B,EAAK2B,EAAG,EAAI,EAChC3C,EAAKA,EAAK,KAAK,KAAKY,EAAKiC,EAAG,EAAI,EAChCtC,EAAMA,EAAM,KAAK,KAAKK,EAAKkC,EAAG,EAAI,EAClCvC,EAAMA,EAAM,KAAK,KAAKM,EAAKgC,EAAG,EAAI,EAClCxD,EAAKA,EAAK,KAAK,KAAKwB,EAAKiC,EAAG,EAAI,EAChC9C,EAAKA,EAAK,KAAK,KAAKS,EAAKuC,EAAG,EAAI,EAChCzC,EAAMA,EAAM,KAAK,KAAKE,EAAKwC,EAAG,EAAI,EAClC1C,EAAMA,EAAM,KAAK,KAAKG,EAAKsC,EAAG,EAAI,EAClC3D,EAAKA,EAAK,KAAK,KAAKqB,EAAKuC,EAAG,EAAI,EAChC,IAAIsB,IAAMtH,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMgE,KAAO,IAAM,EAC5CA,IAAM,SAENvE,EAAK,KAAK,KAAKqB,EAAKkB,EAAG,EACvBhC,EAAM,KAAK,KAAKc,EAAKmB,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAKe,EAAKiB,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAKiC,EAAKkB,EAAG,EACvBxC,EAAKA,EAAK,KAAK,KAAKkB,EAAKwB,EAAG,EAAI,EAChCnC,EAAMA,EAAM,KAAK,KAAKW,EAAKyB,EAAG,EAAI,EAClCpC,EAAMA,EAAM,KAAK,KAAKY,EAAKuB,EAAG,EAAI,EAClCrD,EAAKA,EAAK,KAAK,KAAK8B,EAAKwB,EAAG,EAAI,EAChC3C,EAAKA,EAAK,KAAK,KAAKe,EAAK8B,EAAG,EAAI,EAChCtC,EAAMA,EAAM,KAAK,KAAKQ,EAAK+B,EAAG,EAAI,EAClCvC,EAAMA,EAAM,KAAK,KAAKS,EAAK6B,EAAG,EAAI,EAClCxD,EAAKA,EAAK,KAAK,KAAK2B,EAAK8B,EAAG,EAAI,EAChC9C,EAAKA,EAAK,KAAK,KAAKY,EAAKoC,EAAG,EAAI,EAChCzC,EAAMA,EAAM,KAAK,KAAKK,EAAKqC,EAAG,EAAI,EAClC1C,EAAMA,EAAM,KAAK,KAAKM,EAAKmC,EAAG,EAAI,EAClC3D,EAAKA,EAAK,KAAK,KAAKwB,EAAKoC,EAAG,EAAI,EAChCjD,EAAKA,EAAK,KAAK,KAAKS,EAAK0C,EAAG,EAAI,EAChC5C,EAAMA,EAAM,KAAK,KAAKE,EAAK2C,EAAG,EAAI,EAClC7C,EAAMA,EAAM,KAAK,KAAKG,EAAKyC,EAAG,EAAI,EAClC9D,EAAKA,EAAK,KAAK,KAAKqB,EAAK0C,EAAG,EAAI,EAChC,IAAIoB,IAAMvH,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMiE,KAAO,IAAM,EAC5CA,IAAM,SAENxE,EAAK,KAAK,KAAKwB,EAAKe,EAAG,EACvBhC,EAAM,KAAK,KAAKiB,EAAKgB,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAKkB,EAAKc,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAKoC,EAAKe,EAAG,EACvBxC,EAAKA,EAAK,KAAK,KAAKqB,EAAKqB,EAAG,EAAI,EAChCnC,EAAMA,EAAM,KAAK,KAAKc,EAAKsB,EAAG,EAAI,EAClCpC,EAAMA,EAAM,KAAK,KAAKe,EAAKoB,EAAG,EAAI,EAClCrD,EAAKA,EAAK,KAAK,KAAKiC,EAAKqB,EAAG,EAAI,EAChC3C,EAAKA,EAAK,KAAK,KAAKkB,EAAK2B,EAAG,EAAI,EAChCtC,EAAMA,EAAM,KAAK,KAAKW,EAAK4B,EAAG,EAAI,EAClCvC,EAAMA,EAAM,KAAK,KAAKY,EAAK0B,EAAG,EAAI,EAClCxD,EAAKA,EAAK,KAAK,KAAK8B,EAAK2B,EAAG,EAAI,EAChC9C,EAAKA,EAAK,KAAK,KAAKe,EAAKiC,EAAG,EAAI,EAChCzC,EAAMA,EAAM,KAAK,KAAKQ,EAAKkC,EAAG,EAAI,EAClC1C,EAAMA,EAAM,KAAK,KAAKS,EAAKgC,EAAG,EAAI,EAClC3D,EAAKA,EAAK,KAAK,KAAK2B,EAAKiC,EAAG,EAAI,EAChCjD,EAAKA,EAAK,KAAK,KAAKY,EAAKuC,EAAG,EAAI,EAChC5C,EAAMA,EAAM,KAAK,KAAKK,EAAKwC,EAAG,EAAI,EAClC7C,EAAMA,EAAM,KAAK,KAAKM,EAAKsC,EAAG,EAAI,EAClC9D,EAAKA,EAAK,KAAK,KAAKwB,EAAKuC,EAAG,EAAI,EAChCpD,EAAKA,EAAK,KAAK,KAAKS,EAAK6C,EAAG,EAAI,EAChC/C,EAAMA,EAAM,KAAK,KAAKE,EAAK8C,EAAG,EAAI,EAClChD,EAAMA,EAAM,KAAK,KAAKG,EAAK4C,EAAG,EAAI,EAClCjE,EAAKA,EAAK,KAAK,KAAKqB,EAAK6C,EAAG,EAAI,EAChC,IAAIkB,IAAMxH,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMkE,KAAO,IAAM,EAC5CA,IAAM,SAENzE,EAAK,KAAK,KAAK2B,EAAKY,EAAG,EACvBhC,EAAM,KAAK,KAAKoB,EAAKa,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAKqB,EAAKW,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAKuC,EAAKY,EAAG,EACvBxC,EAAKA,EAAK,KAAK,KAAKwB,EAAKkB,EAAG,EAAI,EAChCnC,EAAMA,EAAM,KAAK,KAAKiB,EAAKmB,EAAG,EAAI,EAClCpC,EAAMA,EAAM,KAAK,KAAKkB,EAAKiB,EAAG,EAAI,EAClCrD,EAAKA,EAAK,KAAK,KAAKoC,EAAKkB,EAAG,EAAI,EAChC3C,EAAKA,EAAK,KAAK,KAAKqB,EAAKwB,EAAG,EAAI,EAChCtC,EAAMA,EAAM,KAAK,KAAKc,EAAKyB,EAAG,EAAI,EAClCvC,EAAMA,EAAM,KAAK,KAAKe,EAAKuB,EAAG,EAAI,EAClCxD,EAAKA,EAAK,KAAK,KAAKiC,EAAKwB,EAAG,EAAI,EAChC9C,EAAKA,EAAK,KAAK,KAAKkB,EAAK8B,EAAG,EAAI,EAChCzC,EAAMA,EAAM,KAAK,KAAKW,EAAK+B,EAAG,EAAI,EAClC1C,EAAMA,EAAM,KAAK,KAAKY,EAAK6B,EAAG,EAAI,EAClC3D,EAAKA,EAAK,KAAK,KAAK8B,EAAK8B,EAAG,EAAI,EAChCjD,EAAKA,EAAK,KAAK,KAAKe,EAAKoC,EAAG,EAAI,EAChC5C,EAAMA,EAAM,KAAK,KAAKQ,EAAKqC,EAAG,EAAI,EAClC7C,EAAMA,EAAM,KAAK,KAAKS,EAAKmC,EAAG,EAAI,EAClC9D,EAAKA,EAAK,KAAK,KAAK2B,EAAKoC,EAAG,EAAI,EAChCpD,EAAKA,EAAK,KAAK,KAAKY,EAAK0C,EAAG,EAAI,EAChC/C,EAAMA,EAAM,KAAK,KAAKK,EAAK2C,EAAG,EAAI,EAClChD,EAAMA,EAAM,KAAK,KAAKM,EAAKyC,EAAG,EAAI,EAClCjE,EAAKA,EAAK,KAAK,KAAKwB,EAAK0C,EAAG,EAAI,EAChCvD,EAAKA,EAAK,KAAK,KAAKS,EAAKgD,EAAG,EAAI,EAChClD,EAAMA,EAAM,KAAK,KAAKE,EAAKiD,EAAG,EAAI,EAClCnD,EAAMA,EAAM,KAAK,KAAKG,EAAK+C,EAAG,EAAI,EAClCpE,EAAKA,EAAK,KAAK,KAAKqB,EAAKgD,EAAG,EAAI,EAChC,IAAIgB,IAAMzH,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMmE,KAAO,IAAM,EAC5CA,IAAM,SAEN1E,EAAK,KAAK,KAAK8B,GAAKS,EAAG,EACvBhC,EAAM,KAAK,KAAKuB,GAAKU,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAKwB,GAAKQ,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAK0C,GAAKS,EAAG,EACvBxC,EAAKA,EAAK,KAAK,KAAK2B,EAAKe,EAAG,EAAI,EAChCnC,EAAMA,EAAM,KAAK,KAAKoB,EAAKgB,EAAG,EAAI,EAClCpC,EAAMA,EAAM,KAAK,KAAKqB,EAAKc,EAAG,EAAI,EAClCrD,EAAKA,EAAK,KAAK,KAAKuC,EAAKe,EAAG,EAAI,EAChC3C,EAAKA,EAAK,KAAK,KAAKwB,EAAKqB,EAAG,EAAI,EAChCtC,EAAMA,EAAM,KAAK,KAAKiB,EAAKsB,EAAG,EAAI,EAClCvC,EAAMA,EAAM,KAAK,KAAKkB,EAAKoB,EAAG,EAAI,EAClCxD,EAAKA,EAAK,KAAK,KAAKoC,EAAKqB,EAAG,EAAI,EAChC9C,EAAKA,EAAK,KAAK,KAAKqB,EAAK2B,EAAG,EAAI,EAChCzC,EAAMA,EAAM,KAAK,KAAKc,EAAK4B,EAAG,EAAI,EAClC1C,EAAMA,EAAM,KAAK,KAAKe,EAAK0B,EAAG,EAAI,EAClC3D,EAAKA,EAAK,KAAK,KAAKiC,EAAK2B,EAAG,EAAI,EAChCjD,EAAKA,EAAK,KAAK,KAAKkB,EAAKiC,EAAG,EAAI,EAChC5C,EAAMA,EAAM,KAAK,KAAKW,EAAKkC,EAAG,EAAI,EAClC7C,EAAMA,EAAM,KAAK,KAAKY,EAAKgC,EAAG,EAAI,EAClC9D,EAAKA,EAAK,KAAK,KAAK8B,EAAKiC,EAAG,EAAI,EAChCpD,EAAKA,EAAK,KAAK,KAAKe,EAAKuC,EAAG,EAAI,EAChC/C,EAAMA,EAAM,KAAK,KAAKQ,EAAKwC,EAAG,EAAI,EAClChD,EAAMA,EAAM,KAAK,KAAKS,EAAKsC,EAAG,EAAI,EAClCjE,EAAKA,EAAK,KAAK,KAAK2B,EAAKuC,EAAG,EAAI,EAChCvD,EAAKA,EAAK,KAAK,KAAKY,EAAK6C,EAAG,EAAI,EAChClD,EAAMA,EAAM,KAAK,KAAKK,EAAK8C,EAAG,EAAI,EAClCnD,EAAMA,EAAM,KAAK,KAAKM,EAAK4C,EAAG,EAAI,EAClCpE,EAAKA,EAAK,KAAK,KAAKwB,EAAK6C,EAAG,EAAI,EAChC1D,EAAKA,EAAK,KAAK,KAAKS,EAAKmD,EAAG,EAAI,EAChCrD,EAAMA,EAAM,KAAK,KAAKE,EAAKoD,EAAG,EAAI,EAClCtD,EAAMA,EAAM,KAAK,KAAKG,EAAKkD,EAAG,EAAI,EAClCvE,EAAKA,EAAK,KAAK,KAAKqB,EAAKmD,EAAG,EAAI,EAChC,IAAIc,IAAM1H,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMoE,KAAO,IAAM,EAC5CA,IAAM,SAEN3E,EAAK,KAAK,KAAKiC,GAAKM,EAAG,EACvBhC,EAAM,KAAK,KAAK0B,GAAKO,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAK2B,GAAKK,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAK6C,GAAKM,EAAG,EACvBxC,EAAKA,EAAK,KAAK,KAAK8B,GAAKY,EAAG,EAAI,EAChCnC,EAAMA,EAAM,KAAK,KAAKuB,GAAKa,EAAG,EAAI,EAClCpC,EAAMA,EAAM,KAAK,KAAKwB,GAAKW,EAAG,EAAI,EAClCrD,EAAKA,EAAK,KAAK,KAAK0C,GAAKY,EAAG,EAAI,EAChC3C,EAAKA,EAAK,KAAK,KAAK2B,EAAKkB,EAAG,EAAI,EAChCtC,EAAMA,EAAM,KAAK,KAAKoB,EAAKmB,EAAG,EAAI,EAClCvC,EAAMA,EAAM,KAAK,KAAKqB,EAAKiB,EAAG,EAAI,EAClCxD,EAAKA,EAAK,KAAK,KAAKuC,EAAKkB,EAAG,EAAI,EAChC9C,EAAKA,EAAK,KAAK,KAAKwB,EAAKwB,EAAG,EAAI,EAChCzC,EAAMA,EAAM,KAAK,KAAKiB,EAAKyB,EAAG,EAAI,EAClC1C,EAAMA,EAAM,KAAK,KAAKkB,EAAKuB,EAAG,EAAI,EAClC3D,EAAKA,EAAK,KAAK,KAAKoC,EAAKwB,EAAG,EAAI,EAChCjD,EAAKA,EAAK,KAAK,KAAKqB,EAAK8B,EAAG,EAAI,EAChC5C,EAAMA,EAAM,KAAK,KAAKc,EAAK+B,EAAG,EAAI,EAClC7C,EAAMA,EAAM,KAAK,KAAKe,EAAK6B,EAAG,EAAI,EAClC9D,EAAKA,EAAK,KAAK,KAAKiC,EAAK8B,EAAG,EAAI,EAChCpD,EAAKA,EAAK,KAAK,KAAKkB,EAAKoC,EAAG,EAAI,EAChC/C,EAAMA,EAAM,KAAK,KAAKW,EAAKqC,EAAG,EAAI,EAClChD,EAAMA,EAAM,KAAK,KAAKY,EAAKmC,EAAG,EAAI,EAClCjE,EAAKA,EAAK,KAAK,KAAK8B,EAAKoC,EAAG,EAAI,EAChCvD,EAAKA,EAAK,KAAK,KAAKe,EAAK0C,EAAG,EAAI,EAChClD,EAAMA,EAAM,KAAK,KAAKQ,EAAK2C,EAAG,EAAI,EAClCnD,EAAMA,EAAM,KAAK,KAAKS,EAAKyC,EAAG,EAAI,EAClCpE,EAAKA,EAAK,KAAK,KAAK2B,EAAK0C,EAAG,EAAI,EAChC1D,EAAKA,EAAK,KAAK,KAAKY,EAAKgD,EAAG,EAAI,EAChCrD,EAAMA,EAAM,KAAK,KAAKK,EAAKiD,EAAG,EAAI,EAClCtD,EAAMA,EAAM,KAAK,KAAKM,EAAK+C,EAAG,EAAI,EAClCvE,EAAKA,EAAK,KAAK,KAAKwB,EAAKgD,EAAG,EAAI,EAChC7D,EAAKA,EAAK,KAAK,KAAKS,EAAKsD,EAAG,EAAI,EAChCxD,EAAMA,EAAM,KAAK,KAAKE,EAAKuD,EAAG,EAAI,EAClCzD,EAAMA,EAAM,KAAK,KAAKG,EAAKqD,EAAG,EAAI,EAClC1E,EAAKA,EAAK,KAAK,KAAKqB,EAAKsD,EAAG,EAAI,EAChC,IAAIY,IAAM3H,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMqE,KAAO,IAAM,EAC5CA,IAAM,SAEN5E,EAAK,KAAK,KAAKoC,GAAKG,EAAG,EACvBhC,EAAM,KAAK,KAAK6B,GAAKI,EAAG,EACxBjC,EAAMA,EAAM,KAAK,KAAK8B,GAAKE,EAAG,EAAI,EAClClD,EAAK,KAAK,KAAKgD,GAAKG,EAAG,EACvBxC,EAAKA,EAAK,KAAK,KAAKiC,GAAKS,EAAG,EAAI,EAChCnC,EAAMA,EAAM,KAAK,KAAK0B,GAAKU,EAAG,EAAI,EAClCpC,EAAMA,EAAM,KAAK,KAAK2B,GAAKQ,EAAG,EAAI,EAClCrD,EAAKA,EAAK,KAAK,KAAK6C,GAAKS,EAAG,EAAI,EAChC3C,EAAKA,EAAK,KAAK,KAAK8B,GAAKe,EAAG,EAAI,EAChCtC,EAAMA,EAAM,KAAK,KAAKuB,GAAKgB,EAAG,EAAI,EAClCvC,EAAMA,EAAM,KAAK,KAAKwB,GAAKc,EAAG,EAAI,EAClCxD,EAAKA,EAAK,KAAK,KAAK0C,GAAKe,EAAG,EAAI,EAChC9C,EAAKA,EAAK,KAAK,KAAK2B,EAAKqB,EAAG,EAAI,EAChCzC,EAAMA,EAAM,KAAK,KAAKoB,EAAKsB,EAAG,EAAI,EAClC1C,EAAMA,EAAM,KAAK,KAAKqB,EAAKoB,EAAG,EAAI,EAClC3D,EAAKA,EAAK,KAAK,KAAKuC,EAAKqB,EAAG,EAAI,EAChCjD,EAAKA,EAAK,KAAK,KAAKwB,EAAK2B,EAAG,EAAI,EAChC5C,EAAMA,EAAM,KAAK,KAAKiB,EAAK4B,EAAG,EAAI,EAClC7C,EAAMA,EAAM,KAAK,KAAKkB,EAAK0B,EAAG,EAAI,EAClC9D,EAAKA,EAAK,KAAK,KAAKoC,EAAK2B,EAAG,EAAI,EAChCpD,EAAKA,EAAK,KAAK,KAAKqB,EAAKiC,EAAG,EAAI,EAChC/C,EAAMA,EAAM,KAAK,KAAKc,EAAKkC,EAAG,EAAI,EAClChD,EAAMA,EAAM,KAAK,KAAKe,EAAKgC,EAAG,EAAI,EAClCjE,EAAKA,EAAK,KAAK,KAAKiC,EAAKiC,EAAG,EAAI,EAChCvD,EAAKA,EAAK,KAAK,KAAKkB,EAAKuC,EAAG,EAAI,EAChClD,EAAMA,EAAM,KAAK,KAAKW,EAAKwC,EAAG,EAAI,EAClCnD,EAAMA,EAAM,KAAK,KAAKY,EAAKsC,EAAG,EAAI,EAClCpE,EAAKA,EAAK,KAAK,KAAK8B,EAAKuC,EAAG,EAAI,EAChC1D,EAAKA,EAAK,KAAK,KAAKe,EAAK6C,EAAG,EAAI,EAChCrD,EAAMA,EAAM,KAAK,KAAKQ,EAAK8C,EAAG,EAAI,EAClCtD,EAAMA,EAAM,KAAK,KAAKS,EAAK4C,EAAG,EAAI,EAClCvE,EAAKA,EAAK,KAAK,KAAK2B,EAAK6C,EAAG,EAAI,EAChC7D,EAAKA,EAAK,KAAK,KAAKY,EAAKmD,EAAG,EAAI,EAChCxD,EAAMA,EAAM,KAAK,KAAKK,EAAKoD,EAAG,EAAI,EAClCzD,EAAMA,EAAM,KAAK,KAAKM,EAAKkD,EAAG,EAAI,EAClC1E,EAAKA,EAAK,KAAK,KAAKwB,EAAKmD,EAAG,EAAI,EAChChE,EAAKA,EAAK,KAAK,KAAKS,EAAKyD,EAAG,EAAI,EAChC3D,EAAMA,EAAM,KAAK,KAAKE,EAAK0D,EAAG,EAAI,EAClC5D,EAAMA,EAAM,KAAK,KAAKG,EAAKwD,EAAG,EAAI,EAClC7E,EAAKA,EAAK,KAAK,KAAKqB,EAAKyD,EAAG,EAAI,EAChC,IAAIU,IAAM5H,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EACjDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMsE,KAAO,IAAM,EAC5CA,IAAM,SAEN7E,EAAK,KAAK,KAAKoC,GAAKM,EAAG,EACvBnC,EAAM,KAAK,KAAK6B,GAAKO,EAAG,EACxBpC,EAAMA,EAAM,KAAK,KAAK8B,GAAKK,EAAG,EAAI,EAClCrD,EAAK,KAAK,KAAKgD,GAAKM,EAAG,EACvB3C,EAAKA,EAAK,KAAK,KAAKiC,GAAKY,EAAG,EAAI,EAChCtC,EAAMA,EAAM,KAAK,KAAK0B,GAAKa,EAAG,EAAI,EAClCvC,EAAMA,EAAM,KAAK,KAAK2B,GAAKW,EAAG,EAAI,EAClCxD,EAAKA,EAAK,KAAK,KAAK6C,GAAKY,EAAG,EAAI,EAChC9C,EAAKA,EAAK,KAAK,KAAK8B,GAAKkB,EAAG,EAAI,EAChCzC,EAAMA,EAAM,KAAK,KAAKuB,GAAKmB,EAAG,EAAI,EAClC1C,EAAMA,EAAM,KAAK,KAAKwB,GAAKiB,EAAG,EAAI,EAClC3D,EAAKA,EAAK,KAAK,KAAK0C,GAAKkB,EAAG,EAAI,EAChCjD,EAAKA,EAAK,KAAK,KAAK2B,EAAKwB,EAAG,EAAI,EAChC5C,EAAMA,EAAM,KAAK,KAAKoB,EAAKyB,EAAG,EAAI,EAClC7C,EAAMA,EAAM,KAAK,KAAKqB,EAAKuB,EAAG,EAAI,EAClC9D,EAAKA,EAAK,KAAK,KAAKuC,EAAKwB,EAAG,EAAI,EAChCpD,EAAKA,EAAK,KAAK,KAAKwB,EAAK8B,EAAG,EAAI,EAChC/C,EAAMA,EAAM,KAAK,KAAKiB,EAAK+B,EAAG,EAAI,EAClChD,EAAMA,EAAM,KAAK,KAAKkB,EAAK6B,EAAG,EAAI,EAClCjE,EAAKA,EAAK,KAAK,KAAKoC,EAAK8B,EAAG,EAAI,EAChCvD,EAAKA,EAAK,KAAK,KAAKqB,EAAKoC,EAAG,EAAI,EAChClD,EAAMA,EAAM,KAAK,KAAKc,EAAKqC,EAAG,EAAI,EAClCnD,EAAMA,EAAM,KAAK,KAAKe,EAAKmC,EAAG,EAAI,EAClCpE,EAAKA,EAAK,KAAK,KAAKiC,EAAKoC,EAAG,EAAI,EAChC1D,EAAKA,EAAK,KAAK,KAAKkB,EAAK0C,EAAG,EAAI,EAChCrD,EAAMA,EAAM,KAAK,KAAKW,EAAK2C,EAAG,EAAI,EAClCtD,EAAMA,EAAM,KAAK,KAAKY,EAAKyC,EAAG,EAAI,EAClCvE,EAAKA,EAAK,KAAK,KAAK8B,EAAK0C,EAAG,EAAI,EAChC7D,EAAKA,EAAK,KAAK,KAAKe,EAAKgD,EAAG,EAAI,EAChCxD,EAAMA,EAAM,KAAK,KAAKQ,EAAKiD,EAAG,EAAI,EAClCzD,EAAMA,EAAM,KAAK,KAAKS,EAAK+C,EAAG,EAAI,EAClC1E,EAAKA,EAAK,KAAK,KAAK2B,EAAKgD,EAAG,EAAI,EAChChE,EAAKA,EAAK,KAAK,KAAKY,EAAKsD,EAAG,EAAI,EAChC3D,EAAMA,EAAM,KAAK,KAAKK,EAAKuD,EAAG,EAAI,EAClC5D,EAAMA,EAAM,KAAK,KAAKM,EAAKqD,EAAG,EAAI,EAClC7E,EAAKA,EAAK,KAAK,KAAKwB,EAAKsD,EAAG,EAAI,EAChC,IAAIW,IAAO7H,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EAClDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMuE,KAAQ,IAAM,EAC7CA,IAAO,SAEP9E,EAAK,KAAK,KAAKoC,GAAKS,EAAG,EACvBtC,EAAM,KAAK,KAAK6B,GAAKU,EAAG,EACxBvC,EAAMA,EAAM,KAAK,KAAK8B,GAAKQ,EAAG,EAAI,EAClCxD,EAAK,KAAK,KAAKgD,GAAKS,EAAG,EACvB9C,EAAKA,EAAK,KAAK,KAAKiC,GAAKe,EAAG,EAAI,EAChCzC,EAAMA,EAAM,KAAK,KAAK0B,GAAKgB,EAAG,EAAI,EAClC1C,EAAMA,EAAM,KAAK,KAAK2B,GAAKc,EAAG,EAAI,EAClC3D,EAAKA,EAAK,KAAK,KAAK6C,GAAKe,EAAG,EAAI,EAChCjD,EAAKA,EAAK,KAAK,KAAK8B,GAAKqB,EAAG,EAAI,EAChC5C,EAAMA,EAAM,KAAK,KAAKuB,GAAKsB,EAAG,EAAI,EAClC7C,EAAMA,EAAM,KAAK,KAAKwB,GAAKoB,EAAG,EAAI,EAClC9D,EAAKA,EAAK,KAAK,KAAK0C,GAAKqB,EAAG,EAAI,EAChCpD,EAAKA,EAAK,KAAK,KAAK2B,EAAK2B,EAAG,EAAI,EAChC/C,EAAMA,EAAM,KAAK,KAAKoB,EAAK4B,EAAG,EAAI,EAClChD,EAAMA,EAAM,KAAK,KAAKqB,EAAK0B,EAAG,EAAI,EAClCjE,EAAKA,EAAK,KAAK,KAAKuC,EAAK2B,EAAG,EAAI,EAChCvD,EAAKA,EAAK,KAAK,KAAKwB,EAAKiC,EAAG,EAAI,EAChClD,EAAMA,EAAM,KAAK,KAAKiB,EAAKkC,EAAG,EAAI,EAClCnD,EAAMA,EAAM,KAAK,KAAKkB,EAAKgC,EAAG,EAAI,EAClCpE,EAAKA,EAAK,KAAK,KAAKoC,EAAKiC,EAAG,EAAI,EAChC1D,EAAKA,EAAK,KAAK,KAAKqB,EAAKuC,EAAG,EAAI,EAChCrD,EAAMA,EAAM,KAAK,KAAKc,EAAKwC,EAAG,EAAI,EAClCtD,EAAMA,EAAM,KAAK,KAAKe,EAAKsC,EAAG,EAAI,EAClCvE,EAAKA,EAAK,KAAK,KAAKiC,EAAKuC,EAAG,EAAI,EAChC7D,EAAKA,EAAK,KAAK,KAAKkB,EAAK6C,EAAG,EAAI,EAChCxD,EAAMA,EAAM,KAAK,KAAKW,EAAK8C,EAAG,EAAI,EAClCzD,EAAMA,EAAM,KAAK,KAAKY,EAAK4C,EAAG,EAAI,EAClC1E,EAAKA,EAAK,KAAK,KAAK8B,EAAK6C,EAAG,EAAI,EAChChE,EAAKA,EAAK,KAAK,KAAKe,EAAKmD,EAAG,EAAI,EAChC3D,EAAMA,EAAM,KAAK,KAAKQ,EAAKoD,EAAG,EAAI,EAClC5D,EAAMA,EAAM,KAAK,KAAKS,EAAKkD,EAAG,EAAI,EAClC7E,EAAKA,EAAK,KAAK,KAAK2B,EAAKmD,EAAG,EAAI,EAChC,IAAIY,IAAO9H,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EAClDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMwE,KAAQ,IAAM,EAC7CA,IAAO,SAEP/E,EAAK,KAAK,KAAKoC,GAAKY,EAAG,EACvBzC,EAAM,KAAK,KAAK6B,GAAKa,EAAG,EACxB1C,EAAMA,EAAM,KAAK,KAAK8B,GAAKW,EAAG,EAAI,EAClC3D,EAAK,KAAK,KAAKgD,GAAKY,EAAG,EACvBjD,EAAKA,EAAK,KAAK,KAAKiC,GAAKkB,EAAG,EAAI,EAChC5C,EAAMA,EAAM,KAAK,KAAK0B,GAAKmB,EAAG,EAAI,EAClC7C,EAAMA,EAAM,KAAK,KAAK2B,GAAKiB,EAAG,EAAI,EAClC9D,EAAKA,EAAK,KAAK,KAAK6C,GAAKkB,EAAG,EAAI,EAChCpD,EAAKA,EAAK,KAAK,KAAK8B,GAAKwB,EAAG,EAAI,EAChC/C,EAAMA,EAAM,KAAK,KAAKuB,GAAKyB,EAAG,EAAI,EAClChD,EAAMA,EAAM,KAAK,KAAKwB,GAAKuB,EAAG,EAAI,EAClCjE,EAAKA,EAAK,KAAK,KAAK0C,GAAKwB,EAAG,EAAI,EAChCvD,EAAKA,EAAK,KAAK,KAAK2B,EAAK8B,EAAG,EAAI,EAChClD,EAAMA,EAAM,KAAK,KAAKoB,EAAK+B,EAAG,EAAI,EAClCnD,EAAMA,EAAM,KAAK,KAAKqB,EAAK6B,EAAG,EAAI,EAClCpE,EAAKA,EAAK,KAAK,KAAKuC,EAAK8B,EAAG,EAAI,EAChC1D,EAAKA,EAAK,KAAK,KAAKwB,EAAKoC,EAAG,EAAI,EAChCrD,EAAMA,EAAM,KAAK,KAAKiB,EAAKqC,EAAG,EAAI,EAClCtD,EAAMA,EAAM,KAAK,KAAKkB,EAAKmC,EAAG,EAAI,EAClCvE,EAAKA,EAAK,KAAK,KAAKoC,EAAKoC,EAAG,EAAI,EAChC7D,EAAKA,EAAK,KAAK,KAAKqB,EAAK0C,EAAG,EAAI,EAChCxD,EAAMA,EAAM,KAAK,KAAKc,EAAK2C,EAAG,EAAI,EAClCzD,EAAMA,EAAM,KAAK,KAAKe,EAAKyC,EAAG,EAAI,EAClC1E,EAAKA,EAAK,KAAK,KAAKiC,EAAK0C,EAAG,EAAI,EAChChE,EAAKA,EAAK,KAAK,KAAKkB,EAAKgD,EAAG,EAAI,EAChC3D,EAAMA,EAAM,KAAK,KAAKW,EAAKiD,EAAG,EAAI,EAClC5D,EAAMA,EAAM,KAAK,KAAKY,EAAK+C,EAAG,EAAI,EAClC7E,EAAKA,EAAK,KAAK,KAAK8B,EAAKgD,EAAG,EAAI,EAChC,IAAIa,IAAO/H,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EAClDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAMyE,KAAQ,IAAM,EAC7CA,IAAO,SAEPhF,EAAK,KAAK,KAAKoC,GAAKe,EAAG,EACvB5C,EAAM,KAAK,KAAK6B,GAAKgB,EAAG,EACxB7C,EAAMA,EAAM,KAAK,KAAK8B,GAAKc,EAAG,EAAI,EAClC9D,EAAK,KAAK,KAAKgD,GAAKe,EAAG,EACvBpD,EAAKA,EAAK,KAAK,KAAKiC,GAAKqB,EAAG,EAAI,EAChC/C,EAAMA,EAAM,KAAK,KAAK0B,GAAKsB,EAAG,EAAI,EAClChD,EAAMA,EAAM,KAAK,KAAK2B,GAAKoB,EAAG,EAAI,EAClCjE,EAAKA,EAAK,KAAK,KAAK6C,GAAKqB,EAAG,EAAI,EAChCvD,EAAKA,EAAK,KAAK,KAAK8B,GAAK2B,EAAG,EAAI,EAChClD,EAAMA,EAAM,KAAK,KAAKuB,GAAK4B,EAAG,EAAI,EAClCnD,EAAMA,EAAM,KAAK,KAAKwB,GAAK0B,EAAG,EAAI,EAClCpE,EAAKA,EAAK,KAAK,KAAK0C,GAAK2B,EAAG,EAAI,EAChC1D,EAAKA,EAAK,KAAK,KAAK2B,EAAKiC,EAAG,EAAI,EAChCrD,EAAMA,EAAM,KAAK,KAAKoB,EAAKkC,EAAG,EAAI,EAClCtD,EAAMA,EAAM,KAAK,KAAKqB,EAAKgC,EAAG,EAAI,EAClCvE,EAAKA,EAAK,KAAK,KAAKuC,EAAKiC,EAAG,EAAI,EAChC7D,EAAKA,EAAK,KAAK,KAAKwB,EAAKuC,EAAG,EAAI,EAChCxD,EAAMA,EAAM,KAAK,KAAKiB,EAAKwC,EAAG,EAAI,EAClCzD,EAAMA,EAAM,KAAK,KAAKkB,EAAKsC,EAAG,EAAI,EAClC1E,EAAKA,EAAK,KAAK,KAAKoC,EAAKuC,EAAG,EAAI,EAChChE,EAAKA,EAAK,KAAK,KAAKqB,EAAK6C,EAAG,EAAI,EAChC3D,EAAMA,EAAM,KAAK,KAAKc,EAAK8C,EAAG,EAAI,EAClC5D,EAAMA,EAAM,KAAK,KAAKe,EAAK4C,EAAG,EAAI,EAClC7E,EAAKA,EAAK,KAAK,KAAKiC,EAAK6C,EAAG,EAAI,EAChC,IAAIc,IAAOhI,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EAClDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAM0E,KAAQ,IAAM,EAC7CA,IAAO,SAEPjF,EAAK,KAAK,KAAKoC,GAAKkB,EAAG,EACvB/C,EAAM,KAAK,KAAK6B,GAAKmB,EAAG,EACxBhD,EAAMA,EAAM,KAAK,KAAK8B,GAAKiB,EAAG,EAAI,EAClCjE,EAAK,KAAK,KAAKgD,GAAKkB,EAAG,EACvBvD,EAAKA,EAAK,KAAK,KAAKiC,GAAKwB,EAAG,EAAI,EAChClD,EAAMA,EAAM,KAAK,KAAK0B,GAAKyB,EAAG,EAAI,EAClCnD,EAAMA,EAAM,KAAK,KAAK2B,GAAKuB,EAAG,EAAI,EAClCpE,EAAKA,EAAK,KAAK,KAAK6C,GAAKwB,EAAG,EAAI,EAChC1D,EAAKA,EAAK,KAAK,KAAK8B,GAAK8B,EAAG,EAAI,EAChCrD,EAAMA,EAAM,KAAK,KAAKuB,GAAK+B,EAAG,EAAI,EAClCtD,EAAMA,EAAM,KAAK,KAAKwB,GAAK6B,EAAG,EAAI,EAClCvE,EAAKA,EAAK,KAAK,KAAK0C,GAAK8B,EAAG,EAAI,EAChC7D,EAAKA,EAAK,KAAK,KAAK2B,EAAKoC,EAAG,EAAI,EAChCxD,EAAMA,EAAM,KAAK,KAAKoB,EAAKqC,EAAG,EAAI,EAClCzD,EAAMA,EAAM,KAAK,KAAKqB,EAAKmC,EAAG,EAAI,EAClC1E,EAAKA,EAAK,KAAK,KAAKuC,EAAKoC,EAAG,EAAI,EAChChE,EAAKA,EAAK,KAAK,KAAKwB,EAAK0C,EAAG,EAAI,EAChC3D,EAAMA,EAAM,KAAK,KAAKiB,EAAK2C,EAAG,EAAI,EAClC5D,EAAMA,EAAM,KAAK,KAAKkB,EAAKyC,EAAG,EAAI,EAClC7E,EAAKA,EAAK,KAAK,KAAKoC,EAAK0C,EAAG,EAAI,EAChC,IAAIe,IAAOjI,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EAClDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAM2E,KAAQ,IAAM,EAC7CA,IAAO,SAEPlF,EAAK,KAAK,KAAKoC,GAAKqB,EAAG,EACvBlD,EAAM,KAAK,KAAK6B,GAAKsB,EAAG,EACxBnD,EAAMA,EAAM,KAAK,KAAK8B,GAAKoB,EAAG,EAAI,EAClCpE,EAAK,KAAK,KAAKgD,GAAKqB,EAAG,EACvB1D,EAAKA,EAAK,KAAK,KAAKiC,GAAK2B,EAAG,EAAI,EAChCrD,EAAMA,EAAM,KAAK,KAAK0B,GAAK4B,EAAG,EAAI,EAClCtD,EAAMA,EAAM,KAAK,KAAK2B,GAAK0B,EAAG,EAAI,EAClCvE,EAAKA,EAAK,KAAK,KAAK6C,GAAK2B,EAAG,EAAI,EAChC7D,EAAKA,EAAK,KAAK,KAAK8B,GAAKiC,EAAG,EAAI,EAChCxD,EAAMA,EAAM,KAAK,KAAKuB,GAAKkC,EAAG,EAAI,EAClCzD,EAAMA,EAAM,KAAK,KAAKwB,GAAKgC,EAAG,EAAI,EAClC1E,EAAKA,EAAK,KAAK,KAAK0C,GAAKiC,EAAG,EAAI,EAChChE,EAAKA,EAAK,KAAK,KAAK2B,EAAKuC,EAAG,EAAI,EAChC3D,EAAMA,EAAM,KAAK,KAAKoB,EAAKwC,EAAG,EAAI,EAClC5D,EAAMA,EAAM,KAAK,KAAKqB,EAAKsC,EAAG,EAAI,EAClC7E,EAAKA,EAAK,KAAK,KAAKuC,EAAKuC,EAAG,EAAI,EAChC,IAAIgB,IAAOlI,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EAClDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAM4E,KAAQ,IAAM,EAC7CA,IAAO,SAEPnF,EAAK,KAAK,KAAKoC,GAAKwB,EAAG,EACvBrD,EAAM,KAAK,KAAK6B,GAAKyB,EAAG,EACxBtD,EAAMA,EAAM,KAAK,KAAK8B,GAAKuB,EAAG,EAAI,EAClCvE,EAAK,KAAK,KAAKgD,GAAKwB,EAAG,EACvB7D,EAAKA,EAAK,KAAK,KAAKiC,GAAK8B,EAAG,EAAI,EAChCxD,EAAMA,EAAM,KAAK,KAAK0B,GAAK+B,EAAG,EAAI,EAClCzD,EAAMA,EAAM,KAAK,KAAK2B,GAAK6B,EAAG,EAAI,EAClC1E,EAAKA,EAAK,KAAK,KAAK6C,GAAK8B,EAAG,EAAI,EAChChE,EAAKA,EAAK,KAAK,KAAK8B,GAAKoC,EAAG,EAAI,EAChC3D,EAAMA,EAAM,KAAK,KAAKuB,GAAKqC,EAAG,EAAI,EAClC5D,EAAMA,EAAM,KAAK,KAAKwB,GAAKmC,EAAG,EAAI,EAClC7E,EAAKA,EAAK,KAAK,KAAK0C,GAAKoC,EAAG,EAAI,EAChC,IAAIiB,IAAOnI,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EAClDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAM6E,KAAQ,IAAM,EAC7CA,IAAO,SAEPpF,EAAK,KAAK,KAAKoC,GAAK2B,EAAG,EACvBxD,EAAM,KAAK,KAAK6B,GAAK4B,EAAG,EACxBzD,EAAMA,EAAM,KAAK,KAAK8B,GAAK0B,EAAG,EAAI,EAClC1E,EAAK,KAAK,KAAKgD,GAAK2B,EAAG,EACvBhE,EAAKA,EAAK,KAAK,KAAKiC,GAAKiC,EAAG,EAAI,EAChC3D,EAAMA,EAAM,KAAK,KAAK0B,GAAKkC,EAAG,EAAI,EAClC5D,EAAMA,EAAM,KAAK,KAAK2B,GAAKgC,EAAG,EAAI,EAClC7E,EAAKA,EAAK,KAAK,KAAK6C,GAAKiC,EAAG,EAAI,EAChC,IAAIkB,IAAOpI,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EAClDtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAM8E,KAAQ,IAAM,EAC7CA,IAAO,SAEPrF,EAAK,KAAK,KAAKoC,GAAK8B,EAAG,EACvB3D,EAAM,KAAK,KAAK6B,GAAK+B,EAAG,EACxB5D,EAAMA,EAAM,KAAK,KAAK8B,GAAK6B,EAAG,EAAI,EAClC7E,EAAK,KAAK,KAAKgD,GAAK8B,EAAG,EACvB,IAAImB,IAAOrI,EAAI+C,EAAK,KAAOO,EAAM,OAAW,IAAM,EAClD,OAAAtD,GAAKoC,GAAMkB,IAAQ,IAAM,IAAM+E,KAAQ,IAAM,EAC7CA,IAAO,SACPhF,EAAE,CAAC,EAAI8D,GACP9D,EAAE,CAAC,EAAI+D,GACP/D,EAAE,CAAC,EAAIgE,GACPhE,EAAE,CAAC,EAAIiE,GACPjE,EAAE,CAAC,EAAIkE,GACPlE,EAAE,CAAC,EAAImE,GACPnE,EAAE,CAAC,EAAIoE,GACPpE,EAAE,CAAC,EAAIqE,GACPrE,EAAE,CAAC,EAAIsE,GACPtE,EAAE,CAAC,EAAIuE,GACPvE,EAAE,EAAE,EAAIwE,GACRxE,EAAE,EAAE,EAAIyE,GACRzE,EAAE,EAAE,EAAI0E,GACR1E,EAAE,EAAE,EAAI2E,GACR3E,EAAE,EAAE,EAAI4E,GACR5E,EAAE,EAAE,EAAI6E,GACR7E,EAAE,EAAE,EAAI8E,GACR9E,EAAE,EAAE,EAAI+E,GACR/E,EAAE,EAAE,EAAIgF,GACJrI,IAAM,IACRqD,EAAE,EAAE,EAAIrD,EACRsB,EAAI,UAECA,CACT,EAGK,KAAK,OACR8B,EAAcP,GAEhB,SAASyF,EAASxF,EAAMzD,EAAKiC,EAAK,CAChCA,EAAI,SAAWjC,EAAI,SAAWyD,EAAK,SACnCxB,EAAI,OAASwB,EAAK,OAASzD,EAAI,OAG/B,QAFIkC,EAAQ,EACRgH,EAAU,EACLvF,EAAI,EAAGA,EAAI1B,EAAI,OAAS,EAAG0B,IAAK,CAGvC,IAAIC,EAASsF,EACbA,EAAU,EAGV,QAFIrF,EAAQ3B,EAAQ,SAChB4B,EAAO,KAAK,IAAIH,EAAG3D,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAGsD,EAAIF,EAAK,OAAS,CAAC,EAAGpD,GAAKyD,EAAMzD,IAAK,CAC7D,IAAID,EAAIuD,EAAItD,EACR+C,EAAIK,EAAK,MAAMrD,CAAC,EAAI,EACpBwC,EAAI5C,EAAI,MAAMK,CAAC,EAAI,EACnBS,EAAIsC,EAAIR,EACRc,EAAK5C,EAAI,SACb8C,EAASA,GAAU9C,EAAI,SAAY,GAAK,EACxC4C,EAAKA,EAAKG,EAAQ,EAClBA,EAAQH,EAAK,SACbE,EAASA,GAAUF,IAAO,IAAM,EAChCwF,GAAWtF,IAAW,GACtBA,GAAU,QACZ,CACA3B,EAAI,MAAM0B,CAAC,EAAIE,EACf3B,EAAQ0B,EACRA,EAASsF,CACX,CACA,OAAIhH,IAAU,EACZD,EAAI,MAAM0B,CAAC,EAAIzB,EAEfD,EAAI,SAECA,EAAI,MAAM,CACnB,CACA,SAASkH,EAAW1F,EAAMzD,EAAKiC,EAAK,CAClC,IAAImH,EAAO,IAAIC,EACf,OAAOD,EAAK,KAAK3F,EAAMzD,EAAKiC,CAAG,CACjC,CACAtC,EAAG,UAAU,MAAQ,SAAeK,EAAKiC,EAAK,CAC5C,IAAIU,EACAvB,EAAM,KAAK,OAASpB,EAAI,OAC5B,OAAI,KAAK,SAAW,IAAMA,EAAI,SAAW,GACvC2C,EAAMoB,EAAY,KAAM/D,EAAKiC,CAAG,EACvBb,EAAM,GACfuB,EAAMa,EAAW,KAAMxD,EAAKiC,CAAG,EACtBb,EAAM,KACfuB,EAAMsG,EAAS,KAAMjJ,EAAKiC,CAAG,EAE7BU,EAAMwG,EAAW,KAAMnJ,EAAKiC,CAAG,EAE1BU,CACT,EAKA,SAAS0G,EAAKC,EAAGC,EAAG,CAClB,KAAK,EAAID,EACT,KAAK,EAAIC,CACX,CACAF,EAAK,UAAU,QAAU,SAAiBG,EAAG,CAG3C,QAFI1G,EAAI,IAAI,MAAM0G,CAAC,EACfC,EAAI9J,EAAG,UAAU,WAAW6J,CAAC,EAAI,EAC5BpJ,EAAI,EAAGA,EAAIoJ,EAAGpJ,IACrB0C,EAAE1C,CAAC,EAAI,KAAK,OAAOA,EAAGqJ,EAAGD,CAAC,EAE5B,OAAO1G,CACT,EAGAuG,EAAK,UAAU,OAAS,SAAgBC,EAAGG,EAAGD,EAAG,CAC/C,GAAIF,IAAM,GAAKA,IAAME,EAAI,EAAG,OAAOF,EAEnC,QADII,EAAK,EACAtJ,EAAI,EAAGA,EAAIqJ,EAAGrJ,IACrBsJ,IAAOJ,EAAI,IAAMG,EAAIrJ,EAAI,EACzBkJ,IAAM,EAER,OAAOI,CACT,EAIAL,EAAK,UAAU,QAAU,SAAiBM,EAAKC,EAAKC,EAAKC,EAAMC,EAAMP,EAAG,CACtE,QAASpJ,EAAI,EAAGA,EAAIoJ,EAAGpJ,IACrB0J,EAAK1J,CAAC,EAAIwJ,EAAID,EAAIvJ,CAAC,CAAC,EACpB2J,EAAK3J,CAAC,EAAIyJ,EAAIF,EAAIvJ,CAAC,CAAC,CAExB,EACAiJ,EAAK,UAAU,UAAY,SAAmBO,EAAKC,EAAKC,EAAMC,EAAMP,EAAGG,EAAK,CAC1E,KAAK,QAAQA,EAAKC,EAAKC,EAAKC,EAAMC,EAAMP,CAAC,EACzC,QAASQ,EAAI,EAAGA,EAAIR,EAAGQ,IAAM,EAI3B,QAHIP,EAAIO,GAAK,EACTC,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKR,CAAC,EAChCS,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKT,CAAC,EAC3BU,EAAI,EAAGA,EAAIX,EAAGW,GAAKV,EAG1B,QAFIW,EAASH,EACTI,EAASH,EACJ7J,EAAI,EAAGA,EAAI2J,EAAG3J,IAAK,CAC1B,IAAIiK,EAAKR,EAAKK,EAAI9J,CAAC,EACfkK,EAAKR,EAAKI,EAAI9J,CAAC,EACfmK,GAAKV,EAAKK,EAAI9J,EAAI2J,CAAC,EACnBS,EAAKV,EAAKI,EAAI9J,EAAI2J,CAAC,EACnBU,EAAKN,EAASI,GAAKH,EAASI,EAChCA,EAAKL,EAASK,EAAKJ,EAASG,GAC5BA,GAAKE,EACLZ,EAAKK,EAAI9J,CAAC,EAAIiK,EAAKE,GACnBT,EAAKI,EAAI9J,CAAC,EAAIkK,EAAKE,EACnBX,EAAKK,EAAI9J,EAAI2J,CAAC,EAAIM,EAAKE,GACvBT,EAAKI,EAAI9J,EAAI2J,CAAC,EAAIO,EAAKE,EAGnBpK,IAAMoJ,IACRiB,EAAKT,EAAQG,EAASF,EAAQG,EAC9BA,EAASJ,EAAQI,EAASH,EAAQE,EAClCA,EAASM,EAEb,CAGN,EACArB,EAAK,UAAU,YAAc,SAAqBsB,EAAGC,EAAG,CACtD,IAAIpB,EAAI,KAAK,IAAIoB,EAAGD,CAAC,EAAI,EACrBE,EAAMrB,EAAI,EACVpJ,EAAI,EACR,IAAKoJ,EAAIA,EAAI,EAAI,EAAGA,EAAGA,EAAIA,IAAM,EAC/BpJ,IAEF,MAAO,IAAKA,EAAI,EAAIyK,CACtB,EACAxB,EAAK,UAAU,UAAY,SAAmBO,EAAKC,EAAKL,EAAG,CACzD,GAAI,EAAAA,GAAK,GACT,QAASpJ,EAAI,EAAGA,EAAIoJ,EAAI,EAAGpJ,IAAK,CAC9B,IAAI0C,EAAI8G,EAAIxJ,CAAC,EACbwJ,EAAIxJ,CAAC,EAAIwJ,EAAIJ,EAAIpJ,EAAI,CAAC,EACtBwJ,EAAIJ,EAAIpJ,EAAI,CAAC,EAAI0C,EACjBA,EAAI+G,EAAIzJ,CAAC,EACTyJ,EAAIzJ,CAAC,EAAI,CAACyJ,EAAIL,EAAIpJ,EAAI,CAAC,EACvByJ,EAAIL,EAAIpJ,EAAI,CAAC,EAAI,CAAC0C,CACpB,CACF,EACAuG,EAAK,UAAU,aAAe,SAAsByB,EAAItB,EAAG,CAEzD,QADItH,EAAQ,EACH9B,EAAI,EAAGA,EAAIoJ,EAAI,EAAGpJ,IAAK,CAC9B,IAAIE,EAAI,KAAK,MAAMwK,EAAG,EAAI1K,EAAI,CAAC,EAAIoJ,CAAC,EAAI,KAAS,KAAK,MAAMsB,EAAG,EAAI1K,CAAC,EAAIoJ,CAAC,EAAItH,EAC7E4I,EAAG1K,CAAC,EAAIE,EAAI,SACRA,EAAI,SACN4B,EAAQ,EAERA,EAAQ5B,EAAI,SAAY,CAE5B,CACA,OAAOwK,CACT,EACAzB,EAAK,UAAU,WAAa,SAAoByB,EAAI1J,EAAKwI,EAAKJ,EAAG,CAE/D,QADItH,EAAQ,EACH9B,EAAI,EAAGA,EAAIgB,EAAKhB,IACvB8B,EAAQA,GAAS4I,EAAG1K,CAAC,EAAI,GACzBwJ,EAAI,EAAIxJ,CAAC,EAAI8B,EAAQ,KACrBA,EAAQA,IAAU,GAClB0H,EAAI,EAAIxJ,EAAI,CAAC,EAAI8B,EAAQ,KACzBA,EAAQA,IAAU,GAIpB,IAAK9B,EAAI,EAAIgB,EAAKhB,EAAIoJ,EAAG,EAAEpJ,EACzBwJ,EAAIxJ,CAAC,EAAI,EAEXhB,EAAO8C,IAAU,CAAC,EAClB9C,GAAQ8C,EAAQ,SAAa,CAAC,CAChC,EACAmH,EAAK,UAAU,KAAO,SAAcG,EAAG,CAErC,QADIuB,EAAK,IAAI,MAAMvB,CAAC,EACXpJ,EAAI,EAAGA,EAAIoJ,EAAGpJ,IACrB2K,EAAG3K,CAAC,EAAI,EAEV,OAAO2K,CACT,EACA1B,EAAK,UAAU,KAAO,SAAcC,EAAGC,EAAGtH,EAAK,CAC7C,IAAIuH,EAAI,EAAI,KAAK,YAAYF,EAAE,OAAQC,EAAE,MAAM,EAC3CI,EAAM,KAAK,QAAQH,CAAC,EACpBwB,EAAI,KAAK,KAAKxB,CAAC,EACfI,EAAM,IAAI,MAAMJ,CAAC,EACjByB,EAAO,IAAI,MAAMzB,CAAC,EAClB0B,EAAO,IAAI,MAAM1B,CAAC,EAClB2B,EAAO,IAAI,MAAM3B,CAAC,EAClB4B,EAAQ,IAAI,MAAM5B,CAAC,EACnB6B,EAAQ,IAAI,MAAM7B,CAAC,EACnB8B,EAAOrJ,EAAI,MACfqJ,EAAK,OAAS9B,EACd,KAAK,WAAWF,EAAE,MAAOA,EAAE,OAAQM,EAAKJ,CAAC,EACzC,KAAK,WAAWD,EAAE,MAAOA,EAAE,OAAQ4B,EAAM3B,CAAC,EAC1C,KAAK,UAAUI,EAAKoB,EAAGC,EAAMC,EAAM1B,EAAGG,CAAG,EACzC,KAAK,UAAUwB,EAAMH,EAAGI,EAAOC,EAAO7B,EAAGG,CAAG,EAC5C,QAASvJ,EAAI,EAAGA,EAAIoJ,EAAGpJ,IAAK,CAC1B,IAAIsK,EAAKO,EAAK7K,CAAC,EAAIgL,EAAMhL,CAAC,EAAI8K,EAAK9K,CAAC,EAAIiL,EAAMjL,CAAC,EAC/C8K,EAAK9K,CAAC,EAAI6K,EAAK7K,CAAC,EAAIiL,EAAMjL,CAAC,EAAI8K,EAAK9K,CAAC,EAAIgL,EAAMhL,CAAC,EAChD6K,EAAK7K,CAAC,EAAIsK,CACZ,CACA,YAAK,UAAUO,EAAMC,EAAM1B,CAAC,EAC5B,KAAK,UAAUyB,EAAMC,EAAMI,EAAMN,EAAGxB,EAAGG,CAAG,EAC1C,KAAK,UAAU2B,EAAMN,EAAGxB,CAAC,EACzB,KAAK,aAAa8B,EAAM9B,CAAC,EACzBvH,EAAI,SAAWqH,EAAE,SAAWC,EAAE,SAC9BtH,EAAI,OAASqH,EAAE,OAASC,EAAE,OACnBtH,EAAI,MAAM,CACnB,EAGAtC,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,IAAIiC,EAAM,IAAItC,EAAG,IAAI,EACrB,OAAAsC,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASjC,EAAI,MAAM,EACvC,KAAK,MAAMA,EAAKiC,CAAG,CAC5B,EAGAtC,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,IAAIiC,EAAM,IAAItC,EAAG,IAAI,EACrB,OAAAsC,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASjC,EAAI,MAAM,EACvCmJ,EAAW,KAAMnJ,EAAKiC,CAAG,CAClC,EAGAtC,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAO,KAAK,MAAM,EAAE,MAAMA,EAAK,IAAI,CACrC,EACAL,EAAG,UAAU,MAAQ,SAAeK,EAAK,CACvCZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAItB,QADIkC,EAAQ,EACH9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIE,GAAK,KAAK,MAAMF,CAAC,EAAI,GAAKJ,EAC1B0D,GAAMpD,EAAI,WAAc4B,EAAQ,UACpCA,IAAU,GACVA,GAAS5B,EAAI,SAAY,EAEzB4B,GAASwB,IAAO,GAChB,KAAK,MAAMtD,CAAC,EAAIsD,EAAK,QACvB,CACA,OAAIxB,IAAU,IACZ,KAAK,MAAM9B,CAAC,EAAI8B,EAChB,KAAK,UAEA,IACT,EACAvC,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAGAL,EAAG,UAAU,IAAM,UAAe,CAChC,OAAO,KAAK,IAAI,IAAI,CACtB,EAGAA,EAAG,UAAU,KAAO,UAAgB,CAClC,OAAO,KAAK,KAAK,KAAK,MAAM,CAAC,CAC/B,EAGAA,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,IAAIM,EAAI0C,EAAWhD,CAAG,EACtB,GAAIM,EAAE,SAAW,EAAG,OAAO,IAAIX,EAAG,CAAC,EAInC,QADIgD,EAAM,KACDvC,EAAI,EAAGA,EAAIE,EAAE,QAChBA,EAAEF,CAAC,IAAM,EADeA,IAAKuC,EAAMA,EAAI,IAAI,EAC/C,CAEF,GAAI,EAAEvC,EAAIE,EAAE,OACV,QAASuC,EAAIF,EAAI,IAAI,EAAGvC,EAAIE,EAAE,OAAQF,IAAKyC,EAAIA,EAAE,IAAI,EAC/CvC,EAAEF,CAAC,IAAM,IACbuC,EAAMA,EAAI,IAAIE,CAAC,GAGnB,OAAOF,CACT,EAGAhD,EAAG,UAAU,OAAS,SAAgB4L,EAAM,CAC1CnM,EAAO,OAAOmM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIzK,EAAIyK,EAAO,GACXvB,GAAKuB,EAAOzK,GAAK,GACjB0K,EAAY,WAAc,GAAK1K,GAAK,GAAKA,EACzCV,EACJ,GAAIU,IAAM,EAAG,CACX,IAAIoB,EAAQ,EACZ,IAAK9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CAChC,IAAIqL,EAAW,KAAK,MAAMrL,CAAC,EAAIoL,EAC3B7K,GAAK,KAAK,MAAMP,CAAC,EAAI,GAAKqL,GAAY3K,EAC1C,KAAK,MAAMV,CAAC,EAAIO,EAAIuB,EACpBA,EAAQuJ,IAAa,GAAK3K,CAC5B,CACIoB,IACF,KAAK,MAAM9B,CAAC,EAAI8B,EAChB,KAAK,SAET,CACA,GAAI8H,IAAM,EAAG,CACX,IAAK5J,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAChC,KAAK,MAAMA,EAAI4J,CAAC,EAAI,KAAK,MAAM5J,CAAC,EAElC,IAAKA,EAAI,EAAGA,EAAI4J,EAAG5J,IACjB,KAAK,MAAMA,CAAC,EAAI,EAElB,KAAK,QAAU4J,CACjB,CACA,OAAO,KAAK,MAAM,CACpB,EACArK,EAAG,UAAU,MAAQ,SAAe4L,EAAM,CAExC,OAAAnM,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOmM,CAAI,CACzB,EAKA5L,EAAG,UAAU,OAAS,SAAgB4L,EAAMG,EAAMC,EAAU,CAC1DvM,EAAO,OAAOmM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIK,EACAF,EACFE,GAAKF,EAAOA,EAAO,IAAM,GAEzBE,EAAI,EAEN,IAAI9K,EAAIyK,EAAO,GACXvB,EAAI,KAAK,KAAKuB,EAAOzK,GAAK,GAAI,KAAK,MAAM,EACzC+K,EAAO,SAAY,WAAc/K,GAAKA,EACtCgL,EAAcH,EAKlB,GAJAC,GAAK5B,EACL4B,EAAI,KAAK,IAAI,EAAGA,CAAC,EAGbE,EAAa,CACf,QAAS1L,EAAI,EAAGA,EAAI4J,EAAG5J,IACrB0L,EAAY,MAAM1L,CAAC,EAAI,KAAK,MAAMA,CAAC,EAErC0L,EAAY,OAAS9B,CACvB,CACA,GAAIA,IAAM,EAEH,GAAI,KAAK,OAASA,EAEvB,IADA,KAAK,QAAUA,EACV5J,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3B,KAAK,MAAMA,CAAC,EAAI,KAAK,MAAMA,EAAI4J,CAAC,OAGlC,KAAK,MAAM,CAAC,EAAI,EAChB,KAAK,OAAS,EAEhB,IAAI9H,EAAQ,EACZ,IAAK9B,EAAI,KAAK,OAAS,EAAGA,GAAK,IAAM8B,IAAU,GAAK9B,GAAKwL,GAAIxL,IAAK,CAChE,IAAIqB,EAAO,KAAK,MAAMrB,CAAC,EAAI,EAC3B,KAAK,MAAMA,CAAC,EAAI8B,GAAS,GAAKpB,EAAIW,IAASX,EAC3CoB,EAAQT,EAAOoK,CACjB,CAGA,OAAIC,GAAe5J,IAAU,IAC3B4J,EAAY,MAAMA,EAAY,QAAQ,EAAI5J,GAExC,KAAK,SAAW,IAClB,KAAK,MAAM,CAAC,EAAI,EAChB,KAAK,OAAS,GAET,KAAK,MAAM,CACpB,EACAvC,EAAG,UAAU,MAAQ,SAAe4L,EAAMG,EAAMC,EAAU,CAExD,OAAAvM,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOmM,EAAMG,EAAMC,CAAQ,CACzC,EAGAhM,EAAG,UAAU,KAAO,SAAc4L,EAAM,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EACA5L,EAAG,UAAU,MAAQ,SAAe4L,EAAM,CACxC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGA5L,EAAG,UAAU,KAAO,SAAc4L,EAAM,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EACA5L,EAAG,UAAU,MAAQ,SAAe4L,EAAM,CACxC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGA5L,EAAG,UAAU,MAAQ,SAAesD,EAAK,CACvC7D,EAAO,OAAO6D,GAAQ,UAAYA,GAAO,CAAC,EAC1C,IAAInC,EAAImC,EAAM,GACV+G,GAAK/G,EAAMnC,GAAK,GAChB+B,EAAI,GAAK/B,EAGb,GAAI,KAAK,QAAUkJ,EAAG,MAAO,GAG7B,IAAI1J,EAAI,KAAK,MAAM0J,CAAC,EACpB,MAAO,CAAC,EAAE1J,EAAIuC,EAChB,EAGAlD,EAAG,UAAU,OAAS,SAAgB4L,EAAM,CAC1CnM,EAAO,OAAOmM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIzK,EAAIyK,EAAO,GACXvB,GAAKuB,EAAOzK,GAAK,GAErB,GADA1B,EAAO,KAAK,WAAa,EAAG,yCAAyC,EACjE,KAAK,QAAU4K,EACjB,OAAO,KAMT,GAJIlJ,IAAM,GACRkJ,IAEF,KAAK,OAAS,KAAK,IAAIA,EAAG,KAAK,MAAM,EACjClJ,IAAM,EAAG,CACX,IAAI+K,EAAO,SAAY,WAAc/K,GAAKA,EAC1C,KAAK,MAAM,KAAK,OAAS,CAAC,GAAK+K,CACjC,CACA,OAAO,KAAK,MAAM,CACpB,EAGAlM,EAAG,UAAU,MAAQ,SAAe4L,EAAM,CACxC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGA5L,EAAG,UAAU,MAAQ,SAAeK,EAAK,CAGvC,OAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAU,KAAK,MAAM,CAACA,CAAG,EAG/B,KAAK,WAAa,EAChB,KAAK,SAAW,IAAM,KAAK,MAAM,CAAC,EAAI,GAAKA,GAC7C,KAAK,MAAM,CAAC,EAAIA,GAAO,KAAK,MAAM,CAAC,EAAI,GACvC,KAAK,SAAW,EACT,OAET,KAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,MAIF,KAAK,OAAOA,CAAG,CACxB,EACAL,EAAG,UAAU,OAAS,SAAgBK,EAAK,CACzC,KAAK,MAAM,CAAC,GAAKA,EAGjB,QAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,CAAC,GAAK,SAAWA,IAC7D,KAAK,MAAMA,CAAC,GAAK,SACbA,IAAM,KAAK,OAAS,EACtB,KAAK,MAAMA,EAAI,CAAC,EAAI,EAEpB,KAAK,MAAMA,EAAI,CAAC,IAGpB,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,EAAI,CAAC,EAClC,IACT,EAGAT,EAAG,UAAU,MAAQ,SAAeK,EAAK,CAGvC,GAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAG,OAAO,KAAK,MAAM,CAACA,CAAG,EACnC,GAAI,KAAK,WAAa,EACpB,YAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,KAGT,GADA,KAAK,MAAM,CAAC,GAAKA,EACb,KAAK,SAAW,GAAK,KAAK,MAAM,CAAC,EAAI,EACvC,KAAK,MAAM,CAAC,EAAI,CAAC,KAAK,MAAM,CAAC,EAC7B,KAAK,SAAW,MAGhB,SAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,CAAC,EAAI,EAAGA,IACpD,KAAK,MAAMA,CAAC,GAAK,SACjB,KAAK,MAAMA,EAAI,CAAC,GAAK,EAGzB,OAAO,KAAK,MAAM,CACpB,EACAT,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EACAL,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EACAL,EAAG,UAAU,KAAO,UAAgB,CAClC,YAAK,SAAW,EACT,IACT,EACAA,EAAG,UAAU,IAAM,UAAe,CAChC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EACAA,EAAG,UAAU,aAAe,SAAsBK,EAAKmB,EAAK4K,EAAO,CACjE,IAAI3K,EAAMpB,EAAI,OAAS+L,EACnB3L,EACJ,KAAK,QAAQgB,CAAG,EAChB,IAAId,EACA4B,EAAQ,EACZ,IAAK9B,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CAC/BE,GAAK,KAAK,MAAMF,EAAI2L,CAAK,EAAI,GAAK7J,EAClC,IAAIhC,GAASF,EAAI,MAAMI,CAAC,EAAI,GAAKe,EACjCb,GAAKJ,EAAQ,SACbgC,GAAS5B,GAAK,KAAOJ,EAAQ,SAAY,GACzC,KAAK,MAAME,EAAI2L,CAAK,EAAIzL,EAAI,QAC9B,CACA,KAAOF,EAAI,KAAK,OAAS2L,EAAO3L,IAC9BE,GAAK,KAAK,MAAMF,EAAI2L,CAAK,EAAI,GAAK7J,EAClCA,EAAQ5B,GAAK,GACb,KAAK,MAAMF,EAAI2L,CAAK,EAAIzL,EAAI,SAE9B,GAAI4B,IAAU,EAAG,OAAO,KAAK,MAAM,EAKnC,IAFA9C,EAAO8C,IAAU,EAAE,EACnBA,EAAQ,EACH9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3BE,EAAI,EAAE,KAAK,MAAMF,CAAC,EAAI,GAAK8B,EAC3BA,EAAQ5B,GAAK,GACb,KAAK,MAAMF,CAAC,EAAIE,EAAI,SAEtB,YAAK,SAAW,EACT,KAAK,MAAM,CACpB,EACAX,EAAG,UAAU,SAAW,SAAkBK,EAAKgM,EAAM,CACnD,IAAID,EAAQ,KAAK,OAAS/L,EAAI,OAC1BoD,EAAI,KAAK,MAAM,EACfR,EAAI5C,EAGJiM,EAAMrJ,EAAE,MAAMA,EAAE,OAAS,CAAC,EAAI,EAC9BsJ,EAAU,KAAK,WAAWD,CAAG,EACjCF,EAAQ,GAAKG,EACTH,IAAU,IACZnJ,EAAIA,EAAE,MAAMmJ,CAAK,EACjB3I,EAAE,OAAO2I,CAAK,EACdE,EAAMrJ,EAAE,MAAMA,EAAE,OAAS,CAAC,EAAI,GAIhC,IAAIgI,EAAIxH,EAAE,OAASR,EAAE,OACjBC,EACJ,GAAImJ,IAAS,MAAO,CAClBnJ,EAAI,IAAIlD,EAAG,IAAI,EACfkD,EAAE,OAAS+H,EAAI,EACf/H,EAAE,MAAQ,IAAI,MAAMA,EAAE,MAAM,EAC5B,QAASzC,EAAI,EAAGA,EAAIyC,EAAE,OAAQzC,IAC5ByC,EAAE,MAAMzC,CAAC,EAAI,CAEjB,CACA,IAAI+L,EAAO/I,EAAE,MAAM,EAAE,aAAaR,EAAG,EAAGgI,CAAC,EACrCuB,EAAK,WAAa,IACpB/I,EAAI+I,EACAtJ,IACFA,EAAE,MAAM+H,CAAC,EAAI,IAGjB,QAASvK,EAAIuK,EAAI,EAAGvK,GAAK,EAAGA,IAAK,CAC/B,IAAI+L,GAAMhJ,EAAE,MAAMR,EAAE,OAASvC,CAAC,EAAI,GAAK,UAAa+C,EAAE,MAAMR,EAAE,OAASvC,EAAI,CAAC,EAAI,GAMhF,IAFA+L,EAAK,KAAK,IAAIA,EAAKH,EAAM,EAAG,QAAS,EACrC7I,EAAE,aAAaR,EAAGwJ,EAAI/L,CAAC,EAChB+C,EAAE,WAAa,GACpBgJ,IACAhJ,EAAE,SAAW,EACbA,EAAE,aAAaR,EAAG,EAAGvC,CAAC,EACjB+C,EAAE,OAAO,IACZA,EAAE,UAAY,GAGdP,IACFA,EAAE,MAAMxC,CAAC,EAAI+L,EAEjB,CACA,OAAIvJ,GACFA,EAAE,MAAM,EAEVO,EAAE,MAAM,EAGJ4I,IAAS,OAASD,IAAU,GAC9B3I,EAAE,OAAO2I,CAAK,EAET,CACL,IAAKlJ,GAAK,KACV,IAAKO,CACP,CACF,EAMAzD,EAAG,UAAU,OAAS,SAAgBK,EAAKgM,EAAMK,EAAU,CAEzD,GADAjN,EAAO,CAACY,EAAI,OAAO,CAAC,EAChB,KAAK,OAAO,EACd,MAAO,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IAAIA,EAAG,CAAC,CACf,EAEF,IAAI2M,EAAK9K,EAAKmB,EACd,OAAI,KAAK,WAAa,GAAK3C,EAAI,WAAa,GAC1C2C,EAAM,KAAK,IAAI,EAAE,OAAO3C,EAAKgM,CAAI,EAC7BA,IAAS,QACXM,EAAM3J,EAAI,IAAI,IAAI,GAEhBqJ,IAAS,QACXxK,EAAMmB,EAAI,IAAI,IAAI,EACd0J,GAAY7K,EAAI,WAAa,GAC/BA,EAAI,KAAKxB,CAAG,GAGT,CACL,IAAKsM,EACL,IAAK9K,CACP,GAEE,KAAK,WAAa,GAAKxB,EAAI,WAAa,GAC1C2C,EAAM,KAAK,OAAO3C,EAAI,IAAI,EAAGgM,CAAI,EAC7BA,IAAS,QACXM,EAAM3J,EAAI,IAAI,IAAI,GAEb,CACL,IAAK2J,EACL,IAAK3J,EAAI,GACX,GAEG,KAAK,SAAW3C,EAAI,UACvB2C,EAAM,KAAK,IAAI,EAAE,OAAO3C,EAAI,IAAI,EAAGgM,CAAI,EACnCA,IAAS,QACXxK,EAAMmB,EAAI,IAAI,IAAI,EACd0J,GAAY7K,EAAI,WAAa,GAC/BA,EAAI,KAAKxB,CAAG,GAGT,CACL,IAAK2C,EAAI,IACT,IAAKnB,CACP,GAMExB,EAAI,OAAS,KAAK,QAAU,KAAK,IAAIA,CAAG,EAAI,EACvC,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IACP,EAIEK,EAAI,SAAW,EACbgM,IAAS,MACJ,CACL,IAAK,KAAK,KAAKhM,EAAI,MAAM,CAAC,CAAC,EAC3B,IAAK,IACP,EAEEgM,IAAS,MACJ,CACL,IAAK,KACL,IAAK,IAAIrM,EAAG,KAAK,KAAKK,EAAI,MAAM,CAAC,CAAC,CAAC,CACrC,EAEK,CACL,IAAK,KAAK,KAAKA,EAAI,MAAM,CAAC,CAAC,EAC3B,IAAK,IAAIL,EAAG,KAAK,KAAKK,EAAI,MAAM,CAAC,CAAC,CAAC,CACrC,EAEK,KAAK,SAASA,EAAKgM,CAAI,CAChC,EAGArM,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EAGAL,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EACAL,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAI,EAAE,GACvC,EAGAL,EAAG,UAAU,SAAW,SAAkBK,EAAK,CAC7C,IAAIuM,EAAK,KAAK,OAAOvM,CAAG,EAGxB,GAAIuM,EAAG,IAAI,OAAO,EAAG,OAAOA,EAAG,IAC/B,IAAI/K,EAAM+K,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,KAAKvM,CAAG,EAAIuM,EAAG,IACpDC,EAAOxM,EAAI,MAAM,CAAC,EAClByM,EAAKzM,EAAI,MAAM,CAAC,EAChBuD,EAAM/B,EAAI,IAAIgL,CAAI,EAGtB,OAAIjJ,EAAM,GAAKkJ,IAAO,GAAKlJ,IAAQ,EAAUgJ,EAAG,IAGzCA,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,MAAM,CAAC,EAAIA,EAAG,IAAI,MAAM,CAAC,CACjE,EACA5M,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrCZ,EAAOY,GAAO,QAAS,EAGvB,QAFImK,GAAK,GAAK,IAAMnK,EAChB0M,EAAM,EACDtM,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IACpCsM,GAAOvC,EAAIuC,GAAO,KAAK,MAAMtM,CAAC,EAAI,IAAMJ,EAE1C,OAAO0M,CACT,EAGA/M,EAAG,UAAU,MAAQ,SAAeK,EAAK,CACvCZ,EAAOY,GAAO,QAAS,EAEvB,QADIkC,EAAQ,EACH9B,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIE,GAAK,KAAK,MAAMF,CAAC,EAAI,GAAK8B,EAAQ,SACtC,KAAK,MAAM9B,CAAC,EAAIE,EAAIN,EAAM,EAC1BkC,EAAQ5B,EAAIN,CACd,CACA,OAAO,KAAK,MAAM,CACpB,EACAL,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EACAL,EAAG,UAAU,KAAO,SAAcwK,EAAG,CACnC/K,EAAO+K,EAAE,WAAa,CAAC,EACvB/K,EAAO,CAAC+K,EAAE,OAAO,CAAC,EAClB,IAAIb,EAAI,KACJC,EAAIY,EAAE,MAAM,EACZb,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAKa,CAAC,EAEZb,EAAIA,EAAE,MAAM,EAWd,QAPIqD,EAAI,IAAIhN,EAAG,CAAC,EACZiN,EAAI,IAAIjN,EAAG,CAAC,EAGZkN,EAAI,IAAIlN,EAAG,CAAC,EACZmN,EAAI,IAAInN,EAAG,CAAC,EACZoN,EAAI,EACDzD,EAAE,OAAO,GAAKC,EAAE,OAAO,GAC5BD,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EACV,EAAEwD,EAIJ,QAFIC,EAAKzD,EAAE,MAAM,EACb0D,EAAK3D,EAAE,MAAM,EACV,CAACA,EAAE,OAAO,GAAG,CAClB,QAASlJ,EAAI,EAAG8M,EAAK,EAAI,EAAA5D,EAAE,MAAM,CAAC,EAAI4D,IAAa9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAkJ,EAAE,OAAOlJ,CAAC,EACHA,KAAM,IACPuM,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKK,CAAE,EACTJ,EAAE,KAAKK,CAAE,GAEXN,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAGd,QAASvM,EAAI,EAAG8M,EAAK,EAAI,EAAA5D,EAAE,MAAM,CAAC,EAAI4D,IAAa9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAkJ,EAAE,OAAOlJ,CAAC,EACHA,KAAM,IACPwM,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKG,CAAE,EACTF,EAAE,KAAKG,CAAE,GAEXJ,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAGVxD,EAAE,IAAIC,CAAC,GAAK,GACdD,EAAE,KAAKC,CAAC,EACRoD,EAAE,KAAKE,CAAC,EACRD,EAAE,KAAKE,CAAC,IAERvD,EAAE,KAAKD,CAAC,EACRuD,EAAE,KAAKF,CAAC,EACRG,EAAE,KAAKF,CAAC,EAEZ,CACA,MAAO,CACL,EAAGC,EACH,EAAGC,EACH,IAAKvD,EAAE,OAAOwD,CAAC,CACjB,CACF,EAKApN,EAAG,UAAU,OAAS,SAAgBwK,EAAG,CACvC/K,EAAO+K,EAAE,WAAa,CAAC,EACvB/K,EAAO,CAAC+K,EAAE,OAAO,CAAC,EAClB,IAAI/G,EAAI,KACJR,EAAIuH,EAAE,MAAM,EACZ/G,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAK+G,CAAC,EAEZ/G,EAAIA,EAAE,MAAM,EAKd,QAHIgK,EAAK,IAAIzN,EAAG,CAAC,EACb0N,EAAK,IAAI1N,EAAG,CAAC,EACb2N,EAAQ1K,EAAE,MAAM,EACbQ,EAAE,KAAK,CAAC,EAAI,GAAKR,EAAE,KAAK,CAAC,EAAI,GAAG,CACrC,QAASxC,EAAI,EAAG8M,EAAK,EAAI,EAAA9J,EAAE,MAAM,CAAC,EAAI8J,IAAa9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAgD,EAAE,OAAOhD,CAAC,EACHA,KAAM,GACPgN,EAAG,MAAM,GACXA,EAAG,KAAKE,CAAK,EAEfF,EAAG,OAAO,CAAC,EAGf,QAAS/M,EAAI,EAAG8M,EAAK,EAAI,EAAAvK,EAAE,MAAM,CAAC,EAAIuK,IAAa9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAuC,EAAE,OAAOvC,CAAC,EACHA,KAAM,GACPgN,EAAG,MAAM,GACXA,EAAG,KAAKC,CAAK,EAEfD,EAAG,OAAO,CAAC,EAGXjK,EAAE,IAAIR,CAAC,GAAK,GACdQ,EAAE,KAAKR,CAAC,EACRwK,EAAG,KAAKC,CAAE,IAEVzK,EAAE,KAAKQ,CAAC,EACRiK,EAAG,KAAKD,CAAE,EAEd,CACA,IAAIzK,EACJ,OAAIS,EAAE,KAAK,CAAC,IAAM,EAChBT,EAAMyK,EAENzK,EAAM0K,EAEJ1K,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAKwH,CAAC,EAELxH,CACT,EACAhD,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,GAAI,KAAK,OAAO,EAAG,OAAOA,EAAI,IAAI,EAClC,GAAIA,EAAI,OAAO,EAAG,OAAO,KAAK,IAAI,EAClC,IAAIoD,EAAI,KAAK,MAAM,EACfR,EAAI5C,EAAI,MAAM,EAClBoD,EAAE,SAAW,EACbR,EAAE,SAAW,EAGb,QAASmJ,EAAQ,EAAG3I,EAAE,OAAO,GAAKR,EAAE,OAAO,EAAGmJ,IAC5C3I,EAAE,OAAO,CAAC,EACVR,EAAE,OAAO,CAAC,EAEZ,EAAG,CACD,KAAOQ,EAAE,OAAO,GACdA,EAAE,OAAO,CAAC,EAEZ,KAAOR,EAAE,OAAO,GACdA,EAAE,OAAO,CAAC,EAEZ,IAAI9B,EAAIsC,EAAE,IAAIR,CAAC,EACf,GAAI9B,EAAI,EAAG,CAET,IAAIgC,EAAIM,EACRA,EAAIR,EACJA,EAAIE,CACN,SAAWhC,IAAM,GAAK8B,EAAE,KAAK,CAAC,IAAM,EAClC,MAEFQ,EAAE,KAAKR,CAAC,CACV,OAAS,IACT,OAAOA,EAAE,OAAOmJ,CAAK,CACvB,EAGApM,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAO,KAAK,KAAKA,CAAG,EAAE,EAAE,KAAKA,CAAG,CAClC,EACAL,EAAG,UAAU,OAAS,UAAkB,CACtC,OAAQ,KAAK,MAAM,CAAC,EAAI,KAAO,CACjC,EACAA,EAAG,UAAU,MAAQ,UAAiB,CACpC,OAAQ,KAAK,MAAM,CAAC,EAAI,KAAO,CACjC,EAGAA,EAAG,UAAU,MAAQ,SAAeK,EAAK,CACvC,OAAO,KAAK,MAAM,CAAC,EAAIA,CACzB,EAGAL,EAAG,UAAU,MAAQ,SAAesD,EAAK,CACvC7D,EAAO,OAAO6D,GAAQ,QAAQ,EAC9B,IAAInC,EAAImC,EAAM,GACV+G,GAAK/G,EAAMnC,GAAK,GAChB+B,EAAI,GAAK/B,EAGb,GAAI,KAAK,QAAUkJ,EACjB,YAAK,QAAQA,EAAI,CAAC,EAClB,KAAK,MAAMA,CAAC,GAAKnH,EACV,KAKT,QADIX,EAAQW,EACHzC,EAAI4J,EAAG9H,IAAU,GAAK9B,EAAI,KAAK,OAAQA,IAAK,CACnD,IAAIE,EAAI,KAAK,MAAMF,CAAC,EAAI,EACxBE,GAAK4B,EACLA,EAAQ5B,IAAM,GACdA,GAAK,SACL,KAAK,MAAMF,CAAC,EAAIE,CAClB,CACA,OAAI4B,IAAU,IACZ,KAAK,MAAM9B,CAAC,EAAI8B,EAChB,KAAK,UAEA,IACT,EACAvC,EAAG,UAAU,OAAS,UAAkB,CACtC,OAAO,KAAK,SAAW,GAAK,KAAK,MAAM,CAAC,IAAM,CAChD,EACAA,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,IAAIuN,EAAWvN,EAAM,EACrB,GAAI,KAAK,WAAa,GAAK,CAACuN,EAAU,MAAO,GAC7C,GAAI,KAAK,WAAa,GAAKA,EAAU,MAAO,GAC5C,KAAK,MAAM,EACX,IAAI5K,EACJ,GAAI,KAAK,OAAS,EAChBA,EAAM,MACD,CACD4K,IACFvN,EAAM,CAACA,GAETZ,EAAOY,GAAO,SAAW,mBAAmB,EAC5C,IAAIM,EAAI,KAAK,MAAM,CAAC,EAAI,EACxBqC,EAAMrC,IAAMN,EAAM,EAAIM,EAAIN,EAAM,GAAK,CACvC,CACA,OAAI,KAAK,WAAa,EAAU,CAAC2C,EAAM,EAChCA,CACT,EAMAhD,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GACtD,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GACtD,IAAI2C,EAAM,KAAK,KAAK3C,CAAG,EACvB,OAAI,KAAK,WAAa,EAAU,CAAC2C,EAAM,EAChCA,CACT,EAGAhD,EAAG,UAAU,KAAO,SAAcK,EAAK,CAErC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GACrC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GAErC,QADI2C,EAAM,EACDvC,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIgD,EAAI,KAAK,MAAMhD,CAAC,EAAI,EACpBwC,EAAI5C,EAAI,MAAMI,CAAC,EAAI,EACvB,GAAIgD,IAAMR,EACV,CAAIQ,EAAIR,EACND,EAAM,GACGS,EAAIR,IACbD,EAAM,GAER,MACF,CACA,OAAOA,CACT,EACAhD,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EACAL,EAAG,UAAU,GAAK,SAAYK,EAAK,CACjC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EACAL,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EACAL,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EACAL,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAO,KAAK,KAAKA,CAAG,IAAM,EAC5B,EACAL,EAAG,UAAU,GAAK,SAAYK,EAAK,CACjC,OAAO,KAAK,IAAIA,CAAG,IAAM,EAC3B,EACAL,EAAG,UAAU,KAAO,SAAcK,EAAK,CACrC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EACAL,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EACAL,EAAG,UAAU,IAAM,SAAaK,EAAK,CACnC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EACAL,EAAG,UAAU,GAAK,SAAYK,EAAK,CACjC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EAMAL,EAAG,IAAM,SAAaK,EAAK,CACzB,OAAO,IAAIwN,EAAIxN,CAAG,CACpB,EACAL,EAAG,UAAU,MAAQ,SAAe8N,EAAK,CACvC,OAAArO,EAAO,CAAC,KAAK,IAAK,uCAAuC,EACzDA,EAAO,KAAK,WAAa,EAAG,+BAA+B,EACpDqO,EAAI,UAAU,IAAI,EAAE,UAAUA,CAAG,CAC1C,EACA9N,EAAG,UAAU,QAAU,UAAmB,CACxC,OAAAP,EAAO,KAAK,IAAK,sDAAsD,EAChE,KAAK,IAAI,YAAY,IAAI,CAClC,EACAO,EAAG,UAAU,UAAY,SAAmB8N,EAAK,CAC/C,YAAK,IAAMA,EACJ,IACT,EACA9N,EAAG,UAAU,SAAW,SAAkB8N,EAAK,CAC7C,OAAArO,EAAO,CAAC,KAAK,IAAK,uCAAuC,EAClD,KAAK,UAAUqO,CAAG,CAC3B,EACA9N,EAAG,UAAU,OAAS,SAAgBK,EAAK,CACzC,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EACAL,EAAG,UAAU,QAAU,SAAiBK,EAAK,CAC3C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EACAL,EAAG,UAAU,OAAS,SAAgBK,EAAK,CACzC,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EACAL,EAAG,UAAU,QAAU,SAAiBK,EAAK,CAC3C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EACAL,EAAG,UAAU,OAAS,SAAgBK,EAAK,CACzC,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EACAL,EAAG,UAAU,OAAS,SAAgBK,EAAK,CACzC,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EACAL,EAAG,UAAU,QAAU,SAAiBK,EAAK,CAC3C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,KAAK,KAAMA,CAAG,CAChC,EACAL,EAAG,UAAU,OAAS,UAAkB,CACtC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EACAO,EAAG,UAAU,QAAU,UAAmB,CACxC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,QAAU,UAAmB,CACxC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EACAO,EAAG,UAAU,QAAU,UAAmB,CACxC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,OAAS,UAAkB,CACtC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EACAO,EAAG,UAAU,OAAS,SAAgBK,EAAK,CACzC,OAAAZ,EAAO,KAAK,KAAO,CAACY,EAAI,IAAK,mBAAmB,EAChD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EAGA,IAAI0N,GAAS,CACX,KAAM,KACN,KAAM,KACN,KAAM,KACN,OAAQ,IACV,EAGA,SAASC,EAAOC,EAAMzD,EAAG,CAEvB,KAAK,KAAOyD,EACZ,KAAK,EAAI,IAAIjO,EAAGwK,EAAG,EAAE,EACrB,KAAK,EAAI,KAAK,EAAE,UAAU,EAC1B,KAAK,EAAI,IAAIxK,EAAG,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAC7C,KAAK,IAAM,KAAK,KAAK,CACvB,CACAgO,EAAO,UAAU,KAAO,UAAgB,CACtC,IAAIE,EAAM,IAAIlO,EAAG,IAAI,EACrB,OAAAkO,EAAI,MAAQ,IAAI,MAAM,KAAK,KAAK,KAAK,EAAI,EAAE,CAAC,EACrCA,CACT,EACAF,EAAO,UAAU,QAAU,SAAiB3N,EAAK,CAG/C,IAAIc,EAAId,EACJ8N,EACJ,GACE,KAAK,MAAMhN,EAAG,KAAK,GAAG,EACtBA,EAAI,KAAK,MAAMA,CAAC,EAChBA,EAAIA,EAAE,KAAK,KAAK,GAAG,EACnBgN,EAAOhN,EAAE,UAAU,QACZgN,EAAO,KAAK,GACrB,IAAIvK,EAAMuK,EAAO,KAAK,EAAI,GAAKhN,EAAE,KAAK,KAAK,CAAC,EAC5C,OAAIyC,IAAQ,GACVzC,EAAE,MAAM,CAAC,EAAI,EACbA,EAAE,OAAS,GACFyC,EAAM,EACfzC,EAAE,KAAK,KAAK,CAAC,EAETA,EAAE,QAAU,OAEdA,EAAE,MAAM,EAGRA,EAAE,OAAO,EAGNA,CACT,EACA6M,EAAO,UAAU,MAAQ,SAAeI,EAAO9L,EAAK,CAClD8L,EAAM,OAAO,KAAK,EAAG,EAAG9L,CAAG,CAC7B,EACA0L,EAAO,UAAU,MAAQ,SAAe3N,EAAK,CAC3C,OAAOA,EAAI,KAAK,KAAK,CAAC,CACxB,EACA,SAASgO,IAAO,CACdL,EAAO,KAAK,KAAM,OAAQ,yEAAyE,CACrG,CACApO,EAASyO,GAAML,CAAM,EACrBK,GAAK,UAAU,MAAQ,SAAeD,EAAOE,EAAQ,CAInD,QAFIpC,EAAO,QACPqC,EAAS,KAAK,IAAIH,EAAM,OAAQ,CAAC,EAC5B3N,EAAI,EAAGA,EAAI8N,EAAQ9N,IAC1B6N,EAAO,MAAM7N,CAAC,EAAI2N,EAAM,MAAM3N,CAAC,EAGjC,GADA6N,EAAO,OAASC,EACZH,EAAM,QAAU,EAAG,CACrBA,EAAM,MAAM,CAAC,EAAI,EACjBA,EAAM,OAAS,EACf,MACF,CAGA,IAAII,EAAOJ,EAAM,MAAM,CAAC,EAExB,IADAE,EAAO,MAAMA,EAAO,QAAQ,EAAIE,EAAOtC,EAClCzL,EAAI,GAAIA,EAAI2N,EAAM,OAAQ3N,IAAK,CAClC,IAAIgO,EAAOL,EAAM,MAAM3N,CAAC,EAAI,EAC5B2N,EAAM,MAAM3N,EAAI,EAAE,GAAKgO,EAAOvC,IAAS,EAAIsC,IAAS,GACpDA,EAAOC,CACT,CACAD,KAAU,GACVJ,EAAM,MAAM3N,EAAI,EAAE,EAAI+N,EAClBA,IAAS,GAAKJ,EAAM,OAAS,GAC/BA,EAAM,QAAU,GAEhBA,EAAM,QAAU,CAEpB,EACAC,GAAK,UAAU,MAAQ,SAAehO,EAAK,CAEzCA,EAAI,MAAMA,EAAI,MAAM,EAAI,EACxBA,EAAI,MAAMA,EAAI,OAAS,CAAC,EAAI,EAC5BA,EAAI,QAAU,EAId,QADI0D,EAAK,EACAtD,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAIE,EAAIN,EAAI,MAAMI,CAAC,EAAI,EACvBsD,GAAMpD,EAAI,IACVN,EAAI,MAAMI,CAAC,EAAIsD,EAAK,SACpBA,EAAKpD,EAAI,IAAQoD,EAAK,SAAY,EACpC,CAGA,OAAI1D,EAAI,MAAMA,EAAI,OAAS,CAAC,IAAM,IAChCA,EAAI,SACAA,EAAI,MAAMA,EAAI,OAAS,CAAC,IAAM,GAChCA,EAAI,UAGDA,CACT,EACA,SAASqO,IAAO,CACdV,EAAO,KAAK,KAAM,OAAQ,gEAAgE,CAC5F,CACApO,EAAS8O,GAAMV,CAAM,EACrB,SAASW,IAAO,CACdX,EAAO,KAAK,KAAM,OAAQ,uDAAuD,CACnF,CACApO,EAAS+O,GAAMX,CAAM,EACrB,SAASY,IAAS,CAEhBZ,EAAO,KAAK,KAAM,QAAS,qEAAqE,CAClG,CACApO,EAASgP,GAAQZ,CAAM,EACvBY,GAAO,UAAU,MAAQ,SAAevO,EAAK,CAG3C,QADIkC,EAAQ,EACH9B,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAI2C,GAAM/C,EAAI,MAAMI,CAAC,EAAI,GAAK,GAAO8B,EACjCwB,EAAKX,EAAK,SACdA,KAAQ,GACR/C,EAAI,MAAMI,CAAC,EAAIsD,EACfxB,EAAQa,CACV,CACA,OAAIb,IAAU,IACZlC,EAAI,MAAMA,EAAI,QAAQ,EAAIkC,GAErBlC,CACT,EAGAL,EAAG,OAAS,SAAeiO,EAAM,CAE/B,GAAIF,GAAOE,CAAI,EAAG,OAAOF,GAAOE,CAAI,EACpC,IAAIY,EACJ,GAAIZ,IAAS,OACXY,EAAQ,IAAIR,WACHJ,IAAS,OAClBY,EAAQ,IAAIH,WACHT,IAAS,OAClBY,EAAQ,IAAIF,WACHV,IAAS,SAClBY,EAAQ,IAAID,OAEZ,OAAM,IAAI,MAAM,iBAAmBX,CAAI,EAEzC,OAAAF,GAAOE,CAAI,EAAIY,EACRA,CACT,EAKA,SAAShB,EAAI5C,EAAG,CACd,GAAI,OAAOA,GAAM,SAAU,CACzB,IAAI4D,EAAQ7O,EAAG,OAAOiL,CAAC,EACvB,KAAK,EAAI4D,EAAM,EACf,KAAK,MAAQA,CACf,MACEpP,EAAOwL,EAAE,IAAI,CAAC,EAAG,gCAAgC,EACjD,KAAK,EAAIA,EACT,KAAK,MAAQ,IAEjB,CACA4C,EAAI,UAAU,SAAW,SAAkBpK,EAAG,CAC5ChE,EAAOgE,EAAE,WAAa,EAAG,+BAA+B,EACxDhE,EAAOgE,EAAE,IAAK,iCAAiC,CACjD,EACAoK,EAAI,UAAU,SAAW,SAAkBpK,EAAGR,EAAG,CAC/CxD,GAAQgE,EAAE,SAAWR,EAAE,YAAc,EAAG,+BAA+B,EACvExD,EAAOgE,EAAE,KAAOA,EAAE,MAAQR,EAAE,IAAK,iCAAiC,CACpE,EACA4K,EAAI,UAAU,KAAO,SAAcpK,EAAG,CACpC,OAAI,KAAK,MAAc,KAAK,MAAM,QAAQA,CAAC,EAAE,UAAU,IAAI,EACpDA,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,IAAI,CACtC,EACAoK,EAAI,UAAU,IAAM,SAAapK,EAAG,CAClC,OAAIA,EAAE,OAAO,EACJA,EAAE,MAAM,EAEV,KAAK,EAAE,IAAIA,CAAC,EAAE,UAAU,IAAI,CACrC,EACAoK,EAAI,UAAU,IAAM,SAAapK,EAAGR,EAAG,CACrC,KAAK,SAASQ,EAAGR,CAAC,EAClB,IAAID,EAAMS,EAAE,IAAIR,CAAC,EACjB,OAAID,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EACA6K,EAAI,UAAU,KAAO,SAAcpK,EAAGR,EAAG,CACvC,KAAK,SAASQ,EAAGR,CAAC,EAClB,IAAID,EAAMS,EAAE,KAAKR,CAAC,EAClB,OAAID,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EACA6K,EAAI,UAAU,IAAM,SAAapK,EAAGR,EAAG,CACrC,KAAK,SAASQ,EAAGR,CAAC,EAClB,IAAID,EAAMS,EAAE,IAAIR,CAAC,EACjB,OAAID,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EACA6K,EAAI,UAAU,KAAO,SAAcpK,EAAGR,EAAG,CACvC,KAAK,SAASQ,EAAGR,CAAC,EAClB,IAAID,EAAMS,EAAE,KAAKR,CAAC,EAClB,OAAID,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EACA6K,EAAI,UAAU,IAAM,SAAapK,EAAGpD,EAAK,CACvC,YAAK,SAASoD,CAAC,EACR,KAAK,KAAKA,EAAE,MAAMpD,CAAG,CAAC,CAC/B,EACAwN,EAAI,UAAU,KAAO,SAAcpK,EAAGR,EAAG,CACvC,YAAK,SAASQ,EAAGR,CAAC,EACX,KAAK,KAAKQ,EAAE,KAAKR,CAAC,CAAC,CAC5B,EACA4K,EAAI,UAAU,IAAM,SAAapK,EAAGR,EAAG,CACrC,YAAK,SAASQ,EAAGR,CAAC,EACX,KAAK,KAAKQ,EAAE,IAAIR,CAAC,CAAC,CAC3B,EACA4K,EAAI,UAAU,KAAO,SAAcpK,EAAG,CACpC,OAAO,KAAK,KAAKA,EAAGA,EAAE,MAAM,CAAC,CAC/B,EACAoK,EAAI,UAAU,IAAM,SAAapK,EAAG,CAClC,OAAO,KAAK,IAAIA,EAAGA,CAAC,CACtB,EACAoK,EAAI,UAAU,KAAO,SAAcpK,EAAG,CACpC,GAAIA,EAAE,OAAO,EAAG,OAAOA,EAAE,MAAM,EAC/B,IAAIqL,EAAO,KAAK,EAAE,MAAM,CAAC,EAIzB,GAHArP,EAAOqP,EAAO,IAAM,CAAC,EAGjBA,IAAS,EAAG,CACd,IAAI/M,EAAM,KAAK,EAAE,IAAI,IAAI/B,EAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EACxC,OAAO,KAAK,IAAIyD,EAAG1B,CAAG,CACxB,CAOA,QAFImB,EAAI,KAAK,EAAE,KAAK,CAAC,EACjBmH,EAAI,EACD,CAACnH,EAAE,OAAO,GAAKA,EAAE,MAAM,CAAC,IAAM,GACnCmH,IACAnH,EAAE,OAAO,CAAC,EAEZzD,EAAO,CAACyD,EAAE,OAAO,CAAC,EAClB,IAAI6L,EAAM,IAAI/O,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BgP,EAAOD,EAAI,OAAO,EAIlBE,EAAO,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAC9BC,EAAI,KAAK,EAAE,UAAU,EAEzB,IADAA,EAAI,IAAIlP,EAAG,EAAIkP,EAAIA,CAAC,EAAE,MAAM,IAAI,EACzB,KAAK,IAAIA,EAAGD,CAAI,EAAE,IAAID,CAAI,IAAM,GACrCE,EAAE,QAAQF,CAAI,EAMhB,QAJIhO,EAAI,KAAK,IAAIkO,EAAGhM,CAAC,EACjB/B,EAAI,KAAK,IAAIsC,EAAGP,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EACnCC,EAAI,KAAK,IAAIM,EAAGP,CAAC,EACjB+H,EAAIZ,EACDlH,EAAE,IAAI4L,CAAG,IAAM,GAAG,CAEvB,QADIb,EAAM/K,EACD1C,EAAI,EAAGyN,EAAI,IAAIa,CAAG,IAAM,EAAGtO,IAClCyN,EAAMA,EAAI,OAAO,EAEnBzO,EAAOgB,EAAIwK,CAAC,EACZ,IAAIhI,EAAI,KAAK,IAAIjC,EAAG,IAAIhB,EAAG,CAAC,EAAE,OAAOiL,EAAIxK,EAAI,CAAC,CAAC,EAC/CU,EAAIA,EAAE,OAAO8B,CAAC,EACdjC,EAAIiC,EAAE,OAAO,EACbE,EAAIA,EAAE,OAAOnC,CAAC,EACdiK,EAAIxK,CACN,CACA,OAAOU,CACT,EACA0M,EAAI,UAAU,KAAO,SAAcpK,EAAG,CACpC,IAAI0L,EAAM1L,EAAE,OAAO,KAAK,CAAC,EACzB,OAAI0L,EAAI,WAAa,GACnBA,EAAI,SAAW,EACR,KAAK,KAAKA,CAAG,EAAE,OAAO,GAEtB,KAAK,KAAKA,CAAG,CAExB,EACAtB,EAAI,UAAU,IAAM,SAAapK,EAAGpD,EAAK,CACvC,GAAIA,EAAI,OAAO,EAAG,OAAO,IAAIL,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7C,GAAIK,EAAI,KAAK,CAAC,IAAM,EAAG,OAAOoD,EAAE,MAAM,EACtC,IAAI2L,EAAa,EACbC,EAAM,IAAI,MAAM,GAAKD,CAAU,EACnCC,EAAI,CAAC,EAAI,IAAIrP,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BqP,EAAI,CAAC,EAAI5L,EACT,QAAShD,EAAI,EAAGA,EAAI4O,EAAI,OAAQ5O,IAC9B4O,EAAI5O,CAAC,EAAI,KAAK,IAAI4O,EAAI5O,EAAI,CAAC,EAAGgD,CAAC,EAEjC,IAAIT,EAAMqM,EAAI,CAAC,EACXC,EAAU,EACVC,EAAa,EACb/O,EAAQH,EAAI,UAAU,EAAI,GAI9B,IAHIG,IAAU,IACZA,EAAQ,IAELC,EAAIJ,EAAI,OAAS,EAAGI,GAAK,EAAGA,IAAK,CAEpC,QADIqB,EAAOzB,EAAI,MAAMI,CAAC,EACbC,EAAIF,EAAQ,EAAGE,GAAK,EAAGA,IAAK,CACnC,IAAI4C,EAAMxB,GAAQpB,EAAI,EAItB,GAHIsC,IAAQqM,EAAI,CAAC,IACfrM,EAAM,KAAK,IAAIA,CAAG,GAEhBM,IAAQ,GAAKgM,IAAY,EAAG,CAC9BC,EAAa,EACb,QACF,CACAD,IAAY,EACZA,GAAWhM,EACXiM,IACI,EAAAA,IAAeH,IAAe3O,IAAM,GAAKC,IAAM,MACnDsC,EAAM,KAAK,IAAIA,EAAKqM,EAAIC,CAAO,CAAC,EAChCC,EAAa,EACbD,EAAU,EACZ,CACA9O,EAAQ,EACV,CACA,OAAOwC,CACT,EACA6K,EAAI,UAAU,UAAY,SAAmBxN,EAAK,CAChD,IAAIc,EAAId,EAAI,KAAK,KAAK,CAAC,EACvB,OAAOc,IAAMd,EAAMc,EAAE,MAAM,EAAIA,CACjC,EACA0M,EAAI,UAAU,YAAc,SAAqBxN,EAAK,CACpD,IAAI2C,EAAM3C,EAAI,MAAM,EACpB,OAAA2C,EAAI,IAAM,KACHA,CACT,EAMAhD,EAAG,KAAO,SAAcK,EAAK,CAC3B,OAAO,IAAImP,GAAKnP,CAAG,CACrB,EACA,SAASmP,GAAKvE,EAAG,CACf4C,EAAI,KAAK,KAAM5C,CAAC,EAChB,KAAK,MAAQ,KAAK,EAAE,UAAU,EAC1B,KAAK,MAAQ,KAAO,IACtB,KAAK,OAAS,GAAK,KAAK,MAAQ,IAElC,KAAK,EAAI,IAAIjL,EAAG,CAAC,EAAE,OAAO,KAAK,KAAK,EACpC,KAAK,GAAK,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,EAChC,KAAK,KAAO,KAAK,EAAE,OAAO,KAAK,CAAC,EAChC,KAAK,KAAO,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,EACrD,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,CAAC,EACjC,KAAK,KAAO,KAAK,EAAE,IAAI,KAAK,IAAI,CAClC,CACAJ,EAAS4P,GAAM3B,CAAG,EAClB2B,GAAK,UAAU,UAAY,SAAmBnP,EAAK,CACjD,OAAO,KAAK,KAAKA,EAAI,MAAM,KAAK,KAAK,CAAC,CACxC,EACAmP,GAAK,UAAU,YAAc,SAAqBnP,EAAK,CACrD,IAAIc,EAAI,KAAK,KAAKd,EAAI,IAAI,KAAK,IAAI,CAAC,EACpC,OAAAc,EAAE,IAAM,KACDA,CACT,EACAqO,GAAK,UAAU,KAAO,SAAc/L,EAAGR,EAAG,CACxC,GAAIQ,EAAE,OAAO,GAAKR,EAAE,OAAO,EACzB,OAAAQ,EAAE,MAAM,CAAC,EAAI,EACbA,EAAE,OAAS,EACJA,EAET,IAAIN,EAAIM,EAAE,KAAKR,CAAC,EACZ,EAAIE,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/BH,EAAMyM,EACV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,GAEdzM,EAAI,UAAU,IAAI,CAC3B,EACAwM,GAAK,UAAU,IAAM,SAAa/L,EAAGR,EAAG,CACtC,GAAIQ,EAAE,OAAO,GAAKR,EAAE,OAAO,EAAG,OAAO,IAAIjD,EAAG,CAAC,EAAE,UAAU,IAAI,EAC7D,IAAImD,EAAIM,EAAE,IAAIR,CAAC,EACX,EAAIE,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/BH,EAAMyM,EACV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,GAEdzM,EAAI,UAAU,IAAI,CAC3B,EACAwM,GAAK,UAAU,KAAO,SAAc/L,EAAG,CAErC,IAAIT,EAAM,KAAK,KAAKS,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,EACjD,OAAOT,EAAI,UAAU,IAAI,CAC3B,CACF,GAAG,OAAOxD,GAAW,KAAeA,GAAQD,EAAI,IC57FhD,IAAAmQ,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAQD,GACRE,GAAK,KACLC,GAAY,KACZC,GAAW,KACfH,GAAM,OAASE,GACfF,GAAM,QAAUG,GAAS,QACzBH,GAAM,MAAQG,GAAS,MACvBH,GAAM,MAAQG,GAAS,MACvBH,GAAM,OAASG,GAAS,OAGxB,SAASC,GAAOC,EAAKC,EAAGC,EAAM,CAC5B,IAAIC,EAAM,IAAI,MAAM,KAAK,IAAIH,EAAI,UAAU,EAAGE,CAAI,EAAI,CAAC,EACnD,EACJ,IAAK,EAAI,EAAG,EAAIC,EAAI,OAAQ,GAAK,EAC/BA,EAAI,CAAC,EAAI,EAEX,IAAIC,EAAK,GAAKH,EAAI,EACdI,EAAIL,EAAI,MAAM,EAClB,IAAK,EAAI,EAAG,EAAIG,EAAI,OAAQ,IAAK,CAC/B,IAAIG,EACAC,EAAMF,EAAE,MAAMD,EAAK,CAAC,EACpBC,EAAE,MAAM,GACNE,GAAOH,GAAM,GAAK,EAAGE,GAAKF,GAAM,GAAKG,EAASD,EAAIC,EACtDF,EAAE,MAAMC,CAAC,GAETA,EAAI,EAENH,EAAI,CAAC,EAAIG,EACTD,EAAE,OAAO,CAAC,CACZ,CACA,OAAOF,CACT,CACAR,GAAM,OAASI,GAGf,SAASS,GAAOC,EAAIC,EAAI,CACtB,IAAIC,EAAM,CAAC,CAAC,EAAG,CAAC,CAAC,EACjBF,EAAKA,EAAG,MAAM,EACdC,EAAKA,EAAG,MAAM,EAId,QAHIE,EAAK,EACLC,EAAK,EACLC,EACGL,EAAG,KAAK,CAACG,CAAE,EAAI,GAAKF,EAAG,KAAK,CAACG,CAAE,EAAI,GAAG,CAE3C,IAAIE,EAAMN,EAAG,MAAM,CAAC,EAAIG,EAAK,EACzBI,EAAMN,EAAG,MAAM,CAAC,EAAIG,EAAK,EACzBE,IAAQ,IAAGA,EAAM,IACjBC,IAAQ,IAAGA,EAAM,IACrB,IAAIC,EACCF,EAAM,GAGTD,EAAKL,EAAG,MAAM,CAAC,EAAIG,EAAK,GACnBE,IAAO,GAAKA,IAAO,IAAME,IAAQ,EAAGC,EAAK,CAACF,EAASE,EAAKF,GAH7DE,EAAK,EAKPN,EAAI,CAAC,EAAE,KAAKM,CAAE,EACd,IAAIC,EACCF,EAAM,GAGTF,EAAKJ,EAAG,MAAM,CAAC,EAAIG,EAAK,GACnBC,IAAO,GAAKA,IAAO,IAAMC,IAAQ,EAAGG,EAAK,CAACF,EAASE,EAAKF,GAH7DE,EAAK,EAKPP,EAAI,CAAC,EAAE,KAAKO,CAAE,EAGV,EAAIN,IAAOK,EAAK,IAAGL,EAAK,EAAIA,GAC5B,EAAIC,IAAOK,EAAK,IAAGL,EAAK,EAAIA,GAChCJ,EAAG,OAAO,CAAC,EACXC,EAAG,OAAO,CAAC,CACb,CACA,OAAOC,CACT,CACAhB,GAAM,OAASa,GACf,SAASW,GAAeC,EAAKC,EAAMC,EAAU,CAC3C,IAAIC,EAAM,IAAMF,EAChBD,EAAI,UAAUC,CAAI,EAAI,UAA0B,CAC9C,OAAO,KAAKE,CAAG,IAAM,OAAY,KAAKA,CAAG,EAAI,KAAKA,CAAG,EAAID,EAAS,KAAK,IAAI,CAC7E,CACF,CACA3B,GAAM,eAAiBwB,GACvB,SAASK,GAAWC,EAAO,CACzB,OAAO,OAAOA,GAAU,SAAW9B,GAAM,QAAQ8B,EAAO,KAAK,EAAIA,CACnE,CACA9B,GAAM,WAAa6B,GACnB,SAASE,GAAUD,EAAO,CACxB,OAAO,IAAI7B,GAAG6B,EAAO,MAAO,IAAI,CAClC,CACA9B,GAAM,UAAY+B,KC3FlB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAASF,GAAM,OACfG,GAASH,GAAM,OACnB,SAASI,GAAUC,EAAMC,EAAM,CAC7B,KAAK,KAAOD,EACZ,KAAK,EAAI,IAAIN,GAAGO,EAAK,EAAG,EAAE,EAG1B,KAAK,IAAMA,EAAK,MAAQP,GAAG,IAAIO,EAAK,KAAK,EAAIP,GAAG,KAAK,KAAK,CAAC,EAG3D,KAAK,KAAO,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EACpC,KAAK,IAAM,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EACnC,KAAK,IAAM,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EAGnC,KAAK,EAAIO,EAAK,GAAK,IAAIP,GAAGO,EAAK,EAAG,EAAE,EACpC,KAAK,EAAIA,EAAK,GAAK,KAAK,cAAcA,EAAK,EAAGA,EAAK,IAAI,EAGvD,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,WAAa,KAAK,EAAI,KAAK,EAAE,UAAU,EAAI,EAGhD,IAAIC,EAAc,KAAK,GAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACzC,CAACA,GAAeA,EAAY,KAAK,GAAG,EAAI,EAC1C,KAAK,KAAO,MAEZ,KAAK,cAAgB,GACrB,KAAK,KAAO,KAAK,EAAE,MAAM,KAAK,GAAG,EAErC,CACAT,GAAO,QAAUM,GACjBA,GAAU,UAAU,MAAQ,UAAiB,CAC3C,MAAM,IAAI,MAAM,iBAAiB,CACnC,EACAA,GAAU,UAAU,SAAW,UAAoB,CACjD,MAAM,IAAI,MAAM,iBAAiB,CACnC,EACAA,GAAU,UAAU,aAAe,SAAsBI,EAAGC,EAAG,CAC7DN,GAAOK,EAAE,WAAW,EACpB,IAAIE,EAAUF,EAAE,YAAY,EACxBG,EAAMV,GAAOQ,EAAG,EAAG,KAAK,UAAU,EAClCG,GAAK,GAAKF,EAAQ,KAAO,IAAMA,EAAQ,KAAO,IAAM,EAAI,EAAI,GAChEE,GAAK,EAGL,IAAIC,EAAO,CAAC,EACRC,EACAC,EACJ,IAAKD,EAAI,EAAGA,EAAIH,EAAI,OAAQG,GAAKJ,EAAQ,KAAM,CAC7CK,EAAO,EACP,QAASC,EAAIF,EAAIJ,EAAQ,KAAO,EAAGM,GAAKF,EAAGE,IAAKD,GAAQA,GAAQ,GAAKJ,EAAIK,CAAC,EAC1EH,EAAK,KAAKE,CAAI,CAChB,CAGA,QAFIE,EAAI,KAAK,OAAO,KAAM,KAAM,IAAI,EAChCC,EAAI,KAAK,OAAO,KAAM,KAAM,IAAI,EAC3BC,EAAIP,EAAGO,EAAI,EAAGA,IAAK,CAC1B,IAAKL,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC3BC,EAAOF,EAAKC,CAAC,EACTC,IAASI,EAAGD,EAAIA,EAAE,SAASR,EAAQ,OAAOI,CAAC,CAAC,EAAWC,IAAS,CAACI,IAAGD,EAAIA,EAAE,SAASR,EAAQ,OAAOI,CAAC,EAAE,IAAI,CAAC,GAEhHG,EAAIA,EAAE,IAAIC,CAAC,CACb,CACA,OAAOD,EAAE,IAAI,CACf,EACAb,GAAU,UAAU,SAAW,SAAkBI,EAAGC,EAAG,CACrD,IAAIW,EAAI,EAGJC,EAAYb,EAAE,cAAcY,CAAC,EACjCA,EAAIC,EAAU,IAQd,QAPIC,EAAMD,EAAU,OAGhBV,EAAMV,GAAOQ,EAAGW,EAAG,KAAK,UAAU,EAGlCG,EAAM,KAAK,OAAO,KAAM,KAAM,IAAI,EAC7BJ,EAAIR,EAAI,OAAS,EAAGQ,GAAK,EAAGA,IAAK,CAExC,QAASH,EAAI,EAAGG,GAAK,GAAKR,EAAIQ,CAAC,IAAM,EAAGA,IAAKH,IAG7C,GAFIG,GAAK,GAAGH,IACZO,EAAMA,EAAI,KAAKP,CAAC,EACZG,EAAI,EAAG,MACX,IAAIK,EAAIb,EAAIQ,CAAC,EACbhB,GAAOqB,IAAM,CAAC,EACVhB,EAAE,OAAS,SAETgB,EAAI,EAAGD,EAAMA,EAAI,SAASD,EAAIE,EAAI,GAAK,CAAC,CAAC,EAAOD,EAAMA,EAAI,SAASD,EAAI,CAACE,EAAI,GAAK,CAAC,EAAE,IAAI,CAAC,EAGzFA,EAAI,EAAGD,EAAMA,EAAI,IAAID,EAAIE,EAAI,GAAK,CAAC,CAAC,EAAOD,EAAMA,EAAI,IAAID,EAAI,CAACE,EAAI,GAAK,CAAC,EAAE,IAAI,CAAC,CAEvF,CACA,OAAOhB,EAAE,OAAS,SAAWe,EAAI,IAAI,EAAIA,CAC3C,EACAnB,GAAU,UAAU,YAAc,SAAqBqB,EAAMC,EAAQC,EAAQC,EAAKC,EAAgB,CAChG,IAAIC,EAAW,KAAK,QAChBR,EAAM,KAAK,QACXX,EAAM,KAAK,QAGXoB,EAAM,EACNZ,EACAL,EACAN,EACJ,IAAKW,EAAI,EAAGA,EAAIS,EAAKT,IAAK,CACxBX,EAAIkB,EAAOP,CAAC,EACZ,IAAIE,EAAYb,EAAE,cAAciB,CAAI,EACpCK,EAASX,CAAC,EAAIE,EAAU,IACxBC,EAAIH,CAAC,EAAIE,EAAU,MACrB,CAGA,IAAKF,EAAIS,EAAM,EAAGT,GAAK,EAAGA,GAAK,EAAG,CAChC,IAAIF,EAAIE,EAAI,EACRD,EAAIC,EACR,GAAIW,EAASb,CAAC,IAAM,GAAKa,EAASZ,CAAC,IAAM,EAAG,CAC1CP,EAAIM,CAAC,EAAIhB,GAAO0B,EAAOV,CAAC,EAAGa,EAASb,CAAC,EAAG,KAAK,UAAU,EACvDN,EAAIO,CAAC,EAAIjB,GAAO0B,EAAOT,CAAC,EAAGY,EAASZ,CAAC,EAAG,KAAK,UAAU,EACvDa,EAAM,KAAK,IAAIpB,EAAIM,CAAC,EAAE,OAAQc,CAAG,EACjCA,EAAM,KAAK,IAAIpB,EAAIO,CAAC,EAAE,OAAQa,CAAG,EACjC,QACF,CACA,IAAIC,EAAO,CAACN,EAAOT,CAAC,EACpB,KACA,KACAS,EAAOR,CAAC,CAAS,EAGbQ,EAAOT,CAAC,EAAE,EAAE,IAAIS,EAAOR,CAAC,EAAE,CAAC,IAAM,GACnCc,EAAK,CAAC,EAAIN,EAAOT,CAAC,EAAE,IAAIS,EAAOR,CAAC,CAAC,EACjCc,EAAK,CAAC,EAAIN,EAAOT,CAAC,EAAE,IAAI,EAAE,SAASS,EAAOR,CAAC,EAAE,IAAI,CAAC,GACzCQ,EAAOT,CAAC,EAAE,EAAE,IAAIS,EAAOR,CAAC,EAAE,EAAE,OAAO,CAAC,IAAM,GACnDc,EAAK,CAAC,EAAIN,EAAOT,CAAC,EAAE,IAAI,EAAE,SAASS,EAAOR,CAAC,CAAC,EAC5Cc,EAAK,CAAC,EAAIN,EAAOT,CAAC,EAAE,IAAIS,EAAOR,CAAC,EAAE,IAAI,CAAC,IAEvCc,EAAK,CAAC,EAAIN,EAAOT,CAAC,EAAE,IAAI,EAAE,SAASS,EAAOR,CAAC,CAAC,EAC5Cc,EAAK,CAAC,EAAIN,EAAOT,CAAC,EAAE,IAAI,EAAE,SAASS,EAAOR,CAAC,EAAE,IAAI,CAAC,GAEpD,IAAIe,EAAQ,CAAC,GACb,GACA,GACA,GACA,EACA,EACA,EACA,EACA,CAAW,EACPC,GAAMhC,GAAOyB,EAAOV,CAAC,EAAGU,EAAOT,CAAC,CAAC,EAIrC,IAHAa,EAAM,KAAK,IAAIG,GAAI,CAAC,EAAE,OAAQH,CAAG,EACjCpB,EAAIM,CAAC,EAAI,IAAI,MAAMc,CAAG,EACtBpB,EAAIO,CAAC,EAAI,IAAI,MAAMa,CAAG,EACjBjB,EAAI,EAAGA,EAAIiB,EAAKjB,IAAK,CACxB,IAAIqB,EAAKD,GAAI,CAAC,EAAEpB,CAAC,EAAI,EACjBsB,GAAKF,GAAI,CAAC,EAAEpB,CAAC,EAAI,EACrBH,EAAIM,CAAC,EAAEH,CAAC,EAAImB,GAAOE,EAAK,GAAK,GAAKC,GAAK,EAAE,EACzCzB,EAAIO,CAAC,EAAEJ,CAAC,EAAI,EACZQ,EAAIL,CAAC,EAAIe,CACX,CACF,CACA,IAAIT,GAAM,KAAK,OAAO,KAAM,KAAM,IAAI,EAClCc,GAAM,KAAK,QACf,IAAKlB,EAAIY,EAAKZ,GAAK,EAAGA,IAAK,CAEzB,QADIV,GAAI,EACDU,GAAK,GAAG,CACb,IAAImB,EAAO,GACX,IAAKxB,EAAI,EAAGA,EAAIc,EAAKd,IACnBuB,GAAIvB,CAAC,EAAIH,EAAIG,CAAC,EAAEK,CAAC,EAAI,EACjBkB,GAAIvB,CAAC,IAAM,IAAGwB,EAAO,IAE3B,GAAI,CAACA,EAAM,MACX7B,KACAU,GACF,CAGA,GAFIA,GAAK,GAAGV,KACZc,GAAMA,GAAI,KAAKd,EAAC,EACZU,EAAI,EAAG,MACX,IAAKL,EAAI,EAAGA,EAAIc,EAAKd,IAAK,CACxB,IAAIU,GAAIa,GAAIvB,CAAC,EAETU,KAAM,IAAqBA,GAAI,EAAGhB,EAAIc,EAAIR,CAAC,EAAEU,GAAI,GAAK,CAAC,EAAWA,GAAI,IAAGhB,EAAIc,EAAIR,CAAC,EAAE,CAACU,GAAI,GAAK,CAAC,EAAE,IAAI,GACrGhB,EAAE,OAAS,SAAUe,GAAMA,GAAI,SAASf,CAAC,EAAOe,GAAMA,GAAI,IAAIf,CAAC,EACrE,CACF,CAEA,IAAKW,EAAI,EAAGA,EAAIS,EAAKT,IAAKG,EAAIH,CAAC,EAAI,KACnC,OAAIU,EAAuBN,GAAgBA,GAAI,IAAI,CACrD,EACA,SAASgB,GAAUC,EAAOnC,EAAM,CAC9B,KAAK,MAAQmC,EACb,KAAK,KAAOnC,EACZ,KAAK,YAAc,IACrB,CACAD,GAAU,UAAYmC,GACtBA,GAAU,UAAU,GAAK,UACvB,CACA,MAAM,IAAI,MAAM,iBAAiB,CACnC,EACAA,GAAU,UAAU,SAAW,UAAoB,CACjD,OAAO,KAAK,MAAM,SAAS,IAAI,CACjC,EACAnC,GAAU,UAAU,YAAc,SAAqBqC,EAAOC,EAAK,CACjED,EAAQzC,GAAM,QAAQyC,EAAOC,CAAG,EAChC,IAAId,EAAM,KAAK,EAAE,WAAW,EAG5B,IAAKa,EAAM,CAAC,IAAM,GAAQA,EAAM,CAAC,IAAM,GAAQA,EAAM,CAAC,IAAM,IAASA,EAAM,OAAS,IAAM,EAAIb,EAAK,CAC7Fa,EAAM,CAAC,IAAM,EAAMtC,GAAOsC,EAAMA,EAAM,OAAS,CAAC,EAAI,IAAM,CAAC,EAAWA,EAAM,CAAC,IAAM,GAAMtC,GAAOsC,EAAMA,EAAM,OAAS,CAAC,EAAI,IAAM,CAAC,EACrI,IAAIE,EAAM,KAAK,MAAMF,EAAM,MAAM,EAAG,EAAIb,CAAG,EAAGa,EAAM,MAAM,EAAIb,EAAK,EAAI,EAAIA,CAAG,CAAC,EAC/E,OAAOe,CACT,UAAYF,EAAM,CAAC,IAAM,GAAQA,EAAM,CAAC,IAAM,IAASA,EAAM,OAAS,IAAMb,EAC1E,OAAO,KAAK,WAAWa,EAAM,MAAM,EAAG,EAAIb,CAAG,EAAGa,EAAM,CAAC,IAAM,CAAI,EAEnE,MAAM,IAAI,MAAM,sBAAsB,CACxC,EACAF,GAAU,UAAU,iBAAmB,SAA0BG,EAAK,CACpE,OAAO,KAAK,OAAOA,EAAK,EAAI,CAC9B,EACAH,GAAU,UAAU,QAAU,SAAiBK,EAAS,CACtD,IAAIhB,EAAM,KAAK,MAAM,EAAE,WAAW,EAC9BiB,EAAI,KAAK,KAAK,EAAE,QAAQ,KAAMjB,CAAG,EACrC,OAAIgB,EAAgB,CAAC,KAAK,KAAK,EAAE,OAAO,EAAI,EAAO,CAAI,EAAE,OAAOC,CAAC,EAC1D,CAAC,CAAI,EAAE,OAAOA,EAAG,KAAK,KAAK,EAAE,QAAQ,KAAMjB,CAAG,CAAC,CACxD,EACAW,GAAU,UAAU,OAAS,SAAgBG,EAAKE,EAAS,CACzD,OAAO5C,GAAM,OAAO,KAAK,QAAQ4C,CAAO,EAAGF,CAAG,CAChD,EACAH,GAAU,UAAU,WAAa,SAAoBO,EAAO,CAC1D,GAAI,KAAK,YAAa,OAAO,KAC7B,IAAIC,EAAc,CAChB,QAAS,KACT,IAAK,KACL,KAAM,IACR,EACA,OAAAA,EAAY,IAAM,KAAK,cAAc,CAAC,EACtCA,EAAY,QAAU,KAAK,YAAY,EAAGD,CAAK,EAC/CC,EAAY,KAAO,KAAK,SAAS,EACjC,KAAK,YAAcA,EACZ,IACT,EACAR,GAAU,UAAU,YAAc,SAAqB9B,EAAG,CACxD,GAAI,CAAC,KAAK,YAAa,MAAO,GAC9B,IAAIC,EAAU,KAAK,YAAY,QAC/B,OAAKA,EACEA,EAAQ,OAAO,QAAU,KAAK,MAAMD,EAAE,UAAU,EAAI,GAAKC,EAAQ,IAAI,EADvD,EAEvB,EACA6B,GAAU,UAAU,YAAc,SAAqBS,EAAMF,EAAO,CAClE,GAAI,KAAK,aAAe,KAAK,YAAY,QAAS,OAAO,KAAK,YAAY,QAG1E,QAFIpC,EAAU,CAAC,IAAI,EACfa,EAAM,KACDJ,EAAI,EAAGA,EAAI2B,EAAO3B,GAAK6B,EAAM,CACpC,QAASlC,EAAI,EAAGA,EAAIkC,EAAMlC,IAAKS,EAAMA,EAAI,IAAI,EAC7Cb,EAAQ,KAAKa,CAAG,CAClB,CACA,MAAO,CACL,KAAMyB,EACN,OAAQtC,CACV,CACF,EACA6B,GAAU,UAAU,cAAgB,SAAuBjB,EAAK,CAC9D,GAAI,KAAK,aAAe,KAAK,YAAY,IAAK,OAAO,KAAK,YAAY,IAItE,QAHIqB,EAAM,CAAC,IAAI,EACXZ,GAAO,GAAKT,GAAO,EACnB2B,EAAMlB,IAAQ,EAAI,KAAO,KAAK,IAAI,EAC7BZ,EAAI,EAAGA,EAAIY,EAAKZ,IAAKwB,EAAIxB,CAAC,EAAIwB,EAAIxB,EAAI,CAAC,EAAE,IAAI8B,CAAG,EACzD,MAAO,CACL,IAAK3B,EACL,OAAQqB,CACV,CACF,EACAJ,GAAU,UAAU,SAAW,UAAoB,CACjD,OAAO,IACT,EACAA,GAAU,UAAU,KAAO,SAAc9B,EAAG,CAE1C,QADI,EAAI,KACCU,EAAI,EAAGA,EAAIV,EAAGU,IAAK,EAAI,EAAE,IAAI,EACtC,OAAO,CACT,IC9RA,IAAA+B,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,EAAK,KACLC,GAAW,KACXC,GAAO,KACPC,GAASJ,GAAM,OACnB,SAASK,GAAWC,EAAM,CACxBH,GAAK,KAAK,KAAM,QAASG,CAAI,EAC7B,KAAK,EAAI,IAAIL,EAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,EAAI,IAAIL,EAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,KAAO,KAAK,IAAI,QAAQ,EAC7B,KAAK,MAAQ,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAM,EAC1C,KAAK,OAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,IAAM,EAGxD,KAAK,KAAO,KAAK,iBAAiBA,CAAI,EACtC,KAAK,YAAc,IAAI,MAAM,CAAC,EAC9B,KAAK,YAAc,IAAI,MAAM,CAAC,CAChC,CACAJ,GAASG,GAAYF,EAAI,EACzBJ,GAAO,QAAUM,GACjBA,GAAW,UAAU,iBAAmB,SAA0BC,EAAM,CAEtE,GAAI,GAAC,KAAK,OAAS,CAAC,KAAK,GAAK,CAAC,KAAK,GAAK,KAAK,EAAE,KAAK,CAAC,IAAM,GAG5D,KAAIC,EACAC,EACJ,GAAIF,EAAK,KACPC,EAAO,IAAIN,EAAGK,EAAK,KAAM,EAAE,EAAE,MAAM,KAAK,GAAG,MACtC,CACL,IAAIG,EAAQ,KAAK,cAAc,KAAK,CAAC,EAErCF,EAAOE,EAAM,CAAC,EAAE,IAAIA,EAAM,CAAC,CAAC,EAAI,EAAIA,EAAM,CAAC,EAAIA,EAAM,CAAC,EACtDF,EAAOA,EAAK,MAAM,KAAK,GAAG,CAC5B,CACA,GAAID,EAAK,OACPE,EAAS,IAAIP,EAAGK,EAAK,OAAQ,EAAE,MAC1B,CAEL,IAAII,EAAU,KAAK,cAAc,KAAK,CAAC,EACnC,KAAK,EAAE,IAAIA,EAAQ,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,OAAOH,CAAI,CAAC,IAAM,EAC1DC,EAASE,EAAQ,CAAC,GAElBF,EAASE,EAAQ,CAAC,EAClBN,GAAO,KAAK,EAAE,IAAII,CAAM,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,OAAOD,CAAI,CAAC,IAAM,CAAC,EAEhE,CAGA,IAAII,EACJ,OAAIL,EAAK,MACPK,EAAQL,EAAK,MAAM,IAAI,SAAUM,EAAK,CACpC,MAAO,CACL,EAAG,IAAIX,EAAGW,EAAI,EAAG,EAAE,EACnB,EAAG,IAAIX,EAAGW,EAAI,EAAG,EAAE,CACrB,CACF,CAAC,EAEDD,EAAQ,KAAK,cAAcH,CAAM,EAE5B,CACL,KAAMD,EACN,OAAQC,EACR,MAAOG,CACT,EACF,EACAN,GAAW,UAAU,cAAgB,SAAuBQ,EAAK,CAI/D,IAAIC,EAAMD,IAAQ,KAAK,EAAI,KAAK,IAAMZ,EAAG,KAAKY,CAAG,EAC7CE,EAAO,IAAId,EAAG,CAAC,EAAE,MAAMa,CAAG,EAAE,QAAQ,EACpCE,EAAQD,EAAK,OAAO,EACpBE,EAAI,IAAIhB,EAAG,CAAC,EAAE,MAAMa,CAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAOC,CAAI,EACvDG,EAAKF,EAAM,OAAOC,CAAC,EAAE,QAAQ,EAC7BE,EAAKH,EAAM,OAAOC,CAAC,EAAE,QAAQ,EACjC,MAAO,CAACC,EAAIC,CAAE,CAChB,EACAd,GAAW,UAAU,cAAgB,SAAuBG,EAAQ,CA0BlE,QAxBIY,EAAW,KAAK,EAAE,MAAM,KAAK,MAAM,KAAK,EAAE,UAAU,EAAI,CAAC,CAAC,EAI1DC,EAAIb,EACJc,EAAI,KAAK,EAAE,MAAM,EACjBC,EAAK,IAAItB,EAAG,CAAC,EACbuB,EAAK,IAAIvB,EAAG,CAAC,EACbwB,EAAK,IAAIxB,EAAG,CAAC,EACbyB,EAAK,IAAIzB,EAAG,CAAC,EAGb0B,EACAC,EAEAC,EACAC,EAEAC,EACAC,EACAC,EACAC,EAAI,EACJC,EACAC,GACGf,EAAE,KAAK,CAAC,IAAM,GAAG,CACtB,IAAIgB,EAAIf,EAAE,IAAID,CAAC,EACfc,EAAIb,EAAE,IAAIe,EAAE,IAAIhB,CAAC,CAAC,EAClBe,GAAIX,EAAG,IAAIY,EAAE,IAAId,CAAE,CAAC,EACpB,IAAIe,GAAIZ,EAAG,IAAIW,EAAE,IAAIb,CAAE,CAAC,EACxB,GAAI,CAACK,GAAMM,EAAE,IAAIf,CAAQ,EAAI,EAC3BO,EAAKM,EAAM,IAAI,EACfL,EAAKL,EACLM,EAAKM,EAAE,IAAI,EACXL,EAAKM,WACIP,GAAM,EAAEK,IAAM,EACvB,MAEFD,EAAQE,EACRb,EAAID,EACJA,EAAIc,EACJV,EAAKF,EACLA,EAAKa,GACLV,EAAKF,EACLA,EAAKc,EACP,CACAP,EAAKI,EAAE,IAAI,EACXH,EAAKI,GACL,IAAIG,GAAOV,EAAG,IAAI,EAAE,IAAIC,EAAG,IAAI,CAAC,EAC5BU,GAAOT,EAAG,IAAI,EAAE,IAAIC,EAAG,IAAI,CAAC,EAChC,OAAIQ,GAAK,IAAID,EAAI,GAAK,IACpBR,EAAKJ,EACLK,EAAKJ,GAIHC,EAAG,WACLA,EAAKA,EAAG,IAAI,EACZC,EAAKA,EAAG,IAAI,GAEVC,EAAG,WACLA,EAAKA,EAAG,IAAI,EACZC,EAAKA,EAAG,IAAI,GAEP,CAAC,CACN,EAAGH,EACH,EAAGC,CACL,EAAG,CACD,EAAGC,EACH,EAAGC,CACL,CAAC,CACH,EACA3B,GAAW,UAAU,WAAa,SAAoBoC,EAAG,CACvD,IAAI9B,EAAQ,KAAK,KAAK,MAClB+B,EAAK/B,EAAM,CAAC,EACZgC,EAAKhC,EAAM,CAAC,EACZiC,EAAKD,EAAG,EAAE,IAAIF,CAAC,EAAE,SAAS,KAAK,CAAC,EAChCI,EAAKH,EAAG,EAAE,IAAI,EAAE,IAAID,CAAC,EAAE,SAAS,KAAK,CAAC,EACtCK,EAAKF,EAAG,IAAIF,EAAG,CAAC,EAChBK,EAAKF,EAAG,IAAIF,EAAG,CAAC,EAChBK,EAAKJ,EAAG,IAAIF,EAAG,CAAC,EAChBO,EAAKJ,EAAG,IAAIF,EAAG,CAAC,EAGhBO,EAAKT,EAAE,IAAIK,CAAE,EAAE,IAAIC,CAAE,EACrBI,EAAKH,EAAG,IAAIC,CAAE,EAAE,IAAI,EACxB,MAAO,CACL,GAAIC,EACJ,GAAIC,CACN,CACF,EACA9C,GAAW,UAAU,WAAa,SAAoB+B,EAAGgB,EAAK,CAC5DhB,EAAI,IAAInC,EAAGmC,EAAG,EAAE,EACXA,EAAE,MAAKA,EAAIA,EAAE,MAAM,KAAK,GAAG,GAChC,IAAIV,EAAKU,EAAE,OAAO,EAAE,OAAOA,CAAC,EAAE,QAAQA,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,QAAQ,KAAK,CAAC,EAClEE,EAAIZ,EAAG,QAAQ,EACnB,GAAIY,EAAE,OAAO,EAAE,OAAOZ,CAAE,EAAE,IAAI,KAAK,IAAI,IAAM,EAAG,MAAM,IAAI,MAAM,eAAe,EAI/E,IAAI2B,EAAQf,EAAE,QAAQ,EAAE,MAAM,EAC9B,OAAIc,GAAO,CAACC,GAAS,CAACD,GAAOC,KAAOf,EAAIA,EAAE,OAAO,GAC1C,KAAK,MAAMF,EAAGE,CAAC,CACxB,EACAjC,GAAW,UAAU,SAAW,SAAkBiD,EAAO,CACvD,GAAIA,EAAM,IAAK,MAAO,GACtB,IAAIlB,EAAIkB,EAAM,EACVhB,EAAIgB,EAAM,EACVC,EAAK,KAAK,EAAE,OAAOnB,CAAC,EACpBoB,EAAMpB,EAAE,OAAO,EAAE,OAAOA,CAAC,EAAE,QAAQmB,CAAE,EAAE,QAAQ,KAAK,CAAC,EACzD,OAAOjB,EAAE,OAAO,EAAE,QAAQkB,CAAG,EAAE,KAAK,CAAC,IAAM,CAC7C,EACAnD,GAAW,UAAU,gBAAkB,SAAyBoD,EAAQC,EAAQC,EAAgB,CAG9F,QAFIC,EAAU,KAAK,YACfC,EAAU,KAAK,YACV3B,EAAI,EAAGA,EAAIuB,EAAO,OAAQvB,IAAK,CACtC,IAAI4B,EAAQ,KAAK,WAAWJ,EAAOxB,CAAC,CAAC,EACjC6B,EAAIN,EAAOvB,CAAC,EACZ3B,EAAOwD,EAAE,SAAS,EAClBD,EAAM,GAAG,WACXA,EAAM,GAAG,KAAK,EACdC,EAAIA,EAAE,IAAI,EAAI,GAEZD,EAAM,GAAG,WACXA,EAAM,GAAG,KAAK,EACdvD,EAAOA,EAAK,IAAI,EAAI,GAEtBqD,EAAQ1B,EAAI,CAAC,EAAI6B,EACjBH,EAAQ1B,EAAI,EAAI,CAAC,EAAI3B,EACrBsD,EAAQ3B,EAAI,CAAC,EAAI4B,EAAM,GACvBD,EAAQ3B,EAAI,EAAI,CAAC,EAAI4B,EAAM,EAC7B,CAIA,QAHIE,EAAM,KAAK,YAAY,EAAGJ,EAASC,EAAS3B,EAAI,EAAGyB,CAAc,EAG5DM,EAAI,EAAGA,EAAI/B,EAAI,EAAG+B,IACzBL,EAAQK,CAAC,EAAI,KACbJ,EAAQI,CAAC,EAAI,KAEf,OAAOD,CACT,EACA,SAASE,GAAMC,EAAO/B,EAAGE,EAAG8B,EAAO,CACjCjE,GAAK,UAAU,KAAK,KAAMgE,EAAO,QAAQ,EACrC/B,IAAM,MAAQE,IAAM,MACtB,KAAK,EAAI,KACT,KAAK,EAAI,KACT,KAAK,IAAM,KAEX,KAAK,EAAI,IAAIrC,EAAGmC,EAAG,EAAE,EACrB,KAAK,EAAI,IAAInC,EAAGqC,EAAG,EAAE,EAEjB8B,IACF,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,EAC9B,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,GAE3B,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAChD,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACrD,KAAK,IAAM,GAEf,CACAlE,GAASgE,GAAO/D,GAAK,SAAS,EAC9BE,GAAW,UAAU,MAAQ,SAAe+B,EAAGE,EAAG8B,EAAO,CACvD,OAAO,IAAIF,GAAM,KAAM9B,EAAGE,EAAG8B,CAAK,CACpC,EACA/D,GAAW,UAAU,cAAgB,SAAuBgE,EAAKvD,EAAK,CACpE,OAAOoD,GAAM,SAAS,KAAMG,EAAKvD,CAAG,CACtC,EACAoD,GAAM,UAAU,SAAW,UAAoB,CAC7C,GAAK,KAAK,MAAM,KAChB,KAAII,EAAM,KAAK,YACf,GAAIA,GAAOA,EAAI,KAAM,OAAOA,EAAI,KAChC,IAAI/D,EAAO,KAAK,MAAM,MAAM,KAAK,EAAE,OAAO,KAAK,MAAM,KAAK,IAAI,EAAG,KAAK,CAAC,EACvE,GAAI+D,EAAK,CACP,IAAIH,EAAQ,KAAK,MACbI,EAAU,SAAUR,EAAG,CACzB,OAAOI,EAAM,MAAMJ,EAAE,EAAE,OAAOI,EAAM,KAAK,IAAI,EAAGJ,EAAE,CAAC,CACrD,EACAO,EAAI,KAAO/D,EACXA,EAAK,YAAc,CACjB,KAAM,KACN,IAAK+D,EAAI,KAAO,CACd,IAAKA,EAAI,IAAI,IACb,OAAQA,EAAI,IAAI,OAAO,IAAIC,CAAO,CACpC,EACA,QAASD,EAAI,SAAW,CACtB,KAAMA,EAAI,QAAQ,KAClB,OAAQA,EAAI,QAAQ,OAAO,IAAIC,CAAO,CACxC,CACF,CACF,CACA,OAAOhE,EACT,EACA2D,GAAM,UAAU,OAAS,UAAkB,CACzC,OAAK,KAAK,YACH,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,aAAe,CAC1C,QAAS,KAAK,YAAY,SAAW,CACnC,KAAM,KAAK,YAAY,QAAQ,KAC/B,OAAQ,KAAK,YAAY,QAAQ,OAAO,MAAM,CAAC,CACjD,EACA,IAAK,KAAK,YAAY,KAAO,CAC3B,IAAK,KAAK,YAAY,IAAI,IAC1B,OAAQ,KAAK,YAAY,IAAI,OAAO,MAAM,CAAC,CAC7C,CACF,CAAC,EAV6B,CAAC,KAAK,EAAG,KAAK,CAAC,CAW/C,EACAA,GAAM,SAAW,SAAkBC,EAAOE,EAAKvD,EAAK,CAC9C,OAAOuD,GAAQ,WAAUA,EAAM,KAAK,MAAMA,CAAG,GACjD,IAAIL,EAAMG,EAAM,MAAME,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGvD,CAAG,EACzC,GAAI,CAACuD,EAAI,CAAC,EAAG,OAAOL,EACpB,SAASQ,EAAUH,EAAK,CACtB,OAAOF,EAAM,MAAME,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGvD,CAAG,CACxC,CACA,IAAIwD,EAAMD,EAAI,CAAC,EACf,OAAAL,EAAI,YAAc,CAChB,KAAM,KACN,QAASM,EAAI,SAAW,CACtB,KAAMA,EAAI,QAAQ,KAClB,OAAQ,CAACN,CAAG,EAAE,OAAOM,EAAI,QAAQ,OAAO,IAAIE,CAAS,CAAC,CACxD,EACA,IAAKF,EAAI,KAAO,CACd,IAAKA,EAAI,IAAI,IACb,OAAQ,CAACN,CAAG,EAAE,OAAOM,EAAI,IAAI,OAAO,IAAIE,CAAS,CAAC,CACpD,CACF,EACOR,CACT,EACAE,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAI,KAAK,WAAW,EAAU,sBACvB,gBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,GAC1G,EACAA,GAAM,UAAU,WAAa,UAAsB,CACjD,OAAO,KAAK,GACd,EACAA,GAAM,UAAU,IAAM,SAAaH,EAAG,CAEpC,GAAI,KAAK,IAAK,OAAOA,EAGrB,GAAIA,EAAE,IAAK,OAAO,KAGlB,GAAI,KAAK,GAAGA,CAAC,EAAG,OAAO,KAAK,IAAI,EAGhC,GAAI,KAAK,IAAI,EAAE,GAAGA,CAAC,EAAG,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAGxD,GAAI,KAAK,EAAE,IAAIA,EAAE,CAAC,IAAM,EAAG,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAC7D,IAAIU,EAAI,KAAK,EAAE,OAAOV,EAAE,CAAC,EACrBU,EAAE,KAAK,CAAC,IAAM,IAAGA,EAAIA,EAAE,OAAO,KAAK,EAAE,OAAOV,EAAE,CAAC,EAAE,QAAQ,CAAC,GAC9D,IAAIW,EAAKD,EAAE,OAAO,EAAE,QAAQ,KAAK,CAAC,EAAE,QAAQV,EAAE,CAAC,EAC3CY,EAAKF,EAAE,OAAO,KAAK,EAAE,OAAOC,CAAE,CAAC,EAAE,QAAQ,KAAK,CAAC,EACnD,OAAO,KAAK,MAAM,MAAMA,EAAIC,CAAE,CAChC,EACAT,GAAM,UAAU,IAAM,UAAe,CACnC,GAAI,KAAK,IAAK,OAAO,KAGrB,IAAIU,EAAM,KAAK,EAAE,OAAO,KAAK,CAAC,EAC9B,GAAIA,EAAI,KAAK,CAAC,IAAM,EAAG,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EACzD,IAAIC,EAAI,KAAK,MAAM,EACfpD,EAAK,KAAK,EAAE,OAAO,EACnBqD,EAAQF,EAAI,QAAQ,EACpBH,EAAIhD,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAAE,QAAQoD,CAAC,EAAE,OAAOC,CAAK,EACrDJ,EAAKD,EAAE,OAAO,EAAE,QAAQ,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,EAC7CE,EAAKF,EAAE,OAAO,KAAK,EAAE,OAAOC,CAAE,CAAC,EAAE,QAAQ,KAAK,CAAC,EACnD,OAAO,KAAK,MAAM,MAAMA,EAAIC,CAAE,CAChC,EACAT,GAAM,UAAU,KAAO,UAAgB,CACrC,OAAO,KAAK,EAAE,QAAQ,CACxB,EACAA,GAAM,UAAU,KAAO,UAAgB,CACrC,OAAO,KAAK,EAAE,QAAQ,CACxB,EACAA,GAAM,UAAU,IAAM,SAAazB,EAAG,CAEpC,OADAA,EAAI,IAAIxC,EAAGwC,EAAG,EAAE,EACZ,KAAK,WAAW,EAAU,KAAc,KAAK,YAAYA,CAAC,EAAU,KAAK,MAAM,aAAa,KAAMA,CAAC,EAAW,KAAK,MAAM,KAAa,KAAK,MAAM,gBAAgB,CAAC,IAAI,EAAG,CAACA,CAAC,CAAC,EAAc,KAAK,MAAM,SAAS,KAAMA,CAAC,CAC3N,EACAyB,GAAM,UAAU,OAAS,SAAgBhB,EAAIH,EAAII,EAAI,CACnD,IAAIM,EAAS,CAAC,KAAMV,CAAE,EAClBW,EAAS,CAACR,EAAIC,CAAE,EACpB,OAAI,KAAK,MAAM,KAAa,KAAK,MAAM,gBAAgBM,EAAQC,CAAM,EAAc,KAAK,MAAM,YAAY,EAAGD,EAAQC,EAAQ,CAAC,CAChI,EACAQ,GAAM,UAAU,QAAU,SAAiBhB,EAAIH,EAAII,EAAI,CACrD,IAAIM,EAAS,CAAC,KAAMV,CAAE,EAClBW,EAAS,CAACR,EAAIC,CAAE,EACpB,OAAI,KAAK,MAAM,KAAa,KAAK,MAAM,gBAAgBM,EAAQC,EAAQ,EAAI,EAAc,KAAK,MAAM,YAAY,EAAGD,EAAQC,EAAQ,EAAG,EAAI,CAC5I,EACAQ,GAAM,UAAU,GAAK,SAAYH,EAAG,CAClC,OAAO,OAASA,GAAK,KAAK,MAAQA,EAAE,MAAQ,KAAK,KAAO,KAAK,EAAE,IAAIA,EAAE,CAAC,IAAM,GAAK,KAAK,EAAE,IAAIA,EAAE,CAAC,IAAM,EACvG,EACAG,GAAM,UAAU,IAAM,SAAaa,EAAa,CAC9C,GAAI,KAAK,IAAK,OAAO,KACrB,IAAIf,EAAM,KAAK,MAAM,MAAM,KAAK,EAAG,KAAK,EAAE,OAAO,CAAC,EAClD,GAAIe,GAAe,KAAK,YAAa,CACnC,IAAIT,EAAM,KAAK,YACXU,EAAS,SAAUjB,EAAG,CACxB,OAAOA,EAAE,IAAI,CACf,EACAC,EAAI,YAAc,CAChB,IAAKM,EAAI,KAAO,CACd,IAAKA,EAAI,IAAI,IACb,OAAQA,EAAI,IAAI,OAAO,IAAIU,CAAM,CACnC,EACA,QAASV,EAAI,SAAW,CACtB,KAAMA,EAAI,QAAQ,KAClB,OAAQA,EAAI,QAAQ,OAAO,IAAIU,CAAM,CACvC,CACF,CACF,CACA,OAAOhB,CACT,EACAE,GAAM,UAAU,IAAM,UAAe,CACnC,GAAI,KAAK,IAAK,OAAO,KAAK,MAAM,OAAO,KAAM,KAAM,IAAI,EACvD,IAAIF,EAAM,KAAK,MAAM,OAAO,KAAK,EAAG,KAAK,EAAG,KAAK,MAAM,GAAG,EAC1D,OAAOA,CACT,EACA,SAASiB,GAAOd,EAAO/B,EAAGE,EAAG4C,EAAG,CAC9B/E,GAAK,UAAU,KAAK,KAAMgE,EAAO,UAAU,EACvC/B,IAAM,MAAQE,IAAM,MAAQ4C,IAAM,MACpC,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,IAAIjF,EAAG,CAAC,IAEjB,KAAK,EAAI,IAAIA,EAAGmC,EAAG,EAAE,EACrB,KAAK,EAAI,IAAInC,EAAGqC,EAAG,EAAE,EACrB,KAAK,EAAI,IAAIrC,EAAGiF,EAAG,EAAE,GAElB,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAChD,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAChD,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACrD,KAAK,KAAO,KAAK,IAAM,KAAK,MAAM,GACpC,CACAhF,GAAS+E,GAAQ9E,GAAK,SAAS,EAC/BE,GAAW,UAAU,OAAS,SAAgB+B,EAAGE,EAAG4C,EAAG,CACrD,OAAO,IAAID,GAAO,KAAM7C,EAAGE,EAAG4C,CAAC,CACjC,EACAD,GAAO,UAAU,IAAM,UAAe,CACpC,GAAI,KAAK,WAAW,EAAG,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EACzD,IAAIE,EAAO,KAAK,EAAE,QAAQ,EACtBC,EAAQD,EAAK,OAAO,EACpB5B,EAAK,KAAK,EAAE,OAAO6B,CAAK,EACxBC,EAAK,KAAK,EAAE,OAAOD,CAAK,EAAE,OAAOD,CAAI,EACzC,OAAO,KAAK,MAAM,MAAM5B,EAAI8B,CAAE,CAChC,EACAJ,GAAO,UAAU,IAAM,UAAe,CACpC,OAAO,KAAK,MAAM,OAAO,KAAK,EAAG,KAAK,EAAE,OAAO,EAAG,KAAK,CAAC,CAC1D,EACAA,GAAO,UAAU,IAAM,SAAalB,EAAG,CAErC,GAAI,KAAK,WAAW,EAAG,OAAOA,EAG9B,GAAIA,EAAE,WAAW,EAAG,OAAO,KAG3B,IAAIuB,EAAMvB,EAAE,EAAE,OAAO,EACjBwB,EAAK,KAAK,EAAE,OAAO,EACnBC,EAAK,KAAK,EAAE,OAAOF,CAAG,EACtBG,EAAK1B,EAAE,EAAE,OAAOwB,CAAE,EAClBG,EAAK,KAAK,EAAE,OAAOJ,EAAI,OAAOvB,EAAE,CAAC,CAAC,EAClC4B,EAAK5B,EAAE,EAAE,OAAOwB,EAAG,OAAO,KAAK,CAAC,CAAC,EACjCK,EAAIJ,EAAG,OAAOC,CAAE,EAChBtD,EAAIuD,EAAG,OAAOC,CAAE,EACpB,GAAIC,EAAE,KAAK,CAAC,IAAM,EAChB,OAAIzD,EAAE,KAAK,CAAC,IAAM,EAAU,KAAK,MAAM,OAAO,KAAM,KAAM,IAAI,EAAc,KAAK,IAAI,EAEvF,IAAI0D,EAAKD,EAAE,OAAO,EACdE,EAAKD,EAAG,OAAOD,CAAC,EAChBtE,EAAIkE,EAAG,OAAOK,CAAE,EAChBnB,EAAKvC,EAAE,OAAO,EAAE,QAAQ2D,CAAE,EAAE,QAAQxE,CAAC,EAAE,QAAQA,CAAC,EAChDqD,EAAKxC,EAAE,OAAOb,EAAE,QAAQoD,CAAE,CAAC,EAAE,QAAQgB,EAAG,OAAOI,CAAE,CAAC,EAClDC,EAAK,KAAK,EAAE,OAAOhC,EAAE,CAAC,EAAE,OAAO6B,CAAC,EACpC,OAAO,KAAK,MAAM,OAAOlB,EAAIC,EAAIoB,CAAE,CACrC,EACAd,GAAO,UAAU,SAAW,SAAkBlB,EAAG,CAE/C,GAAI,KAAK,WAAW,EAAG,OAAOA,EAAE,IAAI,EAGpC,GAAIA,EAAE,WAAW,EAAG,OAAO,KAG3B,IAAIwB,EAAK,KAAK,EAAE,OAAO,EACnBC,EAAK,KAAK,EACVC,EAAK1B,EAAE,EAAE,OAAOwB,CAAE,EAClBG,EAAK,KAAK,EACVC,EAAK5B,EAAE,EAAE,OAAOwB,CAAE,EAAE,OAAO,KAAK,CAAC,EACjCK,EAAIJ,EAAG,OAAOC,CAAE,EAChBtD,EAAIuD,EAAG,OAAOC,CAAE,EACpB,GAAIC,EAAE,KAAK,CAAC,IAAM,EAChB,OAAIzD,EAAE,KAAK,CAAC,IAAM,EAAU,KAAK,MAAM,OAAO,KAAM,KAAM,IAAI,EAAc,KAAK,IAAI,EAEvF,IAAI0D,EAAKD,EAAE,OAAO,EACdE,EAAKD,EAAG,OAAOD,CAAC,EAChBtE,EAAIkE,EAAG,OAAOK,CAAE,EAChBnB,EAAKvC,EAAE,OAAO,EAAE,QAAQ2D,CAAE,EAAE,QAAQxE,CAAC,EAAE,QAAQA,CAAC,EAChDqD,EAAKxC,EAAE,OAAOb,EAAE,QAAQoD,CAAE,CAAC,EAAE,QAAQgB,EAAG,OAAOI,CAAE,CAAC,EAClDC,EAAK,KAAK,EAAE,OAAOH,CAAC,EACxB,OAAO,KAAK,MAAM,OAAOlB,EAAIC,EAAIoB,CAAE,CACrC,EACAd,GAAO,UAAU,KAAO,SAAce,EAAK,CACzC,GAAIA,IAAQ,EAAG,OAAO,KACtB,GAAI,KAAK,WAAW,EAAG,OAAO,KAC9B,GAAI,CAACA,EAAK,OAAO,KAAK,IAAI,EAC1B,IAAI9D,EACJ,GAAI,KAAK,MAAM,OAAS,KAAK,MAAM,OAAQ,CACzC,IAAIC,EAAI,KACR,IAAKD,EAAI,EAAGA,EAAI8D,EAAK9D,IAAKC,EAAIA,EAAE,IAAI,EACpC,OAAOA,CACT,CAIA,IAAI0C,EAAI,KAAK,MAAM,EACf9D,EAAO,KAAK,MAAM,KAClBkF,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAMD,EAAG,OAAO,EAAE,OAAO,EAGzBE,EAAMH,EAAG,OAAOA,CAAE,EACtB,IAAKhE,EAAI,EAAGA,EAAI8D,EAAK9D,IAAK,CACxB,IAAIoE,EAAML,EAAG,OAAO,EAChBM,EAAOF,EAAI,OAAO,EAClBG,EAAOD,EAAK,OAAO,EACnB9B,EAAI6B,EAAI,OAAOA,CAAG,EAAE,QAAQA,CAAG,EAAE,QAAQzB,EAAE,OAAOuB,CAAG,CAAC,EACtDK,EAAKR,EAAG,OAAOM,CAAI,EACnB7B,EAAKD,EAAE,OAAO,EAAE,QAAQgC,EAAG,OAAOA,CAAE,CAAC,EACrCC,EAAKD,EAAG,QAAQ/B,CAAE,EAClBiC,GAAMlC,EAAE,OAAOiC,CAAE,EACrBC,GAAMA,GAAI,QAAQA,EAAG,EAAE,QAAQH,CAAI,EACnC,IAAIT,EAAKM,EAAI,OAAOF,CAAE,EAClBjE,EAAI,EAAI8D,IAAKI,EAAMA,EAAI,OAAOI,CAAI,GACtCP,EAAKvB,EACLyB,EAAKJ,EACLM,EAAMM,EACR,CACA,OAAO,KAAK,MAAM,OAAOV,EAAII,EAAI,OAAOtF,CAAI,EAAGoF,CAAE,CACnD,EACAlB,GAAO,UAAU,IAAM,UAAe,CACpC,OAAI,KAAK,WAAW,EAAU,KAC1B,KAAK,MAAM,MAAc,KAAK,SAAS,EAAW,KAAK,MAAM,OAAe,KAAK,UAAU,EAAc,KAAK,KAAK,CACzH,EACAA,GAAO,UAAU,SAAW,UAAoB,CAC9C,IAAIP,EACAC,EACAoB,EAEJ,GAAI,KAAK,KAAM,CAMb,IAAIa,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAOD,EAAG,OAAO,EAEjB5F,EAAI,KAAK,EAAE,OAAO4F,CAAE,EAAE,OAAO,EAAE,QAAQD,CAAE,EAAE,QAAQE,CAAI,EAC3D7F,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAI8F,EAAIH,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAE5BI,EAAID,EAAE,OAAO,EAAE,QAAQ9F,CAAC,EAAE,QAAQA,CAAC,EAGnCgG,EAAQH,EAAK,QAAQA,CAAI,EAC7BG,EAAQA,EAAM,QAAQA,CAAK,EAC3BA,EAAQA,EAAM,QAAQA,CAAK,EAG3BvC,EAAKsC,EAELrC,EAAKoC,EAAE,OAAO9F,EAAE,QAAQ+F,CAAC,CAAC,EAAE,QAAQC,CAAK,EAEzClB,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,CAC3B,KAAO,CAML,IAAIlB,EAAI,KAAK,EAAE,OAAO,EAElBqC,EAAI,KAAK,EAAE,OAAO,EAElBzC,EAAIyC,EAAE,OAAO,EAEbC,EAAI,KAAK,EAAE,OAAOD,CAAC,EAAE,OAAO,EAAE,QAAQrC,CAAC,EAAE,QAAQJ,CAAC,EACtD0C,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAIC,EAAIvC,EAAE,OAAOA,CAAC,EAAE,QAAQA,CAAC,EAEzBwC,EAAID,EAAE,OAAO,EAGbE,EAAK7C,EAAE,QAAQA,CAAC,EACpB6C,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAGlB5C,EAAK2C,EAAE,QAAQF,CAAC,EAAE,QAAQA,CAAC,EAE3BxC,EAAKyC,EAAE,OAAOD,EAAE,QAAQzC,CAAE,CAAC,EAAE,QAAQ4C,CAAE,EAEvCvB,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EACzBA,EAAKA,EAAG,QAAQA,CAAE,CACpB,CACA,OAAO,KAAK,MAAM,OAAOrB,EAAIC,EAAIoB,CAAE,CACrC,EACAd,GAAO,UAAU,UAAY,UAAqB,CAChD,IAAIP,EACAC,EACAoB,EAEJ,GAAI,KAAK,KAAM,CAMb,IAAIa,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAOD,EAAG,OAAO,EAEjB5F,EAAI,KAAK,EAAE,OAAO4F,CAAE,EAAE,OAAO,EAAE,QAAQD,CAAE,EAAE,QAAQE,CAAI,EAC3D7F,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAI8F,EAAIH,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,EAElDI,EAAID,EAAE,OAAO,EAAE,QAAQ9F,CAAC,EAAE,QAAQA,CAAC,EAEvCyD,EAAKsC,EAEL,IAAIC,EAAQH,EAAK,QAAQA,CAAI,EAC7BG,EAAQA,EAAM,QAAQA,CAAK,EAC3BA,EAAQA,EAAM,QAAQA,CAAK,EAC3BtC,EAAKoC,EAAE,OAAO9F,EAAE,QAAQ+F,CAAC,CAAC,EAAE,QAAQC,CAAK,EAEzClB,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,CAC3B,KAAO,CAKL,IAAIwB,EAAQ,KAAK,EAAE,OAAO,EAEtBC,EAAQ,KAAK,EAAE,OAAO,EAEtBjH,EAAO,KAAK,EAAE,OAAOiH,CAAK,EAE1BC,EAAQ,KAAK,EAAE,OAAOF,CAAK,EAAE,OAAO,KAAK,EAAE,OAAOA,CAAK,CAAC,EAC5DE,EAAQA,EAAM,OAAOA,CAAK,EAAE,QAAQA,CAAK,EAEzC,IAAIC,EAAQnH,EAAK,QAAQA,CAAI,EAC7BmH,EAAQA,EAAM,QAAQA,CAAK,EAC3B,IAAIC,EAAQD,EAAM,OAAOA,CAAK,EAC9BhD,EAAK+C,EAAM,OAAO,EAAE,QAAQE,CAAK,EAEjC5B,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQyB,CAAK,EAAE,QAAQD,CAAK,EAEhE,IAAIK,EAAUJ,EAAM,OAAO,EAC3BI,EAAUA,EAAQ,QAAQA,CAAO,EACjCA,EAAUA,EAAQ,QAAQA,CAAO,EACjCA,EAAUA,EAAQ,QAAQA,CAAO,EACjCjD,EAAK8C,EAAM,OAAOC,EAAM,QAAQhD,CAAE,CAAC,EAAE,QAAQkD,CAAO,CACtD,CACA,OAAO,KAAK,MAAM,OAAOlD,EAAIC,EAAIoB,CAAE,CACrC,EACAd,GAAO,UAAU,KAAO,UAAgB,CACtC,IAAIJ,EAAI,KAAK,MAAM,EAGfoB,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAMD,EAAG,OAAO,EAAE,OAAO,EACzBG,EAAML,EAAG,OAAO,EAChB4B,EAAM3B,EAAG,OAAO,EAChBzB,EAAI6B,EAAI,OAAOA,CAAG,EAAE,QAAQA,CAAG,EAAE,QAAQzB,EAAE,OAAOuB,CAAG,CAAC,EACtD0B,EAAO7B,EAAG,OAAOA,CAAE,EACvB6B,EAAOA,EAAK,QAAQA,CAAI,EACxB,IAAIrB,EAAKqB,EAAK,OAAOD,CAAG,EACpBnD,EAAKD,EAAE,OAAO,EAAE,QAAQgC,EAAG,OAAOA,CAAE,CAAC,EACrCC,EAAKD,EAAG,QAAQ/B,CAAE,EAClBqD,EAAOF,EAAI,OAAO,EACtBE,EAAOA,EAAK,QAAQA,CAAI,EACxBA,EAAOA,EAAK,QAAQA,CAAI,EACxBA,EAAOA,EAAK,QAAQA,CAAI,EACxB,IAAIpD,EAAKF,EAAE,OAAOiC,CAAE,EAAE,QAAQqB,CAAI,EAC9BhC,EAAKG,EAAG,OAAOA,CAAE,EAAE,OAAOC,CAAE,EAChC,OAAO,KAAK,MAAM,OAAOzB,EAAIC,EAAIoB,CAAE,CACrC,EACAd,GAAO,UAAU,KAAO,UAAgB,CACtC,GAAI,CAAC,KAAK,MAAM,MAAO,OAAO,KAAK,IAAI,EAAE,IAAI,IAAI,EAMjD,IAAI2B,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAK,KAAK,EAAE,OAAO,EAEnBmB,EAAK,KAAK,EAAE,OAAO,EAEnBlB,EAAOD,EAAG,OAAO,EAEjBE,EAAIH,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAE5BqB,EAAKlB,EAAE,OAAO,EAEdK,EAAI,KAAK,EAAE,OAAOP,CAAE,EAAE,OAAO,EAAE,QAAQD,CAAE,EAAE,QAAQE,CAAI,EAC3DM,EAAIA,EAAE,QAAQA,CAAC,EACfA,EAAIA,EAAE,OAAOA,CAAC,EAAE,QAAQA,CAAC,EACzBA,EAAIA,EAAE,QAAQa,CAAE,EAEhB,IAAIC,EAAKd,EAAE,OAAO,EAEdJ,EAAIF,EAAK,QAAQA,CAAI,EACzBE,EAAIA,EAAE,QAAQA,CAAC,EACfA,EAAIA,EAAE,QAAQA,CAAC,EACfA,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAI3F,EAAI0F,EAAE,QAAQK,CAAC,EAAE,OAAO,EAAE,QAAQa,CAAE,EAAE,QAAQC,CAAE,EAAE,QAAQlB,CAAC,EAE3DmB,EAAOtB,EAAG,OAAOxF,CAAC,EACtB8G,EAAOA,EAAK,QAAQA,CAAI,EACxBA,EAAOA,EAAK,QAAQA,CAAI,EACxB,IAAIzD,EAAK,KAAK,EAAE,OAAOwD,CAAE,EAAE,QAAQC,CAAI,EACvCzD,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAElB,IAAIC,EAAK,KAAK,EAAE,OAAOtD,EAAE,OAAO2F,EAAE,QAAQ3F,CAAC,CAAC,EAAE,QAAQ+F,EAAE,OAAOc,CAAE,CAAC,CAAC,EACnEvD,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAElB,IAAIoB,EAAK,KAAK,EAAE,OAAOqB,CAAC,EAAE,OAAO,EAAE,QAAQY,CAAE,EAAE,QAAQE,CAAE,EACzD,OAAO,KAAK,MAAM,OAAOxD,EAAIC,EAAIoB,CAAE,CACrC,EACAd,GAAO,UAAU,IAAM,SAAaxC,EAAG2F,EAAO,CAC5C,OAAA3F,EAAI,IAAIxC,EAAGwC,EAAG2F,CAAK,EACZ,KAAK,MAAM,SAAS,KAAM3F,CAAC,CACpC,EACAwC,GAAO,UAAU,GAAK,SAAYlB,EAAG,CACnC,GAAIA,EAAE,OAAS,SAAU,OAAO,KAAK,GAAGA,EAAE,IAAI,CAAC,EAC/C,GAAI,OAASA,EAAG,MAAO,GAGvB,IAAIwB,EAAK,KAAK,EAAE,OAAO,EACnBD,EAAMvB,EAAE,EAAE,OAAO,EACrB,GAAI,KAAK,EAAE,OAAOuB,CAAG,EAAE,QAAQvB,EAAE,EAAE,OAAOwB,CAAE,CAAC,EAAE,KAAK,CAAC,IAAM,EAAG,MAAO,GAGrE,IAAI8C,EAAK9C,EAAG,OAAO,KAAK,CAAC,EACrB+C,EAAMhD,EAAI,OAAOvB,EAAE,CAAC,EACxB,OAAO,KAAK,EAAE,OAAOuE,CAAG,EAAE,QAAQvE,EAAE,EAAE,OAAOsE,CAAE,CAAC,EAAE,KAAK,CAAC,IAAM,CAChE,EACApD,GAAO,UAAU,OAAS,SAAgB7C,EAAG,CAC3C,IAAImG,EAAK,KAAK,EAAE,OAAO,EACnBC,EAAKpG,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,OAAOmG,CAAE,EAC1C,GAAI,KAAK,EAAE,IAAIC,CAAE,IAAM,EAAG,MAAO,GAGjC,QAFIC,EAAKrG,EAAE,MAAM,EACb4E,EAAI,KAAK,MAAM,KAAK,OAAOuB,CAAE,IACxB,CAEP,GADAE,EAAG,KAAK,KAAK,MAAM,CAAC,EAChBA,EAAG,IAAI,KAAK,MAAM,CAAC,GAAK,EAAG,MAAO,GAEtC,GADAD,EAAG,QAAQxB,CAAC,EACR,KAAK,EAAE,IAAIwB,CAAE,IAAM,EAAG,MAAO,EACnC,CACF,EACAvD,GAAO,UAAU,QAAU,UAAmB,CAC5C,OAAI,KAAK,WAAW,EAAU,uBACvB,iBAAmB,KAAK,EAAE,SAAS,GAAI,CAAC,EAAI,OAAS,KAAK,EAAE,SAAS,GAAI,CAAC,EAAI,OAAS,KAAK,EAAE,SAAS,GAAI,CAAC,EAAI,GACzH,EACAA,GAAO,UAAU,WAAa,UAAsB,CAElD,OAAO,KAAK,EAAE,KAAK,CAAC,IAAM,CAC5B,IC9vBA,IAAAyD,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAW,KACXC,GAAO,KACPC,GAAQ,KACZ,SAASC,GAAUC,EAAM,CACvBH,GAAK,KAAK,KAAM,OAAQG,CAAI,EAC5B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,GAAK,IAAIL,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EAAE,QAAQ,EAC5C,KAAK,IAAM,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EACnC,KAAK,IAAM,KAAK,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC,CACnD,CACAC,GAASG,GAAWF,EAAI,EACxBH,GAAO,QAAUK,GACjBA,GAAU,UAAU,SAAW,SAAkBE,EAAO,CACtD,IAAIC,EAAID,EAAM,UAAU,EAAE,EACtBE,EAAKD,EAAE,OAAO,EACdE,EAAMD,EAAG,OAAOD,CAAC,EAAE,OAAOC,EAAG,OAAO,KAAK,CAAC,CAAC,EAAE,OAAOD,CAAC,EACrDG,EAAID,EAAI,QAAQ,EACpB,OAAOC,EAAE,OAAO,EAAE,IAAID,CAAG,IAAM,CACjC,EACA,SAASE,GAAMC,EAAOL,EAAGM,EAAG,CAC1BX,GAAK,UAAU,KAAK,KAAMU,EAAO,YAAY,EACzCL,IAAM,MAAQM,IAAM,MACtB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,OAEpB,KAAK,EAAI,IAAIb,GAAGO,EAAG,EAAE,EACrB,KAAK,EAAI,IAAIP,GAAGa,EAAG,EAAE,EAChB,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAChD,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAEzD,CACAZ,GAASU,GAAOT,GAAK,SAAS,EAC9BE,GAAU,UAAU,YAAc,SAAqBU,EAAOC,EAAK,CACjE,OAAO,KAAK,MAAMZ,GAAM,QAAQW,EAAOC,CAAG,EAAG,CAAC,CAChD,EACAX,GAAU,UAAU,MAAQ,SAAeG,EAAGM,EAAG,CAC/C,OAAO,IAAIF,GAAM,KAAMJ,EAAGM,CAAC,CAC7B,EACAT,GAAU,UAAU,cAAgB,SAAuBY,EAAK,CAC9D,OAAOL,GAAM,SAAS,KAAMK,CAAG,CACjC,EACAL,GAAM,UAAU,WAAa,UAAsB,CAEnD,EACAA,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAO,KAAK,KAAK,EAAE,QAAQ,KAAM,KAAK,MAAM,EAAE,WAAW,CAAC,CAC5D,EACAA,GAAM,SAAW,SAAkBC,EAAOI,EAAK,CAC7C,OAAO,IAAIL,GAAMC,EAAOI,EAAI,CAAC,EAAGA,EAAI,CAAC,GAAKJ,EAAM,GAAG,CACrD,EACAD,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAI,KAAK,WAAW,EAAU,sBACvB,gBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,GAC1G,EACAA,GAAM,UAAU,WAAa,UAAsB,CAEjD,OAAO,KAAK,EAAE,KAAK,CAAC,IAAM,CAC5B,EACAA,GAAM,UAAU,IAAM,UAAe,CAKnC,IAAIM,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBC,EAAKD,EAAE,OAAO,EAEdE,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBC,EAAKD,EAAE,OAAO,EAEdE,EAAIH,EAAG,OAAOE,CAAE,EAEhBE,EAAKJ,EAAG,OAAOE,CAAE,EAEjBG,EAAKF,EAAE,OAAOD,EAAG,OAAO,KAAK,MAAM,IAAI,OAAOC,CAAC,CAAC,CAAC,EACrD,OAAO,KAAK,MAAM,MAAMC,EAAIC,CAAE,CAChC,EACAZ,GAAM,UAAU,IAAM,UAAe,CACnC,MAAM,IAAI,MAAM,mCAAmC,CACrD,EACAA,GAAM,UAAU,QAAU,SAAiBa,EAAGC,EAAM,CAKlD,IAAIR,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBE,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBE,EAAIG,EAAE,EAAE,OAAOA,EAAE,CAAC,EAElBE,EAAIF,EAAE,EAAE,OAAOA,EAAE,CAAC,EAElBG,EAAKD,EAAE,OAAOT,CAAC,EAEfW,EAAKP,EAAE,OAAOF,CAAC,EAEfG,EAAKG,EAAK,EAAE,OAAOE,EAAG,OAAOC,CAAE,EAAE,OAAO,CAAC,EAEzCL,EAAKE,EAAK,EAAE,OAAOE,EAAG,QAAQC,CAAE,EAAE,OAAO,CAAC,EAC9C,OAAO,KAAK,MAAM,MAAMN,EAAIC,CAAE,CAChC,EACAZ,GAAM,UAAU,IAAM,SAAakB,EAAG,CAMpC,QALIC,EAAID,EAAE,MAAM,EACZZ,EAAI,KACJE,EAAI,KAAK,MAAM,MAAM,KAAM,IAAI,EAC/BE,EAAI,KAECU,EAAO,CAAC,EAAGD,EAAE,KAAK,CAAC,IAAM,EAAGA,EAAE,OAAO,CAAC,EAAGC,EAAK,KAAKD,EAAE,MAAM,CAAC,CAAC,EACtE,QAASE,EAAID,EAAK,OAAS,EAAGC,GAAK,EAAGA,IAChCD,EAAKC,CAAC,IAAM,GAEdf,EAAIA,EAAE,QAAQE,EAAGE,CAAC,EAElBF,EAAIA,EAAE,IAAI,IAGVA,EAAIF,EAAE,QAAQE,EAAGE,CAAC,EAElBJ,EAAIA,EAAE,IAAI,GAGd,OAAOE,CACT,EACAR,GAAM,UAAU,OAAS,UAAkB,CACzC,MAAM,IAAI,MAAM,mCAAmC,CACrD,EACAA,GAAM,UAAU,QAAU,UAAmB,CAC3C,MAAM,IAAI,MAAM,mCAAmC,CACrD,EACAA,GAAM,UAAU,GAAK,SAAYsB,EAAO,CACtC,OAAO,KAAK,KAAK,EAAE,IAAIA,EAAM,KAAK,CAAC,IAAM,CAC3C,EACAtB,GAAM,UAAU,UAAY,UAAqB,CAC/C,YAAK,EAAI,KAAK,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,EACvC,KAAK,EAAI,KAAK,MAAM,IACb,IACT,EACAA,GAAM,UAAU,KAAO,UAAgB,CAErC,YAAK,UAAU,EACR,KAAK,EAAE,QAAQ,CACxB,ICnJA,IAAAuB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAK,KACLC,GAAW,KACXC,GAAO,KACPC,GAASJ,GAAM,OACnB,SAASK,GAAaC,EAAM,CAE1B,KAAK,SAAWA,EAAK,EAAI,KAAO,EAChC,KAAK,MAAQ,KAAK,UAAYA,EAAK,EAAI,KAAO,GAC9C,KAAK,SAAW,KAAK,MACrBH,GAAK,KAAK,KAAM,UAAWG,CAAI,EAC/B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,EAC3C,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,GAAG,EAC9B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,GAAK,KAAK,EAAE,OAAO,EACxB,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,GAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EAC9BF,GAAO,CAAC,KAAK,SAAW,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAM,CAAC,EACtD,KAAK,MAAQE,EAAK,EAAI,KAAO,CAC/B,CACAJ,GAASG,GAAcF,EAAI,EAC3BJ,GAAO,QAAUM,GACjBA,GAAa,UAAU,MAAQ,SAAeE,EAAK,CACjD,OAAI,KAAK,MAAcA,EAAI,OAAO,EAAc,KAAK,EAAE,OAAOA,CAAG,CACnE,EACAF,GAAa,UAAU,MAAQ,SAAeE,EAAK,CACjD,OAAI,KAAK,KAAaA,EAAgB,KAAK,EAAE,OAAOA,CAAG,CACzD,EAGAF,GAAa,UAAU,OAAS,SAAgBG,EAAGC,EAAGC,EAAGC,EAAG,CAC1D,OAAO,KAAK,MAAMH,EAAGC,EAAGC,EAAGC,CAAC,CAC9B,EACAN,GAAa,UAAU,WAAa,SAAoBG,EAAGI,EAAK,CAC9DJ,EAAI,IAAIP,GAAGO,EAAG,EAAE,EACXA,EAAE,MAAKA,EAAIA,EAAE,MAAM,KAAK,GAAG,GAChC,IAAIK,EAAKL,EAAE,OAAO,EACdM,EAAM,KAAK,GAAG,OAAO,KAAK,EAAE,OAAOD,CAAE,CAAC,EACtCE,EAAM,KAAK,IAAI,OAAO,KAAK,GAAG,OAAO,KAAK,CAAC,EAAE,OAAOF,CAAE,CAAC,EACvDG,EAAKF,EAAI,OAAOC,EAAI,QAAQ,CAAC,EAC7BN,EAAIO,EAAG,QAAQ,EACnB,GAAIP,EAAE,OAAO,EAAE,OAAOO,CAAE,EAAE,IAAI,KAAK,IAAI,IAAM,EAAG,MAAM,IAAI,MAAM,eAAe,EAC/E,IAAIC,EAAQR,EAAE,QAAQ,EAAE,MAAM,EAC9B,OAAIG,GAAO,CAACK,GAAS,CAACL,GAAOK,KAAOR,EAAIA,EAAE,OAAO,GAC1C,KAAK,MAAMD,EAAGC,CAAC,CACxB,EACAJ,GAAa,UAAU,WAAa,SAAoBI,EAAGG,EAAK,CAC9DH,EAAI,IAAIR,GAAGQ,EAAG,EAAE,EACXA,EAAE,MAAKA,EAAIA,EAAE,MAAM,KAAK,GAAG,GAGhC,IAAIO,EAAKP,EAAE,OAAO,EACdM,EAAMC,EAAG,OAAO,KAAK,EAAE,EACvBF,EAAME,EAAG,OAAO,KAAK,CAAC,EAAE,OAAO,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,EACrDH,EAAKE,EAAI,OAAOD,EAAI,QAAQ,CAAC,EACjC,GAAID,EAAG,IAAI,KAAK,IAAI,IAAM,EAAG,CAC3B,GAAID,EAAK,MAAM,IAAI,MAAM,eAAe,EAAO,OAAO,KAAK,MAAM,KAAK,KAAMH,CAAC,CAC/E,CACA,IAAID,EAAIK,EAAG,QAAQ,EACnB,GAAIL,EAAE,OAAO,EAAE,OAAOK,CAAE,EAAE,IAAI,KAAK,IAAI,IAAM,EAAG,MAAM,IAAI,MAAM,eAAe,EAC/E,OAAIL,EAAE,QAAQ,EAAE,MAAM,IAAMI,IAAKJ,EAAIA,EAAE,OAAO,GACvC,KAAK,MAAMA,EAAGC,CAAC,CACxB,EACAJ,GAAa,UAAU,SAAW,SAAkBa,EAAO,CACzD,GAAIA,EAAM,WAAW,EAAG,MAAO,GAG/BA,EAAM,UAAU,EAChB,IAAIL,EAAKK,EAAM,EAAE,OAAO,EACpBF,EAAKE,EAAM,EAAE,OAAO,EACpBH,EAAMF,EAAG,OAAO,KAAK,CAAC,EAAE,OAAOG,CAAE,EACjCF,EAAM,KAAK,GAAG,OAAO,KAAK,IAAI,OAAO,KAAK,EAAE,OAAOD,CAAE,EAAE,OAAOG,CAAE,CAAC,CAAC,EACtE,OAAOD,EAAI,IAAID,CAAG,IAAM,CAC1B,EACA,SAASK,EAAMC,EAAOZ,EAAGC,EAAGC,EAAGC,EAAG,CAChCR,GAAK,UAAU,KAAK,KAAMiB,EAAO,YAAY,EACzCZ,IAAM,MAAQC,IAAM,MAAQC,IAAM,MACpC,KAAK,EAAI,KAAK,MAAM,KACpB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,KACpB,KAAK,KAAO,KAEZ,KAAK,EAAI,IAAIT,GAAGO,EAAG,EAAE,EACrB,KAAK,EAAI,IAAIP,GAAGQ,EAAG,EAAE,EACrB,KAAK,EAAIC,EAAI,IAAIT,GAAGS,EAAG,EAAE,EAAI,KAAK,MAAM,IACxC,KAAK,EAAIC,GAAK,IAAIV,GAAGU,EAAG,EAAE,EACrB,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAChD,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAChD,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjD,KAAK,GAAK,CAAC,KAAK,EAAE,MAAK,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAC/D,KAAK,KAAO,KAAK,IAAM,KAAK,MAAM,IAG9B,KAAK,MAAM,UAAY,CAAC,KAAK,IAC/B,KAAK,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EACxB,KAAK,OAAM,KAAK,EAAI,KAAK,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,IAG7D,CACAT,GAASiB,EAAOhB,GAAK,SAAS,EAC9BE,GAAa,UAAU,cAAgB,SAAuBgB,EAAK,CACjE,OAAOF,EAAM,SAAS,KAAME,CAAG,CACjC,EACAhB,GAAa,UAAU,MAAQ,SAAeG,EAAGC,EAAGC,EAAGC,EAAG,CACxD,OAAO,IAAIQ,EAAM,KAAMX,EAAGC,EAAGC,EAAGC,CAAC,CACnC,EACAQ,EAAM,SAAW,SAAkBC,EAAOC,EAAK,CAC7C,OAAO,IAAIF,EAAMC,EAAOC,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,CAChD,EACAF,EAAM,UAAU,QAAU,UAAmB,CAC3C,OAAI,KAAK,WAAW,EAAU,sBACvB,gBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,GACtJ,EACAA,EAAM,UAAU,WAAa,UAAsB,CAEjD,OAAO,KAAK,EAAE,KAAK,CAAC,IAAM,IAAM,KAAK,EAAE,IAAI,KAAK,CAAC,IAAM,GAAK,KAAK,MAAQ,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,IAAM,EACxG,EACAA,EAAM,UAAU,QAAU,UAAmB,CAM3C,IAAIG,EAAI,KAAK,EAAE,OAAO,EAElBC,EAAI,KAAK,EAAE,OAAO,EAElBC,EAAI,KAAK,EAAE,OAAO,EACtBA,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAIC,EAAI,KAAK,MAAM,MAAMH,CAAC,EAEtBI,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQJ,CAAC,EAAE,QAAQC,CAAC,EAEvDI,EAAIF,EAAE,OAAOF,CAAC,EAEdK,EAAID,EAAE,OAAOH,CAAC,EAEdK,EAAIJ,EAAE,OAAOF,CAAC,EAEdO,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKN,EAAE,OAAOG,CAAC,EAEfI,EAAKL,EAAE,OAAOD,CAAC,EACnB,OAAO,KAAK,MAAM,MAAMG,EAAIC,EAAIE,EAAID,CAAE,CACxC,EACAb,EAAM,UAAU,SAAW,UAAoB,CAQ7C,IAAII,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAEjCC,EAAI,KAAK,EAAE,OAAO,EAElB,EAAI,KAAK,EAAE,OAAO,EAClBM,EACAC,EACAE,EACAP,EACAG,EACAK,EACJ,GAAI,KAAK,MAAM,QAAS,CAEtBR,EAAI,KAAK,MAAM,MAAMF,CAAC,EAEtB,IAAII,EAAIF,EAAE,OAAO,CAAC,EACd,KAAK,MAEPI,EAAKP,EAAE,OAAOC,CAAC,EAAE,OAAO,CAAC,EAAE,OAAOI,EAAE,OAAO,KAAK,MAAM,GAAG,CAAC,EAE1DG,EAAKH,EAAE,OAAOF,EAAE,OAAO,CAAC,CAAC,EAEzBO,EAAKL,EAAE,OAAO,EAAE,OAAOA,CAAC,EAAE,OAAOA,CAAC,IAGlCC,EAAI,KAAK,EAAE,OAAO,EAElBK,EAAIN,EAAE,OAAOC,CAAC,EAAE,QAAQA,CAAC,EAEzBC,EAAKP,EAAE,OAAOC,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAOU,CAAC,EAEpCH,EAAKH,EAAE,OAAOF,EAAE,OAAO,CAAC,CAAC,EAEzBO,EAAKL,EAAE,OAAOM,CAAC,EAEnB,MAEER,EAAIF,EAAE,OAAO,CAAC,EAEdK,EAAI,KAAK,MAAM,MAAM,KAAK,CAAC,EAAE,OAAO,EAEpCK,EAAIR,EAAE,OAAOG,CAAC,EAAE,OAAOA,CAAC,EAExBC,EAAK,KAAK,MAAM,MAAMP,EAAE,QAAQG,CAAC,CAAC,EAAE,OAAOQ,CAAC,EAE5CH,EAAK,KAAK,MAAM,MAAML,CAAC,EAAE,OAAOF,EAAE,QAAQ,CAAC,CAAC,EAE5CS,EAAKP,EAAE,OAAOQ,CAAC,EAEjB,OAAO,KAAK,MAAM,MAAMJ,EAAIC,EAAIE,CAAE,CACpC,EACAd,EAAM,UAAU,IAAM,UAAe,CACnC,OAAI,KAAK,WAAW,EAAU,KAG1B,KAAK,MAAM,SAAiB,KAAK,QAAQ,EAAc,KAAK,SAAS,CAC3E,EACAA,EAAM,UAAU,QAAU,SAAiBgB,EAAG,CAM5C,IAAIb,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOa,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAEhDZ,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOY,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAEhDX,EAAI,KAAK,EAAE,OAAO,KAAK,MAAM,EAAE,EAAE,OAAOW,EAAE,CAAC,EAE3CV,EAAI,KAAK,EAAE,OAAOU,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAEjCT,EAAIH,EAAE,OAAOD,CAAC,EAEdM,EAAIH,EAAE,OAAOD,CAAC,EAEd,EAAIC,EAAE,OAAOD,CAAC,EAEdK,EAAIN,EAAE,OAAOD,CAAC,EAEdQ,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAK,EAAE,OAAOF,CAAC,EAEfG,EAAKN,EAAE,OAAOG,CAAC,EAEfI,EAAKL,EAAE,OAAO,CAAC,EACnB,OAAO,KAAK,MAAM,MAAME,EAAIC,EAAIE,EAAID,CAAE,CACxC,EACAb,EAAM,UAAU,SAAW,SAAkBgB,EAAG,CAO9C,IAAIb,EAAI,KAAK,EAAE,OAAOa,EAAE,CAAC,EAErBZ,EAAID,EAAE,OAAO,EAEbE,EAAI,KAAK,EAAE,OAAOW,EAAE,CAAC,EAErBV,EAAI,KAAK,EAAE,OAAOU,EAAE,CAAC,EAErBT,EAAI,KAAK,MAAM,EAAE,OAAOF,CAAC,EAAE,OAAOC,CAAC,EAEnCG,EAAIL,EAAE,OAAOG,CAAC,EAEd,EAAIH,EAAE,OAAOG,CAAC,EAEdU,EAAM,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOD,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAE,QAAQX,CAAC,EAAE,QAAQC,CAAC,EACxEK,EAAKR,EAAE,OAAOM,CAAC,EAAE,OAAOQ,CAAG,EAC3BL,EACAE,EACJ,OAAI,KAAK,MAAM,SAEbF,EAAKT,EAAE,OAAO,CAAC,EAAE,OAAOG,EAAE,OAAO,KAAK,MAAM,MAAMD,CAAC,CAAC,CAAC,EAErDS,EAAKL,EAAE,OAAO,CAAC,IAGfG,EAAKT,EAAE,OAAO,CAAC,EAAE,OAAOG,EAAE,OAAOD,CAAC,CAAC,EAEnCS,EAAK,KAAK,MAAM,MAAML,CAAC,EAAE,OAAO,CAAC,GAE5B,KAAK,MAAM,MAAME,EAAIC,EAAIE,CAAE,CACpC,EACAd,EAAM,UAAU,IAAM,SAAagB,EAAG,CACpC,OAAI,KAAK,WAAW,EAAUA,EAC1BA,EAAE,WAAW,EAAU,KACvB,KAAK,MAAM,SAAiB,KAAK,QAAQA,CAAC,EAAc,KAAK,SAASA,CAAC,CAC7E,EACAhB,EAAM,UAAU,IAAM,SAAakB,EAAG,CACpC,OAAI,KAAK,YAAYA,CAAC,EAAU,KAAK,MAAM,aAAa,KAAMA,CAAC,EAAc,KAAK,MAAM,SAAS,KAAMA,CAAC,CAC1G,EACAlB,EAAM,UAAU,OAAS,SAAgBmB,EAAIH,EAAGI,EAAI,CAClD,OAAO,KAAK,MAAM,YAAY,EAAG,CAAC,KAAMJ,CAAC,EAAG,CAACG,EAAIC,CAAE,EAAG,EAAG,EAAK,CAChE,EACApB,EAAM,UAAU,QAAU,SAAiBmB,EAAIH,EAAGI,EAAI,CACpD,OAAO,KAAK,MAAM,YAAY,EAAG,CAAC,KAAMJ,CAAC,EAAG,CAACG,EAAIC,CAAE,EAAG,EAAG,EAAI,CAC/D,EACApB,EAAM,UAAU,UAAY,UAAqB,CAC/C,GAAI,KAAK,KAAM,OAAO,KAGtB,IAAIqB,EAAK,KAAK,EAAE,QAAQ,EACxB,YAAK,EAAI,KAAK,EAAE,OAAOA,CAAE,EACzB,KAAK,EAAI,KAAK,EAAE,OAAOA,CAAE,EACrB,KAAK,IAAG,KAAK,EAAI,KAAK,EAAE,OAAOA,CAAE,GACrC,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,KAAO,GACL,IACT,EACArB,EAAM,UAAU,IAAM,UAAe,CACnC,OAAO,KAAK,MAAM,MAAM,KAAK,EAAE,OAAO,EAAG,KAAK,EAAG,KAAK,EAAG,KAAK,GAAK,KAAK,EAAE,OAAO,CAAC,CACpF,EACAA,EAAM,UAAU,KAAO,UAAgB,CACrC,YAAK,UAAU,EACR,KAAK,EAAE,QAAQ,CACxB,EACAA,EAAM,UAAU,KAAO,UAAgB,CACrC,YAAK,UAAU,EACR,KAAK,EAAE,QAAQ,CACxB,EACAA,EAAM,UAAU,GAAK,SAAYsB,EAAO,CACtC,OAAO,OAASA,GAAS,KAAK,KAAK,EAAE,IAAIA,EAAM,KAAK,CAAC,IAAM,GAAK,KAAK,KAAK,EAAE,IAAIA,EAAM,KAAK,CAAC,IAAM,CACpG,EACAtB,EAAM,UAAU,OAAS,SAAgBX,EAAG,CAC1C,IAAIkC,EAAKlC,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,OAAO,KAAK,CAAC,EAC9C,GAAI,KAAK,EAAE,IAAIkC,CAAE,IAAM,EAAG,MAAO,GAGjC,QAFIC,EAAKnC,EAAE,MAAM,EACbG,EAAI,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC,IAC5B,CAEP,GADAgC,EAAG,KAAK,KAAK,MAAM,CAAC,EAChBA,EAAG,IAAI,KAAK,MAAM,CAAC,GAAK,EAAG,MAAO,GAEtC,GADAD,EAAG,QAAQ/B,CAAC,EACR,KAAK,EAAE,IAAI+B,CAAE,IAAM,EAAG,MAAO,EACnC,CACF,EAGAvB,EAAM,UAAU,IAAMA,EAAM,UAAU,UACtCA,EAAM,UAAU,SAAWA,EAAM,UAAU,MCrV3C,IAAAyB,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAQD,GACZC,GAAM,KAAO,KACbA,GAAM,MAAQ,KACdA,GAAM,KAAO,KACbA,GAAM,QAAU,OCNhB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAA,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CAAC,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,kEAAmE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,kEAAmE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,gEAAgE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,kEAAmE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,kEAAmE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,CAAC,CACzwR,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CAAC,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,kEAAmE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,kEAAmE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,kEAAmE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,kEAAmE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,iEAAkE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,kEAAmE,kEAAkE,EAAG,CAAC,mEAAoE,iEAAiE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,kEAAkE,EAAG,CAAC,mEAAoE,k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","names":["require_bech32","__commonJSMin","exports","module","ALPHABET","ALPHABET_MAP","z","x","polymodStep","pre","b","prefixChk","prefix","chk","i","c","v","encode","words","LIMIT","result","__decode","str","lowered","uppered","split","wordChars","decodeUnsafe","res","decode","convert","data","inBits","outBits","pad","value","bits","maxV","toWordsUnsafe","bytes","toWords","fromWordsUnsafe","fromWords","require_package","__commonJSMin","exports","module","require_bn","__commonJSMin","exports","module","assert","val","msg","inherits","ctor","superCtor","TempCtor","BN","number","base","endian","Buffer","num","left","right","start","i","j","w","off","parseHex4Bits","string","index","c","parseHexByte","lowerBound","r","parseLength","parseBase","str","end","mul","len","limbLen","limbPow","total","mod","word","pow","dest","size","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","ret","length","ArrayType","byteLength","reqLength","littleEndian","res","b","q","t","hi","toBitArray","bit","wbit","width","a","bytesNeeded","bitsLeft","cmp","smallMulTo","self","lo","k","ncarry","rword","maxJ","comb10MulTo","o","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","x","y","N","l","rb","rbt","rws","iws","rtws","itws","s","rtwdf","itwdf","p","rtwdf_","itwdf_","re","ie","ro","io","rx","n","m","odd","ws","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","bits","carryMask","newCarry","hint","extended","h","mask","maskedWords","shift","mode","bhi","bhiBits","diff","qj","positive","div","dm","half","r2","acc","A","B","C","D","g","yp","xp","im","jm","x1","x2","delta","negative","Red","ctx","primes","MPrime","name","tmp","rlen","input","K256","output","outLen","prev","next","P224","P192","P25519","prime","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","Mont","u","require_utils","__commonJSMin","exports","utils","BN","minAssert","minUtils","getNAF","num","w","bits","naf","ws","k","z","mod","getJSF","k1","k2","jsf","d1","d2","m8","m14","m24","u1","u2","cachedProperty","obj","name","computer","key","parseBytes","bytes","intFromLE","require_base","__commonJSMin","exports","module","BN","utils","getNAF","getJSF","assert","BaseCurve","type","conf","adjustCount","p","k","doubles","naf","I","repr","j","nafW","l","a","b","i","w","nafPoints","wnd","acc","z","defW","points","coeffs","len","jacobianResult","wndWidth","max","comb","index","jsf","ja","jb","tmp","zero","BasePoint","curve","bytes","enc","res","compact","x","power","precomputed","step","dbl","require_short","__commonJSMin","exports","module","utils","BN","inherits","Base","assert","ShortCurve","conf","beta","lambda","betas","lambdas","basis","vec","num","red","tinv","ntinv","s","l1","l2","aprxSqrt","u","v","x1","y1","x2","y2","a0","b0","a1","b1","a2","b2","prevR","i","r","x","q","y","len1","len2","k","v1","v2","c1","c2","p1","p2","q1","q2","k1","k2","odd","isOdd","point","ax","rhs","points","coeffs","jacobianResult","npoints","ncoeffs","split","p","res","j","Point","curve","isRed","obj","pre","endoMul","obj2point","c","nx","ny","ys1","a","dyinv","_precompute","negate","JPoint","z","zinv","zinv2","ay","pz2","z2","u1","u2","s1","s2","h","h2","h3","nz","pow","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","xx","yy","yyyy","m","t","yyyy8","b","d","e","f","c8","delta","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","zz","mm","ee","yyu4","kbase","z3","pz3","zs","rx","xc","require_mont","__commonJSMin","exports","module","BN","inherits","Base","utils","MontCurve","conf","point","x","x2","rhs","y","Point","curve","z","bytes","enc","obj","a","aa","b","bb","c","nx","nz","p","diff","d","da","cb","k","t","bits","i","other","require_edwards","__commonJSMin","exports","module","utils","BN","inherits","Base","assert","EdwardsCurve","conf","num","x","y","z","t","odd","x2","rhs","lhs","y2","isOdd","point","Point","curve","obj","a","b","c","d","e","g","f","h","nx","ny","nt","nz","j","p","tmp","k","k1","k2","zi","other","rx","xc","require_curve","__commonJSMin","exports","curve","require_secp256k1","__commonJSMin","exports","module","require_curves","__commonJSMin","exports","curves","hash","curve","utils","assert","PresetCurve","options","defineCurve","name","pre","require_key","__commonJSMin","exports","module","BN","utils","assert","KeyPair","ec","options","pub","enc","priv","compact","key","msg","signature","require_signature","__commonJSMin","exports","module","BN","utils","assert","Signature","options","enc","Position","getLength","buf","p","initial","octetLen","val","i","off","rmPadding","len","data","rlen","r","slen","s","constructLength","arr","octets","backHalf","res","require_ec","__commonJSMin","exports","module","BN","HmacDRBG","utils","curves","rand","assert","KeyPair","Signature","EC","options","priv","enc","pub","drbg","bytes","ns2","msg","truncOnly","bitLength","byteLength","str","delta","key","i","bkey","nonce","ns1","iter","k","kp","kpX","r","s","recoveryParam","signature","sinv","u1","u2","p","j","n","e","isYOdd","isSecondKey","rInv","s1","s2","Q","Qprime","require_key","__commonJSMin","exports","module","utils","assert","parseBytes","cachedProperty","KeyPair","eddsa","params","pub","secret","hash","lastIx","a","message","sig","enc","require_signature","__commonJSMin","exports","module","BN","utils","assert","cachedProperty","parseBytes","Signature","eddsa","sig","require_eddsa","__commonJSMin","exports","module","hash","curves","utils","assert","parseBytes","KeyPair","Signature","EDDSA","curve","message","secret","key","r","R","Rencoded","s_","S","sig","pub","h","SG","RplusAh","i","point","enc","bytes","lastIx","normed","xIsOdd","y","num","val","require_elliptic","__commonJSMin","exports","elliptic","require_assert","__commonJSMin","exports","anumber","abytes","ahash","aexists","aoutput","n","isBytes","a","b","lengths","h","instance","checkFinished","out","min","assert","require_u64","__commonJSMin","exports","fromBig","split","add","U32_MASK64","_32n","n","le","lst","Ah","Al","h","l","toBig","shrSH","_l","s","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","u64","require_crypto","__commonJSMin","exports","require_utils","__commonJSMin","exports","isBytes","byteSwap32","bytesToHex","hexToBytes","asyncLoop","utf8ToBytes","toBytes","concatBytes","checkOpts","wrapConstructor","wrapConstructorWithOpts","wrapXOFConstructorWithOpts","randomBytes","crypto_1","_assert_js_1","a","u8","arr","u32","createView","rotr","word","shift","rotl","byteSwap","n","i","hexes","_","bytes","hex","asciis","asciiToBase16","ch","hl","al","array","ai","hi","n1","n2","char","nextTick","__async","iters","tick","cb","ts","diff","str","data","arrays","sum","res","pad","Hash","defaults","opts","hashCons","hashC","msg","tmp","bytesLength","require_sha3","__commonJSMin","exports","keccakP","_assert_js_1","_u64_js_1","utils_js_1","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","round","R","x","y","t","j","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","h","l","s","rotlL","rounds","B","idx1","idx0","B0","B1","Th","Tl","curH","curL","shift","PI","Keccak","_Keccak","blockLen","suffix","outputLen","enableXOF","data","state","len","pos","take","i","out","bufferOut","bytes","to","gen","genShake","opts","require_isArguments","__commonJSMin","exports","module","toStr","value","str","isArgs","require_implementation","__commonJSMin","exports","module","keysShim","has","toStr","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","o","ctor","excludedKeys","hasAutomationEqualityBug","k","equalsConstructorPrototypeIfNotBuggy","object","isObject","isFunction","isArguments","isString","theKeys","skipProto","i","j","name","skipConstructor","require_object_keys","__commonJSMin","exports","module","slice","isArgs","origKeys","keysShim","o","originalKeys","keysWorksWithArguments","args","object","require_es_errors","__commonJSMin","exports","module","require_eval","__commonJSMin","exports","module","require_range","__commonJSMin","exports","module","require_ref","__commonJSMin","exports","module","require_syntax","__commonJSMin","exports","module","require_type","__commonJSMin","exports","module","require_uri","__commonJSMin","exports","module","require_shams","__commonJSMin","exports","module","obj","sym","symObj","symVal","syms","descriptor","require_has_symbols","__commonJSMin","exports","module","origSymbol","hasSymbolSham","require_has_proto","__commonJSMin","exports","module","test","$Object","require_implementation","__commonJSMin","exports","module","ERROR_MESSAGE","toStr","max","funcType","concatty","a","b","arr","j","slicy","arrLike","offset","joiny","joiner","str","i","that","target","args","bound","binder","result","boundLength","boundArgs","Empty","require_function_bind","__commonJSMin","exports","module","implementation","require_hasown","__commonJSMin","exports","module","call","$hasOwn","bind","require_get_intrinsic","__commonJSMin","exports","module","undefined","$Error","$EvalError","$RangeError","$ReferenceError","$SyntaxError","$TypeError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","hasSymbols","hasProto","getProto","x","needsEval","TypedArray","INTRINSICS","e","errorProto","doEval","name","value","fn","gen","LEGACY_ALIASES","bind","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","string","first","last","result","match","number","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","parts","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","i","isOwn","part","desc","require_es_define_property","__commonJSMin","exports","module","GetIntrinsic","$defineProperty","require_gopd","__commonJSMin","exports","module","GetIntrinsic","$gOPD","require_define_data_property","__commonJSMin","exports","module","$defineProperty","$SyntaxError","$TypeError","gopd","obj","property","value","nonEnumerable","nonWritable","nonConfigurable","loose","desc","require_has_property_descriptors","__commonJSMin","exports","module","$defineProperty","hasPropertyDescriptors","require_define_properties","__commonJSMin","exports","module","keys","hasSymbols","toStr","concat","defineDataProperty","isFunction","fn","supportsDescriptors","defineProperty","object","name","value","predicate","defineProperties","map","predicates","props"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44]}