1 line
269 KiB
Plaintext
1 line
269 KiB
Plaintext
{"version":3,"file":"crypto.worker-CfCshcpI.js","sources":["src/helpers/bytes/bufferConcats.ts","src/lib/polyfill.ts","node_modules/.pnpm/big-integer@1.6.52/node_modules/big-integer/BigInteger.js","src/helpers/bigInt/bigIntConstants.ts","src/helpers/bigInt/bigIntConversion.ts","src/helpers/bytes/bytesModPow.ts","node_modules/.pnpm/pako@2.1.0/node_modules/pako/dist/pako_inflate.min.js","src/helpers/gzipUncompress.ts","src/environment/ctx.ts","src/helpers/listenMessagePort.ts","src/config/modes.ts","src/config/debug.ts","src/config/tabId.ts","src/helpers/array/indexOfAndSplice.ts","src/helpers/context.ts","src/helpers/eventListenerBase.ts","src/helpers/makeError.ts","src/environment/userAgent.ts","src/helpers/dT.ts","src/lib/logger.ts","src/lib/mtproto/superMessagePort.ts","src/lib/crypto/cryptoMessagePort.ts","src/lib/calls/helpers/getEmojisFingerprint.ts","src/lib/crypto/computeDhKey.ts","src/helpers/array/randomize.ts","src/helpers/bytes/addPadding.ts","src/helpers/bytes/bytesFromHex.ts","src/lib/crypto/generateDh.ts","src/helpers/bytes/bytesXor.ts","src/helpers/bytes/convertToUint8Array.ts","src/helpers/bytes/bytesToHex.ts","src/lib/crypto/srp.ts","node_modules/.pnpm/@cryptography+aes@0.1.1/node_modules/@cryptography/aes/dist/es/aes.js","src/helpers/bytes/bytesFromWordss.ts","src/helpers/bytes/bytesToWordss.ts","src/lib/crypto/utils/aesIGE.ts","src/helpers/random.ts","src/helpers/bigInt/bigIntRandom.ts","src/lib/crypto/utils/factorize/BrentPollard.ts","src/lib/crypto/subtle.ts","src/lib/crypto/utils/pbkdf2.ts","src/lib/crypto/utils/rsa.ts","src/lib/crypto/utils/sha1.ts","src/lib/crypto/utils/sha256.ts","src/lib/crypto/utils/aesCTR.ts","src/lib/crypto/aesCtrUtils.ts","src/lib/crypto/crypto.worker.ts"],"sourcesContent":["export default function bufferConcats(...args: (ArrayBuffer | Uint8Array | number[])[]) {\n const length = args.reduce((acc, v) => acc + ((v as ArrayBuffer).byteLength || (v as Uint8Array).length), 0);\n\n const tmp = new Uint8Array(length);\n\n let lastLength = 0;\n args.forEach((b) => {\n tmp.set(b instanceof ArrayBuffer ? new Uint8Array(b) : b, lastLength);\n lastLength += (b as ArrayBuffer).byteLength || (b as Uint8Array).length;\n });\n\n return tmp/* .buffer */;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport bufferConcats from '../helpers/bytes/bufferConcats';\n\nUint8Array.prototype.concat = function(...args: Array<Uint8Array | ArrayBuffer | number[]>) {\n return bufferConcats(this, ...args);\n};\n\n/* Uint8Array.prototype.toString = function() {\n return String.fromCharCode.apply(null, [...this]);\n}; */\n\nUint8Array.prototype.toJSON = function() {\n return [...this];\n // return {type: 'bytes', value: [...this]};\n};\n\nPromise.prototype.finally = Promise.prototype.finally || function<T>(this: Promise<T>, fn: () => any) {\n const onFinally = (callback: typeof fn) => Promise.resolve(fn()).then(callback);\n return this.then(\n result => onFinally(() => result),\n reason => onFinally(() => Promise.reject(reason))\n );\n};\n\ndeclare global {\n interface Uint8Array {\n concat: (...args: Array<Uint8Array | ArrayBuffer | number[]>) => Uint8Array,\n // toString: () => string,\n toJSON: () => number[],\n // toJSON: () => {type: 'bytes', value: number[]},\n }\n\n interface Promise<T> {\n finally: (onfinally?: () => void) => Promise<T>;\n }\n}\n","var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] + (i + 1 < digits.length ? digits[i + 1] / BASE : 0) : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < digits[i]) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10 || alphabet) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10 || alphabet) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n","import bigInt from 'big-integer';\n\nexport const safeBigInt = bigInt(Number.MAX_SAFE_INTEGER);\nexport const ulongBigInt = bigInt(bigInt[2]).pow(64);\nexport const longBigInt = ulongBigInt.divide(bigInt[2]);\n","import bigInt from 'big-integer';\nimport {longBigInt, ulongBigInt} from './bigIntConstants';\n\nexport function bigIntFromBytes(bytes: Uint8Array | number[], base = 256) {\n return bigInt.fromArray(bytes instanceof Uint8Array ? [...bytes] : bytes, base);\n}\n\nexport function bigIntToBytes(bigInt: bigInt.BigInteger) {\n return new Uint8Array(bigInt.toArray(256).value);\n}\n\nexport function bigIntToSigned(bigInt: bigInt.BigInteger) {\n return bigInt.greater(longBigInt) ? bigInt.minus(ulongBigInt) : bigInt;\n}\n\nexport function bigIntToUnsigned(bigInt: bigInt.BigInteger) {\n return bigInt.isNegative() ? ulongBigInt.add(bigInt) : bigInt;\n}\n","import {bigIntFromBytes, bigIntToBytes} from '../bigInt/bigIntConversion';\n\nexport default function bytesModPow(bytes: number[] | Uint8Array, exp: number[] | Uint8Array, mod: number[] | Uint8Array) {\n const bytesBigInt = bigIntFromBytes(bytes);\n const expBigInt = bigIntFromBytes(exp);\n const modBigInt = bigIntFromBytes(mod);\n const resBigInt = bytesBigInt.modPow(expBigInt, modBigInt);\n return bigIntToBytes(resBigInt);\n}\n","/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).pako={})}(this,(function(e){\"use strict\";var t=(e,t,i,n)=>{let a=65535&e|0,r=e>>>16&65535|0,o=0;for(;0!==i;){o=i>2e3?2e3:i,i-=o;do{a=a+t[n++]|0,r=r+a|0}while(--o);a%=65521,r%=65521}return a|r<<16|0};const i=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var n=(e,t,n,a)=>{const r=i,o=a+n;e^=-1;for(let i=a;i<o;i++)e=e>>>8^r[255&(e^t[i])];return-1^e};const a=16209;var r=function(e,t){let i,n,r,o,s,l,d,f,c,h,u,w,b,m,k,_,g,p,v,x,y,E,R,A;const Z=e.state;i=e.next_in,R=e.input,n=i+(e.avail_in-5),r=e.next_out,A=e.output,o=r-(t-e.avail_out),s=r+(e.avail_out-257),l=Z.dmax,d=Z.wsize,f=Z.whave,c=Z.wnext,h=Z.window,u=Z.hold,w=Z.bits,b=Z.lencode,m=Z.distcode,k=(1<<Z.lenbits)-1,_=(1<<Z.distbits)-1;e:do{w<15&&(u+=R[i++]<<w,w+=8,u+=R[i++]<<w,w+=8),g=b[u&k];t:for(;;){if(p=g>>>24,u>>>=p,w-=p,p=g>>>16&255,0===p)A[r++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=b[(65535&g)+(u&(1<<p)-1)];continue t}if(32&p){Z.mode=16191;break e}e.msg=\"invalid literal/length code\",Z.mode=a;break e}v=65535&g,p&=15,p&&(w<p&&(u+=R[i++]<<w,w+=8),v+=u&(1<<p)-1,u>>>=p,w-=p),w<15&&(u+=R[i++]<<w,w+=8,u+=R[i++]<<w,w+=8),g=m[u&_];i:for(;;){if(p=g>>>24,u>>>=p,w-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=m[(65535&g)+(u&(1<<p)-1)];continue i}e.msg=\"invalid distance code\",Z.mode=a;break e}if(x=65535&g,p&=15,w<p&&(u+=R[i++]<<w,w+=8,w<p&&(u+=R[i++]<<w,w+=8)),x+=u&(1<<p)-1,x>l){e.msg=\"invalid distance too far back\",Z.mode=a;break e}if(u>>>=p,w-=p,p=r-o,x>p){if(p=x-p,p>f&&Z.sane){e.msg=\"invalid distance too far back\",Z.mode=a;break e}if(y=0,E=h,0===c){if(y+=d-p,p<v){v-=p;do{A[r++]=h[y++]}while(--p);y=r-x,E=A}}else if(c<p){if(y+=d+c-p,p-=c,p<v){v-=p;do{A[r++]=h[y++]}while(--p);if(y=0,c<v){p=c,v-=p;do{A[r++]=h[y++]}while(--p);y=r-x,E=A}}}else if(y+=c-p,p<v){v-=p;do{A[r++]=h[y++]}while(--p);y=r-x,E=A}for(;v>2;)A[r++]=E[y++],A[r++]=E[y++],A[r++]=E[y++],v-=3;v&&(A[r++]=E[y++],v>1&&(A[r++]=E[y++]))}else{y=r-x;do{A[r++]=A[y++],A[r++]=A[y++],A[r++]=A[y++],v-=3}while(v>2);v&&(A[r++]=A[y++],v>1&&(A[r++]=A[y++]))}break}}break}}while(i<n&&r<s);v=w>>3,i-=v,w-=v<<3,u&=(1<<w)-1,e.next_in=i,e.next_out=r,e.avail_in=i<n?n-i+5:5-(i-n),e.avail_out=r<s?s-r+257:257-(r-s),Z.hold=u,Z.bits=w};const o=15,s=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),l=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),d=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),f=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var c=(e,t,i,n,a,r,c,h)=>{const u=h.bits;let w,b,m,k,_,g,p=0,v=0,x=0,y=0,E=0,R=0,A=0,Z=0,S=0,T=0,O=null;const U=new Uint16Array(16),D=new Uint16Array(16);let I,B,N,C=null;for(p=0;p<=o;p++)U[p]=0;for(v=0;v<n;v++)U[t[i+v]]++;for(E=u,y=o;y>=1&&0===U[y];y--);if(E>y&&(E=y),0===y)return a[r++]=20971520,a[r++]=20971520,h.bits=1,0;for(x=1;x<y&&0===U[x];x++);for(E<x&&(E=x),Z=1,p=1;p<=o;p++)if(Z<<=1,Z-=U[p],Z<0)return-1;if(Z>0&&(0===e||1!==y))return-1;for(D[1]=0,p=1;p<o;p++)D[p+1]=D[p]+U[p];for(v=0;v<n;v++)0!==t[i+v]&&(c[D[t[i+v]]++]=v);if(0===e?(O=C=c,g=20):1===e?(O=s,C=l,g=257):(O=d,C=f,g=0),T=0,v=0,p=x,_=r,R=E,A=0,m=-1,S=1<<E,k=S-1,1===e&&S>852||2===e&&S>592)return 1;for(;;){I=p-A,c[v]+1<g?(B=0,N=c[v]):c[v]>=g?(B=C[c[v]-g],N=O[c[v]-g]):(B=96,N=0),w=1<<p-A,b=1<<R,x=b;do{b-=w,a[_+(T>>A)+b]=I<<24|B<<16|N|0}while(0!==b);for(w=1<<p-1;T&w;)w>>=1;if(0!==w?(T&=w-1,T+=w):T=0,v++,0==--U[p]){if(p===y)break;p=t[i+c[v]]}if(p>E&&(T&k)!==m){for(0===A&&(A=E),_+=x,R=p-A,Z=1<<R;R+A<y&&(Z-=U[R+A],!(Z<=0));)R++,Z<<=1;if(S+=1<<R,1===e&&S>852||2===e&&S>592)return 1;m=T&k,a[m]=E<<24|R<<16|_-r|0}}return 0!==T&&(a[_+T]=p-A<<24|64<<16|0),h.bits=E,0},h={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{Z_FINISH:u,Z_BLOCK:w,Z_TREES:b,Z_OK:m,Z_STREAM_END:k,Z_NEED_DICT:_,Z_STREAM_ERROR:g,Z_DATA_ERROR:p,Z_MEM_ERROR:v,Z_BUF_ERROR:x,Z_DEFLATED:y}=h,E=16180,R=16190,A=16191,Z=16192,S=16194,T=16199,O=16200,U=16206,D=16209,I=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function B(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const N=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<E||t.mode>16211?1:0},C=e=>{if(N(e))return g;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,m},z=e=>{if(N(e))return g;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,C(e)},F=(e,t)=>{let i;if(N(e))return g;const n=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?g:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=i,n.wbits=t,z(e))},L=(e,t)=>{if(!e)return g;const i=new B;e.state=i,i.strm=e,i.window=null,i.mode=E;const n=F(e,t);return n!==m&&(e.state=null),n};let M,H,j=!0;const K=e=>{if(j){M=new Int32Array(512),H=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(c(1,e.lens,0,288,M,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;c(2,e.lens,0,32,H,0,e.work,{bits:5}),j=!1}e.lencode=M,e.lenbits=9,e.distcode=H,e.distbits=5},P=(e,t,i,n)=>{let a;const r=e.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),n>=r.wsize?(r.window.set(t.subarray(i-r.wsize,i),0),r.wnext=0,r.whave=r.wsize):(a=r.wsize-r.wnext,a>n&&(a=n),r.window.set(t.subarray(i-n,i-n+a),r.wnext),(n-=a)?(r.window.set(t.subarray(i-n,i),0),r.wnext=n,r.whave=r.wsize):(r.wnext+=a,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=a))),0};var Y={inflateReset:z,inflateReset2:F,inflateResetKeep:C,inflateInit:e=>L(e,15),inflateInit2:L,inflate:(e,i)=>{let a,o,s,l,d,f,h,B,C,z,F,L,M,H,j,Y,G,X,W,q,J,Q,V=0;const $=new Uint8Array(4);let ee,te;const ie=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(N(e)||!e.output||!e.input&&0!==e.avail_in)return g;a=e.state,a.mode===A&&(a.mode=Z),d=e.next_out,s=e.output,h=e.avail_out,l=e.next_in,o=e.input,f=e.avail_in,B=a.hold,C=a.bits,z=f,F=h,Q=m;e:for(;;)switch(a.mode){case E:if(0===a.wrap){a.mode=Z;break}for(;C<16;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if(2&a.wrap&&35615===B){0===a.wbits&&(a.wbits=15),a.check=0,$[0]=255&B,$[1]=B>>>8&255,a.check=n(a.check,$,2,0),B=0,C=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&B)<<8)+(B>>8))%31){e.msg=\"incorrect header check\",a.mode=D;break}if((15&B)!==y){e.msg=\"unknown compression method\",a.mode=D;break}if(B>>>=4,C-=4,J=8+(15&B),0===a.wbits&&(a.wbits=J),J>15||J>a.wbits){e.msg=\"invalid window size\",a.mode=D;break}a.dmax=1<<a.wbits,a.flags=0,e.adler=a.check=1,a.mode=512&B?16189:A,B=0,C=0;break;case 16181:for(;C<16;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if(a.flags=B,(255&a.flags)!==y){e.msg=\"unknown compression method\",a.mode=D;break}if(57344&a.flags){e.msg=\"unknown header flags set\",a.mode=D;break}a.head&&(a.head.text=B>>8&1),512&a.flags&&4&a.wrap&&($[0]=255&B,$[1]=B>>>8&255,a.check=n(a.check,$,2,0)),B=0,C=0,a.mode=16182;case 16182:for(;C<32;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}a.head&&(a.head.time=B),512&a.flags&&4&a.wrap&&($[0]=255&B,$[1]=B>>>8&255,$[2]=B>>>16&255,$[3]=B>>>24&255,a.check=n(a.check,$,4,0)),B=0,C=0,a.mode=16183;case 16183:for(;C<16;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}a.head&&(a.head.xflags=255&B,a.head.os=B>>8),512&a.flags&&4&a.wrap&&($[0]=255&B,$[1]=B>>>8&255,a.check=n(a.check,$,2,0)),B=0,C=0,a.mode=16184;case 16184:if(1024&a.flags){for(;C<16;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}a.length=B,a.head&&(a.head.extra_len=B),512&a.flags&&4&a.wrap&&($[0]=255&B,$[1]=B>>>8&255,a.check=n(a.check,$,2,0)),B=0,C=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(L=a.length,L>f&&(L=f),L&&(a.head&&(J=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(o.subarray(l,l+L),J)),512&a.flags&&4&a.wrap&&(a.check=n(a.check,o,L,l)),f-=L,l+=L,a.length-=L),a.length))break e;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===f)break e;L=0;do{J=o[l+L++],a.head&&J&&a.length<65536&&(a.head.name+=String.fromCharCode(J))}while(J&&L<f);if(512&a.flags&&4&a.wrap&&(a.check=n(a.check,o,L,l)),f-=L,l+=L,J)break e}else a.head&&(a.head.name=null);a.length=0,a.mode=16187;case 16187:if(4096&a.flags){if(0===f)break e;L=0;do{J=o[l+L++],a.head&&J&&a.length<65536&&(a.head.comment+=String.fromCharCode(J))}while(J&&L<f);if(512&a.flags&&4&a.wrap&&(a.check=n(a.check,o,L,l)),f-=L,l+=L,J)break e}else a.head&&(a.head.comment=null);a.mode=16188;case 16188:if(512&a.flags){for(;C<16;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if(4&a.wrap&&B!==(65535&a.check)){e.msg=\"header crc mismatch\",a.mode=D;break}B=0,C=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=A;break;case 16189:for(;C<32;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}e.adler=a.check=I(B),B=0,C=0,a.mode=R;case R:if(0===a.havedict)return e.next_out=d,e.avail_out=h,e.next_in=l,e.avail_in=f,a.hold=B,a.bits=C,_;e.adler=a.check=1,a.mode=A;case A:if(i===w||i===b)break e;case Z:if(a.last){B>>>=7&C,C-=7&C,a.mode=U;break}for(;C<3;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}switch(a.last=1&B,B>>>=1,C-=1,3&B){case 0:a.mode=16193;break;case 1:if(K(a),a.mode=T,i===b){B>>>=2,C-=2;break e}break;case 2:a.mode=16196;break;case 3:e.msg=\"invalid block type\",a.mode=D}B>>>=2,C-=2;break;case 16193:for(B>>>=7&C,C-=7&C;C<32;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if((65535&B)!=(B>>>16^65535)){e.msg=\"invalid stored block lengths\",a.mode=D;break}if(a.length=65535&B,B=0,C=0,a.mode=S,i===b)break e;case S:a.mode=16195;case 16195:if(L=a.length,L){if(L>f&&(L=f),L>h&&(L=h),0===L)break e;s.set(o.subarray(l,l+L),d),f-=L,l+=L,h-=L,d+=L,a.length-=L;break}a.mode=A;break;case 16196:for(;C<14;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if(a.nlen=257+(31&B),B>>>=5,C-=5,a.ndist=1+(31&B),B>>>=5,C-=5,a.ncode=4+(15&B),B>>>=4,C-=4,a.nlen>286||a.ndist>30){e.msg=\"too many length or distance symbols\",a.mode=D;break}a.have=0,a.mode=16197;case 16197:for(;a.have<a.ncode;){for(;C<3;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}a.lens[ie[a.have++]]=7&B,B>>>=3,C-=3}for(;a.have<19;)a.lens[ie[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,ee={bits:a.lenbits},Q=c(0,a.lens,0,19,a.lencode,0,a.work,ee),a.lenbits=ee.bits,Q){e.msg=\"invalid code lengths set\",a.mode=D;break}a.have=0,a.mode=16198;case 16198:for(;a.have<a.nlen+a.ndist;){for(;V=a.lencode[B&(1<<a.lenbits)-1],j=V>>>24,Y=V>>>16&255,G=65535&V,!(j<=C);){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if(G<16)B>>>=j,C-=j,a.lens[a.have++]=G;else{if(16===G){for(te=j+2;C<te;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if(B>>>=j,C-=j,0===a.have){e.msg=\"invalid bit length repeat\",a.mode=D;break}J=a.lens[a.have-1],L=3+(3&B),B>>>=2,C-=2}else if(17===G){for(te=j+3;C<te;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}B>>>=j,C-=j,J=0,L=3+(7&B),B>>>=3,C-=3}else{for(te=j+7;C<te;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}B>>>=j,C-=j,J=0,L=11+(127&B),B>>>=7,C-=7}if(a.have+L>a.nlen+a.ndist){e.msg=\"invalid bit length repeat\",a.mode=D;break}for(;L--;)a.lens[a.have++]=J}}if(a.mode===D)break;if(0===a.lens[256]){e.msg=\"invalid code -- missing end-of-block\",a.mode=D;break}if(a.lenbits=9,ee={bits:a.lenbits},Q=c(1,a.lens,0,a.nlen,a.lencode,0,a.work,ee),a.lenbits=ee.bits,Q){e.msg=\"invalid literal/lengths set\",a.mode=D;break}if(a.distbits=6,a.distcode=a.distdyn,ee={bits:a.distbits},Q=c(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,ee),a.distbits=ee.bits,Q){e.msg=\"invalid distances set\",a.mode=D;break}if(a.mode=T,i===b)break e;case T:a.mode=O;case O:if(f>=6&&h>=258){e.next_out=d,e.avail_out=h,e.next_in=l,e.avail_in=f,a.hold=B,a.bits=C,r(e,F),d=e.next_out,s=e.output,h=e.avail_out,l=e.next_in,o=e.input,f=e.avail_in,B=a.hold,C=a.bits,a.mode===A&&(a.back=-1);break}for(a.back=0;V=a.lencode[B&(1<<a.lenbits)-1],j=V>>>24,Y=V>>>16&255,G=65535&V,!(j<=C);){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if(Y&&0==(240&Y)){for(X=j,W=Y,q=G;V=a.lencode[q+((B&(1<<X+W)-1)>>X)],j=V>>>24,Y=V>>>16&255,G=65535&V,!(X+j<=C);){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}B>>>=X,C-=X,a.back+=X}if(B>>>=j,C-=j,a.back+=j,a.length=G,0===Y){a.mode=16205;break}if(32&Y){a.back=-1,a.mode=A;break}if(64&Y){e.msg=\"invalid literal/length code\",a.mode=D;break}a.extra=15&Y,a.mode=16201;case 16201:if(a.extra){for(te=a.extra;C<te;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}a.length+=B&(1<<a.extra)-1,B>>>=a.extra,C-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;V=a.distcode[B&(1<<a.distbits)-1],j=V>>>24,Y=V>>>16&255,G=65535&V,!(j<=C);){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if(0==(240&Y)){for(X=j,W=Y,q=G;V=a.distcode[q+((B&(1<<X+W)-1)>>X)],j=V>>>24,Y=V>>>16&255,G=65535&V,!(X+j<=C);){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}B>>>=X,C-=X,a.back+=X}if(B>>>=j,C-=j,a.back+=j,64&Y){e.msg=\"invalid distance code\",a.mode=D;break}a.offset=G,a.extra=15&Y,a.mode=16203;case 16203:if(a.extra){for(te=a.extra;C<te;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}a.offset+=B&(1<<a.extra)-1,B>>>=a.extra,C-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg=\"invalid distance too far back\",a.mode=D;break}a.mode=16204;case 16204:if(0===h)break e;if(L=F-h,a.offset>L){if(L=a.offset-L,L>a.whave&&a.sane){e.msg=\"invalid distance too far back\",a.mode=D;break}L>a.wnext?(L-=a.wnext,M=a.wsize-L):M=a.wnext-L,L>a.length&&(L=a.length),H=a.window}else H=s,M=d-a.offset,L=a.length;L>h&&(L=h),h-=L,a.length-=L;do{s[d++]=H[M++]}while(--L);0===a.length&&(a.mode=O);break;case 16205:if(0===h)break e;s[d++]=a.length,h--,a.mode=O;break;case U:if(a.wrap){for(;C<32;){if(0===f)break e;f--,B|=o[l++]<<C,C+=8}if(F-=h,e.total_out+=F,a.total+=F,4&a.wrap&&F&&(e.adler=a.check=a.flags?n(a.check,s,F,d-F):t(a.check,s,F,d-F)),F=h,4&a.wrap&&(a.flags?B:I(B))!==a.check){e.msg=\"incorrect data check\",a.mode=D;break}B=0,C=0}a.mode=16207;case 16207:if(a.wrap&&a.flags){for(;C<32;){if(0===f)break e;f--,B+=o[l++]<<C,C+=8}if(4&a.wrap&&B!==(4294967295&a.total)){e.msg=\"incorrect length check\",a.mode=D;break}B=0,C=0}a.mode=16208;case 16208:Q=k;break e;case D:Q=p;break e;case 16210:return v;default:return g}return e.next_out=d,e.avail_out=h,e.next_in=l,e.avail_in=f,a.hold=B,a.bits=C,(a.wsize||F!==e.avail_out&&a.mode<D&&(a.mode<U||i!==u))&&P(e,e.output,e.next_out,F-e.avail_out),z-=e.avail_in,F-=e.avail_out,e.total_in+=z,e.total_out+=F,a.total+=F,4&a.wrap&&F&&(e.adler=a.check=a.flags?n(a.check,s,F,e.next_out-F):t(a.check,s,F,e.next_out-F)),e.data_type=a.bits+(a.last?64:0)+(a.mode===A?128:0)+(a.mode===T||a.mode===S?256:0),(0===z&&0===F||i===u)&&Q===m&&(Q=x),Q},inflateEnd:e=>{if(N(e))return g;let t=e.state;return t.window&&(t.window=null),e.state=null,m},inflateGetHeader:(e,t)=>{if(N(e))return g;const i=e.state;return 0==(2&i.wrap)?g:(i.head=t,t.done=!1,m)},inflateSetDictionary:(e,i)=>{const n=i.length;let a,r,o;return N(e)?g:(a=e.state,0!==a.wrap&&a.mode!==R?g:a.mode===R&&(r=1,r=t(r,i,n,0),r!==a.check)?p:(o=P(e,i,n,n),o?(a.mode=16210,v):(a.havedict=1,m)))},inflateInfo:\"pako inflate (from Nodeca project)\"};const G=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var X=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if(\"object\"!=typeof i)throw new TypeError(i+\"must be non-object\");for(const t in i)G(i,t)&&(e[t]=i[t])}}return e},W=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,a=e.length;t<a;t++){let a=e[t];i.set(a,n),n+=a.length}return i};let q=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){q=!1}const J=new Uint8Array(256);for(let e=0;e<256;e++)J[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;J[254]=J[254]=1;var Q=e=>{if(\"function\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,a,r,o=e.length,s=0;for(a=0;a<o;a++)i=e.charCodeAt(a),55296==(64512&i)&&a+1<o&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),a++)),s+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(s),r=0,a=0;r<s;a++)i=e.charCodeAt(a),55296==(64512&i)&&a+1<o&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),a++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t},V=(e,t)=>{const i=t||e.length;if(\"function\"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let n,a;const r=new Array(2*i);for(a=0,n=0;n<i;){let t=e[n++];if(t<128){r[a++]=t;continue}let o=J[t];if(o>4)r[a++]=65533,n+=o-1;else{for(t&=2===o?31:3===o?15:7;o>1&&n<i;)t=t<<6|63&e[n++],o--;o>1?r[a++]=65533:t<65536?r[a++]=t:(t-=65536,r[a++]=55296|t>>10&1023,r[a++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&q)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i=\"\";for(let n=0;n<t;n++)i+=String.fromCharCode(e[n]);return i})(r,a)},$=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+J[e[i]]>t?i:t},ee={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"};var te=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0};var ie=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1};const ne=Object.prototype.toString,{Z_NO_FLUSH:ae,Z_FINISH:re,Z_OK:oe,Z_STREAM_END:se,Z_NEED_DICT:le,Z_STREAM_ERROR:de,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce}=h;function he(e){this.options=X({chunkSize:65536,windowBits:15,to:\"\"},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new te,this.strm.avail_out=0;let i=Y.inflateInit2(this.strm,t.windowBits);if(i!==oe)throw new Error(ee[i]);if(this.header=new ie,Y.inflateGetHeader(this.strm,this.header),t.dictionary&&(\"string\"==typeof t.dictionary?t.dictionary=Q(t.dictionary):\"[object ArrayBuffer]\"===ne.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=Y.inflateSetDictionary(this.strm,t.dictionary),i!==oe)))throw new Error(ee[i])}function ue(e,t){const i=new he(t);if(i.push(e),i.err)throw i.msg||ee[i.err];return i.result}he.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize,a=this.options.dictionary;let r,o,s;if(this.ended)return!1;for(o=t===~~t?t:!0===t?re:ae,\"[object ArrayBuffer]\"===ne.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),r=Y.inflate(i,o),r===le&&a&&(r=Y.inflateSetDictionary(i,a),r===oe?r=Y.inflate(i,o):r===fe&&(r=le));i.avail_in>0&&r===se&&i.state.wrap>0&&0!==e[i.next_in];)Y.inflateReset(i),r=Y.inflate(i,o);switch(r){case de:case fe:case le:case ce:return this.onEnd(r),this.ended=!0,!1}if(s=i.avail_out,i.next_out&&(0===i.avail_out||r===se))if(\"string\"===this.options.to){let e=$(i.output,i.next_out),t=i.next_out-e,a=V(i.output,e);i.next_out=t,i.avail_out=n-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(a)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(r!==oe||0!==s){if(r===se)return r=Y.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},he.prototype.onData=function(e){this.chunks.push(e)},he.prototype.onEnd=function(e){e===oe&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=W(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var we=he,be=ue,me=function(e,t){return(t=t||{}).raw=!0,ue(e,t)},ke=ue,_e=h,ge={Inflate:we,inflate:be,inflateRaw:me,ungzip:ke,constants:_e};e.Inflate=we,e.constants=_e,e.default=ge,e.inflate=be,e.inflateRaw=me,e.ungzip=ke,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","// export function gzipUncompress(bytes: ArrayBuffer, toString: true): string;\n\n// @ts-ignore\nimport pako from 'pako/dist/pako_inflate.min.js';\n// import dT from './dT';\n\n// export function gzipUncompress(bytes: ArrayBuffer, toString?: false): Uint8Array;\nexport default function gzipUncompress(bytes: ArrayBuffer, toString?: boolean): string | Uint8Array {\n // console.log(dT(), 'Gzip uncompress start');\n const result = pako.inflate(bytes, toString ? {to: 'string'} : undefined);\n // console.log(dT(), 'Gzip uncompress finish'/* , result */);\n return result;\n}\n","const ctx = typeof(window) !== 'undefined' ? window : self;\n\nexport default ctx;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport type SuperMessagePort from '../lib/mtproto/superMessagePort';\nimport ctx from '../environment/ctx';\n\nexport default function listenMessagePort(\n messagePort: SuperMessagePort<any, any, any>,\n onConnect?: (source: MessageEventSource) => void,\n onDisconnect?: (source: MessageEventSource) => void\n) {\n const attachPort = (listenPort: any, sendPort: any) => {\n messagePort.attachListenPort(listenPort);\n sendPort && messagePort.attachSendPort(sendPort);\n onConnect?.(listenPort);\n };\n\n messagePort.setOnPortDisconnect(onDisconnect);\n\n if(typeof(SharedWorkerGlobalScope) !== 'undefined') {\n (ctx as any as SharedWorkerGlobalScope).addEventListener('connect', (e) => attachPort(e.source, e.source));\n } else if(typeof(ServiceWorkerGlobalScope) !== 'undefined') {\n attachPort(ctx, null);\n } else {\n attachPort(ctx, ctx);\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n *\n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport type {TransportType} from '../lib/mtproto/dcConfigurator';\n\nconst Modes = {\n test: location.search.indexOf('test=1') > 0/* || true */,\n debug: location.search.indexOf('debug=1') > 0,\n http: false,\n ssl: true, // location.search.indexOf('ssl=1') > 0 || location.protocol === 'https:' && location.search.indexOf('ssl=0') === -1,\n asServiceWorker: !!import.meta.env.VITE_MTPROTO_SW,\n transport: 'websocket' as TransportType,\n noSharedWorker: location.search.indexOf('noSharedWorker=1') > 0,\n multipleTransports: !!(import.meta.env.VITE_MTPROTO_AUTO && import.meta.env.VITE_MTPROTO_HAS_HTTP && import.meta.env.VITE_MTPROTO_HAS_WS)\n};\n\nif(import.meta.env.VITE_MTPROTO_HAS_HTTP) {\n const httpOnly = Modes.http = location.search.indexOf('http=1') > 0;\n if(httpOnly) {\n Modes.multipleTransports = false;\n }\n}\n\n// * start with HTTP first\nif(Modes.multipleTransports) {\n Modes.http = true;\n}\n\nif(Modes.http) {\n Modes.transport = 'https';\n}\n\nexport default Modes;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport Modes from './modes';\n\nexport const IS_BETA = import.meta.env.DEV;\nexport const DEBUG = (IS_BETA || Modes.debug)/* && false */;\nconst ctx: any = typeof(window) !== 'undefined' ? window : self;\nexport const MOUNT_CLASS_TO: any = DEBUG || true/* && false */ ? ctx : {};\nexport default DEBUG;\n\n// let m = DEBUG;\n/* if(!DEBUG) {\n ctx.sandpitTurtle = () => {\n //if(!m) {\n for(let i in MOUNT_CLASS_TO) {\n ctx[i] = MOUNT_CLASS_TO[i];\n }\n //m = true;\n //}\n\n //DEBUG = !DEBUG;\n };\n} */\n\n/* export const superDebug = (object: any, key: string) => {\n var d = object[key];\n var beforeStr = '', afterStr = '';\n for(var r of d) {\n beforeStr += r.before.hex + '\\n';\n afterStr += r.after.hex + '\\n';\n }\n\n beforeStr = beforeStr.trim();\n afterStr = afterStr.trim();\n //var beforeStr = d.map((r) => r.before.hex).join('\\n');\n //var afterStr = d.map((r) => r.after.hex).join('\\n');\n\n var dada = (name: string, str: string) => {\n var a = document.createElement('a');\n a.target = '_blank';\n a.download = name + '.txt';\n a.href = URL.createObjectURL(new Blob([str], {\n type: 'text/plain'\n }));\n document.body.append(a);\n a.click();\n };\n\n dada(key + '_' + 'before', beforeStr);\n dada(key + '_' + 'after', afterStr);\n}\n\nMOUNT_CLASS_TO.superDebug = superDebug; */\n","const tabId = Date.now() % Math.random() * 100000000 | 0;\nexport default tabId;\n","export default function indexOfAndSplice<T>(array: Array<T>, item: T) {\n const idx = array.indexOf(item);\n const spliced = idx === -1 ? undefined : array.splice(idx, 1);\n return spliced?.[0];\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n// в SW может быть сразу две переменных TRUE\nexport const IS_SERVICE_WORKER = typeof ServiceWorkerGlobalScope !== 'undefined' && self instanceof ServiceWorkerGlobalScope;\nexport const IS_WEB_WORKER = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope && !IS_SERVICE_WORKER;\nexport const IS_WORKER = IS_WEB_WORKER || IS_SERVICE_WORKER;\n\nexport const getWindowClients = () => {\n return (self as any as ServiceWorkerGlobalScope)\n .clients\n .matchAll({includeUncontrolled: false, type: 'window'});\n};\n\nexport const getLastWindowClient = () => getWindowClients().then((windowClients) => windowClients.slice(-1)[0]);\n\nconst postMessage = (listener: WindowClient | DedicatedWorkerGlobalScope, ...args: any[]) => {\n try {\n // @ts-ignore\n listener.postMessage(...args);\n } catch(err) {\n console.error('[worker] postMessage error:', err, args);\n }\n};\n\nconst notifyServiceWorker = (all: boolean, ...args: any[]) => {\n getWindowClients().then((listeners) => {\n if(!listeners.length) {\n // console.trace('no listeners?', self, listeners);\n return;\n }\n\n listeners.slice(all ? 0 : -1).forEach((listener) => {\n postMessage(listener, ...args);\n });\n });\n};\n\nconst notifyWorker = (...args: any[]) => {\n postMessage(self as any as DedicatedWorkerGlobalScope, ...args);\n};\n\nconst noop = () => {};\n\nexport const notifySomeone = IS_SERVICE_WORKER ? notifyServiceWorker.bind(null, false) : (IS_WEB_WORKER ? notifyWorker : noop);\nexport const notifyAll = IS_SERVICE_WORKER ? notifyServiceWorker.bind(null, true) : (IS_WEB_WORKER ? notifyWorker : noop);\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n// import { MOUNT_CLASS_TO } from \"../config/debug\";\nimport type {ArgumentTypes, SuperReturnType} from '../types';\n\n// class EventSystem {\n// wm: WeakMap<any, Record<any, Set<any>>> = new WeakMap();\n\n// add(target: any, event: any, listener: any) {\n// let listeners = this.wm.get(target);\n// if (listeners === undefined) {\n// listeners = {};\n// }\n// let listenersForEvent = listeners[event];\n// if (listenersForEvent === undefined) {\n// listenersForEvent = new Set();\n// }\n// listenersForEvent.add(listener);\n// listeners[event] = listenersForEvent;\n// //target.addEventListener(event, listener);\n// this.wm.set(target, listeners);\n// };\n\n// remove(target: any, event: any, listener: any) {\n// let listeners = this.wm.get(target);\n// if (!listeners) return;\n// let listenersForEvent = listeners[event];\n// if (!listenersForEvent) return;\n// listenersForEvent.delete(listener);\n// };\n\n// /* fire(target, event) {\n// let listeners = this.wm.get(target);\n// if (!listeners) return;\n// let listenersForEvent = listeners[event];\n// if (!listenersForEvent) return;\n// for (let handler of handlers) {\n// setTimeout(handler, 0, event, target); // we use a setTimeout here because we want event triggering to be asynchronous.\n// }\n// }; */\n// }\n\n// console.log = () => {};\n\n// const e = new EventSystem();\n// MOUNT_CLASS_TO.e = e;\n\nexport type EventListenerListeners = Record<string, Function>;\n// export type EventListenerListeners = Record<string, (...args: any[]) => any>;\n// export type EventListenerListeners = {[name in string]: Function};\n\n/**\n * Better not to remove listeners during setting\n * Should add listener callback only once\n */\n\ntype ListenerObject<T> = {callback: T, options: boolean | AddEventListenerOptions};\n\n// type EventLitenerCallback<T> = (data: T) =>\n// export default class EventListenerBase<Listeners extends {[name: string]: Function}> {\nexport default class EventListenerBase<Listeners extends EventListenerListeners> {\n protected listeners: Partial<{\n [k in keyof Listeners]: Set<ListenerObject<Listeners[k]>>\n }>;\n protected listenerResults: Partial<{\n [k in keyof Listeners]: ArgumentTypes<Listeners[k]>\n }>;\n\n private reuseResults: boolean;\n\n constructor(reuseResults?: boolean) {\n this._constructor(reuseResults);\n }\n\n public _constructor(reuseResults?: boolean): any {\n this.reuseResults = reuseResults;\n this.listeners = {};\n this.listenerResults = {};\n }\n\n public addEventListener<T extends keyof Listeners>(name: T, callback: Listeners[T], options?: boolean | AddEventListenerOptions) {\n const listenerObject: ListenerObject<Listeners[T]> = {callback, options};\n (this.listeners[name] ??= new Set()).add(listenerObject); // ! add before because if you don't, you won't be able to delete it from callback\n\n if(this.listenerResults.hasOwnProperty(name)) {\n callback(...this.listenerResults[name]);\n\n if((options as AddEventListenerOptions)?.once) {\n this.listeners[name].delete(listenerObject);\n return;\n }\n }\n\n // e.add(this, name, {callback, once});\n }\n\n public addMultipleEventsListeners(obj: {\n [name in keyof Listeners]?: Listeners[name]\n }) {\n for(const i in obj) {\n this.addEventListener(i, obj[i]);\n }\n }\n\n public removeEventListener<T extends keyof Listeners>(\n name: T,\n callback: Listeners[T],\n options?: boolean | AddEventListenerOptions\n ) {\n if(this.listeners[name]) {\n for(const l of this.listeners[name]) {\n if(l.callback === callback) {\n this.listeners[name].delete(l);\n break;\n }\n }\n }\n // e.remove(this, name, callback);\n }\n\n protected invokeListenerCallback<T extends keyof Listeners, L extends ListenerObject<any>>(\n name: T,\n listener: L,\n ...args: ArgumentTypes<L['callback']>\n ) {\n let result: any, error: any;\n try {\n result = listener.callback(...args);\n } catch(err) {\n error = err;\n // console.error('listener callback error', err);\n }\n\n if((listener.options as AddEventListenerOptions)?.once) {\n this.removeEventListener(name, listener.callback);\n }\n\n if(error) {\n throw error;\n }\n\n return result;\n }\n\n private _dispatchEvent<T extends keyof Listeners>(\n name: T,\n collectResults: boolean,\n ...args: ArgumentTypes<Listeners[T]>\n ) {\n if(this.reuseResults) {\n this.listenerResults[name] = args;\n }\n\n const arr: Array<SuperReturnType<Listeners[typeof name]>> = collectResults && [];\n\n const listeners = this.listeners[name];\n if(listeners) {\n for(const listener of listeners) {\n const result = this.invokeListenerCallback(name, listener, ...args);\n if(arr) {\n arr.push(result);\n }\n }\n }\n\n return arr;\n }\n\n public dispatchResultableEvent<T extends keyof Listeners>(name: T, ...args: ArgumentTypes<Listeners[T]>) {\n return this._dispatchEvent(name, true, ...args);\n }\n\n // * must be protected, but who cares\n public dispatchEvent<L extends EventListenerListeners = Listeners, T extends keyof L = keyof L>(\n name: T,\n ...args: ArgumentTypes<L[T]>\n ) {\n // @ts-ignore\n this._dispatchEvent(name, false, ...args);\n }\n\n public cleanup() {\n this.listeners = {};\n this.listenerResults = {};\n }\n}\n","const CACHED_ERRORS: {[key in Error['type']]?: ApiError} = {};\nexport default function makeError(type: Error['type']) {\n return CACHED_ERRORS[type] ??= {\n type\n };\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport ctx from './ctx';\n\nexport const USER_AGENT = navigator ? navigator.userAgent : null;\nexport const IS_APPLE = navigator.userAgent.search(/OS X|iPhone|iPad|iOS/i) !== -1;\nexport const IS_ANDROID = navigator.userAgent.toLowerCase().indexOf('android') !== -1;\nexport const IS_CHROMIUM = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\nexport const CHROMIUM_VERSION = (() => {\n try {\n return +navigator.userAgent.match(/Chrom(?:e|ium)\\/(.+?)(?:\\s|\\.)/)[1];\n } catch(err) {\n }\n})();\n\n// https://stackoverflow.com/a/58065241\nexport const IS_APPLE_MOBILE = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\n !(ctx as any).MSStream;\n\nexport const IS_SAFARI = !!('safari' in ctx) || !!(USER_AGENT && (/\\b(iPad|iPhone|iPod)\\b/.test(USER_AGENT) || (!!USER_AGENT.match('Safari') && !USER_AGENT.match('Chrome'))))/* || true */;\nexport const IS_FIREFOX = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\nexport const IS_MOBILE_SAFARI = IS_SAFARI && IS_APPLE_MOBILE;\n\nexport const IS_MOBILE = (navigator.maxTouchPoints === undefined || navigator.maxTouchPoints > 0) && navigator.userAgent.search(/iOS|iPhone OS|Android|BlackBerry|BB10|Series ?[64]0|J2ME|MIDP|opera mini|opera mobi|mobi.+Gecko|Windows Phone/i) != -1;\n","const _logTimer = Date.now();\nexport default function dT() {\n return '[' + ((Date.now() - _logTimer) / 1000).toFixed(3) + ']';\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport DEBUG from '../config/debug';\nimport {IS_FIREFOX, IS_SAFARI} from '../environment/userAgent';\nimport {IS_SERVICE_WORKER, IS_WEB_WORKER} from '../helpers/context';\nimport dT from '../helpers/dT';\n\nexport enum LogTypes {\n None = 0,\n Error = 1,\n Warn = 2,\n Log = 4,\n Debug = 8\n};\n\nexport const LOG_LEVELS = [LogTypes.None, LogTypes.Error, LogTypes.Warn, LogTypes.Log, LogTypes.Debug];\n\nconst IS_WEBKIT = IS_SAFARI || IS_FIREFOX;\n\n// let getCallerFunctionNameFromLine: (line: string) => string;\n// if(IS_WEBKIT) {\n// getCallerFunctionNameFromLine = (line) => {\n// const splitted = line.split('@');\n// return splitted[0];\n// };\n// } else {\n// getCallerFunctionNameFromLine = (line: string) => {\n// const splitted = line.trim().split(' ');\n// if(splitted.length === 3) {\n// return splitted[1].slice(splitted[1].lastIndexOf('.') + 1);\n// }\n// };\n// }\n\nconst STYLES_SUPPORTED = !IS_WEBKIT;\n// const LINE_INDEX = IS_WEBKIT ? 2 : 3;\n\n// function getCallerFunctionName() {\n// const stack = new Error().stack;\n// const lines = stack.split('\\n');\n// const line = lines[LINE_INDEX] || lines[lines.length - 1];\n// // const match = line.match(/\\.([^\\.]+?)\\s/);\n// // line = match ? match[1] : line.trim();\n// const caller = getCallerFunctionNameFromLine(line) || '<anonymous>';\n// return '[' + caller + ']';\n// }\n\nexport const LOGGER_STYLES = {\n reset: '\\x1b[0m',\n bright: '\\x1b[1m',\n dim: '\\x1b[2m',\n underscore: '\\x1b[4m',\n blink: '\\x1b[5m',\n reverse: '\\x1b[7m',\n hidden: '\\x1b[8m',\n // Foreground (text) colors\n fg: {\n black: '\\x1b[30m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n white: '\\x1b[37m'\n },\n // Background colors\n bg: {\n black: '\\x1b[40m',\n red: '\\x1b[41m',\n green: '\\x1b[42m',\n yellow: '\\x1b[43m',\n blue: '\\x1b[44m',\n magenta: '\\x1b[45m',\n cyan: '\\x1b[46m',\n white: '\\x1b[47m'\n }\n};\n\nexport type Logger = {\n (...args: any[]): void;\n warn(...args: any[]): void;\n info(...args: any[]): void;\n error(...args: any[]): void;\n trace(...args: any[]): void;\n debug(...args: any[]): void;\n assert(...args: any[]): void;\n // log(...args: any[]): void;\n group(...args: any[]): void;\n groupCollapsed(...args: any[]): void;\n groupEnd(...args: any[]): void;\n setPrefix(newPrefix: string): void;\n setLevel(level: 0 | 1 | 2 | 3 | 4): void;\n bindPrefix(prefix: string, type?: LogTypes): Logger;\n};\n\nconst methods: ['debug' | 'info' | 'warn' | 'error' | 'assert' | 'trace'/* | 'log' */ | 'group' | 'groupCollapsed' | 'groupEnd', LogTypes][] = [\n ['debug', LogTypes.Debug],\n ['info', LogTypes.Log],\n ['warn', LogTypes.Warn],\n ['error', LogTypes.Error],\n ['assert', LogTypes.Error],\n ['trace', LogTypes.Log],\n ['group', LogTypes.Log],\n ['groupCollapsed', LogTypes.Log],\n ['groupEnd', LogTypes.Log]\n // [\"log\", LogTypes.Log]\n];\n\nexport function logger(prefix: string, type: LogTypes = LogTypes.Log | LogTypes.Warn | LogTypes.Error, ignoreDebugReset = false, style = ''): Logger {\n let originalPrefix: string;\n if(!DEBUG && !ignoreDebugReset/* || true */) {\n type = LogTypes.Error;\n }\n\n if(!STYLES_SUPPORTED) {\n style = '';\n } else if(!style) {\n if(IS_SERVICE_WORKER) style = LOGGER_STYLES.fg.yellow;\n else if(IS_WEB_WORKER) style = LOGGER_STYLES.fg.cyan;\n }\n\n const originalStyle = style;\n if(style) style = `%s ${style}%s`;\n else style = '%s';\n\n // level = LogLevels.log | LogLevels.warn | LogLevels.error | LogLevels.debug\n\n const log: Logger = function(...args: any[]) {\n return type & LogTypes.Log && console.log(style, dT(), prefix, /* getCallerFunctionName(), */ ...args);\n } as any;\n\n methods.forEach(([method, logType]) => {\n log[method] = function(...args: any[]) {\n return type & logType && console[method](style, dT(), prefix, /* getCallerFunctionName(), */ ...args);\n };\n });\n\n log.setPrefix = function(newPrefix: string) {\n originalPrefix = newPrefix;\n prefix = '[' + newPrefix + ']';\n };\n\n log.setPrefix(prefix);\n\n log.setLevel = function(level: 0 | 1 | 2 | 3 | 4) {\n type = LOG_LEVELS.slice(0, level + 1).reduce((acc, v) => acc | v, 0) as any;\n };\n\n const prefixCache: {[prefix: string]: Logger} = {};\n log.bindPrefix = function(prefix: string, _type = type) {\n return prefixCache[prefix] ??= logger(\n // `${originalPrefix}] ${LOGGER_STYLES.fg.magenta}[${prefix}`,\n `${originalPrefix}] ${STYLES_SUPPORTED && originalStyle ? LOGGER_STYLES.reset : ''}[${prefix}`,\n // `${originalPrefix}] [${prefix}`,\n _type,\n ignoreDebugReset,\n // originalStyle || LOGGER_STYLES.reset\n originalStyle\n // LOGGER_STYLES.reset\n );\n };\n\n return log;\n};\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport DEBUG from '../../config/debug';\nimport tabId from '../../config/tabId';\nimport ctx from '../../environment/ctx';\nimport indexOfAndSplice from '../../helpers/array/indexOfAndSplice';\nimport {IS_WORKER} from '../../helpers/context';\nimport EventListenerBase from '../../helpers/eventListenerBase';\nimport makeError from '../../helpers/makeError';\nimport {Awaited, WorkerTaskTemplate, WorkerTaskVoidTemplate} from '../../types';\nimport {logger} from '../logger';\n\ntype SuperMessagePortTask = WorkerTaskTemplate & {\n transfer?: Transferable[]\n};\n\ninterface InvokeTask extends SuperMessagePortTask {\n type: 'invoke',\n payload: WorkerTaskVoidTemplate & {withAck?: boolean, void?: boolean}\n}\n\ninterface ResultTask extends SuperMessagePortTask {\n type: 'result',\n payload: {\n taskId: number,\n result?: any,\n error?: any\n }\n}\n\ninterface AckTask extends SuperMessagePortTask {\n type: 'ack',\n payload: {\n cached: boolean,\n taskId: number\n result?: any,\n error?: any,\n }\n}\n\ninterface PingTask extends SuperMessagePortTask {\n type: 'ping'\n}\n\ninterface PongTask extends SuperMessagePortTask {\n type: 'pong'\n}\n\ninterface BatchTask extends SuperMessagePortTask {\n type: 'batch',\n payload: Task[]\n}\n\ninterface CloseTask extends SuperMessagePortTask {\n type: 'close'\n}\n\n// interface OpenTask extends SuperMessagePortTask {\n// type: 'open'\n// }\n\ninterface LockTask extends SuperMessagePortTask {\n type: 'lock',\n payload: string\n}\n\ntype Task = InvokeTask | ResultTask | AckTask | PingTask | PongTask | BatchTask | CloseTask/* | OpenTask */ | LockTask;\ntype TaskMap = {\n [type in Task as type['type']]?: (task: Extract<Task, type>, source: MessageEventSource, event: MessageEvent<any>) => void | Promise<any>\n};\n\nexport type AckedResult<T> = {\n cached: boolean,\n result: Promise<T>\n};\n// export type AckedResult<T> = {\n// cached: true,\n// result: T\n// } | {\n// cached: false,\n// result: Promise<T>\n// };\n\ntype ListenPort = WindowProxy | MessagePort | ServiceWorker | Worker | ServiceWorkerContainer;\ntype SendPort = Pick<MessageEventSource, 'postMessage'>/* WindowProxy | MessagePort | ServiceWorker | Worker */;\n\nexport type MessageListenPort = ListenPort;\nexport type MessageSendPort = SendPort;\n\ntype ListenerCallback = (payload: any, source: MessageEventSource, event: MessageEvent<any>) => any;\ntype Listeners = Record<string, ListenerCallback>;\n\nconst USE_LOCKS = true;\nconst USE_BATCHING = true;\n\n// const PING_INTERVAL = DEBUG && false ? 0x7FFFFFFF : 5000;\n// const PING_TIMEOUT = DEBUG && false ? 0x7FFFFFFF : 10000;\n\nexport default class SuperMessagePort<\n Workers extends Listeners,\n Masters extends Listeners,\n IsMaster extends boolean,\n Receive extends Listeners = IsMaster extends true ? Masters : Workers,\n Send extends Listeners = IsMaster extends true ? Workers : Masters\n> extends EventListenerBase<Receive> {\n protected listenPorts: Array<ListenPort>;\n protected sendPorts: Array<SendPort>;\n protected pingResolves: Map<SendPort, () => void>;\n\n protected taskId: number;\n protected awaiting: {\n [id: number]: {\n resolve: any,\n reject: any,\n taskType: string,\n port?: SendPort\n }\n };\n protected pending: Map<SendPort, Task[]>;\n\n protected log: ReturnType<typeof logger>;\n protected debug: boolean;\n protected releasingPending: boolean;\n\n protected processTaskMap: TaskMap;\n\n protected onPortDisconnect: (source: MessageEventSource) => void;\n // protected onPortConnect: (source: MessageEventSource) => void;\n\n protected heldLocks: Map<SendPort, {resolve: () => void, id: string}>;\n protected requestedLocks: Map<string, SendPort>;\n\n constructor(protected logSuffix?: string) {\n super(false);\n\n this.listenPorts = [];\n this.sendPorts = [];\n this.pingResolves = new Map();\n this.taskId = 0;\n this.awaiting = {};\n this.pending = new Map();\n this.log = logger('MP' + (logSuffix ? '-' + logSuffix : ''));\n this.debug = DEBUG;\n this.heldLocks = new Map();\n this.requestedLocks = new Map();\n\n this.processTaskMap = {\n result: this.processResultTask,\n ack: this.processAckTask,\n invoke: this.processInvokeTask,\n ping: this.processPingTask,\n pong: this.processPongTask,\n close: this.processCloseTask,\n // open: this.processOpenTask,\n lock: this.processLockTask,\n batch: this.processBatchTask\n };\n }\n\n public setOnPortDisconnect(callback: (source: MessageEventSource) => void) {\n this.onPortDisconnect = callback;\n }\n\n // public setOnPortConnect(callback: (source: MessageEventSource) => void) {\n // this.onPortConnect = callback;\n // }\n\n public attachPort(port: MessageEventSource) {\n this.attachListenPort(port);\n this.attachSendPort(port);\n }\n\n public attachListenPort(port: ListenPort) {\n this.listenPorts.push(port);\n port.addEventListener('message', this.onMessage as any);\n }\n\n public attachSendPort(port: SendPort) {\n this.log.warn('attaching send port');\n\n (port as MessagePort).start?.();\n\n this.sendPorts.push(port);\n // this.sendPing(port);\n\n // const task = this.createTask('open', undefined);\n // this.postMessage(port, task);\n\n if(typeof(window) !== 'undefined' && USE_LOCKS) {\n if('locks' in navigator) {\n const id = ['lock', tabId, this.logSuffix || '', Math.random() * 0x7FFFFFFF | 0].join('-');\n this.log.warn('created lock', id);\n const promise = new Promise<void>((resolve) => this.heldLocks.set(port, {resolve, id}))\n .then(() => this.heldLocks.delete(port));\n navigator.locks.request(id, () => {\n this.resendLockTask(port);\n return promise;\n });\n } else {\n window.addEventListener('beforeunload', () => {\n const task = this.createTask('close', undefined);\n this.postMessage(undefined, task);\n });\n }\n }\n\n this.releasePending();\n }\n\n public resendLockTask(port: SendPort) {\n const lock = this.heldLocks.get(port);\n if(!lock) {\n return;\n }\n\n this.pushTask(this.createTask('lock', lock.id), port);\n }\n\n // ! Can't rely on ping because timers can be suspended\n // protected sendPing(port: SendPort, loop = IS_WORKER) {\n // let timeout: number;\n // const promise = new Promise<void>((resolve, reject) => {\n // this.pingResolves.set(port, resolve);\n // this.pushTask(this.createTask('ping', undefined), port);\n\n // timeout = ctx.setTimeout(() => {\n // reject();\n // }, PING_TIMEOUT);\n // });\n\n // promise.then(() => {\n // // this.log('got pong');\n\n // clearTimeout(timeout);\n // this.pingResolves.delete(port);\n\n // if(loop) {\n // this.sendPingWithTimeout(port);\n // }\n // }, () => {\n // this.pingResolves.delete(port);\n // this.detachPort(port);\n // });\n // }\n\n // protected sendPingWithTimeout(port: SendPort, timeout = PING_INTERVAL) {\n // ctx.setTimeout(() => {\n // if(!this.sendPorts.includes(port)) {\n // return;\n // }\n\n // this.sendPing(port);\n // }, timeout);\n // }\n\n public detachPort(port: ListenPort) {\n this.log.warn('disconnecting port');\n\n indexOfAndSplice(this.listenPorts, port);\n indexOfAndSplice(this.sendPorts, port as any);\n\n port.removeEventListener?.('message', this.onMessage as any);\n (port as MessagePort).close?.();\n\n this.onPortDisconnect?.(port as any);\n\n const heldLock = this.heldLocks.get(port as SendPort);\n heldLock?.resolve();\n\n const error = makeError('PORT_DISCONNECTED');\n for(const id in this.awaiting) {\n const task = this.awaiting[id];\n if(task.port === port) {\n task.reject(error);\n delete this.awaiting[id];\n }\n }\n }\n\n protected postMessage(port: SendPort | SendPort[], task: Task) {\n const ports = Array.isArray(port) ? port : (port ? [port] : this.sendPorts);\n ports.forEach((port) => {\n if(import.meta.env.MODE === 'test') {\n return;\n }\n\n port.postMessage(task, task.transfer as any);\n });\n }\n\n protected onMessage = (event: MessageEvent) => {\n const task: Task = event.data;\n // this.log('got message', task);\n\n const source: MessageEventSource = event.source || event.currentTarget as any; // can have no source\n\n // @ts-ignore\n this.processTaskMap[task.type](task, source, event);\n };\n\n protected async releasePending() {\n // return;\n\n if(/* !this.listenPorts.length || !this.sendPorts.length || */this.releasingPending) {\n return;\n }\n\n this.releasingPending = true;\n // const perf = performance.now();\n\n if(USE_BATCHING) {\n await Promise.resolve();\n }\n // await pause(0);\n\n this.debug && this.log.debug('releasing tasks, length:', this.pending.size/* , performance.now() - perf */);\n\n this.pending.forEach((portTasks, port) => {\n let tasks: Task[] = portTasks;\n if(USE_BATCHING) {\n let batchTask: BatchTask;\n tasks = [];\n portTasks.forEach((task) => {\n if(task.transfer) {\n batchTask = undefined;\n tasks.push(task);\n } else {\n if(!batchTask) {\n batchTask = this.createTask('batch', []);\n tasks.push(batchTask);\n }\n\n batchTask.payload.push(task);\n }\n });\n }\n\n const ports = port ? [port] : this.sendPorts;\n if(!ports.length) {\n return;\n }\n\n tasks.forEach((task) => {\n // if(USE_BATCHING && task.type === 'batch') {\n // this.log(`batching ${task.payload.length} tasks`);\n // }\n\n try {\n // if(IS_SERVICE_WORKER && !port) {\n // notifyAll(task);\n // } else {\n this.postMessage(ports, task);\n // }\n } catch(err) {\n this.log.error('postMessage error:', err, task, ports);\n }\n });\n\n this.pending.delete(port);\n });\n\n this.debug && this.log.debug('released tasks');\n\n this.releasingPending = false;\n }\n\n protected processResultTask = (task: ResultTask) => {\n const {taskId, result, error} = task.payload;\n const deferred = this.awaiting[taskId];\n if(!deferred) {\n return;\n }\n\n this.debug && this.log.debug('done', deferred.taskType, result, error);\n 'error' in task.payload ? deferred.reject(error) : deferred.resolve(result);\n delete this.awaiting[taskId];\n };\n\n protected processAckTask = (task: AckTask) => {\n const payload = task.payload;\n const deferred = this.awaiting[payload.taskId];\n if(!deferred) {\n return;\n }\n\n // * will finish the init promise with incoming result\n const previousResolve: (acked: AckedResult<any>) => void = deferred.resolve;\n // const previousReject = deferred.reject;\n\n // if(payload.cached) {\n // if('result' in payload) {\n // previousResolve({\n // cached: true,\n // result: payload.result\n // });\n // } else {\n // previousReject(payload.error);\n // }\n // } else {\n // const ret: AckedResult<any> = {\n // cached: false,\n // result: new Promise((resolve, reject) => {\n // deferred.resolve = resolve;\n // deferred.reject = reject;\n // })\n // };\n\n // previousResolve(ret);\n // }\n\n const ret: AckedResult<any> = {\n cached: payload.cached,\n result: payload.cached ? ('result' in payload ? Promise.resolve(payload.result) : Promise.reject(payload.error)) : new Promise((resolve, reject) => {\n deferred.resolve = resolve;\n deferred.reject = reject;\n })\n };\n\n previousResolve(ret);\n\n if(payload.cached) {\n delete this.awaiting[payload.taskId];\n }\n };\n\n protected processPingTask = (task: PingTask, source: MessageEventSource, event: MessageEvent) => {\n this.pushTask(this.createTask('pong', undefined), event.source);\n };\n\n protected processPongTask = (task: PongTask, source: MessageEventSource, event: MessageEvent) => {\n const pingResolve = this.pingResolves.get(source);\n if(pingResolve) {\n this.pingResolves.delete(source);\n pingResolve();\n }\n };\n\n protected processCloseTask = (task: CloseTask, source: MessageEventSource, event: MessageEvent) => {\n this.detachPort(source);\n };\n\n protected processBatchTask = (task: BatchTask, source: MessageEventSource, event: MessageEvent) => {\n if(!USE_BATCHING) {\n return;\n }\n\n const newEvent: MessageEvent = {data: event.data, source: event.source, currentTarget: event.currentTarget} as any;\n task.payload.forEach((task) => {\n // @ts-ignore\n newEvent.data = task;\n this.onMessage(newEvent);\n });\n };\n\n // * it's just an 'open' callback, DO NOT attach port from here\n // protected processOpenTask = (task: OpenTask, source: MessageEventSource, event: MessageEvent) => {\n // this.onPortConnect?.(source);\n // };\n\n protected processLockTask = (task: LockTask, source: MessageEventSource, event: MessageEvent) => {\n const id = task.payload;\n if(this.requestedLocks.has(id)) {\n return;\n }\n\n this.requestedLocks.set(id, source);\n navigator.locks.request(id, () => {\n this.processCloseTask(undefined, source, undefined);\n this.requestedLocks.delete(id);\n });\n };\n\n protected processInvokeTask = async(task: InvokeTask, source: MessageEventSource, event: MessageEvent) => {\n const id = task.id;\n const innerTask = task.payload;\n\n let resultTaskPayload: ResultTask['payload'];\n let resultTask: ResultTask, ackTask: AckTask;\n if(!innerTask.void) {\n resultTaskPayload = {taskId: id};\n resultTask = this.createTask('result', resultTaskPayload);\n }\n\n if(innerTask.withAck) {\n ackTask = this.createTask('ack', {\n taskId: id,\n cached: true\n });\n }\n\n let isPromise: boolean;\n try {\n const listeners = this.listeners[innerTask.type];\n if(!listeners?.size) {\n throw new Error('no listener');\n }\n\n const listener = listeners.values().next().value;\n\n // @ts-ignore\n let result = this.invokeListenerCallback(innerTask.type, listener, innerTask.payload, source, event);\n if(innerTask.void) {\n return;\n }\n\n isPromise = result instanceof Promise;\n\n if(ackTask) {\n const cached = !isPromise;\n ackTask.payload.cached = cached;\n if(cached) ackTask.payload.result = result;\n this.pushTask(ackTask, source);\n\n if(cached) {\n return;\n }\n }\n\n if(isPromise) {\n result = await result;\n }\n\n resultTaskPayload.result = result;\n } catch(error) {\n this.log.error('worker task error:', error, task);\n if(innerTask.void) {\n return;\n }\n\n if(ackTask && ackTask.payload.cached) {\n ackTask.payload.error = error;\n this.pushTask(ackTask, source);\n return;\n }\n\n resultTaskPayload.error = error;\n }\n\n this.pushTask(resultTask, source);\n };\n\n protected createTask<T extends Task['type'], K extends Task = Parameters<TaskMap[T]>[0]>(type: T, payload: K['payload'], transfer?: Transferable[]): K {\n return {\n type,\n payload,\n id: this.taskId++,\n transfer\n } as K;\n }\n\n protected createInvokeTask(type: string, payload: any, withAck?: boolean, _void?: boolean, transfer?: Transferable[]): InvokeTask {\n return this.createTask('invoke', {\n type,\n payload,\n withAck,\n void: _void\n }, transfer);\n }\n\n protected pushTask(task: Task, port?: SendPort) {\n let tasks = this.pending.get(port);\n if(!tasks) {\n this.pending.set(port, tasks = []);\n }\n\n tasks.push(task);\n this.releasePending();\n }\n\n public invokeVoid<T extends keyof Send>(type: T, payload: Parameters<Send[T]>[0], port?: SendPort, transfer?: Transferable[]) {\n const task = this.createInvokeTask(type as string, payload, undefined, true, transfer);\n this.pushTask(task, port);\n }\n\n public invoke<T extends keyof Send>(type: T, payload: Parameters<Send[T]>[0], withAck?: false, port?: SendPort, transfer?: Transferable[]): Promise<Awaited<ReturnType<Send[T]>>>;\n public invoke<T extends keyof Send>(type: T, payload: Parameters<Send[T]>[0], withAck?: true, port?: SendPort, transfer?: Transferable[]): Promise<AckedResult<Awaited<ReturnType<Send[T]>>>>;\n public invoke<T extends keyof Send>(type: T, payload: Parameters<Send[T]>[0], withAck?: boolean, port?: SendPort, transfer?: Transferable[]) {\n this.debug && this.log.debug('start', type, payload);\n\n let task: InvokeTask;\n const promise = new Promise<Awaited<ReturnType<Send[T]>>>((resolve, reject) => {\n task = this.createInvokeTask(type as string, payload, withAck, undefined, transfer);\n this.awaiting[task.id] = {resolve, reject, taskType: type as string, port};\n this.pushTask(task, port);\n });\n\n if(IS_WORKER) {\n promise.finally(() => {\n clearInterval(interval);\n });\n\n const interval = ctx.setInterval(() => {\n this.log.error('task still has no result', task, port);\n }, 60e3);\n } else if(false) {\n // let timedOut = false;\n const startTime = Date.now();\n promise.finally(() => {\n const elapsedTime = Date.now() - startTime;\n if(elapsedTime >= TIMEOUT) {\n this.log.error(`task was processing ${Date.now() - startTime}ms`, task.payload.payload, port);\n }/* else {\n clearTimeout(timeout);\n } */\n });\n\n const TIMEOUT = 10;\n // const timeout = ctx.setTimeout(() => {\n // timedOut = true;\n // // this.log.error(`task is processing more than ${TIMEOUT} milliseconds`, task, port);\n // }, TIMEOUT);\n }\n\n return promise;\n }\n\n public invokeExceptSource<T extends keyof Send>(type: T, payload: Parameters<Send[T]>[0], source?: SendPort) {\n const ports = this.sendPorts.slice();\n indexOfAndSplice(ports, source);\n\n ports.forEach((target) => {\n this.invokeVoid(type, payload, target);\n });\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport {CryptoMethods} from './crypto_methods';\nimport SuperMessagePort from '../mtproto/superMessagePort';\nimport {Awaited} from '../../types';\nimport {MOUNT_CLASS_TO} from '../../config/debug';\nimport {IS_WORKER} from '../../helpers/context';\n\ntype CryptoEvent = {\n invoke: <T extends keyof CryptoMethods>(payload: {method: T, args: Parameters<CryptoMethods[T]>}) => ReturnType<CryptoMethods[T]>,\n port: (payload: void, source: MessageEventSource, event: MessageEvent) => void,\n terminate: () => void\n};\n\nexport class CryptoMessagePort<Master extends boolean = false> extends SuperMessagePort<CryptoEvent, CryptoEvent, Master> {\n private lastIndex: number;\n\n constructor() {\n super('CRYPTO');\n this.lastIndex = -1;\n }\n\n public invokeCryptoNew<T extends keyof CryptoMethods>({method, args, transfer}: {\n method: T,\n args: Parameters<CryptoMethods[T]>,\n transfer?: Transferable[]\n }): Promise<Awaited<ReturnType<CryptoMethods[T]>>> {\n const payload = {method, args};\n const listeners = this.listeners['invoke'];\n if(listeners?.size) { // already in worker\n // try {\n let result: any = listeners.values().next().value.callback(payload);\n if(!IS_WORKER && !(result instanceof Promise)) {\n result = Promise.resolve(result);\n }\n\n return result;\n // } catch(err) {\n // return Promise.reject(err);\n // }\n }\n\n const sendPortIndex = method === 'aes-encrypt' || method === 'aes-decrypt' ?\n this.lastIndex = (this.lastIndex + 1) % this.sendPorts.length :\n 0;\n // @ts-ignore\n return this.invoke('invoke', payload, undefined, this.sendPorts[sendPortIndex], transfer);\n }\n\n public invokeCrypto<T extends keyof CryptoMethods>(method: T, ...args: Parameters<CryptoMethods[T]>): Promise<Awaited<ReturnType<CryptoMethods[T]>>> {\n return this.invokeCryptoNew({method, args});\n }\n}\n\nconst cryptoMessagePort = new CryptoMessagePort<false>();\nMOUNT_CLASS_TO && (MOUNT_CLASS_TO.cryptoMessagePort = cryptoMessagePort);\nexport default cryptoMessagePort;\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport cryptoWorker from '../../crypto/cryptoMessagePort';\nimport bigInt from 'big-integer';\n\nfunction readBigIntFromBytesBE(bytes: Uint8Array) {\n const length = bytes.length;\n const bits = length * 8;\n let value = bigInt(bytes[0]).and(0x7F).shiftLeft(bits - 8);\n for(let i = 1; i < length; ++i) {\n const _bits = bits - (i + 1) * 8;\n const b = bigInt(bytes[i]);\n value = value.or(_bits ? b.shiftLeft(_bits) : b);\n }\n\n return value;\n}\n\n// Emojis were taken from tdlib\nconst emojis = [\n '1f609', '1f60d', '1f61b', '1f62d', '1f631', '1f621', '1f60e',\n '1f634', '1f635', '1f608', '1f62c', '1f607', '1f60f', '1f46e',\n '1f477', '1f482', '1f476', '1f468', '1f469', '1f474', '1f475',\n '1f63b', '1f63d', '1f640', '1f47a', '1f648', '1f649', '1f64a',\n '1f480', '1f47d', '1f4a9', '1f525', '1f4a5', '1f4a4', '1f442',\n '1f440', '1f443', '1f445', '1f444', '1f44d', '1f44e', '1f44c',\n '1f44a', '270c', '270b', '1f450', '1f446', '1f447', '1f449',\n '1f448', '1f64f', '1f44f', '1f4aa', '1f6b6', '1f3c3', '1f483',\n '1f46b', '1f46a', '1f46c', '1f46d', '1f485', '1f3a9', '1f451',\n '1f452', '1f45f', '1f45e', '1f460', '1f455', '1f457', '1f456',\n '1f459', '1f45c', '1f453', '1f380', '1f484', '1f49b', '1f499',\n '1f49c', '1f49a', '1f48d', '1f48e', '1f436', '1f43a', '1f431',\n '1f42d', '1f439', '1f430', '1f438', '1f42f', '1f428', '1f43b',\n '1f437', '1f42e', '1f417', '1f434', '1f411', '1f418', '1f43c',\n '1f427', '1f425', '1f414', '1f40d', '1f422', '1f41b', '1f41d',\n '1f41c', '1f41e', '1f40c', '1f419', '1f41a', '1f41f', '1f42c',\n '1f40b', '1f410', '1f40a', '1f42b', '1f340', '1f339', '1f33b',\n '1f341', '1f33e', '1f344', '1f335', '1f334', '1f333', '1f31e',\n '1f31a', '1f319', '1f30e', '1f30b', '26a1', '2614', '2744', '26c4',\n '1f300', '1f308', '1f30a', '1f393', '1f386', '1f383', '1f47b',\n '1f385', '1f384', '1f381', '1f388', '1f52e', '1f3a5', '1f4f7',\n '1f4bf', '1f4bb', '260e', '1f4e1', '1f4fa', '1f4fb', '1f509',\n '1f514', '23f3', '23f0', '231a', '1f512', '1f511', '1f50e',\n '1f4a1', '1f526', '1f50c', '1f50b', '1f6bf', '1f6bd', '1f527',\n '1f528', '1f6aa', '1f6ac', '1f4a3', '1f52b', '1f52a', '1f48a',\n '1f489', '1f4b0', '1f4b5', '1f4b3', '2709', '1f4eb', '1f4e6',\n '1f4c5', '1f4c1', '2702', '1f4cc', '1f4ce', '2712', '270f',\n '1f4d0', '1f4da', '1f52c', '1f52d', '1f3a8', '1f3ac', '1f3a4',\n '1f3a7', '1f3b5', '1f3b9', '1f3bb', '1f3ba', '1f3b8', '1f47e',\n '1f3ae', '1f0cf', '1f3b2', '1f3af', '1f3c8', '1f3c0', '26bd',\n '26be', '1f3be', '1f3b1', '1f3c9', '1f3b3', '1f3c1', '1f3c7',\n '1f3c6', '1f3ca', '1f3c4', '2615', '1f37c', '1f37a', '1f377',\n '1f374', '1f355', '1f354', '1f35f', '1f357', '1f371', '1f35a',\n '1f35c', '1f361', '1f373', '1f35e', '1f369', '1f366', '1f382',\n '1f370', '1f36a', '1f36b', '1f36d', '1f36f', '1f34e', '1f34f',\n '1f34a', '1f34b', '1f352', '1f347', '1f349', '1f353', '1f351',\n '1f34c', '1f350', '1f34d', '1f346', '1f345', '1f33d', '1f3e1',\n '1f3e5', '1f3e6', '26ea', '1f3f0', '26fa', '1f3ed', '1f5fb',\n '1f5fd', '1f3a0', '1f3a1', '26f2', '1f3a2', '1f6a2', '1f6a4',\n '2693', '1f680', '2708', '1f681', '1f682', '1f68b', '1f68e',\n '1f68c', '1f699', '1f697', '1f695', '1f69b', '1f6a8', '1f694',\n '1f692', '1f691', '1f6b2', '1f6a0', '1f69c', '1f6a6', '26a0',\n '1f6a7', '26fd', '1f3b0', '1f5ff', '1f3aa', '1f3ad',\n '1f1ef-1f1f5', '1f1f0-1f1f7', '1f1e9-1f1ea', '1f1e8-1f1f3',\n '1f1fa-1f1f8', '1f1eb-1f1f7', '1f1ea-1f1f8', '1f1ee-1f1f9',\n '1f1f7-1f1fa', '1f1ec-1f1e7', '0031-20e3', '0032-20e3', '0033-20e3',\n '0034-20e3', '0035-20e3', '0036-20e3', '0037-20e3', '0038-20e3', '0039-20e3',\n '0030-20e3', '1f51f', '2757', '2753', '2665', '2666', '1f4af', '1f517',\n '1f531', '1f534', '1f535', '1f536', '1f537'\n];\n\nexport default async function getEmojisFingerprint(key: Uint8Array, g_a: Uint8Array) {\n const arr = key.concat(g_a);\n const hash = await cryptoWorker.invokeCrypto('sha256', arr);\n\n const result: [string, string, string, string] = [] as any;\n const emojisLength = emojis.length;\n\n const kPartSize = 8;\n for(let partOffset = 0; partOffset != hash.length; partOffset += kPartSize) {\n const bytes = hash.slice(partOffset, partOffset + kPartSize);\n const value = readBigIntFromBytesBE(bytes);\n const index = value.mod(emojisLength).toJSNumber();\n\n // const emoji = emojiFromCodePoints(emojis[index]);\n const codePoints = emojis[index];\n result.push(codePoints);\n }\n\n return result;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport {bigIntFromBytes, bigIntToSigned} from '../../helpers/bigInt/bigIntConversion';\nimport cryptoWorker from './cryptoMessagePort';\n\nexport default async function computeDhKey(g_b: Uint8Array, a: Uint8Array, p: Uint8Array) {\n const key = await cryptoWorker.invokeCrypto('mod-pow', g_b, a, p);\n const keySha1Hashed = await cryptoWorker.invokeCrypto('sha1', key);\n const key_fingerprint = keySha1Hashed.slice(-8).reverse();\n const key_fingerprint_long = bigIntToSigned(bigIntFromBytes(key_fingerprint)).toString(10);\n\n return {key, key_fingerprint: key_fingerprint_long};\n}\n","export default function randomize<T extends ArrayBufferView>(arr: T) {\n if(crypto && 'getRandomValues' in crypto) {\n crypto.getRandomValues(arr);\n } else {\n throw new Error('NO_SECURE_RANDOM');\n }\n\n return arr;\n}\n","import randomize from '../array/randomize';\nimport bufferConcats from './bufferConcats';\n\nexport default function addPadding<T extends number[] | ArrayBuffer | Uint8Array>(\n bytes: T,\n blockSize: number = 16,\n zeroes?: boolean,\n blockSizeAsTotalLength = false,\n prepend = false\n): T {\n const len = (bytes as ArrayBuffer).byteLength || (bytes as Uint8Array).length;\n const needPadding = blockSizeAsTotalLength ? blockSize - len : blockSize - (len % blockSize);\n if(needPadding > 0 && needPadding < blockSize) {\n // //console.log('addPadding()', len, blockSize, needPadding);\n const padding = new Uint8Array(needPadding);\n if(zeroes) {\n for(let i = 0; i < needPadding; ++i) {\n padding[i] = 0;\n }\n } else {\n randomize(padding);\n }\n\n if(bytes instanceof ArrayBuffer) {\n return (prepend ? bufferConcats(padding, bytes) : bufferConcats(bytes, padding)).buffer as T;\n } else if(bytes instanceof Uint8Array) {\n return (prepend ? bufferConcats(padding, bytes) : bufferConcats(bytes, padding)) as T;\n } else {\n // @ts-ignore\n return (prepend ? [...padding].concat(bytes) : bytes.concat([...padding])) as T;\n }\n }\n\n return bytes;\n}\n","export default function bytesFromHex(hexString: string) {\n const len = hexString.length;\n const bytes = new Uint8Array(Math.ceil(len / 2));\n let start = 0;\n\n if(len % 2) { // read 0x581 as 0x0581\n bytes[start++] = parseInt(hexString.charAt(0), 16);\n }\n\n for(let i = start; i < len; i += 2) {\n bytes[start++] = parseInt(hexString.substr(i, 2), 16);\n }\n\n return bytes;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport type CallInstance from '../calls/callInstance';\nimport type {MessagesDhConfig} from '../../layer';\nimport bigInt from 'big-integer';\nimport randomize from '../../helpers/array/randomize';\nimport {bigIntFromBytes} from '../../helpers/bigInt/bigIntConversion';\nimport addPadding from '../../helpers/bytes/addPadding';\nimport bytesFromHex from '../../helpers/bytes/bytesFromHex';\nimport cryptoWorker from './cryptoMessagePort';\n\nexport default async function generateDh(dhConfig: MessagesDhConfig.messagesDhConfig) {\n const {p, g} = dhConfig;\n\n const generateA = (p: Uint8Array) => {\n for(;;) {\n const a = randomize(new Uint8Array(p.length));\n // const a = new Uint8Array(4).randomize();\n\n const aBigInt = bigIntFromBytes(a); // str2bigInt(bytesToHex(a), 16);\n if(!aBigInt.greater(bigInt.one)) {\n continue;\n }\n\n const pBigInt = bigIntFromBytes(p); // str2bigInt(bytesToHex(p), 16);\n if(!aBigInt.lesser(pBigInt.subtract(bigInt.one))) {\n continue;\n }\n\n return a;\n }\n };\n\n const a = generateA(p);\n // const a = new Uint8Array([0]);\n\n const gBytes = bytesFromHex(g.toString(16));\n const g_a = addPadding(await cryptoWorker.invokeCrypto('mod-pow', gBytes, a, p), 256, true, true, true);\n const g_a_hash = await cryptoWorker.invokeCrypto('sha256', g_a);\n\n const dh: CallInstance['dh'] = {\n a: a,\n g_a: g_a,\n g_a_hash: g_a_hash,\n p\n };\n\n return dh;\n}\n","export default function bytesXor(bytes1: Uint8Array, bytes2: Uint8Array) {\n const len = bytes1.length;\n const bytes = new Uint8Array(len);\n\n for(let i = 0; i < len; ++i) {\n bytes[i] = bytes1[i] ^ bytes2[i];\n }\n\n return bytes;\n}\n","export default function convertToUint8Array(bytes: Uint8Array | ArrayBuffer | number[] | string): Uint8Array {\n if(bytes instanceof Uint8Array) {\n return bytes;\n } else if(typeof(bytes) === 'string') {\n return new TextEncoder().encode(bytes);\n }\n\n return new Uint8Array(bytes);\n}\n","export default function bytesToHex(bytes: ArrayLike<number>) {\n const length = bytes.length;\n const arr: string[] = new Array(length);\n for(let i = 0; i < length; ++i) {\n arr[i] = (bytes[i] < 16 ? '0' : '') + (bytes[i] || 0).toString(16);\n }\n return arr.join('');\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport cryptoWorker from './cryptoMessagePort';\nimport {AccountPassword, InputCheckPasswordSRP, PasswordKdfAlgo} from '../../layer';\nimport addPadding from '../../helpers/bytes/addPadding';\nimport bufferConcats from '../../helpers/bytes/bufferConcats';\nimport bytesXor from '../../helpers/bytes/bytesXor';\nimport convertToUint8Array from '../../helpers/bytes/convertToUint8Array';\nimport bigInt from 'big-integer';\nimport {bigIntFromBytes, bigIntToBytes} from '../../helpers/bigInt/bigIntConversion';\nimport bytesToHex from '../../helpers/bytes/bytesToHex';\n\nexport async function makePasswordHash(password: string, client_salt: Uint8Array, server_salt: Uint8Array) {\n // ! look into crypto_methods.test.ts\n let buffer = await cryptoWorker.invokeCrypto('sha256', bufferConcats(client_salt, new TextEncoder().encode(password), client_salt));\n buffer = bufferConcats(server_salt, buffer, server_salt);\n buffer = await cryptoWorker.invokeCrypto('sha256', buffer);\n\n let hash = await cryptoWorker.invokeCrypto('pbkdf2', new Uint8Array(buffer), client_salt, 100000);\n hash = bufferConcats(server_salt, hash, server_salt);\n\n buffer = await cryptoWorker.invokeCrypto('sha256', hash);\n\n return buffer;\n}\n\nexport default async function computeSRP(password: string, state: AccountPassword, isNew: boolean) {\n const algo = (isNew ? state.new_algo : state.current_algo) as PasswordKdfAlgo.passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;\n\n const p = bigIntFromBytes(algo.p);\n const g = bigInt(algo.g);\n\n /* if(B.compareTo(BigInteger.ZERO) < 0) {\n console.error('srp_B < 0')\n }\n\n if(B.compareTo(p) <= 0) {\n console.error('srp_B <= p');\n } */\n\n /* let check_prime_and_good = (bytes: any, g: number) => {\n let good_prime = 'c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b';\n\n if(bytesToHex(bytes) === good_prime && [3, 4, 5, 7].indexOf(g) !== -1) {\n return true;\n }\n\n // TO-DO check_prime_and_good_check\n }; */\n\n // check_prime_and_good(algo.p, g);\n\n const pw_hash = await makePasswordHash(password, algo.salt1, algo.salt2);\n const x = bigInt(bytesToHex(pw_hash), 16);\n\n const padArray = function(arr: number[] | Uint8Array, len: number) {\n if(!(arr instanceof Uint8Array)) {\n arr = convertToUint8Array(arr);\n }\n\n return addPadding(arr, len, true, true, true);\n };\n\n const v = g.modPow(x, p);\n\n const flipper = (arr: Uint8Array | number[]) => {\n const out = new Uint8Array(arr.length);\n for(let i = 0; i < arr.length; i += 4) {\n out[i] = arr[i + 3];\n out[i + 1] = arr[i + 2];\n out[i + 2] = arr[i + 1];\n out[i + 3] = arr[i];\n }\n\n return out;\n };\n\n // * https://core.telegram.org/api/srp#setting-a-new-2fa-password\n if(isNew) {\n const bytes = bigIntToBytes(v);\n return padArray(/* (isBigEndian ? bytes.reverse() : bytes) */bytes, 256);\n }\n\n const B = bigIntFromBytes(state.srp_B);\n\n const pForHash = padArray(bigIntToBytes(p), 256);\n const gForHash = padArray(bigIntToBytes(g), 256);\n const b_for_hash = padArray(bigIntToBytes(B), 256);\n\n const kHash = await cryptoWorker.invokeCrypto('sha256', bufferConcats(pForHash, gForHash));\n const k = bigIntFromBytes(kHash);\n\n const k_v = k.multiply(v).mod(p);\n\n const is_good_mod_exp_first = (modexp: bigInt.BigInteger, prime: bigInt.BigInteger) => {\n const diff = prime.subtract(modexp);\n const min_diff_bits_count = 2048 - 64;\n const max_mod_exp_size = 256;\n if(diff.isNegative() ||\n diff.bitLength().toJSNumber() < min_diff_bits_count ||\n modexp.bitLength().toJSNumber() < min_diff_bits_count ||\n Math.floor((modexp.bitLength().toJSNumber() + 7) / 8) > max_mod_exp_size)\n return false;\n return true;\n };\n\n const generate_and_check_random = async() => {\n while(true) {\n const a = bigIntFromBytes(flipper(state.secure_random));\n // const a = str2bigInt('9153faef8f2bb6da91f6e5bc96bc00860a530a572a0f45aac0842b4602d711f8bda8d59fb53705e4ae3e31a3c4f0681955425f224297b8e9efd898fec22046debb7ba8a0bcf2be1ada7b100424ea318fdcef6ccfe6d7ab7d978c0eb76a807d4ab200eb767a22de0d828bc53f42c5a35c2df6e6ceeef9a3487aae8e9ef2271f2f6742e83b8211161fb1a0e037491ab2c2c73ad63c8bd1d739de1b523fe8d461270cedcf240de8da75f31be4933576532955041dc5770c18d3e75d0b357df9da4a5c8726d4fced87d15752400883dc57fa1937ac17608c5446c4774dcd123676d683ce3a1ab9f7e020ca52faafc99969822717c8e07ea383d5fb1a007ba0d170cb', 16);\n\n const A = g.modPow(a, p);\n if(is_good_mod_exp_first(A, p)) {\n const a_for_hash = bigIntToBytes(A);\n\n const s = await cryptoWorker.invokeCrypto('sha256', bufferConcats(a_for_hash, b_for_hash));\n // const u = bigInt(s.hex, 16);\n const u = bigIntFromBytes(s);\n if(!u.isZero() && !u.isNegative())\n return {a, a_for_hash, u};\n }\n }\n }\n\n const {a, a_for_hash, u} = await generate_and_check_random();\n\n let g_b: bigInt.BigInteger;\n if(!B.greater(k_v)) {\n g_b = B.add(p);\n } else g_b = B;\n g_b = g_b.subtract(k_v).mod(p);\n\n const ux = u.multiply(x);\n const a_ux = a.add(ux);\n const S = g_b.modPow(a_ux, p);\n\n const K = await cryptoWorker.invokeCrypto('sha256', padArray(bigIntToBytes(S), 256));\n\n let h1 = await cryptoWorker.invokeCrypto('sha256', pForHash);\n const h2 = await cryptoWorker.invokeCrypto('sha256', gForHash);\n h1 = bytesXor(h1, h2);\n\n const buff = bufferConcats(\n h1,\n await cryptoWorker.invokeCrypto('sha256', algo.salt1),\n await cryptoWorker.invokeCrypto('sha256', algo.salt2),\n a_for_hash,\n b_for_hash,\n K\n );\n\n const M1 = await cryptoWorker.invokeCrypto('sha256', buff);\n\n const out: InputCheckPasswordSRP.inputCheckPasswordSRP = {\n _: 'inputCheckPasswordSRP',\n srp_id: state.srp_id,\n A: new Uint8Array(a_for_hash),\n M1\n };\n\n return out;\n}\n","var S = new Uint8Array(256);\nvar Si = new Uint8Array(256);\nvar T1 = new Uint32Array(256);\nvar T2 = new Uint32Array(256);\nvar T3 = new Uint32Array(256);\nvar T4 = new Uint32Array(256);\nvar T5 = new Uint32Array(256);\nvar T6 = new Uint32Array(256);\nvar T7 = new Uint32Array(256);\nvar T8 = new Uint32Array(256);\nfunction computeTables() {\n var d = new Uint8Array(256);\n var t = new Uint8Array(256);\n var x2;\n var x4;\n var x8;\n var s;\n var tEnc;\n var tDec;\n var x = 0;\n var xInv = 0;\n // Compute double and third tables\n for (var i = 0; i < 256; i++) {\n d[i] = i << 1 ^ (i >> 7) * 283;\n t[d[i] ^ i] = i;\n }\n for (; !S[x]; x ^= x2 || 1) {\n // Compute sbox\n s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n s = s >> 8 ^ s & 255 ^ 99;\n S[x] = s;\n Si[s] = x;\n // Compute MixColumns\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n tEnc = d[s] * 0x101 ^ s * 0x1010100;\n T1[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T2[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T3[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T4[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T5[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T6[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T7[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T8[s] = tDec = tDec << 24 ^ tDec >>> 8;\n xInv = t[xInv] || 1;\n }\n}\n\n/**\n * Gets a uint32 from string in big-endian order order\n */\nfunction s2i(str, pos) {\n return (str.charCodeAt(pos) << 24\n ^ str.charCodeAt(pos + 1) << 16\n ^ str.charCodeAt(pos + 2) << 8\n ^ str.charCodeAt(pos + 3));\n}\n\n/* eslint-disable import/prefer-default-export */\n/**\n * Helper function for transforming string key to Uint32Array\n */\nfunction getWords(key) {\n if (key instanceof Uint32Array) {\n return key;\n }\n if (typeof key === 'string') {\n if (key.length % 4 !== 0)\n for (var i = key.length % 4; i <= 4; i++)\n key += '\\0x00';\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4)\n buf[i / 4] = s2i(key, i);\n return buf;\n }\n if (key instanceof Uint8Array) {\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4) {\n buf[i / 4] = (key[i] << 24\n ^ key[i + 1] << 16\n ^ key[i + 2] << 8\n ^ key[i + 3]);\n }\n return buf;\n }\n throw new Error('Unable to create 32-bit words');\n}\nfunction xor(left, right, to) {\n if (to === void 0) { to = left; }\n for (var i = 0; i < left.length; i++)\n to[i] = left[i] ^ right[i];\n}\n\ncomputeTables();\n/**\n * Low-level AES Cipher\n */\nvar AES = /** @class */ (function () {\n function AES(_key) {\n var key = getWords(_key);\n if (key.length !== 4 && key.length !== 6 && key.length !== 8) {\n throw new Error('Invalid key size');\n }\n this.encKey = new Uint32Array(4 * key.length + 28);\n this.decKey = new Uint32Array(4 * key.length + 28);\n this.encKey.set(key);\n var rcon = 1;\n var i = key.length;\n var tmp;\n // schedule encryption keys\n for (; i < 4 * key.length + 28; i++) {\n tmp = this.encKey[i - 1];\n // apply sbox\n if (i % key.length === 0 || (key.length === 8 && i % key.length === 4)) {\n tmp = S[tmp >>> 24] << 24 ^ S[(tmp >> 16) & 255] << 16 ^ S[(tmp >> 8) & 255] << 8 ^ S[tmp & 255];\n // shift rows and add rcon\n if (i % key.length === 0) {\n tmp = tmp << 8 ^ tmp >>> 24 ^ (rcon << 24);\n rcon = rcon << 1 ^ (rcon >> 7) * 283;\n }\n }\n this.encKey[i] = this.encKey[i - key.length] ^ tmp;\n }\n // schedule decryption keys\n for (var j = 0; i; j++, i--) {\n tmp = this.encKey[j & 3 ? i : i - 4];\n if (i <= 4 || j < 4) {\n this.decKey[j] = tmp;\n }\n else {\n this.decKey[j] = (T5[S[tmp >>> 24]]\n ^ T6[S[(tmp >> 16) & 255]]\n ^ T7[S[(tmp >> 8) & 255]]\n ^ T8[S[tmp & 255]]);\n }\n }\n }\n AES.prototype.encrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.encKey[0];\n var b = message[1] ^ this.encKey[1];\n var c = message[2] ^ this.encKey[2];\n var d = message[3] ^ this.encKey[3];\n var rounds = this.encKey.length / 4 - 2;\n var k = 4;\n var a2;\n var b2;\n var c2;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T1[a >>> 24] ^ T2[(b >> 16) & 255] ^ T3[(c >> 8) & 255] ^ T4[d & 255] ^ this.encKey[k];\n b2 = T1[b >>> 24] ^ T2[(c >> 16) & 255] ^ T3[(d >> 8) & 255] ^ T4[a & 255] ^ this.encKey[k + 1];\n c2 = T1[c >>> 24] ^ T2[(d >> 16) & 255] ^ T3[(a >> 8) & 255] ^ T4[b & 255] ^ this.encKey[k + 2];\n d = T1[d >>> 24] ^ T2[(a >> 16) & 255] ^ T3[(b >> 8) & 255] ^ T4[c & 255] ^ this.encKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n // console.log(a, b, c, d);\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[i] = (S[a >>> 24] << 24\n ^ S[(b >> 16) & 255] << 16\n ^ S[(c >> 8) & 255] << 8\n ^ S[d & 255]\n ^ this.encKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n AES.prototype.decrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.decKey[0];\n var b = message[3] ^ this.decKey[1];\n var c = message[2] ^ this.decKey[2];\n var d = message[1] ^ this.decKey[3];\n var rounds = this.decKey.length / 4 - 2;\n var a2;\n var b2;\n var c2;\n var k = 4;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T5[a >>> 24] ^ T6[(b >> 16) & 255] ^ T7[(c >> 8) & 255] ^ T8[d & 255] ^ this.decKey[k];\n b2 = T5[b >>> 24] ^ T6[(c >> 16) & 255] ^ T7[(d >> 8) & 255] ^ T8[a & 255] ^ this.decKey[k + 1];\n c2 = T5[c >>> 24] ^ T6[(d >> 16) & 255] ^ T7[(a >> 8) & 255] ^ T8[b & 255] ^ this.decKey[k + 2];\n d = T5[d >>> 24] ^ T6[(a >> 16) & 255] ^ T7[(b >> 8) & 255] ^ T8[c & 255] ^ this.decKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[3 & -i] = (Si[a >>> 24] << 24\n ^ Si[(b >> 16) & 255] << 16\n ^ Si[(c >> 8) & 255] << 8\n ^ Si[d & 255]\n ^ this.decKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n return AES;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE = /** @class */ (function () {\n function AES_IGE(key, iv, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.key = getWords(key);\n this.iv = getWords(iv);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var prevX = this.iv.subarray(this.blockSize, this.iv.length);\n var prevY = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = text.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.encrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n cipherText[j] = y[k];\n }\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n var cipherText = getWords(message);\n var text = buf || new Uint32Array(cipherText.length);\n var prevY = this.iv.subarray(this.blockSize, this.iv.length);\n var prevX = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = cipherText.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.decrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n text[j] = y[k];\n }\n return text;\n };\n return AES_IGE;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE$1 = /** @class */ (function () {\n function AES_IGE(key, counter, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.offset = 0;\n this.key = getWords(key);\n this.counter = getWords(counter);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n if (this.counter.length !== 4) {\n throw new Error('AES-CTR mode counter must be 16 bytes length');\n }\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var offset = this.offset;\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = this.cipher.encrypt(this.counter);\n for (var j = i, k = offset; j < text.length && k < this.blockSize; j++, k++)\n cipherText[j] = x[k] ^ text[j];\n if (text.length - i >= this.blockSize)\n this.incrementCounter();\n if (offset) {\n i -= offset;\n offset = 0;\n }\n }\n this.offset = (this.offset + (text.length % 4)) % 4;\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n return this.encrypt(message, buf);\n };\n AES_IGE.prototype.incrementCounter = function () {\n // increment counter\n for (var carry = this.counter.length - 1; carry >= 0; carry--) {\n if (++this.counter[carry] < 0xFFFFFFFF)\n break; // If overflowing, it'll be 0 and we'll have to continue propagating the carry\n }\n };\n return AES_IGE;\n}());\n\nexport default AES;\nexport { AES_IGE$1 as CTR, AES_IGE as IGE };\n","export default function bytesFromWordss(input: Uint32Array) {\n const o = new Uint8Array(input.byteLength);\n for(let i = 0, length = input.length * 4; i < length; ++i) {\n o[i] = ((input[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff);\n }\n\n return o;\n}\n","import convertToUint8Array from './convertToUint8Array';\n\nexport default function bytesToWordss(input: Parameters<typeof convertToUint8Array>[0]) {\n const bytes = convertToUint8Array(input);\n\n const words: number[] = [];\n for(let i = 0, len = bytes.length; i < len; ++i) {\n words[i >>> 2] |= bytes[i] << (24 - (i % 4) * 8);\n }\n\n return new Uint32Array(words);\n}\n","import {IGE} from '@cryptography/aes';\nimport addPadding from '../../../helpers/bytes/addPadding';\nimport bytesFromWordss from '../../../helpers/bytes/bytesFromWordss';\nimport bytesToWordss from '../../../helpers/bytes/bytesToWordss';\n\nexport default function aesSync(bytes: Uint8Array, keyBytes: Uint8Array, ivBytes: Uint8Array, encrypt = true) {\n // console.log(dT(), 'AES start', bytes, keyBytes, ivBytes);\n\n const cipher = new IGE(bytesToWordss(keyBytes), bytesToWordss(ivBytes));\n const performedBytes = cipher[encrypt ? 'encrypt' : 'decrypt'](bytesToWordss(bytes));\n // console.log(dT(), 'AES finish');\n\n return bytesFromWordss(performedBytes);\n}\n\nexport function aesEncryptSync(bytes: Uint8Array, keyBytes: Uint8Array, ivBytes: Uint8Array) {\n return aesSync(addPadding(bytes), keyBytes, ivBytes, true);\n}\n\nexport function aesDecryptSync(bytes: Uint8Array, keyBytes: Uint8Array, ivBytes: Uint8Array) {\n return aesSync(bytes, keyBytes, ivBytes, false);\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nconst arrays = {\n 8: new Uint8Array(1),\n 16: new Uint16Array(1),\n 32: new Uint32Array(1)\n};\nexport function nextRandomUint(bits: 8 | 16 | 32) {\n const array = arrays[bits];\n crypto.getRandomValues(array);\n return array[0];\n}\n\nexport function randomLong() {\n return '' + nextRandomUint(32) + nextRandomUint(32) % 0xFFFFFF;\n}\n","import bigInt from 'big-integer';\nimport {nextRandomUint} from '../random';\n\nexport default function bigIntRandom(min: bigInt.BigNumber, max: bigInt.BigNumber) {\n return bigInt.randBetween(min, max, () => {\n return nextRandomUint(32) / 0xFFFFFFFF;\n /* const bits = 32;\n const randomBytes = new Uint8Array(bits / 8);\n crypto.getRandomValues(randomBytes);\n const r = bigIntFromBytes(randomBytes).mod(bigInt(2).pow(bits));\n return r.toJSNumber(); */\n });\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n// Thanks to https://xn--2-umb.com/09/12/brent-pollard-rho-factorisation/\n\nimport bigInt from 'big-integer';\nimport {bigIntFromBytes, bigIntToBytes} from '../../../../helpers/bigInt/bigIntConversion';\nimport bigIntRandom from '../../../../helpers/bigInt/bigIntRandom';\n\n// let test = 0;\nfunction BrentPollardFactor(n: bigInt.BigInteger) {\n const two = bigInt[2];\n if(n.remainder(two).isZero()) {\n return two;\n }\n\n const m = bigInt(1000);\n let a: bigInt.BigInteger,\n x: bigInt.BigInteger,\n y: bigInt.BigInteger,\n ys: bigInt.BigInteger,\n r: bigInt.BigInteger,\n q: bigInt.BigInteger,\n g: bigInt.BigInteger;\n do\n a = bigIntRandom(bigInt.one, n.minus(1));\n while(a.isZero() || a.eq(n.minus(two)));\n y = bigIntRandom(bigInt.one, n.minus(1));\n r = bigInt.one;\n q = bigInt.one;\n\n // if(!test++) {\n // a = bigInt(3);\n // y = bigInt(3);\n // }\n\n const bigIntUint64 = bigInt('FFFFFFFFFFFFFFFF', 16);\n const bigIntUint64MinusPqPlusOne = bigIntUint64.minus(n).plus(1);\n\n const performY = (y: bigInt.BigInteger) => {\n y = y.pow(two).mod(n);\n y = y.add(a);\n if(y.lesser(a)) { // it slows down the script\n y = y.add(bigIntUint64MinusPqPlusOne);\n }\n y = y.mod(n);\n return y;\n };\n\n do {\n x = y;\n for(let i = 0; bigInt(i).lesser(r); ++i) {\n y = performY(y);\n }\n\n let k = bigInt.zero;\n do {\n ys = y;\n const condition = bigInt.min(m, r.minus(k));\n for(let i = 0; bigInt(i).lesser(condition); ++i) {\n y = performY(y);\n q = q.multiply(x.greater(y) ? x.minus(y) : y.minus(x)).mod(n);\n }\n g = bigInt.gcd(q, n);\n k = k.add(m);\n } while(k.lesser(r) && g.eq(bigInt.one));\n\n r = r.shiftLeft(bigInt.one);\n } while(g.eq(bigInt.one));\n\n if(g.eq(n)) {\n do {\n ys = performY(ys);\n g = bigInt.gcd(x.minus(ys).abs(), n);\n } while(g.eq(bigInt.one));\n }\n\n return g;\n}\n\nfunction primeFactors(pqBytes: Uint8Array | number[]) {\n const n = bigIntFromBytes(pqBytes);\n\n const factors: bigInt.BigInteger[] = [];\n const primes: bigInt.BigInteger[] = [];\n\n let factor = BrentPollardFactor(n);\n factors.push(n.divide(factor));\n factors.push(factor);\n\n // return [factor];\n\n do {\n const m = factors.pop();\n\n if(m.eq(bigInt.one))\n continue;\n\n if(m.isPrime(true)) {\n primes.push(m);\n\n // Remove the prime from the other factors\n for(let i = 0; i < factors.length; ++i) {\n let k = factors[i];\n if(k.mod(m).isZero()) {\n do\n k = k.divide(m);\n while(k.mod(m).isZero());\n factors[i] = k;\n }\n }\n } else {\n // factor = m.lesser(100) ? bigInt(PollardRho(m.toJSNumber())) : this.brentPollardFactor(m);\n factor = BrentPollardFactor(m);\n factors.push(m.divide(factor));\n factors.push(factor);\n }\n } while(factors.length);\n\n return primes;\n}\n\nexport default function factorizeBrentPollardPQ(pqBytes: Uint8Array | number[]): [Uint8Array, Uint8Array] {\n let factors = primeFactors(pqBytes);\n factors.sort((a, b) => a.compare(b));\n if(factors.length > 2) {\n factors = [\n factors.splice(factors.length - 2, 1)[0],\n factors.reduce((acc, v) => acc.multiply(v), bigInt.one)\n ];\n }\n\n const p = factors[0], q = factors[factors.length - 1];\n return (p.lesser(q) ? [p, q] : [q, p]).map((b) => bigIntToBytes(b)) as any;\n}\n","const subtle = typeof(window) !== 'undefined' && 'crypto' in window ? window.crypto.subtle : self.crypto.subtle;\n\nexport default subtle;\n","import subtle from '../subtle';\n\nexport default async function pbkdf2(buffer: Parameters<SubtleCrypto['importKey']>[1], salt: HkdfParams['salt'], iterations: number) {\n const importKey = await subtle.importKey(\n 'raw',\n buffer,\n {name: 'PBKDF2'},\n false,\n [/* 'deriveKey', */'deriveBits']\n );\n\n /* await subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt,\n iterations,\n hash: {name: 'SHA-512'}\n },\n importKey,\n {\n name: 'AES-CTR',\n length: 256\n },\n false,\n ['encrypt', 'decrypt']\n ); */\n\n const bits = subtle.deriveBits({\n name: 'PBKDF2',\n salt,\n iterations,\n hash: {name: 'SHA-512'}\n },\n importKey,\n 512\n );\n\n return bits.then((buffer) => new Uint8Array(buffer));\n}\n","import type {RSAPublicKeyHex} from '../../mtproto/rsaKeysManager';\nimport bytesModPow from '../../../helpers/bytes/bytesModPow';\nimport bytesFromHex from '../../../helpers/bytes/bytesFromHex';\n\nexport default function rsaEncrypt(bytes: Uint8Array, publicKey: RSAPublicKeyHex) {\n return bytesModPow(bytes, bytesFromHex(publicKey.exponent), bytesFromHex(publicKey.modulus));\n}\n","import convertToUint8Array from '../../../helpers/bytes/convertToUint8Array';\nimport subtle from '../subtle';\n// import sha1 from '@cryptography/sha1';\n\nexport default function sha1(bytes: Parameters<typeof convertToUint8Array>[0]) {\n return subtle.digest('SHA-1', convertToUint8Array(bytes)).then((b) => {\n return new Uint8Array(b);\n });\n /* //console.trace(dT(), 'SHA-1 hash start', bytes);\n\n const hashBytes: number[] = [];\n\n let hash = sha1(String.fromCharCode.apply(null,\n bytes instanceof Uint8Array ? [...bytes] : [...new Uint8Array(bytes)]));\n for(let i = 0; i < hash.length; ++i) {\n hashBytes.push(hash.charCodeAt(i));\n }\n\n //console.log(dT(), 'SHA-1 hash finish', hashBytes, bytesToHex(hashBytes));\n\n return new Uint8Array(hashBytes); */\n}\n","import convertToUint8Array from '../../../helpers/bytes/convertToUint8Array';\nimport subtle from '../subtle';\n// import sha256 from '@cryptography/sha256';\n\nexport default function sha256(bytes: Parameters<typeof convertToUint8Array>[0]) {\n return subtle.digest('SHA-256', convertToUint8Array(bytes)).then((b) => {\n // console.log('legacy', performance.now() - perfS);\n return new Uint8Array(b);\n });\n /* //console.log('SHA-256 hash start');\n\n let perfS = performance.now();\n\n\n let perfD = performance.now();\n let words = typeof(bytes) === 'string' ? bytes : bytesToWordss(bytes as any);\n let hash = sha256(words);\n console.log('darutkin', performance.now() - perfD);\n\n //console.log('SHA-256 hash finish', hash, sha256(words, 'hex'));\n\n return bytesFromWordss(hash); */\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport {BigInteger} from 'big-integer';\nimport {bigIntFromBytes, bigIntToBytes} from '../../../helpers/bigInt/bigIntConversion';\nimport addPadding from '../../../helpers/bytes/addPadding';\nimport subtle from '../subtle';\n\nconst COUNTER_LENGTH = 16;\n\nexport default class CTR {\n private cryptoKey: CryptoKey;\n // private encLeft: Uint8Array;\n private leftLength: number;\n private mode: 'encrypt' | 'decrypt';\n private counter: BigInteger;\n private queue: {data: Uint8Array, resolve: (data: Uint8Array) => void}[];\n private releasing: boolean;\n\n constructor(mode: 'encrypt' | 'decrypt', cryptoKey: CryptoKey, counter: Uint8Array) {\n this.mode = mode;\n this.cryptoKey = cryptoKey;\n this.queue = [];\n this.counter = bigIntFromBytes(counter);\n }\n\n public async update(data: Uint8Array) {\n return new Promise<Uint8Array>((resolve) => {\n this.queue.push({data, resolve});\n this.release();\n });\n }\n\n private async release() {\n if(this.releasing) {\n return;\n }\n\n this.releasing = true;\n while(this.queue.length) {\n const {data, resolve} = this.queue.shift();\n resolve(await this._update(data));\n }\n this.releasing = false;\n }\n\n private async perform(data: Uint8Array) {\n const arrayBuffer: ArrayBuffer = await subtle[this.mode]({\n name: 'AES-CTR',\n counter: addPadding(bigIntToBytes(this.counter), COUNTER_LENGTH, true, true, true),\n length: 128\n },\n this.cryptoKey,\n data\n );\n\n return arrayBuffer;\n }\n\n private async _update(data: Uint8Array) {\n let toEncrypt = data;\n let head: Uint8Array/* , tail: Uint8Array */;\n if(this.leftLength) {\n // const leftLength = this.encLeft.byteLength;\n const leftLength = this.leftLength;\n const leftLength2 = COUNTER_LENGTH - leftLength;\n // const left = this.encLeft.concat(toEncrypt.slice(0, leftLength2));\n const left = (new Uint8Array(leftLength)).concat(toEncrypt.slice(0, leftLength2));\n\n const performed = await this.perform(left);\n\n head = new Uint8Array(performed.slice(leftLength));\n\n toEncrypt = toEncrypt.slice(leftLength2);\n\n this.counter = this.counter.add(1);\n }\n\n const tail = new Uint8Array(await this.perform(toEncrypt));\n\n const result = head ? head.concat(tail) : tail;\n\n let length = toEncrypt.length;\n const leftAfter = length % COUNTER_LENGTH;\n length -= leftAfter;\n\n const a = length / COUNTER_LENGTH;\n this.counter = this.counter.add(a);\n\n this.leftLength = leftAfter || undefined;\n // this.encLeft = leftAfter ? toEncrypt.slice(-leftAfter) : undefined;\n\n return result;\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport CTR from './utils/aesCTR';\nimport subtle from './subtle';\n\nconst aesCTRs: Map<number, K> = new Map();\nlet lastCTRId = -1;\n\ntype K = {\n enc: CTR,\n dec: CTR,\n};\n\nexport async function aesCtrPrepare({encKey, encIv, decKey, decIv}: {[k in 'encKey' | 'encIv' | 'decKey' | 'decIv']: Uint8Array}) {\n const id = ++lastCTRId;\n\n const a = [['encrypt', encKey], ['decrypt', decKey]] as ['encrypt' | 'decrypt', Uint8Array][];\n const promises = a.map(([mode, key]) => {\n return subtle.importKey(\n 'raw',\n key,\n {name: 'AES-CTR'},\n false,\n [mode]\n )\n });\n\n const [encCryptoKey, decCryptoKey] = await Promise.all(promises);\n const enc = new CTR('encrypt', encCryptoKey, encIv.slice());\n const dec = new CTR('decrypt', decCryptoKey, decIv.slice());\n\n const k: K = {\n enc,\n dec\n };\n\n aesCTRs.set(id, k);\n\n return id;\n}\n\nexport async function aesCtrProcess({id, data, operation}: {id: number, data: Uint8Array, operation: 'encrypt' | 'decrypt'}) {\n const ctrs = aesCTRs.get(id);\n const result = await (operation === 'encrypt' ? ctrs.enc : ctrs.dec).update(data);\n return result;\n}\n\nexport function aesCtrDestroy(id: number) {\n aesCTRs.delete(id);\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport '../polyfill'; // just to include\n\nimport bytesModPow from '../../helpers/bytes/bytesModPow';\nimport gzipUncompress from '../../helpers/gzipUncompress';\nimport listenMessagePort from '../../helpers/listenMessagePort';\nimport getEmojisFingerprint from '../calls/helpers/getEmojisFingerprint';\nimport computeDhKey from './computeDhKey';\nimport cryptoMessagePort from './cryptoMessagePort';\nimport {CryptoMethods} from './crypto_methods';\nimport generateDh from './generateDh';\nimport computeSRP from './srp';\nimport {aesEncryptSync, aesDecryptSync} from './utils/aesIGE';\nimport factorizeBrentPollardPQ from './utils/factorize/BrentPollard';\nimport pbkdf2 from './utils/pbkdf2';\nimport rsaEncrypt from './utils/rsa';\nimport sha1 from './utils/sha1';\nimport sha256 from './utils/sha256';\nimport {aesCtrDestroy, aesCtrPrepare, aesCtrProcess} from './aesCtrUtils';\nimport ctx from '../../environment/ctx';\n\nconsole.log('CryptoWorker start');\n\nconst cryptoMethods: CryptoMethods = {\n 'sha1': sha1,\n 'sha256': sha256,\n 'pbkdf2': pbkdf2,\n 'aes-encrypt': aesEncryptSync,\n 'aes-decrypt': aesDecryptSync,\n 'rsa-encrypt': rsaEncrypt,\n 'factorize': factorizeBrentPollardPQ,\n // 'factorize-tdlib': factorizeTdlibPQ,\n // 'factorize-new-new': pqPrimeLeemonNew,\n 'mod-pow': bytesModPow,\n 'gzipUncompress': gzipUncompress,\n 'computeSRP': computeSRP,\n 'generate-dh': generateDh,\n 'compute-dh-key': computeDhKey,\n 'get-emojis-fingerprint': getEmojisFingerprint,\n 'aes-ctr-prepare': aesCtrPrepare,\n 'aes-ctr-process': aesCtrProcess,\n 'aes-ctr-destroy': aesCtrDestroy\n};\n\ncryptoMessagePort.addMultipleEventsListeners({\n invoke: ({method, args}) => {\n // @ts-ignore\n const result: any = cryptoMethods[method](...args);\n return result;\n },\n\n terminate: () => {\n ctx.close();\n }\n});\n\nif(typeof(MessageChannel) !== 'undefined') listenMessagePort(cryptoMessagePort, (source) => {\n const channel = new MessageChannel();\n cryptoMessagePort.attachPort(channel.port1);\n cryptoMessagePort.invokeVoid('port', undefined, source, [channel.port2]);\n});\n"],"names":["bufferConcats","args","length","acc","v","tmp","lastLength","b","fn","onFinally","callback","result","reason","bigInt","undefined","BASE","LOG_BASE","MAX_INT","MAX_INT_ARR","smallToArray","DEFAULT_ALPHABET","supportsNativeBigInt","Integer","radix","alphabet","caseSensitive","parseValue","parseBase","BigInteger","value","sign","SmallInteger","NativeBigInt","isPrecise","n","arrayToSmall","arr","trim","compareAbs","i","createArray","x","truncate","add","a","l_a","l_b","r","carry","base","sum","addAny","addSmall","l","subtract","a_l","b_l","borrow","difference","subtractAny","subtractSmall","small","multiplyLong","product","a_i","b_j","multiplySmall","shiftLeft","multiplyKaratsuba","y","c","ac","bd","abcd","useKaratsuba","l1","l2","abs","multiplySmallAndArray","square","a_j","j","divMod1","divisorMostSignificantDigit","lambda","remainder","divisor","quotientDigit","shift","q","divModSmall","divMod2","part","guess","xlen","highx","highy","check","quotient","divModAny","self","comparison","qSign","mod","mSign","_0","_1","_2","exp","isBasicPrime","millerRabinTest","nPrev","next","strict","isPrime","bits","logN","t","iterations","rng","newT","newR","lastT","lastR","powersOfTwo","powers2Length","highestPower2","shift_isSmall","remQuo","bitwise","xSign","ySign","xRem","yRem","xDigit","yDigit","xDivMod","yDivMod","LOBMASK_I","LOBMASK_BI","roughLOB","integerLogarithm","p","e","max","min","gcd","d","lcm","randBetween","usedRNG","low","high","range","digits","toBase","restricted","top","digit","text","absBase","alphabetValues","isNegative","start","parseBaseFromArray","val","pow","stringify","neg","out","left","divmod","toBaseString","str","zeros","parseStringValue","split","decimalPlace","isValid","parseNumberValue","module","ulongBigInt","longBigInt","bigIntFromBytes","bytes","bigIntToBytes","bigIntToSigned","bytesModPow","bytesBigInt","expBigInt","modBigInt","resBigInt","exports","this","o","s","f","h","u","w","m","k","_","g","E","R","A","Z","S","T","O","U","D","I","B","N","C","z","F","L","M","H","K","P","Y","G","X","W","J","V","$","ee","te","ie","Q","ne","ae","re","oe","se","le","de","fe","ce","he","ue","we","be","me","ke","_e","ge","gzipUncompress","toString","pako","ctx","listenMessagePort","messagePort","onConnect","onDisconnect","attachPort","listenPort","sendPort","Modes","DEBUG","MOUNT_CLASS_TO","tabId","indexOfAndSplice","array","item","idx","IS_SERVICE_WORKER","IS_WEB_WORKER","IS_WORKER","getWindowClients","postMessage","listener","err","notifyServiceWorker","all","listeners","notifyWorker","noop","EventListenerBase","reuseResults","name","options","_a","listenerObject","obj","error","collectResults","CACHED_ERRORS","makeError","type","USER_AGENT","IS_SAFARI","IS_FIREFOX","_logTimer","dT","LOG_LEVELS","IS_WEBKIT","STYLES_SUPPORTED","LOGGER_STYLES","methods","logger","prefix","ignoreDebugReset","style","originalPrefix","originalStyle","log","method","logType","newPrefix","level","prefixCache","_type","prefix2","USE_LOCKS","SuperMessagePort","logSuffix","event","task","source","taskId","deferred","payload","previousResolve","ret","resolve","reject","pingResolve","newEvent","id","innerTask","resultTaskPayload","resultTask","ackTask","isPromise","cached","port","promise","lock","port2","portTasks","tasks","batchTask","ports","transfer","withAck","_void","interval","target","CryptoMessagePort","sendPortIndex","cryptoMessagePort","readBigIntFromBytesBE","_bits","emojis","getEmojisFingerprint","key","g_a","hash","cryptoWorker","emojisLength","kPartSize","partOffset","index","codePoints","computeDhKey","g_b","key_fingerprint","key_fingerprint_long","randomize","addPadding","blockSize","zeroes","blockSizeAsTotalLength","prepend","len","needPadding","padding","bytesFromHex","hexString","generateDh","dhConfig","aBigInt","pBigInt","gBytes","g_a_hash","bytesXor","bytes1","bytes2","convertToUint8Array","bytesToHex","makePasswordHash","password","client_salt","server_salt","buffer","computeSRP","state","isNew","algo","pw_hash","padArray","flipper","pForHash","gForHash","b_for_hash","kHash","k_v","is_good_mod_exp_first","modexp","prime","diff","min_diff_bits_count","generate_and_check_random","a_for_hash","ux","a_ux","h1","h2","buff","M1","Si","T1","T2","T3","T4","T5","T6","T7","T8","computeTables","x2","x4","x8","tEnc","tDec","xInv","s2i","pos","getWords","buf","xor","right","to","AES","_key","rcon","_message","message","rounds","a2","b2","c2","AES_IGE","iv","cipherText","prevX","prevY","yXOR","bytesFromWordss","input","bytesToWordss","words","aesSync","keyBytes","ivBytes","encrypt","performedBytes","IGE","aesEncryptSync","aesDecryptSync","arrays","nextRandomUint","bigIntRandom","BrentPollardFactor","two","ys","bigIntUint64MinusPqPlusOne","performY","condition","primeFactors","pqBytes","factors","primes","factor","factorizeBrentPollardPQ","subtle","pbkdf2","salt","importKey","rsaEncrypt","publicKey","sha1","sha256","COUNTER_LENGTH","CTR","mode","cryptoKey","counter","data","toEncrypt","head","leftLength","leftLength2","performed","tail","leftAfter","aesCTRs","lastCTRId","aesCtrPrepare","encKey","encIv","decKey","decIv","promises","encCryptoKey","decCryptoKey","enc","dec","aesCtrProcess","operation","ctrs","aesCtrDestroy","cryptoMethods","channel"],"mappings":"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","x_google_ignoreList":[2,6,32]} |