@learncard/ethereum-plugin 1.0.2 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js", "../../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js", "../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js", "../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js", "../../../../node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js", "../../../../node_modules/.pnpm/js-sha3@0.8.0/node_modules/js-sha3/src/sha3.js", "../../../../node_modules/.pnpm/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/index.js", "../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/utils.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/common.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/common.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/1.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/256.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/224.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/512.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/384.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/ripemd.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/hmac.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash.js", "../../../../node_modules/.pnpm/aes-js@3.0.0/node_modules/aes-js/index.js", "../../../../node_modules/.pnpm/scrypt-js@3.0.1/node_modules/scrypt-js/scrypt.js", "../../../../node_modules/.pnpm/bech32@1.1.4/node_modules/bech32/index.js", "../src/index.ts", "../../../../node_modules/.pnpm/ethers@5.7.2/node_modules/ethers/src.ts/ethers.ts", "../../../../node_modules/.pnpm/@ethersproject+bignumber@5.7.0/node_modules/@ethersproject/bignumber/src.ts/bignumber.ts", "../../../../node_modules/.pnpm/@ethersproject+logger@5.7.0/node_modules/@ethersproject/logger/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+logger@5.7.0/node_modules/@ethersproject/logger/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+bytes@5.7.0/node_modules/@ethersproject/bytes/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+bytes@5.7.0/node_modules/@ethersproject/bytes/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+bignumber@5.7.0/node_modules/@ethersproject/bignumber/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+bignumber@5.7.0/node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts", "../../../../node_modules/.pnpm/@ethersproject+properties@5.7.0/node_modules/@ethersproject/properties/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+properties@5.7.0/node_modules/@ethersproject/properties/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/fragments.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts", "../../../../node_modules/.pnpm/@ethersproject+keccak256@5.7.0/node_modules/@ethersproject/keccak256/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+rlp@5.7.0/node_modules/@ethersproject/rlp/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+rlp@5.7.0/node_modules/@ethersproject/rlp/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+address@5.7.0/node_modules/@ethersproject/address/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+address@5.7.0/node_modules/@ethersproject/address/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/address.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/array.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/boolean.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/bytes.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/null.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.7.0/node_modules/@ethersproject/constants/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.7.0/node_modules/@ethersproject/constants/src.ts/addresses.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.7.0/node_modules/@ethersproject/constants/src.ts/bignumbers.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.7.0/node_modules/@ethersproject/constants/src.ts/hashes.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.7.0/node_modules/@ethersproject/constants/src.ts/strings.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/number.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.7.0/node_modules/@ethersproject/strings/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.7.0/node_modules/@ethersproject/strings/src.ts/utf8.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.7.0/node_modules/@ethersproject/strings/src.ts/bytes32.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.7.0/node_modules/@ethersproject/strings/src.ts/idna.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/string.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/coders/tuple.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/abi-coder.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.7.0/node_modules/@ethersproject/hash/src.ts/id.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.7.0/node_modules/@ethersproject/hash/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+base64@5.7.0/node_modules/@ethersproject/base64/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+base64@5.7.0/node_modules/@ethersproject/base64/src.ts/browser-base64.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.7.0/node_modules/@ethersproject/hash/src.ts/ens-normalize/decoder.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.7.0/node_modules/@ethersproject/hash/src.ts/ens-normalize/include.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.7.0/node_modules/@ethersproject/hash/src.ts/ens-normalize/lib.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.7.0/node_modules/@ethersproject/hash/src.ts/namehash.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.7.0/node_modules/@ethersproject/hash/src.ts/message.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.7.0/node_modules/@ethersproject/hash/src.ts/typed-data.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.7.0/node_modules/@ethersproject/abi/src.ts/interface.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.7.0/node_modules/@ethersproject/abstract-provider/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.7.0/node_modules/@ethersproject/abstract-provider/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.7.0/node_modules/@ethersproject/abstract-signer/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.7.0/node_modules/@ethersproject/abstract-signer/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/minimalistic-assert/index.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/elliptic/lib/elliptic/utils.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/elliptic/lib/elliptic/curve/base.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/inherits/inherits_browser.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/elliptic/lib/elliptic/curve/short.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/elliptic/lib/elliptic/curve/index.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/elliptic/lib/elliptic/curves.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/elliptic/lib/elliptic/ec/key.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/elliptic/lib/elliptic/ec/index.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/node_modules/elliptic/lib/elliptic.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/@ethersproject/signing-key/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.7.0/node_modules/@ethersproject/signing-key/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+transactions@5.7.0/node_modules/@ethersproject/transactions/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+transactions@5.7.0/node_modules/@ethersproject/transactions/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+contracts@5.7.0/node_modules/@ethersproject/contracts/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+contracts@5.7.0/node_modules/@ethersproject/contracts/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+basex@5.7.0/node_modules/@ethersproject/basex/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+sha2@5.7.0/node_modules/@ethersproject/sha2/src.ts/browser-sha2.ts", "../../../../node_modules/.pnpm/@ethersproject+sha2@5.7.0/node_modules/@ethersproject/sha2/src.ts/types.ts", "../../../../node_modules/.pnpm/@ethersproject+sha2@5.7.0/node_modules/@ethersproject/sha2/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+pbkdf2@5.7.0/node_modules/@ethersproject/pbkdf2/src.ts/browser-pbkdf2.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.7.0/node_modules/@ethersproject/wordlists/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.7.0/node_modules/@ethersproject/wordlists/src.ts/wordlist.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.7.0/node_modules/@ethersproject/wordlists/src.ts/lang-en.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.7.0/node_modules/@ethersproject/wordlists/src.ts/browser-wordlists.ts", "../../../../node_modules/.pnpm/@ethersproject+hdnode@5.7.0/node_modules/@ethersproject/hdnode/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+hdnode@5.7.0/node_modules/@ethersproject/hdnode/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+random@5.7.0/node_modules/@ethersproject/random/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+random@5.7.0/node_modules/@ethersproject/random/src.ts/browser-random.ts", "../../../../node_modules/.pnpm/@ethersproject+random@5.7.0/node_modules/@ethersproject/random/src.ts/shuffle.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.7.0/node_modules/@ethersproject/json-wallets/src.ts/crowdsale.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.7.0/node_modules/@ethersproject/json-wallets/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.7.0/node_modules/@ethersproject/json-wallets/src.ts/utils.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.7.0/node_modules/@ethersproject/json-wallets/src.ts/inspect.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.7.0/node_modules/@ethersproject/json-wallets/src.ts/keystore.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.7.0/node_modules/@ethersproject/json-wallets/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+wallet@5.7.0/node_modules/@ethersproject/wallet/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+wallet@5.7.0/node_modules/@ethersproject/wallet/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+networks@5.7.1/node_modules/@ethersproject/networks/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+networks@5.7.1/node_modules/@ethersproject/networks/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+web@5.7.1/node_modules/@ethersproject/web/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+web@5.7.1/node_modules/@ethersproject/web/src.ts/browser-geturl.ts", "../../../../node_modules/.pnpm/@ethersproject+web@5.7.1/node_modules/@ethersproject/web/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/base-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/formatter.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/browser-ws.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/websocket-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/url-json-rpc-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/ankr-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/cloudflare-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/etherscan-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/fallback-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/browser-ipc-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/infura-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/json-rpc-batch-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/nodesmith-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/pocket-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.7.2/node_modules/@ethersproject/providers/src.ts/web3-provider.ts", "../../../../node_modules/.pnpm/ethers@5.7.2/node_modules/ethers/src.ts/utils.ts", "../../../../node_modules/.pnpm/@ethersproject+solidity@5.7.0/node_modules/@ethersproject/solidity/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+solidity@5.7.0/node_modules/@ethersproject/solidity/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+units@5.7.0/node_modules/@ethersproject/units/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+units@5.7.0/node_modules/@ethersproject/units/src.ts/index.ts", "../../../../node_modules/.pnpm/ethers@5.7.2/node_modules/ethers/src.ts/_version.ts", "../../../../node_modules/.pnpm/ethers@5.7.2/node_modules/ethers/src.ts/index.ts", "../src/helpers.ts", "../src/hardcodedTokens.ts"],
4
- "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n", "", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n", "\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n", "'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n", "import { Buffer } from 'buffer';\n\nimport { LearnCard } from '@learncard/core';\nimport { ethers } from 'ethers';\n\nimport { EthereumConfig, EthereumPlugin, TokenList } from './types';\nimport {\n formatUnits,\n parseUnits,\n getTokenFromSymbolOrAddress,\n getChainIdFromProvider,\n} from './helpers';\nimport hardcodedTokens from './hardcodedTokens';\n\nexport * from './types';\n\nconst ERC20ABI = require('./erc20.abi.json');\n\n/**\n * @group Plugins\n */\nexport const getEthereumPlugin = (\n initLearnCard: LearnCard<any, 'id'>,\n config: EthereumConfig\n): EthereumPlugin => {\n let { infuraProjectId, network = 'mainnet' } = config;\n\n // Ethers wallet\n const secpKeypair = initLearnCard.id.keypair('secp256k1');\n\n if (!secpKeypair) {\n throw new Error('LearnCard must support secp256k1 JWK in order to add Ethereum Plugin');\n }\n\n const privateKey = Buffer.from(secpKeypair.d, 'base64').toString('hex');\n let ethersWallet = new ethers.Wallet(privateKey);\n const publicKey: string = ethersWallet.address;\n\n // Provider\n const getProvider = () => {\n let provider: ethers.providers.Provider;\n if (infuraProjectId) {\n provider = new ethers.providers.InfuraProvider(network, infuraProjectId);\n } else {\n provider = ethers.getDefaultProvider(network);\n }\n\n ethersWallet = ethersWallet.connect(provider);\n return provider;\n };\n let provider = getProvider();\n\n const getDefaultTokenList = (): TokenList => {\n return require('@uniswap/default-token-list/build/uniswap-default.tokenlist.json').tokens.concat(\n hardcodedTokens\n );\n };\n const defaultTokenList: TokenList = getDefaultTokenList();\n\n const getTokenAddress = async (tokenSymbolOrAddress: string) => {\n return (\n await getTokenFromSymbolOrAddress(\n tokenSymbolOrAddress,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n )\n )?.address;\n };\n\n const getErc20TokenBalance = async (\n tokenContractAddress: string,\n walletPublicAddress = publicKey\n ) => {\n const contract = new ethers.Contract(tokenContractAddress, ERC20ABI, provider);\n\n const balance = await contract.balanceOf(walletPublicAddress);\n const formattedBalance = formatUnits(\n balance,\n tokenContractAddress,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n );\n\n return formattedBalance;\n };\n\n // Core Methods\n const getBalance = async (walletAddress = publicKey, tokenSymbolOrAddress = 'ETH') => {\n if (!tokenSymbolOrAddress || tokenSymbolOrAddress === 'ETH') {\n // check ETH by default\n const balance = await provider.getBalance(walletAddress);\n const formattedBalance = ethers.utils.formatEther(balance);\n\n return formattedBalance;\n }\n\n const tokenAddress = await getTokenAddress(tokenSymbolOrAddress);\n\n if (!tokenAddress) {\n throw new Error(`Unable to determine token address for \\\"${tokenSymbolOrAddress}\\\"`);\n }\n\n const balance = await getErc20TokenBalance(tokenAddress, walletAddress);\n\n return balance;\n };\n\n return {\n name: 'Ethereum',\n displayName: 'Ethereum',\n description: 'Provides access to currency',\n methods: {\n getEthereumAddress: () => publicKey,\n\n getBalance: async (_learnCard, symbolOrAddress = 'ETH') =>\n getBalance(publicKey, symbolOrAddress),\n getBalanceForAddress: async (_learnCard, walletAddress, symbolOrAddress) =>\n getBalance(walletAddress, symbolOrAddress),\n\n transferTokens: async (_learnCard, tokenSymbolOrAddress, amount, toAddress) => {\n if (tokenSymbolOrAddress === 'ETH') {\n const transaction = {\n to: toAddress,\n\n // Convert ETH to wei\n value: ethers.utils.parseEther(amount.toString()),\n };\n\n return (await ethersWallet.sendTransaction(transaction)).hash;\n }\n\n const tokenAddress = await getTokenAddress(tokenSymbolOrAddress);\n if (!tokenAddress) {\n throw new Error(\n `Unable to determine token address for \\\"${tokenSymbolOrAddress}\\\"`\n );\n }\n\n const tokenContract = new ethers.Contract(tokenAddress, ERC20ABI, ethersWallet);\n\n return (\n await tokenContract.transfer(\n toAddress,\n await parseUnits(\n amount.toString(),\n tokenContract.address,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n )\n )\n ).hash;\n },\n\n getGasPrice: async () => {\n return ethers.utils.formatUnits(await provider.getGasPrice());\n },\n\n /* Configuration-type methods */\n getCurrentNetwork: () => {\n return network;\n },\n changeNetwork: (_learnCard, _network: ethers.providers.Networkish) => {\n const oldNetwork = network;\n try {\n network = _network;\n provider = getProvider();\n } catch (e) {\n network = oldNetwork;\n provider = getProvider();\n throw e;\n }\n },\n addInfuraProjectId: (_learnCard, infuraProjectIdToAdd) => {\n infuraProjectId = infuraProjectIdToAdd;\n provider = getProvider();\n },\n },\n };\n};\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "import { ethers } from 'ethers';\n\nimport { Token, TokenList } from './types';\n\nexport const isAddress = (maybeAddress: string) => {\n return maybeAddress.startsWith('0x') && maybeAddress.length === 42;\n};\n\n/* From Ethereum-compatible numbers to human-readable numbers */\nexport const formatUnits = async (\n units: ethers.BigNumberish,\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n) => {\n const token = await getTokenFromSymbolOrAddress(symbolOrAddress, tokenList, chainId);\n\n return ethers.utils.formatUnits(units, token?.decimals);\n};\n\n/* From human-readable numbers to Ethereum-compatible numbers */\nexport const parseUnits = async (\n units: string,\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n) => {\n const token = await getTokenFromSymbolOrAddress(symbolOrAddress, tokenList, chainId);\n\n return ethers.utils.parseUnits(units, token?.decimals);\n};\n\nexport const getTokenFromSymbolOrAddress = async (\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n): Promise<Token | undefined> => {\n let token;\n if (isAddress(symbolOrAddress)) {\n token = await getTokenFromAddress(symbolOrAddress, tokenList, chainId);\n } else {\n token = await getTokenFromSymbol(symbolOrAddress, tokenList, chainId);\n }\n return token;\n};\n\nconst getTokenFromAddress = async (address: string, tokenList: TokenList, chainId: number) => {\n const token = tokenList.find(token => token.chainId === chainId && token.address === address);\n\n return token;\n};\n\nconst getTokenFromSymbol = async (symbol: string, tokenList: TokenList, chainId: number) => {\n const token = tokenList.find(\n token => token.chainId === chainId && token.symbol.toUpperCase() === symbol.toUpperCase()\n );\n\n return token;\n};\n\nexport const getChainIdFromProvider = async (provider: ethers.providers.Provider) => {\n return (await provider.getNetwork()).chainId;\n};\n", "export const hardcodedTokens = [\n {\n name: 'USDCoin',\n address: '0x07865c6e87b9f70255377e024ace6630c1eaa37f',\n symbol: 'USDC',\n decimals: 6,\n chainId: 5,\n logoURI:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png',\n extensions: {\n bridgeInfo: {\n '10': {\n tokenAddress: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607',\n },\n '137': {\n tokenAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n },\n '42161': {\n tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8',\n },\n },\n },\n },\n];\n\nexport default hardcodedTokens;\n"],
5
- "mappings": "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AM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAI,EACngDC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAI,EAGngDC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EAGpgGC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAU,EAGpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAA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",
6
- "names": ["require_base64_js", "__commonJSMin", "exports", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "__name", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "c", "rt", "require_buffer", "__commonJSMin", "exports", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "__name", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "i", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "checkInt", "min", "maxBytes", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "hi", "lo", "src", "dst", "type", "alphabet", "table", "i16", "require_buffer", "__commonJSMin", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "__name", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_sha3", "__commonJSMin", "exports", "module", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "__name", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "assert", "val", "msg", "__name", "l", "r", "require_inherits_browser", "__commonJSMin", "exports", "module", "__name", "ctor", "superCtor", "TempCtor", "require_utils", "__commonJSMin", "exports", "assert", "inherits", "isSurrogatePair", "msg", "i", "__name", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "utils", "assert", "BlockHash", "__name", "msg", "enc", "r", "i", "len", "bytes", "k", "res", "t", "require_common", "__commonJSMin", "exports", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "__name", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "__name", "msg", "start", "W", "i", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "__name", "msg", "start", "W", "i", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "SHA256", "SHA224", "__name", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "__name", "msg", "start", "W", "i", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "utils", "SHA512", "SHA384", "__name", "enc", "require_sha", "__commonJSMin", "exports", "require_ripemd", "__commonJSMin", "exports", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "__name", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "utils", "assert", "Hmac", "hash", "key", "enc", "__name", "i", "msg", "require_hash", "__commonJSMin", "exports", "hash", "require_aes_js", "__commonJSMin", "exports", "module", "root", "checkInt", "value", "__name", "checkInts", "arrayish", "i", "coerceArray", "arg", "copy", "createArray", "length", "copyArray", "sourceArray", "targetArray", "targetStart", "sourceStart", "sourceEnd", "convertUtf8", "toBytes", "text", "result", "c", "fromBytes", "bytes", "convertHex", "Hex", "v", "numberOfRounds", "rcon", "S", "Si", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "U1", "U2", "U3", "U4", "convertToInt32", "AES", "key", "rounds", "roundKeyCount", "KC", "tk", "index", "rconpointer", "t", "tt", "r", "plaintext", "a", "ciphertext", "ModeOfOperationECB", "block", "ModeOfOperationCBC", "iv", "j", "ModeOfOperationCFB", "segmentSize", "encrypted", "xorSegment", "ModeOfOperationOFB", "Counter", "initialValue", "ModeOfOperationCTR", "counter", "pkcs7pad", "data", "padder", "pkcs7strip", "aesjs", "require_scrypt", "__commonJSMin", "exports", "module", "root", "SHA256", "m", "K", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "w", "blocks", "p", "off", "len", "a", "b", "c", "d", "e", "f", "g", "h", "u", "i", "j", "t1", "t2", "__name", "bytesLeft", "bitLenHi", "bitLenLo", "numZeros", "PBKDF2_HMAC_SHA256_OneIter", "password", "salt", "dkLen", "innerLen", "inner", "outerKey", "dk", "incrementCounter", "blockmix_salsa8", "BY", "Yi", "r", "x", "_X", "arraycopy", "blockxor", "salsa20_8", "R", "B", "S", "Si", "src", "srcPos", "dest", "destPos", "length", "checkBufferish", "o", "v", "ensureInteger", "value", "name", "_scrypt", "N", "callback", "XY", "V", "totalOps", "currentOp", "lastPercent10", "stop", "state", "i0", "i1", "Bi", "limit", "nextTick", "incrementalSMix", "steps", "percent10", "offset", "derivedKey", "lib", "progressCallback", "resolve", "reject", "lastProgress", "error", "progress", "key", "require_bech32", "__commonJSMin", "exports", "module", "ALPHABET", "ALPHABET_MAP", "z", "x", "polymodStep", "pre", "b", "__name", "prefixChk", "prefix", "chk", "i", "c", "v", "encode", "words", "LIMIT", "result", "__decode", "str", "lowered", "uppered", "split", "wordChars", "decodeUnsafe", "res", "decode", "convert", "data", "inBits", "outBits", "pad", "value", "bits", "maxV", "toWordsUnsafe", "bytes", "toWords", "fromWordsUnsafe", "fromWords", "src_exports", "__export", "getEthereumPlugin", "__toCommonJS", "import_buffer", "ethers_exports", "__export", "BaseContract", "BigNumber", "Contract", "ContractFactory", "FixedNumber", "Signer", "VoidSigner", "Wallet", "Wordlist", "lib_exports", "ErrorCode", "getDefaultProvider", "logger", "utils_exports", "version", "wordlists", "import_bn", "version", "_permanentCensorErrors", "_censorErrors", "LogLevels", "_logLevel", "_globalLogger", "_checkNormalize", "missing", "form", "error", "__name", "_normalizeError", "LogLevel", "ErrorCode", "HEX", "Logger", "version", "logLevel", "args", "level", "message", "code", "params", "messageDetails", "key", "value", "hex", "i", "reason", "url", "fault", "name", "condition", "count", "expectedCount", "target", "kind", "censorship", "permanent", "version", "logger", "Logger", "version", "isHexable", "value", "__name", "addSlice", "array", "args", "isBytesLike", "isHexString", "isBytes", "isInteger", "i", "v", "arrayify", "options", "result", "hex", "concat", "items", "objects", "item", "length", "accum", "offset", "object", "stripZeros", "start", "zeroPad", "HexCharacters", "hexlify", "hexDataLength", "data", "hexDataSlice", "endOffset", "hexConcat", "hexValue", "trimmed", "hexStripZeros", "hexZeroPad", "splitSignature", "signature", "bytes", "vs", "recoveryParam", "s", "recId", "_vs", "joinSignature", "version", "BN", "_BN", "logger", "Logger", "version", "_constructorGuard", "MAX_SAFE", "isBigNumberish", "value", "BigNumber", "isHexString", "isBytes", "__name", "_warnedToStringRadix", "constructorGuard", "hex", "toBigNumber", "toBN", "other", "throwFault", "key", "toHex", "anyValue", "hexlify", "fault", "operation", "params", "_base36To16", "_base16To36", "logger", "Logger", "version", "_constructorGuard", "Zero", "BigNumber", "NegativeOne", "throwFault", "message", "fault", "operation", "value", "params", "__name", "zeros", "getMultiplier", "decimals", "formatFixed", "multiplier", "negative", "fraction", "whole", "parseFixed", "comps", "wholeValue", "fractionValue", "wei", "FixedFormat", "constructorGuard", "signed", "width", "match", "check", "key", "type", "defaultValue", "FixedNumber", "hex", "format", "other", "a", "b", "result", "hasFraction", "ONE", "factor", "bump", "BUMP", "hexZeroPad", "isBigNumberish", "fixedFormat", "numeric", "decimal", "arrayify", "isBytes", "error", "version", "logger", "Logger", "version", "defineReadOnly", "object", "name", "value", "__name", "getStatic", "ctor", "key", "i", "resolveProperties", "promises", "v", "accum", "result", "checkProperties", "properties", "shallowCopy", "opaque", "_isFrozen", "keys", "_deepCopy", "item", "deepCopy", "Description", "info", "version", "logger", "Logger", "version", "_constructorGuard", "ModifiersBytes", "ModifiersNest", "checkModifier", "type", "name", "__name", "parseParamType", "param", "allowIndexed", "originalParam", "throwError", "i", "newNode", "parent", "node", "c", "verifyType", "child", "sibling", "populate", "object", "params", "key", "defineReadOnly", "FormatTypes", "paramTypeArray", "ParamType", "constructorGuard", "match", "format", "result", "comp", "value", "ParamTypify", "parseParams", "allowIndex", "splitNesting", "Fragment", "FunctionFragment", "EventFragment", "ConstructorFragment", "ErrorFragment", "input", "verifyIdentifier", "regexParen", "anonymous", "modifier", "parseGas", "comps", "BigNumber", "parseModifiers", "verifyState", "state", "parens", "output", "returns", "checkForbidden", "fragment", "sig", "regexIdentifier", "accum", "depth", "offset", "logger", "Logger", "version", "checkResultErrors", "result", "errors", "checkErrors", "__name", "path", "object", "key", "childPath", "error", "Coder", "name", "type", "localName", "dynamic", "message", "value", "Writer", "wordSize", "defineReadOnly", "hexConcat", "data", "writer", "concat", "bytes", "arrayify", "paddingOffset", "BigNumber", "offset", "Reader", "coerceFunc", "allowLoose", "hexlify", "match", "length", "loose", "alignedLength", "import_js_sha3", "keccak256", "data", "sha3", "arrayify", "__name", "lib_exports", "__export", "decode", "encode", "version", "logger", "Logger", "version", "arrayifyInteger", "value", "result", "__name", "unarrayifyInteger", "data", "offset", "length", "i", "_encode", "object", "payload", "child", "isBytesLike", "arrayify", "encode", "hexlify", "_decodeChildren", "childOffset", "decoded", "_decode", "lengthLength", "decode", "bytes", "version", "logger", "Logger", "version", "getChecksumAddress", "address", "isHexString", "chars", "expanded", "i", "hashed", "arrayify", "keccak256", "__name", "MAX_SAFE_INTEGER", "log10", "x", "ibanLookup", "safeDigits", "ibanChecksum", "c", "block", "checksum", "getAddress", "result", "_base36To16", "isAddress", "getIcapAddress", "base36", "_base16To36", "getContractAddress", "transaction", "from", "nonce", "stripZeros", "BigNumber", "hexDataSlice", "encode", "getCreate2Address", "salt", "initCodeHash", "hexDataLength", "concat", "AddressCoder", "Coder", "localName", "writer", "value", "getAddress", "error", "reader", "hexZeroPad", "__name", "AnonymousCoder", "Coder", "coder", "writer", "value", "reader", "__name", "logger", "Logger", "version", "pack", "writer", "coders", "values", "arrayValues", "unique", "coder", "name", "staticWriter", "Writer", "dynamicWriter", "updateFuncs", "index", "value", "dynamicOffset", "updateFunc", "baseOffset", "func", "length", "__name", "unpack", "reader", "baseReader", "offset", "offsetReader", "error", "uniqueNames", "accum", "ArrayCoder", "Coder", "localName", "type", "dynamic", "defaultChild", "result", "i", "count", "AnonymousCoder", "BooleanCoder", "Coder", "localName", "writer", "value", "reader", "__name", "DynamicBytesCoder", "Coder", "type", "localName", "writer", "value", "arrayify", "length", "reader", "__name", "BytesCoder", "hexlify", "FixedBytesCoder", "Coder", "size", "localName", "name", "writer", "value", "data", "arrayify", "reader", "hexlify", "__name", "NullCoder", "Coder", "localName", "writer", "value", "reader", "__name", "lib_exports", "__export", "AddressZero", "EtherSymbol", "HashZero", "MaxInt256", "MaxUint256", "MinInt256", "NegativeOne", "One", "Two", "WeiPerEther", "Zero", "AddressZero", "NegativeOne", "BigNumber", "Zero", "One", "Two", "WeiPerEther", "MaxUint256", "MinInt256", "MaxInt256", "HashZero", "EtherSymbol", "NumberCoder", "Coder", "size", "signed", "localName", "name", "writer", "value", "v", "BigNumber", "maxUintValue", "MaxUint256", "bounds", "One", "NegativeOne", "Zero", "reader", "__name", "version", "logger", "Logger", "version", "UnicodeNormalizationForm", "Utf8ErrorReason", "errorFunc", "reason", "offset", "bytes", "output", "badCodepoint", "__name", "ignoreFunc", "o", "replaceFunc", "Utf8ErrorFuncs", "getUtf8CodePoints", "onError", "arrayify", "result", "i", "c", "extraLength", "overlongMask", "res", "j", "nextChar", "toUtf8Bytes", "str", "form", "c2", "pair", "escapeChar", "value", "hex", "_toEscapedUtf8String", "codePoint", "_toUtf8String", "codePoints", "toUtf8String", "toUtf8CodePoints", "formatBytes32String", "text", "bytes", "toUtf8Bytes", "hexlify", "concat", "HashZero", "__name", "parseBytes32String", "data", "arrayify", "length", "toUtf8String", "bytes2", "data", "result", "i", "__name", "createTable", "func", "value", "lo", "pair", "comps", "createRangeTable", "hi", "v", "matchMap", "ranges", "range", "Table_A_1_ranges", "Table_B_1_flags", "Table_B_2_ranges", "Table_B_2_lut_abs", "Table_B_2_lut_rel", "Table_B_2_complex", "Table_C_ranges", "flatten", "values", "accum", "_nameprepTableA1", "codepoint", "_nameprepTableB2", "codes", "shift", "complex", "_nameprepTableC", "nameprep", "toUtf8CodePoints", "code", "codesTableB2", "_toUtf8String", "UnicodeNormalizationForm", "name", "StringCoder", "DynamicBytesCoder", "localName", "writer", "value", "toUtf8Bytes", "reader", "toUtf8String", "__name", "TupleCoder", "Coder", "coders", "localName", "dynamic", "types", "coder", "type", "values", "uniqueNames", "accum", "name", "index", "writer", "value", "pack", "reader", "unpack", "__name", "logger", "Logger", "version", "paramTypeBytes", "paramTypeNumber", "AbiCoder", "coerceFunc", "defineReadOnly", "param", "AddressCoder", "BooleanCoder", "StringCoder", "BytesCoder", "ArrayCoder", "TupleCoder", "component", "NullCoder", "match", "size", "NumberCoder", "FixedBytesCoder", "data", "allowLoose", "Reader", "Writer", "types", "coders", "type", "ParamType", "values", "coder", "writer", "loose", "arrayify", "__name", "defaultAbiCoder", "id", "text", "keccak256", "toUtf8Bytes", "__name", "version", "lib_exports", "__export", "decode", "encode", "decode", "textData", "data", "i", "arrayify", "__name", "encode", "flat", "array", "depth", "result", "forEach", "flatDeep", "__name", "arr", "val", "fromEntries", "i", "value", "decode_arithmetic", "bytes", "pos", "u16", "symbol_count", "total", "acc", "skip", "pos_payload", "read_width", "read_buffer", "read_bit", "N", "FULL", "HALF", "QRTR", "MASK", "register", "symbols", "low", "range", "start", "end", "mid", "a", "b", "offset", "x", "read_payload", "v", "read_compressed_payload", "signed", "read_counts", "n", "next", "read_ascending", "read_deltas", "read_member_array", "lookup", "vX", "vN", "j", "read_mapped_map", "ret", "w", "read_linear_table", "read_replacement_table", "read_zero_terminated_array", "read_transposed", "m", "dx", "dy", "ys", "_", "j_dy", "y", "read_emoji_trie", "sorted", "read", "branches", "keys", "temp", "valid", "fe0f", "save", "check", "getData", "read_compressed_payload", "decode", "__name", "r", "getData", "VALID", "read_member_array", "IGNORED", "MAPPED", "read_mapped_map", "EMOJI_ROOT", "read_emoji_trie", "HYPHEN", "UNDERSCORE", "explode_cp", "name", "toUtf8CodePoints", "__name", "filter_fe0f", "cps", "cp", "ens_normalize_post_check", "label", "i", "err", "ens_normalize", "normalize", "emoji_filter", "input", "output", "emoji", "consume_emoji_reversed", "nfc", "s", "eaten", "node", "saved", "stack", "pos", "_a", "x", "logger", "Logger", "version", "Zeros", "checkComponent", "comp", "__name", "ensNameSplit", "name", "bytes", "toUtf8Bytes", "ens_normalize", "comps", "last", "i", "isValidName", "name", "ensNameSplit", "__name", "namehash", "logger", "result", "Zeros", "comps", "keccak256", "concat", "hexlify", "dnsEncode", "comp", "bytes", "messagePrefix", "hashMessage", "message", "toUtf8Bytes", "keccak256", "concat", "__name", "logger", "Logger", "version", "padding", "NegativeOne", "BigNumber", "Zero", "One", "MaxUint256", "hexPadRight", "value", "bytes", "arrayify", "padOffset", "hexConcat", "hexlify", "__name", "hexTrue", "hexZeroPad", "hexFalse", "domainFieldTypes", "domainFieldNames", "checkString", "key", "domainChecks", "getAddress", "getBaseEncoder", "type", "match", "signed", "width", "boundsUpper", "boundsLower", "v", "keccak256", "id", "encodeType", "name", "fields", "TypedDataEncoder", "types", "defineReadOnly", "deepCopy", "links", "parents", "subtypes", "uniqueNames", "field", "baseType", "primaryTypes", "n", "t", "checkCircular", "found", "child", "subtype", "st", "encoder", "subEncoder", "length", "result", "encodedType", "values", "callback", "accum", "domain", "domainFields", "a", "b", "resolveName", "shallowCopy", "ensCache", "isHexString", "domainValues", "domainTypes", "typesWithDomain", "logger", "Logger", "version", "LogDescription", "Description", "__name", "TransactionDescription", "ErrorDescription", "Indexed", "value", "BuiltinErrors", "wrapAccessError", "property", "error", "wrap", "Interface", "fragments", "abi", "defineReadOnly", "fragment", "Fragment", "getStatic", "bucket", "logger", "signature", "ConstructorFragment", "format", "FormatTypes", "j", "defaultAbiCoder", "address", "getAddress", "hexDataSlice", "id", "eventFragment", "nameOrSignatureOrSighash", "isHexString", "name", "matching", "f", "result", "FunctionFragment", "nameOrSignatureOrTopic", "topichash", "EventFragment", "getSighash", "params", "data", "values", "bytes", "arrayify", "hexlify", "concat", "functionFragment", "reason", "message", "errorArgs", "errorName", "errorSignature", "selector", "builtin", "Logger", "topics", "encodeTopic", "param", "keccak256", "BigNumber", "hexZeroPad", "index", "dataTypes", "dataValues", "topicHash", "indexed", "nonIndexed", "dynamic", "ParamType", "resultIndexed", "resultNonIndexed", "nonIndexedIndex", "indexedIndex", "i", "tx", "log", "hexData", "version", "logger", "Logger", "version", "ForkEvent", "Description", "value", "__name", "Provider", "logger", "defineReadOnly", "block", "gasPrice", "resolveProperties", "error", "lastBaseFeePerGas", "maxFeePerGas", "maxPriorityFeePerGas", "BigNumber", "eventName", "listener", "value", "__name", "version", "logger", "Logger", "version", "allowedTransactionKeys", "forwardErrors", "Signer", "defineReadOnly", "blockTag", "transaction", "tx", "resolveProperties", "signedTx", "name", "key", "shallowCopy", "result", "to", "__awaiter", "address", "error", "hasEip1559", "feeData", "gasPrice", "results", "operation", "value", "__name", "VoidSigner", "provider", "message", "domain", "types", "minimalisticAssert", "assert", "val", "msg", "__name", "l", "r", "utils", "exports", "toArray", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "BN", "BaseCurve", "type", "conf", "adjustCount", "base", "p", "k", "doubles", "I", "repr", "j", "nafW", "a", "b", "nafPoints", "wnd", "acc", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "compact", "x", "power", "precomputed", "step", "dbl", "module", "ctor", "superCtor", "TempCtor", "ShortCurve", "Base", "inherits", "short_1", "beta", "lambda", "betas", "lambdas", "basis", "vec", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "q", "y", "len1", "len2", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "odd", "isOdd", "point", "ax", "rhs", "npoints", "ncoeffs", "split", "Point", "isRed", "pre", "endoMul", "obj2point", "nx", "ny", "ys1", "dyinv", "_precompute", "negate", "JPoint", "zinv", "zinv2", "ay", "pz2", "z2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require$$0", "require$$1", "curves", "PresetCurve", "options", "defineCurve", "hash", "HmacDRBG", "entropy", "nonce", "pers", "hmacDrbg", "seed", "kmac", "entropyEnc", "add", "addEnc", "temp", "KeyPair", "ec", "pub", "priv", "signature", "Signature", "Position", "getLength", "buf", "initial", "octetLen", "off", "rmPadding", "data", "rlen", "slen", "constructLength", "octets", "backHalf", "rand", "EC", "drbg", "ns2", "truncOnly", "bkey", "ns1", "iter", "kp", "kpX", "recoveryParam", "sinv", "n", "isYOdd", "isSecondKey", "rInv", "Q", "Qprime", "elliptic", "require$$2", "require$$3", "_ec", "version", "logger", "Logger", "version", "_curve", "getCurve", "EC$1", "__name", "SigningKey", "privateKey", "defineReadOnly", "hexlify", "hexDataLength", "keyPair", "arrayify", "other", "p0", "p1", "digest", "digestBytes", "signature", "splitSignature", "hexZeroPad", "otherKey", "otherKeyPair", "computePublicKey", "value", "recoverPublicKey", "sig", "rs", "key", "compressed", "bytes", "signingKey", "version", "logger", "Logger", "version", "TransactionTypes", "handleAddress", "value", "getAddress", "__name", "handleNumber", "Zero", "BigNumber", "transactionFields", "allowedTransactionKeys", "computeAddress", "key", "publicKey", "computePublicKey", "hexDataSlice", "keccak256", "recoverAddress", "digest", "signature", "recoverPublicKey", "arrayify", "formatNumber", "name", "result", "stripZeros", "accessSetify", "addr", "storageKeys", "storageKey", "index", "hexDataLength", "accessListify", "set", "accum", "a", "b", "formatAccessList", "_serializeEip1559", "transaction", "gasPrice", "maxFeePerGas", "fields", "sig", "splitSignature", "hexConcat", "encode", "_serializeEip2930", "_serialize", "checkProperties", "raw", "fieldInfo", "options", "hexlify", "chainId", "isBytesLike", "v", "serialize", "_parseEipSignature", "tx", "recid", "hexZeroPad", "_parseEip1559", "payload", "decode", "maxPriorityFeePerGas", "_parseEip2930", "_parse", "rawTransaction", "recoveryParam", "parse", "version", "logger", "Logger", "version", "allowedTransactionKeys", "resolveName", "resolver", "nameOrPromise", "name", "getAddress", "address", "__name", "resolveAddresses", "value", "paramType", "index", "v", "populateTransaction", "contract", "fragment", "args", "overrides", "shallowCopy", "resolveProperties", "check", "__awaiter", "resolved", "data", "tx", "ro", "BigNumber", "accessListify", "intrinsic", "bytes", "arrayify", "i", "roValue", "leftovers", "key", "l", "buildPopulate", "buildEstimate", "signerOrProvider", "addContractWait", "wait", "confirmations", "receipt", "log", "event", "deepCopy", "parsed", "topics", "buildCall", "collapseSimple", "blockTag", "result", "error", "buildSend", "txRequest", "buildDefault", "getEventTag", "filter", "topic", "RunningEvent", "tag", "defineReadOnly", "listener", "once", "done", "item", "listenerCount", "argsCopy", "ErrorRunningEvent", "FragmentRunningEvent", "contractInterface", "errors", "checkResultErrors", "WildcardRunningEvent", "BaseContract", "addressOrName", "getStatic", "Signer", "Provider", "uniqueFilters", "eventSignature", "filters", "e", "uniqueNames", "uniqueSignatures", "signature", "signatures", "transaction", "getContractAddress", "Interface", "code", "VoidSigner", "Indexed", "runningEvent", "eventName", "emit", "wrappedEmit", "fromBlockOrBlockhash", "toBlock", "isHexString", "logs", "accum", "Contract", "ContractFactory", "bytecode", "signer", "bytecodeHex", "isBytes", "hexlify", "concat", "params", "unsignedTx", "compilerOutput", "abi", "BaseX", "alphabet", "defineReadOnly", "i", "value", "source", "arrayify", "digits", "carry", "j", "string", "k", "q", "bytes", "byte", "__name", "Base32", "Base58", "import_hash", "SupportedAlgorithm", "version", "logger", "Logger", "version", "ripemd160", "data", "hash", "arrayify", "__name", "sha256", "sha512", "computeHmac", "algorithm", "key", "SupportedAlgorithm", "pbkdf2", "password", "salt", "iterations", "keylen", "hashAlgorithm", "arrayify", "hLen", "l", "DK", "block1", "r", "T", "i", "U", "computeHmac", "j", "k", "destPos", "len", "hexlify", "__name", "version", "exportWordlist", "logger", "Logger", "version", "Wordlist", "locale", "defineReadOnly", "mnemonic", "words", "wordlist", "i", "word", "id", "lang", "name", "anyGlobal", "__name", "words", "wordlist", "loadWords", "lang", "Wordlist", "__name", "LangEn", "index", "word", "langEn", "wordlists", "langEn", "version", "logger", "Logger", "version", "N", "BigNumber", "MasterSecret", "toUtf8Bytes", "HardenedBit", "getUpperMask", "bits", "__name", "getLowerMask", "bytes32", "value", "hexZeroPad", "hexlify", "base58check", "data", "Base58", "concat", "hexDataSlice", "sha256", "getWordlist", "wordlist", "wordlists", "words", "_constructorGuard", "defaultPath", "HDNode", "constructorGuard", "privateKey", "publicKey", "parentFingerprint", "chainCode", "index", "depth", "mnemonicOrPath", "signingKey", "SigningKey", "defineReadOnly", "ripemd160", "computeAddress", "path", "arrayify", "i", "I", "computeHmac", "SupportedAlgorithm", "IL", "IR", "ki", "Ki", "srcMnemonic", "components", "result", "component", "seed", "mnemonic", "seedArray", "password", "entropyToMnemonic", "mnemonicToEntropy", "mnemonicToSeed", "extendedKey", "bytes", "key", "salt", "UnicodeNormalizationForm", "pbkdf2", "entropy", "offset", "bit", "entropyBits", "checksumBits", "checksumMask", "indices", "remainingBits", "checksum", "isValidMnemonic", "getAccountPath", "version", "logger", "Logger", "version", "getGlobal", "__name", "anyGlobal", "crypto", "buffer", "randomBytes", "length", "result", "arrayify", "shuffled", "array", "i", "j", "tmp", "__name", "import_aes_js", "version", "looseArrayify", "hexString", "arrayify", "__name", "zpad", "value", "length", "getPassword", "password", "toUtf8Bytes", "UnicodeNormalizationForm", "searchPath", "object", "path", "currentChild", "comps", "i", "matchingChild", "key", "uuidV4", "randomBytes", "bytes", "hexlify", "logger", "Logger", "version", "CrowdsaleAccount", "Description", "value", "__name", "decrypt", "json", "password", "data", "getPassword", "ethaddr", "getAddress", "searchPath", "encseed", "looseArrayify", "key", "arrayify", "pbkdf2", "iv", "encryptedSeed", "aesCbc", "aes", "seed", "seedHex", "i", "seedHexBytes", "toUtf8Bytes", "privateKey", "keccak256", "isCrowdsaleWallet", "json", "data", "__name", "isKeystoreWallet", "getJsonWalletAddress", "getAddress", "import_aes_js", "import_scrypt_js", "logger", "Logger", "version", "hasMnemonic", "value", "__name", "KeystoreAccount", "Description", "_decrypt", "data", "key", "ciphertext", "searchPath", "iv", "looseArrayify", "counter", "aes", "aesCtr", "arrayify", "_getAccount", "hexlify", "keccak256", "concat", "privateKey", "mnemonicKey", "address", "computeAddress", "check", "getAddress", "account", "mnemonicCiphertext", "mnemonicIv", "mnemonicCounter", "mnemonicAesCtr", "path", "defaultPath", "locale", "entropy", "mnemonic", "entropyToMnemonic", "node", "HDNode", "error", "pbkdf2Sync", "passwordBytes", "salt", "count", "dkLen", "prfFunc", "pbkdf2", "_computeKdfKey", "password", "pbkdf2Func", "scryptFunc", "progressCallback", "getPassword", "kdf", "throwError", "name", "N", "r", "p", "prf", "decryptSync", "json", "scrypt", "decrypt", "encrypt", "options", "e", "srcMnemonic", "mnemonicToEntropy", "client", "randomBytes", "uuidRandom", "derivedKey", "macPrefix", "mac", "uuidV4", "now", "timestamp", "zpad", "decryptJsonWallet", "json", "password", "progressCallback", "isCrowdsaleWallet", "account", "decrypt", "isKeystoreWallet", "__name", "decryptJsonWalletSync", "decryptSync", "version", "logger", "Logger", "version", "isAccount", "value", "isHexString", "__name", "hasMnemonic", "mnemonic", "Wallet", "Signer", "privateKey", "provider", "signingKey", "SigningKey", "defineReadOnly", "computeAddress", "getAddress", "srcMnemonic", "defaultPath", "node", "HDNode", "Provider", "transaction", "resolveProperties", "tx", "signature", "keccak256", "serialize", "message", "joinSignature", "hashMessage", "domain", "types", "populated", "TypedDataEncoder", "name", "password", "options", "progressCallback", "encrypt", "entropy", "randomBytes", "arrayify", "hexDataSlice", "concat", "entropyToMnemonic", "json", "decryptJsonWallet", "account", "decryptJsonWalletSync", "path", "wordlist", "verifyMessage", "recoverAddress", "verifyTypedData", "lib_exports", "__export", "AlchemyProvider", "AlchemyWebSocketProvider", "AnkrProvider", "BaseProvider", "CloudflareProvider", "EtherscanProvider", "FallbackProvider", "Formatter", "InfuraProvider", "InfuraWebSocketProvider", "IpcProvider", "JsonRpcBatchProvider", "JsonRpcProvider", "JsonRpcSigner", "NodesmithProvider", "PocketProvider", "Provider", "Resolver", "StaticJsonRpcProvider", "UrlJsonRpcProvider", "Web3Provider", "WebSocketProvider", "getDefaultProvider", "getNetwork", "isCommunityResourcable", "isCommunityResource", "showThrottleMessage", "version", "logger", "Logger", "version", "isRenetworkable", "value", "__name", "ethDefaultProvider", "network", "func", "providers", "options", "providerList", "skip", "provider", "quorum", "etcDefaultProvider", "url", "homestead", "ropsten", "classicMordor", "networks", "getNetwork", "name", "standard", "defaultProvider", "version", "getUrl", "href", "options", "request", "opts", "response", "body", "headers", "value", "key", "arrayify", "__name", "logger", "Logger", "version", "staller", "duration", "resolve", "__name", "bodyify", "value", "type", "isBytesLike", "toUtf8String", "hexlify", "unpercent", "toUtf8Bytes", "all", "code", "_fetchData", "connection", "body", "processFunc", "attemptLimit", "throttleCallback", "throttleSlotInterval", "errorPassThrough", "headers", "url", "options", "allow304", "timeout", "key", "authorization", "encode", "shallowCopy", "reData", "dataMatch", "response", "decode", "result", "error", "flatHeaders", "header", "runningTimeout", "timer", "reject", "runningFetch", "attempt", "getUrl", "location", "tryAgain", "stall", "retryAfter", "fetchJson", "json", "processJsonFunc", "updated", "k", "poll", "func", "done", "cancel", "retryLimit", "check", "import_bech32", "version", "logger", "Logger", "version", "Formatter", "formats", "address", "bigNumber", "blockTag", "data", "hash", "hex", "number", "type", "strictData", "__name", "v", "shallowCopy", "accessList", "accessListify", "BigNumber", "value", "strict", "isHexString", "result", "getAddress", "hexDataSlice", "AddressZero", "getContractAddress", "hexValue", "hexDataLength", "hexZeroPad", "format", "difficulty", "transaction", "chainId", "parse", "object", "key", "error", "nullValue", "replaceValue", "array", "isCommunityResourcable", "isCommunityResource", "throttleMessage", "showThrottleMessage", "logger", "Logger", "version", "MAX_CCIP_REDIRECTS", "checkTopic", "topic", "hexDataLength", "__name", "serializeTopics", "topics", "unique", "sorted", "deserializeTopics", "data", "comps", "getEventTag", "eventName", "ForkEvent", "getTime", "stall", "duration", "resolve", "PollableEvents", "Event", "tag", "listener", "once", "defineReadOnly", "address", "filter", "coinInfos", "bytes32ify", "value", "hexZeroPad", "BigNumber", "base58Encode", "Base58", "concat", "hexDataSlice", "sha256", "matcherIpfs", "matchers", "_parseString", "result", "start", "toUtf8String", "_parseBytes", "offset", "length", "getIpfsLink", "link", "numPad", "arrayify", "padded", "bytesPad", "encodeBytes", "datas", "byteCount", "i", "hexConcat", "Resolver", "provider", "name", "resolvedAddress", "error", "selector", "parameters", "tx", "namehash", "parseBytes", "dnsEncode", "coinType", "hexBytes", "coinInfo", "bytes", "p2pkh", "p2sh", "words", "bech32", "HashZero", "linkage", "avatar", "match", "scheme", "owner", "addr", "tokenId", "tokenOwner", "balance", "metadataUrl", "metadata", "fetchJson", "imageUrl", "ipfs", "ipns", "swarm", "skynet", "urlSafe", "hash", "encode", "a", "key", "keyBytes", "toUtf8Bytes", "hexlify", "defaultFormatter", "nextPollId", "BaseProvider", "Provider", "network", "knownNetwork", "getStatic", "poll", "Formatter", "getNetwork", "calldata", "urls", "sender", "errorMessages", "url", "href", "json", "response", "errorMessage", "m", "maxAge", "internalBlockNumber", "reqTime", "checkInternalBlockNumber", "resolveProperties", "blockNumber", "networkError", "respTime", "pollId", "runners", "eventBlockNumber", "event", "runner", "receipt", "minFromBlock", "logs", "log", "currentNetwork", "now", "transactionHash", "confirmations", "timeout", "replaceable", "reject", "cancelFuncs", "done", "alreadyDone", "func", "minedHandler", "lastBlockNumber", "scannedBlock", "replaceHandler", "__awaiter", "nonce", "mined", "block", "ti", "reason", "timer", "addressOrName", "blockTag", "params", "position", "p", "hexValue", "startBlock", "confirms", "replacement", "signedTransaction", "hexTx", "t", "transaction", "values", "v", "attempt", "txSender", "urlsOffset", "urlsLength", "urlsData", "u", "callbackSelector", "extraData", "ccipResult", "resolved", "blockHashOrBlockTag", "includeTransactions", "isHexString", "blockWithTxs", "currentName", "resolver", "operation", "addrData", "node", "resolverAddr", "nameOrAddress", "resolverAddress", "method", "e", "args", "stopped", "eventTag", "found", "logger", "Logger", "version", "errorGas", "spelunk", "value", "requireData", "data", "isHexString", "key", "result", "__name", "checkError", "method", "error", "params", "transaction", "message", "timer", "timeout", "resolve", "getResult", "payload", "getLowerCase", "_constructorGuard", "JsonRpcSigner", "Signer", "constructorGuard", "provider", "addressOrIndex", "defineReadOnly", "UncheckedJsonRpcSigner", "accounts", "shallowCopy", "fromAddress", "address", "estimate", "to", "__awaiter", "resolveProperties", "tx", "sender", "hexTx", "hash", "blockNumber", "poll", "toUtf8Bytes", "hexlify", "domain", "types", "populated", "TypedDataEncoder", "name", "password", "confirmations", "allowedTransactionKeys", "JsonRpcProvider", "BaseProvider", "url", "network", "networkOrReady", "reject", "getStatic", "chainId", "getNetwork", "BigNumber", "a", "request", "deepCopy", "cache", "fetchJson", "hexZeroPad", "hexlifyTransaction", "feeData", "args", "event", "self", "pendingFilter", "filterId", "hashes", "seq", "allowExtra", "allowed", "checkProperties", "hexValue", "accessListify", "WS", "logger", "Logger", "version", "__name", "logger", "Logger", "version", "NextId", "WebSocketProvider", "JsonRpcProvider", "url", "network", "defineReadOnly", "WS", "id", "messageEvent", "data", "result", "request", "error", "sub", "fauxPoll", "blockNumber", "value", "method", "params", "rid", "resolve", "reject", "callback", "__name", "payload", "tag", "param", "processFunc", "subIdPromise", "subId", "event", "BigNumber", "emitReceipt", "hash", "receipt", "e", "logger", "Logger", "version", "StaticJsonRpcProvider", "JsonRpcProvider", "network", "_super", "defineReadOnly", "__name", "UrlJsonRpcProvider", "apiKey", "getStatic", "connection", "key", "address", "logger", "Logger", "version", "defaultApiKey", "AlchemyWebSocketProvider", "WebSocketProvider", "network", "apiKey", "provider", "AlchemyProvider", "url", "defineReadOnly", "__name", "UrlJsonRpcProvider", "host", "attempt", "showThrottleMessage", "logger", "Logger", "version", "defaultApiKey", "getHost", "name", "__name", "AnkrProvider", "UrlJsonRpcProvider", "apiKey", "network", "connection", "attempt", "url", "showThrottleMessage", "logger", "Logger", "version", "CloudflareProvider", "UrlJsonRpcProvider", "apiKey", "network", "host", "method", "params", "_super", "__name", "logger", "Logger", "version", "getTransactionPostData", "transaction", "result", "key", "value", "hexValue", "hexlify", "accessListify", "set", "__name", "getResult", "error", "getJsonResult", "checkLogTag", "blockTag", "checkError", "method", "e", "data", "isHexString", "message", "EtherscanProvider", "BaseProvider", "network", "apiKey", "defineReadOnly", "module", "params", "query", "accum", "post", "url", "payload", "procFunc", "connection", "attempt", "showThrottleMessage", "payloadStr", "fetchJson", "deepCopy", "postData", "args", "topic0", "logs", "blocks", "i", "log", "block", "_super", "addressOrName", "startBlock", "endBlock", "tx", "item", "logger", "Logger", "version", "now", "__name", "checkNetworks", "networks", "result", "i", "network", "median", "values", "maxDelta", "middle", "a", "b", "serialize", "value", "BigNumber", "keys", "key", "v", "nextRid", "stall", "duration", "cancel", "timer", "promise", "resolve", "wait", "func", "getPromise", "ForwardErrors", "ForwardProperties", "exposeDebugConfig", "config", "normalizedTally", "normalize", "quorum", "configs", "tally", "c", "check", "getProcessFunc", "provider", "method", "params", "blockNumber", "tx", "shallowCopy", "block", "waitForSync", "poll", "reject", "getRunner", "currentBlockNumber", "isHexString", "filter", "FallbackProvider", "BaseProvider", "providers", "providerConfigs", "configOrProvider", "index", "Provider", "stallTimeout", "isCommunityResource", "weight", "total", "accum", "networkOrReady", "defineReadOnly", "results", "error", "processFunc", "shuffled", "first", "t0", "inflightWeight", "rid", "deepCopy", "waiting", "errors", "code", "errorCode", "e", "props", "name", "IpcProvider", "logger", "Logger", "version", "defaultProjectId", "InfuraWebSocketProvider", "WebSocketProvider", "network", "apiKey", "provider", "InfuraProvider", "connection", "url", "defineReadOnly", "__name", "UrlJsonRpcProvider", "apiKeyObj", "host", "attempt", "showThrottleMessage", "JsonRpcBatchProvider", "JsonRpcProvider", "method", "params", "request", "inflightRequest", "promise", "resolve", "reject", "batch", "inflight", "deepCopy", "fetchJson", "result", "index", "payload", "error", "__name", "logger", "Logger", "version", "defaultApiKey", "NodesmithProvider", "UrlJsonRpcProvider", "apiKey", "network", "host", "__name", "logger", "Logger", "version", "defaultApplicationId", "PocketProvider", "UrlJsonRpcProvider", "apiKey", "apiKeyObj", "network", "host", "url", "connection", "__name", "logger", "Logger", "version", "_nextId", "buildWeb3LegacyFetcher", "provider", "sendFunc", "fetcher", "method", "params", "request", "resolve", "reject", "deepCopy", "error", "response", "__name", "buildEip1193Fetcher", "Web3Provider", "JsonRpcProvider", "network", "path", "jsonRpcFetchFunc", "subprovider", "defineReadOnly", "logger", "Logger", "version", "getDefaultProvider", "network", "options", "match", "JsonRpcProvider", "WebSocketProvider", "n", "getNetwork", "FallbackProvider", "AlchemyProvider", "AnkrProvider", "CloudflareProvider", "EtherscanProvider", "InfuraProvider", "NodesmithProvider", "PocketProvider", "Web3Provider", "__name", "utils_exports", "__export", "AbiCoder", "ConstructorFragment", "ErrorFragment", "EventFragment", "FormatTypes", "Fragment", "FunctionFragment", "HDNode", "Indexed", "Interface", "LogDescription", "Logger", "ParamType", "lib_exports", "SigningKey", "SupportedAlgorithm", "TransactionDescription", "TransactionTypes", "UnicodeNormalizationForm", "Utf8ErrorFuncs", "Utf8ErrorReason", "TypedDataEncoder", "_fetchData", "_toEscapedUtf8String", "accessListify", "arrayify", "Base58", "checkProperties", "checkResultErrors", "commify", "computeAddress", "computeHmac", "computePublicKey", "concat", "deepCopy", "defaultAbiCoder", "defaultPath", "defineReadOnly", "dnsEncode", "entropyToMnemonic", "fetchJson", "formatBytes32String", "formatEther", "formatUnits", "getAccountPath", "getAddress", "getContractAddress", "getCreate2Address", "getIcapAddress", "getJsonWalletAddress", "getStatic", "hashMessage", "hexConcat", "hexDataLength", "hexDataSlice", "hexStripZeros", "hexValue", "hexZeroPad", "hexlify", "id", "isAddress", "isBytes", "isBytesLike", "isHexString", "isValidMnemonic", "isValidName", "joinSignature", "keccak256", "mnemonicToEntropy", "mnemonicToSeed", "namehash", "nameprep", "parseBytes32String", "parseEther", "parse", "parseUnits", "poll", "randomBytes", "recoverAddress", "recoverPublicKey", "resolveProperties", "ripemd160", "serialize", "sha256", "sha512", "shallowCopy", "shuffled", "pack", "splitSignature", "stripZeros", "toUtf8Bytes", "toUtf8CodePoints", "toUtf8String", "verifyMessage", "verifyTypedData", "zeroPad", "version", "regexBytes", "regexNumber", "regexArray", "Zeros", "logger", "Logger", "version", "_pack", "type", "value", "isArray", "zeroPad", "arrayify", "toUtf8Bytes", "match", "size", "BigNumber", "baseType", "result", "concat", "__name", "pack", "types", "values", "tight", "index", "hexlify", "keccak256", "sha256", "version", "logger", "Logger", "version", "names", "commify", "value", "comps", "whole", "negative", "suffix", "formatted", "index", "__name", "formatUnits", "unitName", "formatFixed", "parseUnits", "parseFixed", "formatEther", "wei", "parseEther", "ether", "version", "logger", "Logger", "version", "anyGlobal", "ethers_exports", "isAddress", "__name", "maybeAddress", "formatUnits", "units", "symbolOrAddress", "tokenList", "chainId", "token", "getTokenFromSymbolOrAddress", "ethers_exports", "parseUnits", "getTokenFromAddress", "getTokenFromSymbol", "address", "symbol", "getChainIdFromProvider", "provider", "hardcodedTokens", "hardcodedTokens_default", "ERC20ABI", "getEthereumPlugin", "__name", "initLearnCard", "config", "infuraProjectId", "network", "secpKeypair", "privateKey", "ethersWallet", "ethers_exports", "publicKey", "getProvider", "provider", "defaultTokenList", "hardcodedTokens_default", "getTokenAddress", "tokenSymbolOrAddress", "getTokenFromSymbolOrAddress", "getChainIdFromProvider", "getErc20TokenBalance", "tokenContractAddress", "walletPublicAddress", "balance", "formatUnits", "getBalance", "walletAddress", "tokenAddress", "_learnCard", "symbolOrAddress", "amount", "toAddress", "transaction", "tokenContract", "parseUnits", "_network", "oldNetwork", "e", "infuraProjectIdToAdd"]
3
+ "sources": ["../../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js", "../../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js", "../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js", "../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js", "../../../../node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js", "../../../../node_modules/.pnpm/js-sha3@0.8.0/node_modules/js-sha3/src/sha3.js", "../../../../node_modules/.pnpm/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/index.js", "../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/utils.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/common.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/common.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/1.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/256.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/224.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/512.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/384.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/ripemd.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/hmac.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash.js", "../../../../node_modules/.pnpm/aes-js@3.0.0/node_modules/aes-js/index.js", "../../../../node_modules/.pnpm/scrypt-js@3.0.1/node_modules/scrypt-js/scrypt.js", "../../../../node_modules/.pnpm/bech32@1.1.4/node_modules/bech32/index.js", "../src/index.ts", "../../../../node_modules/.pnpm/ethers@5.6.9/node_modules/ethers/src.ts/ethers.ts", "../../../../node_modules/.pnpm/@ethersproject+bignumber@5.6.2/node_modules/@ethersproject/bignumber/src.ts/bignumber.ts", "../../../../node_modules/.pnpm/@ethersproject+logger@5.6.0/node_modules/@ethersproject/logger/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+logger@5.6.0/node_modules/@ethersproject/logger/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+bytes@5.6.1/node_modules/@ethersproject/bytes/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+bytes@5.6.1/node_modules/@ethersproject/bytes/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+bignumber@5.6.2/node_modules/@ethersproject/bignumber/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+bignumber@5.6.2/node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts", "../../../../node_modules/.pnpm/@ethersproject+properties@5.6.0/node_modules/@ethersproject/properties/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+properties@5.6.0/node_modules/@ethersproject/properties/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/fragments.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts", "../../../../node_modules/.pnpm/@ethersproject+keccak256@5.6.1/node_modules/@ethersproject/keccak256/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+rlp@5.6.1/node_modules/@ethersproject/rlp/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+rlp@5.6.1/node_modules/@ethersproject/rlp/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+address@5.6.1/node_modules/@ethersproject/address/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+address@5.6.1/node_modules/@ethersproject/address/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/address.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/array.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/boolean.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/bytes.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/null.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/addresses.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/bignumbers.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/hashes.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/strings.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/number.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.6.1/node_modules/@ethersproject/strings/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.6.1/node_modules/@ethersproject/strings/src.ts/utf8.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.6.1/node_modules/@ethersproject/strings/src.ts/bytes32.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.6.1/node_modules/@ethersproject/strings/src.ts/idna.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/string.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/tuple.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/abi-coder.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/id.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/namehash.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/message.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/typed-data.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/interface.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.6.1/node_modules/@ethersproject/abstract-provider/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.6.1/node_modules/@ethersproject/abstract-provider/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.6.2/node_modules/@ethersproject/abstract-signer/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.6.2/node_modules/@ethersproject/abstract-signer/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/minimalistic-assert/index.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/utils.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/curve/base.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/inherits/inherits_browser.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/curve/short.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/curve/index.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/curves.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/ec/key.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/ec/index.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/@ethersproject/signing-key/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/@ethersproject/signing-key/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+transactions@5.6.2/node_modules/@ethersproject/transactions/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+transactions@5.6.2/node_modules/@ethersproject/transactions/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+contracts@5.6.2/node_modules/@ethersproject/contracts/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+contracts@5.6.2/node_modules/@ethersproject/contracts/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+basex@5.6.1/node_modules/@ethersproject/basex/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+sha2@5.6.1/node_modules/@ethersproject/sha2/src.ts/browser-sha2.ts", "../../../../node_modules/.pnpm/@ethersproject+sha2@5.6.1/node_modules/@ethersproject/sha2/src.ts/types.ts", "../../../../node_modules/.pnpm/@ethersproject+sha2@5.6.1/node_modules/@ethersproject/sha2/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+pbkdf2@5.6.1/node_modules/@ethersproject/pbkdf2/src.ts/browser-pbkdf2.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.6.1/node_modules/@ethersproject/wordlists/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.6.1/node_modules/@ethersproject/wordlists/src.ts/wordlist.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.6.1/node_modules/@ethersproject/wordlists/src.ts/lang-en.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.6.1/node_modules/@ethersproject/wordlists/src.ts/browser-wordlists.ts", "../../../../node_modules/.pnpm/@ethersproject+hdnode@5.6.2/node_modules/@ethersproject/hdnode/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+hdnode@5.6.2/node_modules/@ethersproject/hdnode/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+random@5.6.1/node_modules/@ethersproject/random/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+random@5.6.1/node_modules/@ethersproject/random/src.ts/browser-random.ts", "../../../../node_modules/.pnpm/@ethersproject+random@5.6.1/node_modules/@ethersproject/random/src.ts/shuffle.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/crowdsale.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/utils.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/inspect.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/keystore.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+wallet@5.6.2/node_modules/@ethersproject/wallet/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+wallet@5.6.2/node_modules/@ethersproject/wallet/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+networks@5.6.4/node_modules/@ethersproject/networks/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+networks@5.6.4/node_modules/@ethersproject/networks/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+base64@5.6.1/node_modules/@ethersproject/base64/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+base64@5.6.1/node_modules/@ethersproject/base64/src.ts/browser-base64.ts", "../../../../node_modules/.pnpm/@ethersproject+web@5.6.1/node_modules/@ethersproject/web/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+web@5.6.1/node_modules/@ethersproject/web/src.ts/browser-geturl.ts", "../../../../node_modules/.pnpm/@ethersproject+web@5.6.1/node_modules/@ethersproject/web/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/base-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/formatter.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/browser-ws.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/websocket-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/url-json-rpc-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/ankr-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/cloudflare-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/etherscan-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/fallback-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/browser-ipc-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/infura-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/json-rpc-batch-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/nodesmith-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/pocket-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/web3-provider.ts", "../../../../node_modules/.pnpm/ethers@5.6.9/node_modules/ethers/src.ts/utils.ts", "../../../../node_modules/.pnpm/@ethersproject+solidity@5.6.1/node_modules/@ethersproject/solidity/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+solidity@5.6.1/node_modules/@ethersproject/solidity/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+units@5.6.1/node_modules/@ethersproject/units/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+units@5.6.1/node_modules/@ethersproject/units/src.ts/index.ts", "../../../../node_modules/.pnpm/ethers@5.6.9/node_modules/ethers/src.ts/_version.ts", "../../../../node_modules/.pnpm/ethers@5.6.9/node_modules/ethers/src.ts/index.ts", "../src/helpers.ts", "../src/hardcodedTokens.ts"],
4
+ "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n", "", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n", "\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n", "'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n", "import { Buffer } from 'buffer';\n\nimport { LearnCard } from '@learncard/core';\nimport { ethers } from 'ethers';\n\nimport { EthereumConfig, EthereumPlugin, TokenList } from './types';\nimport {\n formatUnits,\n parseUnits,\n getTokenFromSymbolOrAddress,\n getChainIdFromProvider,\n} from './helpers';\nimport hardcodedTokens from './hardcodedTokens';\n\nexport * from './types';\n\nconst ERC20ABI = require('./erc20.abi.json');\n\n/**\n * @group Plugins\n */\nexport const getEthereumPlugin = (\n initLearnCard: LearnCard<any, 'id'>,\n config: EthereumConfig\n): EthereumPlugin => {\n let { infuraProjectId, network = 'mainnet' } = config;\n\n // Ethers wallet\n const secpKeypair = initLearnCard.id.keypair('secp256k1');\n\n if (!secpKeypair) {\n throw new Error('LearnCard must support secp256k1 JWK in order to add Ethereum Plugin');\n }\n\n const privateKey = Buffer.from(secpKeypair.d, 'base64').toString('hex');\n let ethersWallet = new ethers.Wallet(privateKey);\n const publicKey: string = ethersWallet.address;\n\n // Provider\n const getProvider = () => {\n let provider: ethers.providers.Provider;\n if (infuraProjectId) {\n provider = new ethers.providers.InfuraProvider(network, infuraProjectId);\n } else {\n provider = ethers.getDefaultProvider(network);\n }\n\n ethersWallet = ethersWallet.connect(provider);\n return provider;\n };\n let provider = getProvider();\n\n const getDefaultTokenList = (): TokenList => {\n return require('@uniswap/default-token-list/build/uniswap-default.tokenlist.json').tokens.concat(\n hardcodedTokens\n );\n };\n const defaultTokenList: TokenList = getDefaultTokenList();\n\n const getTokenAddress = async (tokenSymbolOrAddress: string) => {\n return (\n await getTokenFromSymbolOrAddress(\n tokenSymbolOrAddress,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n )\n )?.address;\n };\n\n const getErc20TokenBalance = async (\n tokenContractAddress: string,\n walletPublicAddress = publicKey\n ) => {\n const contract = new ethers.Contract(tokenContractAddress, ERC20ABI, provider);\n\n const balance = await contract.balanceOf(walletPublicAddress);\n const formattedBalance = formatUnits(\n balance,\n tokenContractAddress,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n );\n\n return formattedBalance;\n };\n\n // Core Methods\n const getBalance = async (walletAddress = publicKey, tokenSymbolOrAddress = 'ETH') => {\n if (!tokenSymbolOrAddress || tokenSymbolOrAddress === 'ETH') {\n // check ETH by default\n const balance = await provider.getBalance(walletAddress);\n const formattedBalance = ethers.utils.formatEther(balance);\n\n return formattedBalance;\n }\n\n const tokenAddress = await getTokenAddress(tokenSymbolOrAddress);\n\n if (!tokenAddress) {\n throw new Error(`Unable to determine token address for \\\"${tokenSymbolOrAddress}\\\"`);\n }\n\n const balance = await getErc20TokenBalance(tokenAddress, walletAddress);\n\n return balance;\n };\n\n return {\n name: 'Ethereum',\n displayName: 'Ethereum',\n description: 'Provides access to currency',\n methods: {\n getEthereumAddress: () => publicKey,\n\n getBalance: async (_learnCard, symbolOrAddress = 'ETH') =>\n getBalance(publicKey, symbolOrAddress),\n getBalanceForAddress: async (_learnCard, walletAddress, symbolOrAddress) =>\n getBalance(walletAddress, symbolOrAddress),\n\n transferTokens: async (_learnCard, tokenSymbolOrAddress, amount, toAddress) => {\n if (tokenSymbolOrAddress === 'ETH') {\n const transaction = {\n to: toAddress,\n\n // Convert ETH to wei\n value: ethers.utils.parseEther(amount.toString()),\n };\n\n return (await ethersWallet.sendTransaction(transaction)).hash;\n }\n\n const tokenAddress = await getTokenAddress(tokenSymbolOrAddress);\n if (!tokenAddress) {\n throw new Error(\n `Unable to determine token address for \\\"${tokenSymbolOrAddress}\\\"`\n );\n }\n\n const tokenContract = new ethers.Contract(tokenAddress, ERC20ABI, ethersWallet);\n\n return (\n await tokenContract.transfer(\n toAddress,\n await parseUnits(\n amount.toString(),\n tokenContract.address,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n )\n )\n ).hash;\n },\n\n getGasPrice: async () => {\n return ethers.utils.formatUnits(await provider.getGasPrice());\n },\n\n /* Configuration-type methods */\n getCurrentNetwork: () => {\n return network;\n },\n changeNetwork: (_learnCard, _network: ethers.providers.Networkish) => {\n const oldNetwork = network;\n try {\n network = _network;\n provider = getProvider();\n } catch (e) {\n network = oldNetwork;\n provider = getProvider();\n throw e;\n }\n },\n addInfuraProjectId: (_learnCard, infuraProjectIdToAdd) => {\n infuraProjectId = infuraProjectIdToAdd;\n provider = getProvider();\n },\n },\n };\n};\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "import { ethers } from 'ethers';\n\nimport { Token, TokenList } from './types';\n\nexport const isAddress = (maybeAddress: string) => {\n return maybeAddress.startsWith('0x') && maybeAddress.length === 42;\n};\n\n/* From Ethereum-compatible numbers to human-readable numbers */\nexport const formatUnits = async (\n units: ethers.BigNumberish,\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n) => {\n const token = await getTokenFromSymbolOrAddress(symbolOrAddress, tokenList, chainId);\n\n return ethers.utils.formatUnits(units, token?.decimals);\n};\n\n/* From human-readable numbers to Ethereum-compatible numbers */\nexport const parseUnits = async (\n units: string,\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n) => {\n const token = await getTokenFromSymbolOrAddress(symbolOrAddress, tokenList, chainId);\n\n return ethers.utils.parseUnits(units, token?.decimals);\n};\n\nexport const getTokenFromSymbolOrAddress = async (\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n): Promise<Token | undefined> => {\n let token;\n if (isAddress(symbolOrAddress)) {\n token = await getTokenFromAddress(symbolOrAddress, tokenList, chainId);\n } else {\n token = await getTokenFromSymbol(symbolOrAddress, tokenList, chainId);\n }\n return token;\n};\n\nconst getTokenFromAddress = async (address: string, tokenList: TokenList, chainId: number) => {\n const token = tokenList.find(token => token.chainId === chainId && token.address === address);\n\n return token;\n};\n\nconst getTokenFromSymbol = async (symbol: string, tokenList: TokenList, chainId: number) => {\n const token = tokenList.find(\n token => token.chainId === chainId && token.symbol.toUpperCase() === symbol.toUpperCase()\n );\n\n return token;\n};\n\nexport const getChainIdFromProvider = async (provider: ethers.providers.Provider) => {\n return (await provider.getNetwork()).chainId;\n};\n", "export const hardcodedTokens = [\n {\n name: 'USDCoin',\n address: '0x07865c6e87b9f70255377e024ace6630c1eaa37f',\n symbol: 'USDC',\n decimals: 6,\n chainId: 5,\n logoURI:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png',\n extensions: {\n bridgeInfo: {\n '10': {\n tokenAddress: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607',\n },\n '137': {\n tokenAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n },\n '42161': {\n tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8',\n },\n },\n },\n },\n];\n\nexport default hardcodedTokens;\n"],
5
+ "mappings": "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G,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACp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AM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAI,EACngD,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAI,EAGngD,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EAGpgG,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAU,EAGpgG,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,W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",
6
+ "names": []
7
7
  }