@capxul/cli 4.20.0-beta.3 → 4.20.0-beta.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1156 -21
- package/dist/browser/GeistVF.woff +0 -0
- package/dist/browser/signer.js +85954 -0
- package/dist/browser/signer.js.map +1 -0
- package/dist/entry-Cp3LiVYn.mjs +46472 -0
- package/dist/entry-Cp3LiVYn.mjs.map +1 -0
- package/dist/fast-Dvf2EM7j.mjs +57 -0
- package/dist/fast-Dvf2EM7j.mjs.map +1 -0
- package/dist/{lib-BOge5QZP.mjs → lib-5nM6ORJd.mjs} +5 -4
- package/dist/{lib-BOge5QZP.mjs.map → lib-5nM6ORJd.mjs.map} +1 -1
- package/dist/{lib-DH_xJGSE.mjs → lib-BJgR4mWJ.mjs} +6 -5
- package/dist/{lib-DH_xJGSE.mjs.map → lib-BJgR4mWJ.mjs.map} +1 -1
- package/dist/lib-BlUleR2B.mjs +3 -0
- package/dist/{lib-C8ENT9j6.mjs → lib-BspI667y.mjs} +7 -6
- package/dist/{lib-C8ENT9j6.mjs.map → lib-BspI667y.mjs.map} +1 -1
- package/dist/{lib-C4fpnzyy.mjs → lib-Buegx0dz.mjs} +6 -5
- package/dist/{lib-C4fpnzyy.mjs.map → lib-Buegx0dz.mjs.map} +1 -1
- package/dist/{lib-DVGoRCJN.mjs → lib-CJw8te9L.mjs} +38 -38
- package/dist/{lib-DVGoRCJN.mjs.map → lib-CJw8te9L.mjs.map} +1 -1
- package/dist/lib-C_-etuHZ.mjs +3 -0
- package/dist/lib-CoGPQsbr.mjs +655 -0
- package/dist/lib-CoGPQsbr.mjs.map +1 -0
- package/dist/lib-Dd_fsz7h.mjs +3 -0
- package/dist/lib-DnmstTkB.mjs +578 -0
- package/dist/lib-DnmstTkB.mjs.map +1 -0
- package/dist/lib-IlYdzOHo.mjs +3 -0
- package/dist/main.mjs +22 -51062
- package/dist/main.mjs.map +1 -1
- package/dist/organizations-Dkb73lVO.mjs +37607 -0
- package/dist/organizations-Dkb73lVO.mjs.map +1 -0
- package/dist/permission-approvals-C3cUSQeT.mjs +139 -0
- package/dist/permission-approvals-C3cUSQeT.mjs.map +1 -0
- package/dist/record-U7Yu4KQP.mjs +1295 -0
- package/dist/record-U7Yu4KQP.mjs.map +1 -0
- package/dist/{secp256k1-Cc9JhcTQ.mjs → secp256k1-D8L212-Z.mjs} +5 -298
- package/dist/secp256k1-D8L212-Z.mjs.map +1 -0
- package/dist/sha2-CR2DnMEk.mjs +298 -0
- package/dist/sha2-CR2DnMEk.mjs.map +1 -0
- package/dist/utils-DmKXBQjM.mjs +130 -0
- package/dist/utils-DmKXBQjM.mjs.map +1 -0
- package/dist/where-view-DuGbrSLp.mjs +1420 -0
- package/dist/where-view-DuGbrSLp.mjs.map +1 -0
- package/package.json +18 -10
- package/dist/secp256k1-Cc9JhcTQ.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib-DVGoRCJN.mjs","names":["crypto_1","EventEmitter","http","createHash","Duplex","module"],"sources":["../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.8.0/node_modules/@ethersproject/abstract-provider/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.8.0/node_modules/@ethersproject/abstract-provider/lib/index.js","../../../node_modules/.pnpm/@ethersproject+networks@5.8.0/node_modules/@ethersproject/networks/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+networks@5.8.0/node_modules/@ethersproject/networks/lib/index.js","../../../node_modules/.pnpm/@ethersproject+basex@5.8.0/node_modules/@ethersproject/basex/lib/index.js","../../../node_modules/.pnpm/@ethersproject+sha2@5.8.0/node_modules/@ethersproject/sha2/lib/types.js","../../../node_modules/.pnpm/@ethersproject+sha2@5.8.0/node_modules/@ethersproject/sha2/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+sha2@5.8.0/node_modules/@ethersproject/sha2/lib/sha2.js","../../../node_modules/.pnpm/@ethersproject+sha2@5.8.0/node_modules/@ethersproject/sha2/lib/index.js","../../../node_modules/.pnpm/@ethersproject+web@5.8.0/node_modules/@ethersproject/web/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+web@5.8.0/node_modules/@ethersproject/web/lib/geturl.js","../../../node_modules/.pnpm/@ethersproject+web@5.8.0/node_modules/@ethersproject/web/lib/index.js","../../../node_modules/.pnpm/bech32@1.1.4/node_modules/bech32/index.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/formatter.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/base-provider.js","../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.8.0/node_modules/@ethersproject/abstract-signer/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.8.0/node_modules/@ethersproject/abstract-signer/lib/index.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/json-rpc-provider.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/constants.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/buffer-util.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/limiter.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/permessage-deflate.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/validation.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/receiver.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/sender.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/event-target.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/extension.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/websocket.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/stream.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/subprotocol.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/websocket-server.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/index.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/ws.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/websocket-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/url-json-rpc-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/alchemy-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/ankr-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/cloudflare-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/etherscan-provider.js","../../../node_modules/.pnpm/@ethersproject+random@5.8.0/node_modules/@ethersproject/random/lib/random.js","../../../node_modules/.pnpm/@ethersproject+random@5.8.0/node_modules/@ethersproject/random/lib/shuffle.js","../../../node_modules/.pnpm/@ethersproject+random@5.8.0/node_modules/@ethersproject/random/lib/index.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/fallback-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/ipc-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/infura-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/json-rpc-batch-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/nodesmith-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/pocket-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/quicknode-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/web3-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"abstract-provider/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Provider = exports.TransactionOrderForkEvent = exports.TransactionForkEvent = exports.BlockForkEvent = exports.ForkEvent = void 0;\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n;\n;\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise<TransactionResponse>;\n//};\nvar ForkEvent = /** @class */ (function (_super) {\n __extends(ForkEvent, _super);\n function ForkEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ForkEvent.isForkEvent = function (value) {\n return !!(value && value._isForkEvent);\n };\n return ForkEvent;\n}(properties_1.Description));\nexports.ForkEvent = ForkEvent;\nvar BlockForkEvent = /** @class */ (function (_super) {\n __extends(BlockForkEvent, _super);\n function BlockForkEvent(blockHash, expiry) {\n var _this = this;\n if (!(0, bytes_1.isHexString)(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n _this = _super.call(this, {\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n }) || this;\n return _this;\n }\n return BlockForkEvent;\n}(ForkEvent));\nexports.BlockForkEvent = BlockForkEvent;\nvar TransactionForkEvent = /** @class */ (function (_super) {\n __extends(TransactionForkEvent, _super);\n function TransactionForkEvent(hash, expiry) {\n var _this = this;\n if (!(0, bytes_1.isHexString)(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n _this = _super.call(this, {\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n }) || this;\n return _this;\n }\n return TransactionForkEvent;\n}(ForkEvent));\nexports.TransactionForkEvent = TransactionForkEvent;\nvar TransactionOrderForkEvent = /** @class */ (function (_super) {\n __extends(TransactionOrderForkEvent, _super);\n function TransactionOrderForkEvent(beforeHash, afterHash, expiry) {\n var _this = this;\n if (!(0, bytes_1.isHexString)(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!(0, bytes_1.isHexString)(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n _this = _super.call(this, {\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n }) || this;\n return _this;\n }\n return TransactionOrderForkEvent;\n}(ForkEvent));\nexports.TransactionOrderForkEvent = TransactionOrderForkEvent;\n///////////////////////////////\n// Exported Abstracts\nvar Provider = /** @class */ (function () {\n function Provider() {\n var _newTarget = this.constructor;\n logger.checkAbstract(_newTarget, Provider);\n (0, properties_1.defineReadOnly)(this, \"_isProvider\", true);\n }\n Provider.prototype.getFeeData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, block, gasPrice, lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, (0, properties_1.resolveProperties)({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch(function (error) {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n })];\n case 1:\n _a = _b.sent(), block = _a.block, gasPrice = _a.gasPrice;\n lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = bignumber_1.BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n return [2 /*return*/, { lastBaseFeePerGas: lastBaseFeePerGas, maxFeePerGas: maxFeePerGas, maxPriorityFeePerGas: maxPriorityFeePerGas, gasPrice: gasPrice }];\n }\n });\n });\n };\n // Alias for \"on\"\n Provider.prototype.addListener = function (eventName, listener) {\n return this.on(eventName, listener);\n };\n // Alias for \"off\"\n Provider.prototype.removeListener = function (eventName, listener) {\n return this.off(eventName, listener);\n };\n Provider.isProvider = function (value) {\n return !!(value && value._isProvider);\n };\n return Provider;\n}());\nexports.Provider = Provider;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"networks/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNetwork = void 0;\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n;\nfunction isRenetworkable(value) {\n return (value && typeof (value.renetwork) === \"function\");\n}\nfunction ethDefaultProvider(network) {\n var func = function (providers, options) {\n if (options == null) {\n options = {};\n }\n var providerList = [];\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n }\n catch (error) { }\n }\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n }\n catch (error) { }\n }\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n }\n catch (error) { }\n }\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n var skip = [\"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\"];\n try {\n var provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n }\n catch (error) { }\n }\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n }\n catch (error) { }\n }\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n var skip = [\"ropsten\"];\n var provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n }\n catch (error) { }\n }\n if (providers.QuickNodeProvider && options.quicknode !== \"-\") {\n try {\n providerList.push(new providers.QuickNodeProvider(network, options.quicknode));\n }\n catch (error) { }\n }\n if (providerList.length === 0) {\n return null;\n }\n if (providers.FallbackProvider) {\n var quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n }\n else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n return providerList[0];\n };\n func.renetwork = function (network) {\n return ethDefaultProvider(network);\n };\n return func;\n}\nfunction etcDefaultProvider(url, network) {\n var func = function (providers, options) {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n return null;\n };\n func.renetwork = function (network) {\n return etcDefaultProvider(url, network);\n };\n return func;\n}\nvar homestead = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\nvar ropsten = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\nvar classicMordor = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n// See: https://chainlist.org\nvar networks = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n homestead: homestead,\n mainnet: homestead,\n morden: { chainId: 2, name: \"morden\" },\n ropsten: ropsten,\n testnet: ropsten,\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n sepolia: {\n chainId: 11155111,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n holesky: {\n chainId: 17000,\n name: \"holesky\",\n _defaultProvider: ethDefaultProvider(\"holesky\")\n },\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n xdai: { chainId: 100, name: \"xdai\" },\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: {\n chainId: 80001,\n name: \"maticmum\",\n _defaultProvider: ethDefaultProvider(\"maticmum\")\n },\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n \"optimism-sepolia\": { chainId: 11155420, name: \"optimism-sepolia\" },\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n \"arbitrum-sepolia\": { chainId: 421614, name: \"arbitrum-sepolia\" },\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n};\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nfunction getNetwork(network) {\n // No network (null)\n if (network == null) {\n return null;\n }\n if (typeof (network) === \"number\") {\n for (var name_1 in networks) {\n var standard_1 = networks[name_1];\n if (standard_1.chainId === network) {\n return {\n name: standard_1.name,\n chainId: standard_1.chainId,\n ensAddress: (standard_1.ensAddress || null),\n _defaultProvider: (standard_1._defaultProvider || null)\n };\n }\n }\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n if (typeof (network) === \"string\") {\n var standard_2 = networks[network];\n if (standard_2 == null) {\n return null;\n }\n return {\n name: standard_2.name,\n chainId: standard_2.chainId,\n ensAddress: standard_2.ensAddress,\n _defaultProvider: (standard_2._defaultProvider || null)\n };\n }\n var standard = networks[network.name];\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof (network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n var defaultProvider = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n }\n else {\n defaultProvider = standard._defaultProvider;\n }\n }\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\nexports.getNetwork = getNetwork;\n//# sourceMappingURL=index.js.map","\"use strict\";\n/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base58 = exports.Base32 = exports.BaseX = void 0;\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar BaseX = /** @class */ (function () {\n function BaseX(alphabet) {\n (0, properties_1.defineReadOnly)(this, \"alphabet\", alphabet);\n (0, properties_1.defineReadOnly)(this, \"base\", alphabet.length);\n (0, properties_1.defineReadOnly)(this, \"_alphabetMap\", {});\n (0, properties_1.defineReadOnly)(this, \"_leader\", alphabet.charAt(0));\n // pre-compute lookup table\n for (var i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n BaseX.prototype.encode = function (value) {\n var source = (0, bytes_1.arrayify)(value);\n if (source.length === 0) {\n return \"\";\n }\n var digits = [0];\n for (var i = 0; i < source.length; ++i) {\n var carry = source[i];\n for (var j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n var string = \"\";\n // deal with leading zeros\n for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n // convert digits to a string\n for (var q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n return string;\n };\n BaseX.prototype.decode = function (value) {\n if (typeof (value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n var bytes = [];\n if (value.length === 0) {\n return new Uint8Array(bytes);\n }\n bytes.push(0);\n for (var i = 0; i < value.length; i++) {\n var byte = this._alphabetMap[value[i]];\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n var carry = byte;\n for (var j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n // deal with leading zeros\n for (var k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0);\n }\n return (0, bytes_1.arrayify)(new Uint8Array(bytes.reverse()));\n };\n return BaseX;\n}());\nexports.BaseX = BaseX;\nvar Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nexports.Base32 = Base32;\nvar Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\nexports.Base58 = Base58;\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SupportedAlgorithm = void 0;\nvar SupportedAlgorithm;\n(function (SupportedAlgorithm) {\n SupportedAlgorithm[\"sha256\"] = \"sha256\";\n SupportedAlgorithm[\"sha512\"] = \"sha512\";\n})(SupportedAlgorithm = exports.SupportedAlgorithm || (exports.SupportedAlgorithm = {}));\n;\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"sha2/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.computeHmac = exports.sha512 = exports.sha256 = exports.ripemd160 = void 0;\nvar crypto_1 = require(\"crypto\");\nvar hash_js_1 = __importDefault(require(\"hash.js\"));\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar types_1 = require(\"./types\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nfunction ripemd160(data) {\n return \"0x\" + (hash_js_1.default.ripemd160().update((0, bytes_1.arrayify)(data)).digest(\"hex\"));\n}\nexports.ripemd160 = ripemd160;\nfunction sha256(data) {\n return \"0x\" + (0, crypto_1.createHash)(\"sha256\").update(Buffer.from((0, bytes_1.arrayify)(data))).digest(\"hex\");\n}\nexports.sha256 = sha256;\nfunction sha512(data) {\n return \"0x\" + (0, crypto_1.createHash)(\"sha512\").update(Buffer.from((0, bytes_1.arrayify)(data))).digest(\"hex\");\n}\nexports.sha512 = sha512;\nfunction computeHmac(algorithm, key, data) {\n /* istanbul ignore if */\n if (!types_1.SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm - \" + algorithm, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"computeHmac\",\n algorithm: algorithm\n });\n }\n return \"0x\" + (0, crypto_1.createHmac)(algorithm, Buffer.from((0, bytes_1.arrayify)(key))).update(Buffer.from((0, bytes_1.arrayify)(data))).digest(\"hex\");\n}\nexports.computeHmac = computeHmac;\n//# sourceMappingURL=sha2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SupportedAlgorithm = exports.sha512 = exports.sha256 = exports.ripemd160 = exports.computeHmac = void 0;\nvar sha2_1 = require(\"./sha2\");\nObject.defineProperty(exports, \"computeHmac\", { enumerable: true, get: function () { return sha2_1.computeHmac; } });\nObject.defineProperty(exports, \"ripemd160\", { enumerable: true, get: function () { return sha2_1.ripemd160; } });\nObject.defineProperty(exports, \"sha256\", { enumerable: true, get: function () { return sha2_1.sha256; } });\nObject.defineProperty(exports, \"sha512\", { enumerable: true, get: function () { return sha2_1.sha512; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"SupportedAlgorithm\", { enumerable: true, get: function () { return types_1.SupportedAlgorithm; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"web/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUrl = void 0;\nvar http_1 = __importDefault(require(\"http\"));\nvar https_1 = __importDefault(require(\"https\"));\nvar zlib_1 = require(\"zlib\");\nvar url_1 = require(\"url\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nfunction getResponse(request) {\n return new Promise(function (resolve, reject) {\n request.once(\"response\", function (resp) {\n var response = {\n statusCode: resp.statusCode,\n statusMessage: resp.statusMessage,\n headers: Object.keys(resp.headers).reduce(function (accum, name) {\n var value = resp.headers[name];\n if (Array.isArray(value)) {\n value = value.join(\", \");\n }\n accum[name] = value;\n return accum;\n }, {}),\n body: null\n };\n //resp.setEncoding(\"utf8\");\n resp.on(\"data\", function (chunk) {\n if (response.body == null) {\n response.body = new Uint8Array(0);\n }\n response.body = (0, bytes_1.concat)([response.body, chunk]);\n });\n resp.on(\"end\", function () {\n if (response.headers[\"content-encoding\"] === \"gzip\") {\n //const size = response.body.length;\n response.body = (0, bytes_1.arrayify)((0, zlib_1.gunzipSync)(response.body));\n //console.log(\"Delta:\", response.body.length - size, Buffer.from(response.body).toString());\n }\n resolve(response);\n });\n resp.on(\"error\", function (error) {\n /* istanbul ignore next */\n error.response = response;\n reject(error);\n });\n });\n request.on(\"error\", function (error) { reject(error); });\n });\n}\n// The URL.parse uses null instead of the empty string\nfunction nonnull(value) {\n if (value == null) {\n return \"\";\n }\n return value;\n}\nfunction getUrl(href, options) {\n return __awaiter(this, void 0, void 0, function () {\n var url, request, req, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (options == null) {\n options = {};\n }\n url = (0, url_1.parse)(href);\n request = {\n protocol: nonnull(url.protocol),\n hostname: nonnull(url.hostname),\n port: nonnull(url.port),\n path: (nonnull(url.pathname) + nonnull(url.search)),\n method: (options.method || \"GET\"),\n headers: (0, properties_1.shallowCopy)(options.headers || {}),\n };\n if (options.allowGzip) {\n request.headers[\"accept-encoding\"] = \"gzip\";\n }\n req = null;\n switch (nonnull(url.protocol)) {\n case \"http:\":\n req = http_1.default.request(request);\n break;\n case \"https:\":\n req = https_1.default.request(request);\n break;\n default:\n /* istanbul ignore next */\n logger.throwError(\"unsupported protocol \" + url.protocol, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n protocol: url.protocol,\n operation: \"request\"\n });\n }\n if (options.body) {\n req.write(Buffer.from(options.body));\n }\n req.end();\n return [4 /*yield*/, getResponse(req)];\n case 1:\n response = _a.sent();\n return [2 /*return*/, response];\n }\n });\n });\n}\nexports.getUrl = getUrl;\n//# sourceMappingURL=geturl.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.poll = exports.fetchJson = exports._fetchData = void 0;\nvar base64_1 = require(\"@ethersproject/base64\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar strings_1 = require(\"@ethersproject/strings\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar geturl_1 = require(\"./geturl\");\nfunction staller(duration) {\n return new Promise(function (resolve) {\n setTimeout(resolve, duration);\n });\n}\nfunction bodyify(value, type) {\n if (value == null) {\n return null;\n }\n if (typeof (value) === \"string\") {\n return value;\n }\n if ((0, bytes_1.isBytesLike)(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return (0, strings_1.toUtf8String)(value);\n }\n catch (error) { }\n ;\n }\n return (0, bytes_1.hexlify)(value);\n }\n return value;\n}\nfunction unpercent(value) {\n return (0, strings_1.toUtf8Bytes)(value.replace(/%([0-9a-f][0-9a-f])/gi, function (all, code) {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest<T = any>\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nfunction _fetchData(connection, body, processFunc) {\n // How many times to retry in the event of a throttle\n var attemptLimit = (typeof (connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit : 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0), \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n var throttleCallback = ((typeof (connection) === \"object\") ? connection.throttleCallback : null);\n var throttleSlotInterval = ((typeof (connection) === \"object\" && typeof (connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval : 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0), \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n var errorPassThrough = ((typeof (connection) === \"object\") ? !!(connection.errorPassThrough) : false);\n var headers = {};\n var url = null;\n // @TODO: Allow ConnectionInfo to override some of these values\n var options = {\n method: \"GET\",\n };\n var allow304 = false;\n var timeout = 2 * 60 * 1000;\n if (typeof (connection) === \"string\") {\n url = connection;\n }\n else if (typeof (connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n url = connection.url;\n if (typeof (connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n if (connection.headers) {\n for (var key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n options.allowGzip = !!connection.allowGzip;\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\"basic authentication requires a secure https url\", logger_1.Logger.errors.INVALID_ARGUMENT, { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" });\n }\n var authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + (0, base64_1.encode)((0, strings_1.toUtf8Bytes)(authorization))\n };\n }\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n if (connection.fetchOptions != null) {\n options.fetchOptions = (0, properties_1.shallowCopy)(connection.fetchOptions);\n }\n }\n var reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n var dataMatch = ((url) ? url.match(reData) : null);\n if (dataMatch) {\n try {\n var response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\") },\n body: (dataMatch[2] ? (0, base64_1.decode)(dataMatch[3]) : unpercent(dataMatch[3]))\n };\n var result = response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(result);\n }\n catch (error) {\n logger.throwError(\"processing response error\", logger_1.Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n var flatHeaders = {};\n Object.keys(headers).forEach(function (key) {\n var header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n var runningTimeout = (function () {\n var timer = null;\n var promise = new Promise(function (resolve, reject) {\n if (timeout) {\n timer = setTimeout(function () {\n if (timer == null) {\n return;\n }\n timer = null;\n reject(logger.makeError(\"timeout\", logger_1.Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n var cancel = function () {\n if (timer == null) {\n return;\n }\n clearTimeout(timer);\n timer = null;\n };\n return { promise: promise, cancel: cancel };\n })();\n var runningFetch = (function () {\n return __awaiter(this, void 0, void 0, function () {\n var attempt, response, location_1, tryAgain, stall, retryAfter, error_1, body_1, result, error_2, tryAgain, timeout_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n attempt = 0;\n _a.label = 1;\n case 1:\n if (!(attempt < attemptLimit)) return [3 /*break*/, 20];\n response = null;\n _a.label = 2;\n case 2:\n _a.trys.push([2, 9, , 10]);\n return [4 /*yield*/, (0, geturl_1.getUrl)(url, options)];\n case 3:\n response = _a.sent();\n if (!(attempt < attemptLimit)) return [3 /*break*/, 8];\n if (!(response.statusCode === 301 || response.statusCode === 302)) return [3 /*break*/, 4];\n location_1 = response.headers.location || \"\";\n if (options.method === \"GET\" && location_1.match(/^https:/)) {\n url = response.headers.location;\n return [3 /*break*/, 19];\n }\n return [3 /*break*/, 8];\n case 4:\n if (!(response.statusCode === 429)) return [3 /*break*/, 8];\n tryAgain = true;\n if (!throttleCallback) return [3 /*break*/, 6];\n return [4 /*yield*/, throttleCallback(attempt, url)];\n case 5:\n tryAgain = _a.sent();\n _a.label = 6;\n case 6:\n if (!tryAgain) return [3 /*break*/, 8];\n stall = 0;\n retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n }\n else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n //console.log(\"Stalling 429\");\n return [4 /*yield*/, staller(stall)];\n case 7:\n //console.log(\"Stalling 429\");\n _a.sent();\n return [3 /*break*/, 19];\n case 8: return [3 /*break*/, 10];\n case 9:\n error_1 = _a.sent();\n response = error_1.response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", logger_1.Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error_1,\n url: url\n });\n }\n return [3 /*break*/, 10];\n case 10:\n body_1 = response.body;\n if (allow304 && response.statusCode === 304) {\n body_1 = null;\n }\n else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", logger_1.Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body_1, ((response.headers) ? response.headers[\"content-type\"] : null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n if (!processFunc) return [3 /*break*/, 18];\n _a.label = 11;\n case 11:\n _a.trys.push([11, 13, , 18]);\n return [4 /*yield*/, processFunc(body_1, response)];\n case 12:\n result = _a.sent();\n runningTimeout.cancel();\n return [2 /*return*/, result];\n case 13:\n error_2 = _a.sent();\n if (!(error_2.throttleRetry && attempt < attemptLimit)) return [3 /*break*/, 17];\n tryAgain = true;\n if (!throttleCallback) return [3 /*break*/, 15];\n return [4 /*yield*/, throttleCallback(attempt, url)];\n case 14:\n tryAgain = _a.sent();\n _a.label = 15;\n case 15:\n if (!tryAgain) return [3 /*break*/, 17];\n timeout_1 = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n return [4 /*yield*/, staller(timeout_1)];\n case 16:\n //console.log(\"Stalling callback\");\n _a.sent();\n return [3 /*break*/, 19];\n case 17:\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", logger_1.Logger.errors.SERVER_ERROR, {\n body: bodyify(body_1, ((response.headers) ? response.headers[\"content-type\"] : null)),\n error: error_2,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n return [3 /*break*/, 18];\n case 18:\n runningTimeout.cancel();\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return [2 /*return*/, body_1];\n case 19:\n attempt++;\n return [3 /*break*/, 1];\n case 20: return [2 /*return*/, logger.throwError(\"failed response\", logger_1.Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n })];\n }\n });\n });\n })();\n return Promise.race([runningTimeout.promise, runningFetch]);\n}\nexports._fetchData = _fetchData;\nfunction fetchJson(connection, json, processFunc) {\n var processJsonFunc = function (value, response) {\n var result = null;\n if (value != null) {\n try {\n result = JSON.parse((0, strings_1.toUtf8String)(value));\n }\n catch (error) {\n logger.throwError(\"invalid JSON\", logger_1.Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n if (processFunc) {\n result = processFunc(result, response);\n }\n return result;\n };\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n var body = null;\n if (json != null) {\n body = (0, strings_1.toUtf8Bytes)(json);\n // Create a connection with the content-type set for JSON\n var updated = (typeof (connection) === \"string\") ? ({ url: connection }) : (0, properties_1.shallowCopy)(connection);\n if (updated.headers) {\n var hasContentType = (Object.keys(updated.headers).filter(function (k) { return (k.toLowerCase() === \"content-type\"); }).length) !== 0;\n if (!hasContentType) {\n updated.headers = (0, properties_1.shallowCopy)(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n }\n else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n return _fetchData(connection, body, processJsonFunc);\n}\nexports.fetchJson = fetchJson;\nfunction poll(func, options) {\n if (!options) {\n options = {};\n }\n options = (0, properties_1.shallowCopy)(options);\n if (options.floor == null) {\n options.floor = 0;\n }\n if (options.ceiling == null) {\n options.ceiling = 10000;\n }\n if (options.interval == null) {\n options.interval = 250;\n }\n return new Promise(function (resolve, reject) {\n var timer = null;\n var done = false;\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n var cancel = function () {\n if (done) {\n return false;\n }\n done = true;\n if (timer) {\n clearTimeout(timer);\n }\n return true;\n };\n if (options.timeout) {\n timer = setTimeout(function () {\n if (cancel()) {\n reject(new Error(\"timeout\"));\n }\n }, options.timeout);\n }\n var retryLimit = options.retryLimit;\n var attempt = 0;\n function check() {\n return func().then(function (result) {\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) {\n resolve(result);\n }\n }\n else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n }\n else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n // Otherwise, exponential back-off (up to 10s) our next request\n }\n else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) {\n reject(new Error(\"retry limit reached\"));\n }\n return;\n }\n var timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) {\n timeout = options.floor;\n }\n if (timeout > options.ceiling) {\n timeout = options.ceiling;\n }\n setTimeout(check, timeout);\n }\n return null;\n }, function (error) {\n if (cancel()) {\n reject(error);\n }\n });\n }\n check();\n });\n}\nexports.poll = poll;\n//# sourceMappingURL=index.js.map","'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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"providers/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.showThrottleMessage = exports.isCommunityResource = exports.isCommunityResourcable = exports.Formatter = void 0;\nvar address_1 = require(\"@ethersproject/address\");\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar constants_1 = require(\"@ethersproject/constants\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar transactions_1 = require(\"@ethersproject/transactions\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar Formatter = /** @class */ (function () {\n function Formatter() {\n this.formats = this.getDefaultFormats();\n }\n Formatter.prototype.getDefaultFormats = function () {\n var _this = this;\n var formats = ({});\n var address = this.address.bind(this);\n var bigNumber = this.bigNumber.bind(this);\n var blockTag = this.blockTag.bind(this);\n var data = this.data.bind(this);\n var hash = this.hash.bind(this);\n var hex = this.hex.bind(this);\n var number = this.number.bind(this);\n var type = this.type.bind(this);\n var strictData = function (v) { return _this.data(v, true); };\n formats.transaction = {\n hash: hash,\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n confirmations: Formatter.allowNull(number, null),\n from: address,\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n creates: Formatter.allowNull(address, null),\n raw: Formatter.allowNull(data),\n };\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: Formatter.allowNull(address),\n extraData: data,\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n formats.blockWithTransactions = (0, properties_1.shallowCopy)(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n removed: Formatter.allowNull(this.boolean.bind(this)),\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n topics: Formatter.arrayOf(hash),\n transactionHash: hash,\n logIndex: number,\n };\n return formats;\n };\n Formatter.prototype.accessList = function (accessList) {\n return (0, transactions_1.accessListify)(accessList || []);\n };\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n Formatter.prototype.number = function (number) {\n if (number === \"0x\") {\n return 0;\n }\n return bignumber_1.BigNumber.from(number).toNumber();\n };\n Formatter.prototype.type = function (number) {\n if (number === \"0x\" || number == null) {\n return 0;\n }\n return bignumber_1.BigNumber.from(number).toNumber();\n };\n // Strict! Used on input.\n Formatter.prototype.bigNumber = function (value) {\n return bignumber_1.BigNumber.from(value);\n };\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n Formatter.prototype.boolean = function (value) {\n if (typeof (value) === \"boolean\") {\n return value;\n }\n if (typeof (value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n }\n throw new Error(\"invalid boolean - \" + value);\n };\n Formatter.prototype.hex = function (value, strict) {\n if (typeof (value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if ((0, bytes_1.isHexString)(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n };\n Formatter.prototype.data = function (value, strict) {\n var result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n };\n // Requires an address\n // Strict! Used on input.\n Formatter.prototype.address = function (value) {\n return (0, address_1.getAddress)(value);\n };\n Formatter.prototype.callAddress = function (value) {\n if (!(0, bytes_1.isHexString)(value, 32)) {\n return null;\n }\n var address = (0, address_1.getAddress)((0, bytes_1.hexDataSlice)(value, 12));\n return (address === constants_1.AddressZero) ? null : address;\n };\n Formatter.prototype.contractAddress = function (value) {\n return (0, address_1.getContractAddress)(value);\n };\n // Strict! Used on input.\n Formatter.prototype.blockTag = function (blockTag) {\n if (blockTag == null) {\n return \"latest\";\n }\n if (blockTag === \"earliest\") {\n return \"0x0\";\n }\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\":\n case \"pending\":\n case \"safe\":\n case \"finalized\":\n return blockTag;\n }\n if (typeof (blockTag) === \"number\" || (0, bytes_1.isHexString)(blockTag)) {\n return (0, bytes_1.hexValue)(blockTag);\n }\n throw new Error(\"invalid blockTag\");\n };\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n Formatter.prototype.hash = function (value, strict) {\n var result = this.hex(value, strict);\n if ((0, bytes_1.hexDataLength)(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n };\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n Formatter.prototype.difficulty = function (value) {\n if (value == null) {\n return null;\n }\n var v = bignumber_1.BigNumber.from(value);\n try {\n return v.toNumber();\n }\n catch (error) { }\n return null;\n };\n Formatter.prototype.uint256 = function (value) {\n if (!(0, bytes_1.isHexString)(value)) {\n throw new Error(\"invalid uint256\");\n }\n return (0, bytes_1.hexZeroPad)(value, 32);\n };\n Formatter.prototype._block = function (value, format) {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n var difficulty = (value._difficulty != null) ? value._difficulty : value.difficulty;\n var result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null : bignumber_1.BigNumber.from(difficulty));\n return result;\n };\n Formatter.prototype.block = function (value) {\n return this._block(value, this.formats.block);\n };\n Formatter.prototype.blockWithTransactions = function (value) {\n return this._block(value, this.formats.blockWithTransactions);\n };\n // Strict! Used on input.\n Formatter.prototype.transactionRequest = function (value) {\n return Formatter.check(this.formats.transactionRequest, value);\n };\n Formatter.prototype.transactionResponse = function (transaction) {\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && bignumber_1.BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n if ((transaction.type === 1 || transaction.type === 2) && transaction.accessList == null) {\n transaction.accessList = [];\n }\n var result = Formatter.check(this.formats.transaction, transaction);\n if (transaction.chainId != null) {\n var chainId = transaction.chainId;\n if ((0, bytes_1.isHexString)(chainId)) {\n chainId = bignumber_1.BigNumber.from(chainId).toNumber();\n }\n result.chainId = chainId;\n }\n else {\n var chainId = transaction.networkId;\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n if ((0, bytes_1.isHexString)(chainId)) {\n chainId = bignumber_1.BigNumber.from(chainId).toNumber();\n }\n if (typeof (chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) {\n chainId = 0;\n }\n chainId = parseInt(chainId);\n }\n if (typeof (chainId) !== \"number\") {\n chainId = 0;\n }\n result.chainId = chainId;\n }\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n return result;\n };\n Formatter.prototype.transaction = function (value) {\n return (0, transactions_1.parse)(value);\n };\n Formatter.prototype.receiptLog = function (value) {\n return Formatter.check(this.formats.receiptLog, value);\n };\n Formatter.prototype.receipt = function (value) {\n var result = Formatter.check(this.formats.receipt, value);\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n var value_1 = bignumber_1.BigNumber.from(result.root).toNumber();\n if (value_1 === 0 || value_1 === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value_1)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value_1;\n delete result.root;\n }\n else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n }\n else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n if (result.status != null) {\n result.byzantium = true;\n }\n return result;\n };\n Formatter.prototype.topics = function (value) {\n var _this = this;\n if (Array.isArray(value)) {\n return value.map(function (v) { return _this.topics(v); });\n }\n else if (value != null) {\n return this.hash(value, true);\n }\n return null;\n };\n Formatter.prototype.filter = function (value) {\n return Formatter.check(this.formats.filter, value);\n };\n Formatter.prototype.filterLog = function (value) {\n return Formatter.check(this.formats.filterLog, value);\n };\n Formatter.check = function (format, object) {\n var result = {};\n for (var key in format) {\n try {\n var value = format[key](object[key]);\n if (value !== undefined) {\n result[key] = value;\n }\n }\n catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n };\n // if value is null-ish, nullValue is returned\n Formatter.allowNull = function (format, nullValue) {\n return (function (value) {\n if (value == null) {\n return nullValue;\n }\n return format(value);\n });\n };\n // If value is false-ish, replaceValue is returned\n Formatter.allowFalsish = function (format, replaceValue) {\n return (function (value) {\n if (!value) {\n return replaceValue;\n }\n return format(value);\n });\n };\n // Requires an Array satisfying check\n Formatter.arrayOf = function (format) {\n return (function (array) {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n var result = [];\n array.forEach(function (value) {\n result.push(format(value));\n });\n return result;\n });\n };\n return Formatter;\n}());\nexports.Formatter = Formatter;\nfunction isCommunityResourcable(value) {\n return (value && typeof (value.isCommunityResource) === \"function\");\n}\nexports.isCommunityResourcable = isCommunityResourcable;\nfunction isCommunityResource(value) {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\nexports.isCommunityResource = isCommunityResource;\n// Show the throttle message only once\nvar throttleMessage = false;\nfunction showThrottleMessage() {\n if (throttleMessage) {\n return;\n }\n throttleMessage = true;\n console.log(\"========= NOTICE =========\");\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\nexports.showThrottleMessage = showThrottleMessage;\n//# sourceMappingURL=formatter.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseProvider = exports.Resolver = exports.Event = void 0;\nvar abstract_provider_1 = require(\"@ethersproject/abstract-provider\");\nvar base64_1 = require(\"@ethersproject/base64\");\nvar basex_1 = require(\"@ethersproject/basex\");\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar constants_1 = require(\"@ethersproject/constants\");\nvar hash_1 = require(\"@ethersproject/hash\");\nvar networks_1 = require(\"@ethersproject/networks\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar sha2_1 = require(\"@ethersproject/sha2\");\nvar strings_1 = require(\"@ethersproject/strings\");\nvar web_1 = require(\"@ethersproject/web\");\nvar bech32_1 = __importDefault(require(\"bech32\"));\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar formatter_1 = require(\"./formatter\");\nvar MAX_CCIP_REDIRECTS = 10;\n//////////////////////////////\n// Event Serializeing\nfunction checkTopic(topic) {\n if (topic == null) {\n return \"null\";\n }\n if ((0, bytes_1.hexDataLength)(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\nfunction serializeTopics(topics) {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) {\n topics.pop();\n }\n return topics.map(function (topic) {\n if (Array.isArray(topic)) {\n // Only track unique OR-topics\n var unique_1 = {};\n topic.forEach(function (topic) {\n unique_1[checkTopic(topic)] = true;\n });\n // The order of OR-topics does not matter\n var sorted = Object.keys(unique_1);\n sorted.sort();\n return sorted.join(\"|\");\n }\n else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\nfunction deserializeTopics(data) {\n if (data === \"\") {\n return [];\n }\n return data.split(/&/g).map(function (topic) {\n if (topic === \"\") {\n return [];\n }\n var comps = topic.split(\"|\").map(function (topic) {\n return ((topic === \"null\") ? null : topic);\n });\n return ((comps.length === 1) ? comps[0] : comps);\n });\n}\nfunction getEventTag(eventName) {\n if (typeof (eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n if ((0, bytes_1.hexDataLength)(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n }\n else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n }\n else if (abstract_provider_1.ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n }\n else if (eventName && typeof (eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n throw new Error(\"invalid event - \" + eventName);\n}\n//////////////////////////////\n// Helper Object\nfunction getTime() {\n return (new Date()).getTime();\n}\nfunction stall(duration) {\n return new Promise(function (resolve) {\n setTimeout(resolve, duration);\n });\n}\n//////////////////////////////\n// Provider Object\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\nvar PollableEvents = [\"block\", \"network\", \"pending\", \"poll\"];\nvar Event = /** @class */ (function () {\n function Event(tag, listener, once) {\n (0, properties_1.defineReadOnly)(this, \"tag\", tag);\n (0, properties_1.defineReadOnly)(this, \"listener\", listener);\n (0, properties_1.defineReadOnly)(this, \"once\", once);\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n Object.defineProperty(Event.prototype, \"event\", {\n get: function () {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"type\", {\n get: function () {\n return this.tag.split(\":\")[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"hash\", {\n get: function () {\n var comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") {\n return null;\n }\n return comps[1];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"filter\", {\n get: function () {\n var comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") {\n return null;\n }\n var address = comps[1];\n var topics = deserializeTopics(comps[2]);\n var filter = {};\n if (topics.length > 0) {\n filter.topics = topics;\n }\n if (address && address !== \"*\") {\n filter.address = address;\n }\n return filter;\n },\n enumerable: false,\n configurable: true\n });\n Event.prototype.pollable = function () {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n };\n return Event;\n}());\nexports.Event = Event;\n;\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nvar coinInfos = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\nfunction bytes32ify(value) {\n return (0, bytes_1.hexZeroPad)(bignumber_1.BigNumber.from(value).toHexString(), 32);\n}\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data) {\n return basex_1.Base58.encode((0, bytes_1.concat)([data, (0, bytes_1.hexDataSlice)((0, sha2_1.sha256)((0, sha2_1.sha256)(data)), 0, 4)]));\n}\nvar matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nvar matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\nfunction _parseString(result, start) {\n try {\n return (0, strings_1.toUtf8String)(_parseBytes(result, start));\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n var offset = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(result, start, start + 32)).toNumber();\n var length = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(result, offset, offset + 32)).toNumber();\n return (0, bytes_1.hexDataSlice)(result, offset + 32, offset + 32 + length);\n}\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n return \"https://gateway.ipfs.io/ipfs/\" + link;\n}\nfunction numPad(value) {\n var result = (0, bytes_1.arrayify)(value);\n if (result.length > 32) {\n throw new Error(\"internal; should not happen\");\n }\n var padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n var result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n var result = [];\n var byteCount = 0;\n // Add place-holders for pointers as we add items\n for (var i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n for (var i = 0; i < datas.length; i++) {\n var data = (0, bytes_1.arrayify)(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n return (0, bytes_1.hexConcat)(result);\n}\nvar Resolver = /** @class */ (function () {\n // The resolvedAddress is only for creating a ReverseLookup resolver\n function Resolver(provider, address, name, resolvedAddress) {\n (0, properties_1.defineReadOnly)(this, \"provider\", provider);\n (0, properties_1.defineReadOnly)(this, \"name\", name);\n (0, properties_1.defineReadOnly)(this, \"address\", provider.formatter.address(address));\n (0, properties_1.defineReadOnly)(this, \"_resolvedAddress\", resolvedAddress);\n }\n Resolver.prototype.supportsWildcard = function () {\n var _this = this;\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then(function (result) {\n return bignumber_1.BigNumber.from(result).eq(1);\n }).catch(function (error) {\n if (error.code === logger_1.Logger.errors.CALL_EXCEPTION) {\n return false;\n }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n _this._supportsEip2544 = null;\n throw error;\n });\n }\n return this._supportsEip2544;\n };\n Resolver.prototype._fetch = function (selector, parameters) {\n return __awaiter(this, void 0, void 0, function () {\n var tx, parseBytes, result, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: (0, bytes_1.hexConcat)([selector, (0, hash_1.namehash)(this.name), (parameters || \"0x\")])\n };\n parseBytes = false;\n return [4 /*yield*/, this.supportsWildcard()];\n case 1:\n if (_a.sent()) {\n parseBytes = true;\n // selector(\"resolve(bytes,bytes)\")\n tx.data = (0, bytes_1.hexConcat)([\"0x9061b923\", encodeBytes([(0, hash_1.dnsEncode)(this.name), tx.data])]);\n }\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.provider.call(tx)];\n case 3:\n result = _a.sent();\n if (((0, bytes_1.arrayify)(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", logger_1.Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) {\n result = _parseBytes(result, 0);\n }\n return [2 /*return*/, result];\n case 4:\n error_1 = _a.sent();\n if (error_1.code === logger_1.Logger.errors.CALL_EXCEPTION) {\n return [2 /*return*/, null];\n }\n throw error_1;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Resolver.prototype._fetchBytes = function (selector, parameters) {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._fetch(selector, parameters)];\n case 1:\n result = _a.sent();\n if (result != null) {\n return [2 /*return*/, _parseBytes(result, 0)];\n }\n return [2 /*return*/, null];\n }\n });\n });\n };\n Resolver.prototype._getAddress = function (coinType, hexBytes) {\n var coinInfo = coinInfos[String(coinType)];\n if (coinInfo == null) {\n logger.throwError(\"unsupported coin type: \" + coinType, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress(\" + coinType + \")\"\n });\n }\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n var bytes = (0, bytes_1.arrayify)(hexBytes);\n // P2PKH: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n var p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n var length_1 = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length_1 * 2 && length_1 >= 1 && length_1 <= 75) {\n return base58Encode((0, bytes_1.concat)([[coinInfo.p2pkh], (\"0x\" + p2pkh[2])]));\n }\n }\n }\n // P2SH: OP_HASH160 <scriptHash> OP_EQUAL\n if (coinInfo.p2sh != null) {\n var p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n var length_2 = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length_2 * 2 && length_2 >= 1 && length_2 <= 75) {\n return base58Encode((0, bytes_1.concat)([[coinInfo.p2sh], (\"0x\" + p2sh[2])]));\n }\n }\n }\n // Bech32\n if (coinInfo.prefix != null) {\n var length_3 = bytes[1];\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n var version_1 = bytes[0];\n if (version_1 === 0x00) {\n if (length_3 !== 20 && length_3 !== 32) {\n version_1 = -1;\n }\n }\n else {\n version_1 = -1;\n }\n if (version_1 >= 0 && bytes.length === 2 + length_3 && length_3 >= 1 && length_3 <= 75) {\n var words = bech32_1.default.toWords(bytes.slice(2));\n words.unshift(version_1);\n return bech32_1.default.encode(coinInfo.prefix, words);\n }\n }\n return null;\n };\n Resolver.prototype.getAddress = function (coinType) {\n return __awaiter(this, void 0, void 0, function () {\n var result, error_2, hexBytes, address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (coinType == null) {\n coinType = 60;\n }\n if (!(coinType === 60)) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._fetch(\"0x3b3b57de\")];\n case 2:\n result = _a.sent();\n // No address\n if (result === \"0x\" || result === constants_1.HashZero) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, this.provider.formatter.callAddress(result)];\n case 3:\n error_2 = _a.sent();\n if (error_2.code === logger_1.Logger.errors.CALL_EXCEPTION) {\n return [2 /*return*/, null];\n }\n throw error_2;\n case 4: return [4 /*yield*/, this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType))];\n case 5:\n hexBytes = _a.sent();\n // No address\n if (hexBytes == null || hexBytes === \"0x\") {\n return [2 /*return*/, null];\n }\n address = this._getAddress(coinType, hexBytes);\n if (address == null) {\n logger.throwError(\"invalid or unsupported coin data\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress(\" + coinType + \")\",\n coinType: coinType,\n data: hexBytes\n });\n }\n return [2 /*return*/, address];\n }\n });\n });\n };\n Resolver.prototype.getAvatar = function () {\n return __awaiter(this, void 0, void 0, function () {\n var linkage, avatar, i, match, scheme, _a, selector, owner, _b, comps, addr, tokenId, tokenOwner, _c, _d, balance, _e, _f, tx, metadataUrl, _g, metadata, imageUrl, ipfs, error_3;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n linkage = [{ type: \"name\", content: this.name }];\n _h.label = 1;\n case 1:\n _h.trys.push([1, 19, , 20]);\n return [4 /*yield*/, this.getText(\"avatar\")];\n case 2:\n avatar = _h.sent();\n if (avatar == null) {\n return [2 /*return*/, null];\n }\n i = 0;\n _h.label = 3;\n case 3:\n if (!(i < matchers.length)) return [3 /*break*/, 18];\n match = avatar.match(matchers[i]);\n if (match == null) {\n return [3 /*break*/, 17];\n }\n scheme = match[1].toLowerCase();\n _a = scheme;\n switch (_a) {\n case \"https\": return [3 /*break*/, 4];\n case \"data\": return [3 /*break*/, 5];\n case \"ipfs\": return [3 /*break*/, 6];\n case \"erc721\": return [3 /*break*/, 7];\n case \"erc1155\": return [3 /*break*/, 7];\n }\n return [3 /*break*/, 17];\n case 4:\n linkage.push({ type: \"url\", content: avatar });\n return [2 /*return*/, { linkage: linkage, url: avatar }];\n case 5:\n linkage.push({ type: \"data\", content: avatar });\n return [2 /*return*/, { linkage: linkage, url: avatar }];\n case 6:\n linkage.push({ type: \"ipfs\", content: avatar });\n return [2 /*return*/, { linkage: linkage, url: getIpfsLink(avatar) }];\n case 7:\n selector = (scheme === \"erc721\") ? \"0xc87b56dd\" : \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n _b = this._resolvedAddress;\n if (_b) return [3 /*break*/, 9];\n return [4 /*yield*/, this.getAddress()];\n case 8:\n _b = (_h.sent());\n _h.label = 9;\n case 9:\n owner = (_b);\n comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, this.provider.formatter.address(comps[0])];\n case 10:\n addr = _h.sent();\n tokenId = (0, bytes_1.hexZeroPad)(bignumber_1.BigNumber.from(comps[1]).toHexString(), 32);\n if (!(scheme === \"erc721\")) return [3 /*break*/, 12];\n _d = (_c = this.provider.formatter).callAddress;\n return [4 /*yield*/, this.provider.call({\n to: addr, data: (0, bytes_1.hexConcat)([\"0x6352211e\", tokenId])\n })];\n case 11:\n tokenOwner = _d.apply(_c, [_h.sent()]);\n if (owner !== tokenOwner) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"owner\", content: tokenOwner });\n return [3 /*break*/, 14];\n case 12:\n if (!(scheme === \"erc1155\")) return [3 /*break*/, 14];\n _f = (_e = bignumber_1.BigNumber).from;\n return [4 /*yield*/, this.provider.call({\n to: addr, data: (0, bytes_1.hexConcat)([\"0x00fdd58e\", (0, bytes_1.hexZeroPad)(owner, 32), tokenId])\n })];\n case 13:\n balance = _f.apply(_e, [_h.sent()]);\n if (balance.isZero()) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"balance\", content: balance.toString() });\n _h.label = 14;\n case 14:\n tx = {\n to: this.provider.formatter.address(comps[0]),\n data: (0, bytes_1.hexConcat)([selector, tokenId])\n };\n _g = _parseString;\n return [4 /*yield*/, this.provider.call(tx)];\n case 15:\n metadataUrl = _g.apply(void 0, [_h.sent(), 0]);\n if (metadataUrl == null) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n return [4 /*yield*/, (0, web_1.fetchJson)(metadataUrl)];\n case 16:\n metadata = _h.sent();\n if (!metadata) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n return [2 /*return*/, null];\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", content: imageUrl });\n return [2 /*return*/, { linkage: linkage, url: imageUrl }];\n case 17:\n i++;\n return [3 /*break*/, 3];\n case 18: return [3 /*break*/, 20];\n case 19:\n error_3 = _h.sent();\n return [3 /*break*/, 20];\n case 20: return [2 /*return*/, null];\n }\n });\n });\n };\n Resolver.prototype.getContentHash = function () {\n return __awaiter(this, void 0, void 0, function () {\n var hexBytes, ipfs, length_4, ipns, length_5, swarm, skynet, urlSafe_1, hash;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._fetchBytes(\"0xbc1c58d1\")];\n case 1:\n hexBytes = _a.sent();\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n return [2 /*return*/, null];\n }\n ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n length_4 = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length_4 * 2) {\n return [2 /*return*/, \"ipfs:/\\/\" + basex_1.Base58.encode(\"0x\" + ipfs[1])];\n }\n }\n ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n length_5 = parseInt(ipns[3], 16);\n if (ipns[4].length === length_5 * 2) {\n return [2 /*return*/, \"ipns:/\\/\" + basex_1.Base58.encode(\"0x\" + ipns[1])];\n }\n }\n swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/);\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return [2 /*return*/, \"bzz:/\\/\" + swarm[1]];\n }\n }\n skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n urlSafe_1 = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n hash = (0, base64_1.encode)(\"0x\" + skynet[1]).replace(/[=+\\/]/g, function (a) { return (urlSafe_1[a]); });\n return [2 /*return*/, \"sia:/\\/\" + hash];\n }\n }\n return [2 /*return*/, logger.throwError(\"invalid or unsupported content hash data\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n })];\n }\n });\n });\n };\n Resolver.prototype.getText = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var keyBytes, hexBytes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n keyBytes = (0, strings_1.toUtf8Bytes)(key);\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = (0, bytes_1.concat)([bytes32ify(64), bytes32ify(keyBytes.length), keyBytes]);\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = (0, bytes_1.concat)([keyBytes, (0, bytes_1.hexZeroPad)(\"0x\", 32 - (key.length % 32))]);\n }\n return [4 /*yield*/, this._fetchBytes(\"0x59d1d43c\", (0, bytes_1.hexlify)(keyBytes))];\n case 1:\n hexBytes = _a.sent();\n if (hexBytes == null || hexBytes === \"0x\") {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, (0, strings_1.toUtf8String)(hexBytes)];\n }\n });\n });\n };\n return Resolver;\n}());\nexports.Resolver = Resolver;\nvar defaultFormatter = null;\nvar nextPollId = 1;\nvar BaseProvider = /** @class */ (function (_super) {\n __extends(BaseProvider, _super);\n /**\n * ready\n *\n * A Promise<Network> that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n function BaseProvider(network) {\n var _newTarget = this.constructor;\n var _this = _super.call(this) || this;\n // Events being listened to\n _this._events = [];\n _this._emitted = { block: -2 };\n _this.disableCcipRead = false;\n _this.formatter = _newTarget.getFormatter();\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n (0, properties_1.defineReadOnly)(_this, \"anyNetwork\", (network === \"any\"));\n if (_this.anyNetwork) {\n network = _this.detectNetwork();\n }\n if (network instanceof Promise) {\n _this._networkPromise = network;\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch(function (error) { });\n // Trigger initial network setting (async)\n _this._ready().catch(function (error) { });\n }\n else {\n var knownNetwork = (0, properties_1.getStatic)(_newTarget, \"getNetwork\")(network);\n if (knownNetwork) {\n (0, properties_1.defineReadOnly)(_this, \"_network\", knownNetwork);\n _this.emit(\"network\", knownNetwork, null);\n }\n else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n _this._maxInternalBlockNumber = -1024;\n _this._lastBlockNumber = -2;\n _this._maxFilterBlockRange = 10;\n _this._pollingInterval = 4000;\n _this._fastQueryDate = 0;\n return _this;\n }\n BaseProvider.prototype._ready = function () {\n return __awaiter(this, void 0, void 0, function () {\n var network, error_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this._network == null)) return [3 /*break*/, 7];\n network = null;\n if (!this._networkPromise) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._networkPromise];\n case 2:\n network = _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_4 = _a.sent();\n return [3 /*break*/, 4];\n case 4:\n if (!(network == null)) return [3 /*break*/, 6];\n return [4 /*yield*/, this.detectNetwork()];\n case 5:\n network = _a.sent();\n _a.label = 6;\n case 6:\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", logger_1.Logger.errors.UNKNOWN_ERROR, {});\n }\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n }\n else {\n (0, properties_1.defineReadOnly)(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n _a.label = 7;\n case 7: return [2 /*return*/, this._network];\n }\n });\n });\n };\n Object.defineProperty(BaseProvider.prototype, \"ready\", {\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get: function () {\n var _this = this;\n return (0, web_1.poll)(function () {\n return _this._ready().then(function (network) {\n return network;\n }, function (error) {\n // If the network isn't running yet, we will wait\n if (error.code === logger_1.Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n },\n enumerable: false,\n configurable: true\n });\n // @TODO: Remove this and just create a singleton formatter\n BaseProvider.getFormatter = function () {\n if (defaultFormatter == null) {\n defaultFormatter = new formatter_1.Formatter();\n }\n return defaultFormatter;\n };\n // @TODO: Remove this and just use getNetwork\n BaseProvider.getNetwork = function (network) {\n return (0, networks_1.getNetwork)((network == null) ? \"homestead\" : network);\n };\n BaseProvider.prototype.ccipReadFetch = function (tx, calldata, urls) {\n return __awaiter(this, void 0, void 0, function () {\n var sender, data, errorMessages, i, url, href, json, result, errorMessage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.disableCcipRead || urls.length === 0) {\n return [2 /*return*/, null];\n }\n sender = tx.to.toLowerCase();\n data = calldata.toLowerCase();\n errorMessages = [];\n i = 0;\n _a.label = 1;\n case 1:\n if (!(i < urls.length)) return [3 /*break*/, 4];\n url = urls[i];\n href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n json = (url.indexOf(\"{data}\") >= 0) ? null : JSON.stringify({ data: data, sender: sender });\n return [4 /*yield*/, (0, web_1.fetchJson)({ url: href, errorPassThrough: true }, json, function (value, response) {\n value.status = response.statusCode;\n return value;\n })];\n case 2:\n result = _a.sent();\n if (result.data) {\n return [2 /*return*/, result.data];\n }\n errorMessage = (result.message || \"unknown error\");\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return [2 /*return*/, logger.throwError(\"response not found during CCIP fetch: \" + errorMessage, logger_1.Logger.errors.SERVER_ERROR, { url: url, errorMessage: errorMessage })];\n }\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n _a.label = 3;\n case 3:\n i++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/, logger.throwError(\"error encountered during CCIP fetch: \" + errorMessages.map(function (m) { return JSON.stringify(m); }).join(\", \"), logger_1.Logger.errors.SERVER_ERROR, {\n urls: urls,\n errorMessages: errorMessages\n })];\n }\n });\n });\n };\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n BaseProvider.prototype._getInternalBlockNumber = function (maxAge) {\n return __awaiter(this, void 0, void 0, function () {\n var internalBlockNumber, result, error_5, reqTime, checkInternalBlockNumber;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ready()];\n case 1:\n _a.sent();\n if (!(maxAge > 0)) return [3 /*break*/, 7];\n _a.label = 2;\n case 2:\n if (!this._internalBlockNumber) return [3 /*break*/, 7];\n internalBlockNumber = this._internalBlockNumber;\n _a.label = 3;\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, internalBlockNumber];\n case 4:\n result = _a.sent();\n if ((getTime() - result.respTime) <= maxAge) {\n return [2 /*return*/, result.blockNumber];\n }\n // Too old; fetch a new value\n return [3 /*break*/, 7];\n case 5:\n error_5 = _a.sent();\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n return [3 /*break*/, 7];\n }\n return [3 /*break*/, 6];\n case 6: return [3 /*break*/, 2];\n case 7:\n reqTime = getTime();\n checkInternalBlockNumber = (0, properties_1.resolveProperties)({\n blockNumber: this.perform(\"getBlockNumber\", {}),\n networkError: this.getNetwork().then(function (network) { return (null); }, function (error) { return (error); })\n }).then(function (_a) {\n var blockNumber = _a.blockNumber, networkError = _a.networkError;\n if (networkError) {\n // Unremember this bad internal block number\n if (_this._internalBlockNumber === checkInternalBlockNumber) {\n _this._internalBlockNumber = null;\n }\n throw networkError;\n }\n var respTime = getTime();\n blockNumber = bignumber_1.BigNumber.from(blockNumber).toNumber();\n if (blockNumber < _this._maxInternalBlockNumber) {\n blockNumber = _this._maxInternalBlockNumber;\n }\n _this._maxInternalBlockNumber = blockNumber;\n _this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber: blockNumber, reqTime: reqTime, respTime: respTime };\n });\n this._internalBlockNumber = checkInternalBlockNumber;\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch(function (error) {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (_this._internalBlockNumber === checkInternalBlockNumber) {\n _this._internalBlockNumber = null;\n }\n });\n return [4 /*yield*/, checkInternalBlockNumber];\n case 8: return [2 /*return*/, (_a.sent()).blockNumber];\n }\n });\n });\n };\n BaseProvider.prototype.poll = function () {\n return __awaiter(this, void 0, void 0, function () {\n var pollId, runners, blockNumber, error_6, i;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n pollId = nextPollId++;\n runners = [];\n blockNumber = null;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._getInternalBlockNumber(100 + this.pollingInterval / 2)];\n case 2:\n blockNumber = _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_6 = _a.sent();\n this.emit(\"error\", error_6);\n return [2 /*return*/];\n case 4:\n this._setFastBlockNumber(blockNumber);\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return [2 /*return*/];\n }\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n if (Math.abs((this._emitted.block) - blockNumber) > 1000) {\n logger.warn(\"network block skew detected; skipping block events (emitted=\" + this._emitted.block + \" blockNumber\" + blockNumber + \")\");\n this.emit(\"error\", logger.makeError(\"network block skew detected\", logger_1.Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n }\n else {\n // Notify all listener for each block that has passed\n for (i = this._emitted.block + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n // The emitted block was updated, check for obsolete events\n if (this._emitted.block !== blockNumber) {\n this._emitted.block = blockNumber;\n Object.keys(this._emitted).forEach(function (key) {\n // The block event does not expire\n if (key === \"block\") {\n return;\n }\n // The block we were at when we emitted this event\n var eventBlockNumber = _this._emitted[key];\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") {\n return;\n }\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete _this._emitted[key];\n }\n });\n }\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach(function (event) {\n switch (event.type) {\n case \"tx\": {\n var hash_2 = event.hash;\n var runner = _this.getTransactionReceipt(hash_2).then(function (receipt) {\n if (!receipt || receipt.blockNumber == null) {\n return null;\n }\n _this._emitted[\"t:\" + hash_2] = receipt.blockNumber;\n _this.emit(hash_2, receipt);\n return null;\n }).catch(function (error) { _this.emit(\"error\", error); });\n runners.push(runner);\n break;\n }\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n var filter_1 = event.filter;\n filter_1.fromBlock = event._lastBlockNumber + 1;\n filter_1.toBlock = blockNumber;\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n var minFromBlock = filter_1.toBlock - _this._maxFilterBlockRange;\n if (minFromBlock > filter_1.fromBlock) {\n filter_1.fromBlock = minFromBlock;\n }\n if (filter_1.fromBlock < 0) {\n filter_1.fromBlock = 0;\n }\n var runner = _this.getLogs(filter_1).then(function (logs) {\n // Allow the next getLogs\n event._inflight = false;\n if (logs.length === 0) {\n return;\n }\n logs.forEach(function (log) {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n // Make sure we stall requests to fetch blocks and txs\n _this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n _this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n _this.emit(filter_1, log);\n });\n }).catch(function (error) {\n _this.emit(\"error\", error);\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n break;\n }\n }\n });\n this._lastBlockNumber = blockNumber;\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(function () {\n _this.emit(\"didPoll\", pollId);\n }).catch(function (error) { _this.emit(\"error\", error); });\n return [2 /*return*/];\n }\n });\n });\n };\n // Deprecated; do not use this\n BaseProvider.prototype.resetEventsBlock = function (blockNumber) {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) {\n this.poll();\n }\n };\n Object.defineProperty(BaseProvider.prototype, \"network\", {\n get: function () {\n return this._network;\n },\n enumerable: false,\n configurable: true\n });\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n BaseProvider.prototype.detectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, logger.throwError(\"provider does not support network detection\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n })];\n });\n });\n };\n BaseProvider.prototype.getNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n var network, currentNetwork, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ready()];\n case 1:\n network = _a.sent();\n return [4 /*yield*/, this.detectNetwork()];\n case 2:\n currentNetwork = _a.sent();\n if (!(network.chainId !== currentNetwork.chainId)) return [3 /*break*/, 5];\n if (!this.anyNetwork) return [3 /*break*/, 4];\n this._network = currentNetwork;\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n return [4 /*yield*/, stall(0)];\n case 3:\n _a.sent();\n return [2 /*return*/, this._network];\n case 4:\n error = logger.makeError(\"underlying network changed\", logger_1.Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n this.emit(\"error\", error);\n throw error;\n case 5: return [2 /*return*/, network];\n }\n });\n });\n };\n Object.defineProperty(BaseProvider.prototype, \"blockNumber\", {\n get: function () {\n var _this = this;\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then(function (blockNumber) {\n _this._setFastBlockNumber(blockNumber);\n }, function (error) { });\n return (this._fastBlockNumber != null) ? this._fastBlockNumber : -1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseProvider.prototype, \"polling\", {\n get: function () {\n return (this._poller != null);\n },\n set: function (value) {\n var _this = this;\n if (value && !this._poller) {\n this._poller = setInterval(function () { _this.poll(); }, this.pollingInterval);\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(function () {\n _this.poll();\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n _this._bootstrapPoll = setTimeout(function () {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!_this._poller) {\n _this.poll();\n }\n // Clear out the bootstrap so we can do another\n _this._bootstrapPoll = null;\n }, _this.pollingInterval);\n }, 0);\n }\n }\n else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseProvider.prototype, \"pollingInterval\", {\n get: function () {\n return this._pollingInterval;\n },\n set: function (value) {\n var _this = this;\n if (typeof (value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n this._pollingInterval = value;\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(function () { _this.poll(); }, this._pollingInterval);\n }\n },\n enumerable: false,\n configurable: true\n });\n BaseProvider.prototype._getFastBlockNumber = function () {\n var _this = this;\n var now = getTime();\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then(function (blockNumber) {\n if (_this._fastBlockNumber == null || blockNumber > _this._fastBlockNumber) {\n _this._fastBlockNumber = blockNumber;\n }\n return _this._fastBlockNumber;\n });\n }\n return this._fastBlockNumberPromise;\n };\n BaseProvider.prototype._setFastBlockNumber = function (blockNumber) {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) {\n return;\n }\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n };\n BaseProvider.prototype.waitForTransaction = function (transactionHash, confirmations, timeout) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._waitForTransaction(transactionHash, (confirmations == null) ? 1 : confirmations, timeout || 0, null)];\n });\n });\n };\n BaseProvider.prototype._waitForTransaction = function (transactionHash, confirmations, timeout, replaceable) {\n return __awaiter(this, void 0, void 0, function () {\n var receipt;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getTransactionReceipt(transactionHash)];\n case 1:\n receipt = _a.sent();\n // Receipt is already good\n if ((receipt ? receipt.confirmations : 0) >= confirmations) {\n return [2 /*return*/, receipt];\n }\n // Poll until the receipt is good...\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var cancelFuncs = [];\n var done = false;\n var alreadyDone = function () {\n if (done) {\n return true;\n }\n done = true;\n cancelFuncs.forEach(function (func) { func(); });\n return false;\n };\n var minedHandler = function (receipt) {\n if (receipt.confirmations < confirmations) {\n return;\n }\n if (alreadyDone()) {\n return;\n }\n resolve(receipt);\n };\n _this.on(transactionHash, minedHandler);\n cancelFuncs.push(function () { _this.removeListener(transactionHash, minedHandler); });\n if (replaceable) {\n var lastBlockNumber_1 = replaceable.startBlock;\n var scannedBlock_1 = null;\n var replaceHandler_1 = function (blockNumber) { return __awaiter(_this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (done) {\n return [2 /*return*/];\n }\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n return [4 /*yield*/, stall(1000)];\n case 1:\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n _a.sent();\n this.getTransactionCount(replaceable.from).then(function (nonce) { return __awaiter(_this, void 0, void 0, function () {\n var mined, block, ti, tx, receipt_1, reason;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (done) {\n return [2 /*return*/];\n }\n if (!(nonce <= replaceable.nonce)) return [3 /*break*/, 1];\n lastBlockNumber_1 = blockNumber;\n return [3 /*break*/, 9];\n case 1: return [4 /*yield*/, this.getTransaction(transactionHash)];\n case 2:\n mined = _a.sent();\n if (mined && mined.blockNumber != null) {\n return [2 /*return*/];\n }\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock_1 == null) {\n scannedBlock_1 = lastBlockNumber_1 - 3;\n if (scannedBlock_1 < replaceable.startBlock) {\n scannedBlock_1 = replaceable.startBlock;\n }\n }\n _a.label = 3;\n case 3:\n if (!(scannedBlock_1 <= blockNumber)) return [3 /*break*/, 9];\n if (done) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.getBlockWithTransactions(scannedBlock_1)];\n case 4:\n block = _a.sent();\n ti = 0;\n _a.label = 5;\n case 5:\n if (!(ti < block.transactions.length)) return [3 /*break*/, 8];\n tx = block.transactions[ti];\n // Successfully mined!\n if (tx.hash === transactionHash) {\n return [2 /*return*/];\n }\n if (!(tx.from === replaceable.from && tx.nonce === replaceable.nonce)) return [3 /*break*/, 7];\n if (done) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.waitForTransaction(tx.hash, confirmations)];\n case 6:\n receipt_1 = _a.sent();\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) {\n return [2 /*return*/];\n }\n reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n }\n else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\";\n }\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", logger_1.Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason: reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt: receipt_1\n }));\n return [2 /*return*/];\n case 7:\n ti++;\n return [3 /*break*/, 5];\n case 8:\n scannedBlock_1++;\n return [3 /*break*/, 3];\n case 9:\n if (done) {\n return [2 /*return*/];\n }\n this.once(\"block\", replaceHandler_1);\n return [2 /*return*/];\n }\n });\n }); }, function (error) {\n if (done) {\n return;\n }\n _this.once(\"block\", replaceHandler_1);\n });\n return [2 /*return*/];\n }\n });\n }); };\n if (done) {\n return;\n }\n _this.once(\"block\", replaceHandler_1);\n cancelFuncs.push(function () {\n _this.removeListener(\"block\", replaceHandler_1);\n });\n }\n if (typeof (timeout) === \"number\" && timeout > 0) {\n var timer_1 = setTimeout(function () {\n if (alreadyDone()) {\n return;\n }\n reject(logger.makeError(\"timeout exceeded\", logger_1.Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer_1.unref) {\n timer_1.unref();\n }\n cancelFuncs.push(function () { clearTimeout(timer_1); });\n }\n })];\n }\n });\n });\n };\n BaseProvider.prototype.getBlockNumber = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._getInternalBlockNumber(0)];\n });\n });\n };\n BaseProvider.prototype.getGasPrice = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.perform(\"getGasPrice\", {})];\n case 2:\n result = _a.sent();\n try {\n return [2 /*return*/, bignumber_1.BigNumber.from(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.getBalance = function (addressOrName, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getBalance\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, bignumber_1.BigNumber.from(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.getTransactionCount = function (addressOrName, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getTransactionCount\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, bignumber_1.BigNumber.from(result).toNumber()];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.getCode = function (addressOrName, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getCode\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, (0, bytes_1.hexlify)(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.getStorageAt = function (addressOrName, position, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then(function (p) { return (0, bytes_1.hexValue)(p); })\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getStorageAt\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, (0, bytes_1.hexlify)(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n // This should be called by any subclass wrapping a TransactionResponse\n BaseProvider.prototype._wrapTransaction = function (tx, hash, startBlock) {\n var _this = this;\n if (hash != null && (0, bytes_1.hexDataLength)(hash) !== 32) {\n throw new Error(\"invalid response - sendTransaction\");\n }\n var result = tx;\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", logger_1.Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n result.wait = function (confirms, timeout) { return __awaiter(_this, void 0, void 0, function () {\n var replacement, receipt;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (confirms == null) {\n confirms = 1;\n }\n if (timeout == null) {\n timeout = 0;\n }\n replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock: startBlock\n };\n }\n return [4 /*yield*/, this._waitForTransaction(tx.hash, confirms, timeout, replacement)];\n case 1:\n receipt = _a.sent();\n if (receipt == null && confirms === 0) {\n return [2 /*return*/, null];\n }\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", logger_1.Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return [2 /*return*/, receipt];\n }\n });\n }); };\n return result;\n };\n BaseProvider.prototype.sendTransaction = function (signedTransaction) {\n return __awaiter(this, void 0, void 0, function () {\n var hexTx, tx, blockNumber, hash, error_7;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, Promise.resolve(signedTransaction).then(function (t) { return (0, bytes_1.hexlify)(t); })];\n case 2:\n hexTx = _a.sent();\n tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) {\n tx.confirmations = 0;\n }\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 3:\n blockNumber = _a.sent();\n _a.label = 4;\n case 4:\n _a.trys.push([4, 6, , 7]);\n return [4 /*yield*/, this.perform(\"sendTransaction\", { signedTransaction: hexTx })];\n case 5:\n hash = _a.sent();\n return [2 /*return*/, this._wrapTransaction(tx, hash, blockNumber)];\n case 6:\n error_7 = _a.sent();\n error_7.transaction = tx;\n error_7.transactionHash = tx.hash;\n throw error_7;\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype._getTransactionRequest = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var values, tx, _a, _b;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, transaction];\n case 1:\n values = _c.sent();\n tx = {};\n [\"from\", \"to\"].forEach(function (key) {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then(function (v) { return (v ? _this._getAddress(v) : null); });\n });\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach(function (key) {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then(function (v) { return (v ? bignumber_1.BigNumber.from(v) : null); });\n });\n [\"type\"].forEach(function (key) {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then(function (v) { return ((v != null) ? v : null); });\n });\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n [\"data\"].forEach(function (key) {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then(function (v) { return (v ? (0, bytes_1.hexlify)(v) : null); });\n });\n _b = (_a = this.formatter).transactionRequest;\n return [4 /*yield*/, (0, properties_1.resolveProperties)(tx)];\n case 2: return [2 /*return*/, _b.apply(_a, [_c.sent()])];\n }\n });\n });\n };\n BaseProvider.prototype._getFilter = function (filter) {\n return __awaiter(this, void 0, void 0, function () {\n var result, _a, _b;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, filter];\n case 1:\n filter = _c.sent();\n result = {};\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n [\"blockHash\", \"topics\"].forEach(function (key) {\n if (filter[key] == null) {\n return;\n }\n result[key] = filter[key];\n });\n [\"fromBlock\", \"toBlock\"].forEach(function (key) {\n if (filter[key] == null) {\n return;\n }\n result[key] = _this._getBlockTag(filter[key]);\n });\n _b = (_a = this.formatter).filter;\n return [4 /*yield*/, (0, properties_1.resolveProperties)(result)];\n case 2: return [2 /*return*/, _b.apply(_a, [_c.sent()])];\n }\n });\n });\n };\n BaseProvider.prototype._call = function (transaction, blockTag, attempt) {\n return __awaiter(this, void 0, void 0, function () {\n var txSender, result, data, sender, urls, urlsOffset, urlsLength, urlsData, u, url, calldata, callbackSelector, extraData, ccipResult, tx, error_8;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", logger_1.Logger.errors.SERVER_ERROR, {\n redirects: attempt,\n transaction: transaction\n });\n }\n txSender = transaction.to;\n return [4 /*yield*/, this.perform(\"call\", { transaction: transaction, blockTag: blockTag })];\n case 1:\n result = _a.sent();\n if (!(attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && ((0, bytes_1.hexDataLength)(result) % 32 === 4))) return [3 /*break*/, 5];\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n data = (0, bytes_1.hexDataSlice)(result, 4);\n sender = (0, bytes_1.hexDataSlice)(data, 0, 32);\n if (!bignumber_1.BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", logger_1.Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction: transaction,\n data: result\n });\n }\n urls = [];\n urlsOffset = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(data, 32, 64)).toNumber();\n urlsLength = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(data, urlsOffset, urlsOffset + 32)).toNumber();\n urlsData = (0, bytes_1.hexDataSlice)(data, urlsOffset + 32);\n for (u = 0; u < urlsLength; u++) {\n url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", logger_1.Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction: transaction,\n data: result\n });\n }\n urls.push(url);\n }\n calldata = _parseBytes(data, 64);\n // Get the callbackSelector (bytes4)\n if (!bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", logger_1.Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction: transaction,\n data: result\n });\n }\n callbackSelector = (0, bytes_1.hexDataSlice)(data, 96, 100);\n extraData = _parseBytes(data, 128);\n return [4 /*yield*/, this.ccipReadFetch(transaction, calldata, urls)];\n case 3:\n ccipResult = _a.sent();\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", logger_1.Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction: transaction,\n data: result\n });\n }\n tx = {\n to: txSender,\n data: (0, bytes_1.hexConcat)([callbackSelector, encodeBytes([ccipResult, extraData])])\n };\n return [2 /*return*/, this._call(tx, blockTag, attempt + 1)];\n case 4:\n error_8 = _a.sent();\n if (error_8.code === logger_1.Logger.errors.SERVER_ERROR) {\n throw error_8;\n }\n return [3 /*break*/, 5];\n case 5:\n try {\n return [2 /*return*/, (0, bytes_1.hexlify)(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction: transaction, blockTag: blockTag },\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.call = function (transaction, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var resolved;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n })];\n case 2:\n resolved = _a.sent();\n return [2 /*return*/, this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0 : -1)];\n }\n });\n });\n };\n BaseProvider.prototype.estimateGas = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n transaction: this._getTransactionRequest(transaction)\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"estimateGas\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, bignumber_1.BigNumber.from(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype._getAddress = function (addressOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, addressOrName];\n case 1:\n addressOrName = _a.sent();\n if (typeof (addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n return [4 /*yield*/, this.resolveName(addressOrName)];\n case 2:\n address = _a.sent();\n if (address == null) {\n logger.throwError(\"ENS name not configured\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName(\" + JSON.stringify(addressOrName) + \")\"\n });\n }\n return [2 /*return*/, address];\n }\n });\n });\n };\n BaseProvider.prototype._getBlock = function (blockHashOrBlockTag, includeTransactions) {\n return __awaiter(this, void 0, void 0, function () {\n var blockNumber, params, _a, error_9;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _b.sent();\n return [4 /*yield*/, blockHashOrBlockTag];\n case 2:\n blockHashOrBlockTag = _b.sent();\n blockNumber = -128;\n params = {\n includeTransactions: !!includeTransactions\n };\n if (!(0, bytes_1.isHexString)(blockHashOrBlockTag, 32)) return [3 /*break*/, 3];\n params.blockHash = blockHashOrBlockTag;\n return [3 /*break*/, 6];\n case 3:\n _b.trys.push([3, 5, , 6]);\n _a = params;\n return [4 /*yield*/, this._getBlockTag(blockHashOrBlockTag)];\n case 4:\n _a.blockTag = _b.sent();\n if ((0, bytes_1.isHexString)(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n return [3 /*break*/, 6];\n case 5:\n error_9 = _b.sent();\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/, (0, web_1.poll)(function () { return __awaiter(_this, void 0, void 0, function () {\n var block, blockNumber_1, i, tx, confirmations, blockWithTxs;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.perform(\"getBlock\", params)];\n case 1:\n block = _a.sent();\n // Block was not found\n if (block == null) {\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) {\n return [2 /*return*/, null];\n }\n }\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) {\n return [2 /*return*/, null];\n }\n }\n // Retry on the next block\n return [2 /*return*/, undefined];\n }\n if (!includeTransactions) return [3 /*break*/, 8];\n blockNumber_1 = null;\n i = 0;\n _a.label = 2;\n case 2:\n if (!(i < block.transactions.length)) return [3 /*break*/, 7];\n tx = block.transactions[i];\n if (!(tx.blockNumber == null)) return [3 /*break*/, 3];\n tx.confirmations = 0;\n return [3 /*break*/, 6];\n case 3:\n if (!(tx.confirmations == null)) return [3 /*break*/, 6];\n if (!(blockNumber_1 == null)) return [3 /*break*/, 5];\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 4:\n blockNumber_1 = _a.sent();\n _a.label = 5;\n case 5:\n confirmations = (blockNumber_1 - tx.blockNumber) + 1;\n if (confirmations <= 0) {\n confirmations = 1;\n }\n tx.confirmations = confirmations;\n _a.label = 6;\n case 6:\n i++;\n return [3 /*break*/, 2];\n case 7:\n blockWithTxs = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map(function (tx) { return _this._wrapTransaction(tx); });\n return [2 /*return*/, blockWithTxs];\n case 8: return [2 /*return*/, this.formatter.block(block)];\n }\n });\n }); }, { oncePoll: this })];\n }\n });\n });\n };\n BaseProvider.prototype.getBlock = function (blockHashOrBlockTag) {\n return (this._getBlock(blockHashOrBlockTag, false));\n };\n BaseProvider.prototype.getBlockWithTransactions = function (blockHashOrBlockTag) {\n return (this._getBlock(blockHashOrBlockTag, true));\n };\n BaseProvider.prototype.getTransaction = function (transactionHash) {\n return __awaiter(this, void 0, void 0, function () {\n var params;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, transactionHash];\n case 2:\n transactionHash = _a.sent();\n params = { transactionHash: this.formatter.hash(transactionHash, true) };\n return [2 /*return*/, (0, web_1.poll)(function () { return __awaiter(_this, void 0, void 0, function () {\n var result, tx, blockNumber, confirmations;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.perform(\"getTransaction\", params)];\n case 1:\n result = _a.sent();\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, undefined];\n }\n tx = this.formatter.transactionResponse(result);\n if (!(tx.blockNumber == null)) return [3 /*break*/, 2];\n tx.confirmations = 0;\n return [3 /*break*/, 4];\n case 2:\n if (!(tx.confirmations == null)) return [3 /*break*/, 4];\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 3:\n blockNumber = _a.sent();\n confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) {\n confirmations = 1;\n }\n tx.confirmations = confirmations;\n _a.label = 4;\n case 4: return [2 /*return*/, this._wrapTransaction(tx)];\n }\n });\n }); }, { oncePoll: this })];\n }\n });\n });\n };\n BaseProvider.prototype.getTransactionReceipt = function (transactionHash) {\n return __awaiter(this, void 0, void 0, function () {\n var params;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, transactionHash];\n case 2:\n transactionHash = _a.sent();\n params = { transactionHash: this.formatter.hash(transactionHash, true) };\n return [2 /*return*/, (0, web_1.poll)(function () { return __awaiter(_this, void 0, void 0, function () {\n var result, receipt, blockNumber, confirmations;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.perform(\"getTransactionReceipt\", params)];\n case 1:\n result = _a.sent();\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, undefined];\n }\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) {\n return [2 /*return*/, undefined];\n }\n receipt = this.formatter.receipt(result);\n if (!(receipt.blockNumber == null)) return [3 /*break*/, 2];\n receipt.confirmations = 0;\n return [3 /*break*/, 4];\n case 2:\n if (!(receipt.confirmations == null)) return [3 /*break*/, 4];\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 3:\n blockNumber = _a.sent();\n confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) {\n confirmations = 1;\n }\n receipt.confirmations = confirmations;\n _a.label = 4;\n case 4: return [2 /*return*/, receipt];\n }\n });\n }); }, { oncePoll: this })];\n }\n });\n });\n };\n BaseProvider.prototype.getLogs = function (filter) {\n return __awaiter(this, void 0, void 0, function () {\n var params, logs;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({ filter: this._getFilter(filter) })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getLogs\", params)];\n case 3:\n logs = _a.sent();\n logs.forEach(function (log) {\n if (log.removed == null) {\n log.removed = false;\n }\n });\n return [2 /*return*/, formatter_1.Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs)];\n }\n });\n });\n };\n BaseProvider.prototype.getEtherPrice = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [2 /*return*/, this.perform(\"getEtherPrice\", {})];\n }\n });\n });\n };\n BaseProvider.prototype._getBlockTag = function (blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var blockNumber;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, blockTag];\n case 1:\n blockTag = _a.sent();\n if (!(typeof (blockTag) === \"number\" && blockTag < 0)) return [3 /*break*/, 3];\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 2:\n blockNumber = _a.sent();\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return [2 /*return*/, this.formatter.blockTag(blockNumber)];\n case 3: return [2 /*return*/, this.formatter.blockTag(blockTag)];\n }\n });\n });\n };\n BaseProvider.prototype.getResolver = function (name) {\n return __awaiter(this, void 0, void 0, function () {\n var currentName, addr, resolver, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n currentName = name;\n _b.label = 1;\n case 1:\n if (!true) return [3 /*break*/, 6];\n if (currentName === \"\" || currentName === \".\") {\n return [2 /*return*/, null];\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, this._getResolver(currentName, \"getResolver\")];\n case 2:\n addr = _b.sent();\n if (!(addr != null)) return [3 /*break*/, 5];\n resolver = new Resolver(this, addr, name);\n _a = currentName !== name;\n if (!_a) return [3 /*break*/, 4];\n return [4 /*yield*/, resolver.supportsWildcard()];\n case 3:\n _a = !(_b.sent());\n _b.label = 4;\n case 4:\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (_a) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, resolver];\n case 5:\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n return [3 /*break*/, 1];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype._getResolver = function (name, operation) {\n return __awaiter(this, void 0, void 0, function () {\n var network, addrData, error_10;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (operation == null) {\n operation = \"ENS\";\n }\n return [4 /*yield*/, this.getNetwork()];\n case 1:\n network = _a.sent();\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\"network does not support ENS\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: operation, network: network.name });\n }\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + (0, hash_1.namehash)(name).substring(2))\n })];\n case 3:\n addrData = _a.sent();\n return [2 /*return*/, this.formatter.callAddress(addrData)];\n case 4:\n error_10 = _a.sent();\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/, null];\n }\n });\n });\n };\n BaseProvider.prototype.resolveName = function (name) {\n return __awaiter(this, void 0, void 0, function () {\n var resolver;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, name];\n case 1:\n name = _a.sent();\n // If it is already an address, nothing to resolve\n try {\n return [2 /*return*/, Promise.resolve(this.formatter.address(name))];\n }\n catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if ((0, bytes_1.isHexString)(name)) {\n throw error;\n }\n }\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n return [4 /*yield*/, this.getResolver(name)];\n case 2:\n resolver = _a.sent();\n if (!resolver) {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, resolver.getAddress()];\n case 3: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n BaseProvider.prototype.lookupAddress = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var node, resolverAddr, name, _a, addr;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, address];\n case 1:\n address = _b.sent();\n address = this.formatter.address(address);\n node = address.substring(2).toLowerCase() + \".addr.reverse\";\n return [4 /*yield*/, this._getResolver(node, \"lookupAddress\")];\n case 2:\n resolverAddr = _b.sent();\n if (resolverAddr == null) {\n return [2 /*return*/, null];\n }\n _a = _parseString;\n return [4 /*yield*/, this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + (0, hash_1.namehash)(node).substring(2))\n })];\n case 3:\n name = _a.apply(void 0, [_b.sent(), 0]);\n return [4 /*yield*/, this.resolveName(name)];\n case 4:\n addr = _b.sent();\n if (addr != address) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, name];\n }\n });\n });\n };\n BaseProvider.prototype.getAvatar = function (nameOrAddress) {\n return __awaiter(this, void 0, void 0, function () {\n var resolver, address, node, resolverAddress, avatar_1, error_11, name_1, _a, error_12, avatar;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n resolver = null;\n if (!(0, bytes_1.isHexString)(nameOrAddress)) return [3 /*break*/, 10];\n address = this.formatter.address(nameOrAddress);\n node = address.substring(2).toLowerCase() + \".addr.reverse\";\n return [4 /*yield*/, this._getResolver(node, \"getAvatar\")];\n case 1:\n resolverAddress = _b.sent();\n if (!resolverAddress) {\n return [2 /*return*/, null];\n }\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n _b.label = 2;\n case 2:\n _b.trys.push([2, 4, , 5]);\n return [4 /*yield*/, resolver.getAvatar()];\n case 3:\n avatar_1 = _b.sent();\n if (avatar_1) {\n return [2 /*return*/, avatar_1.url];\n }\n return [3 /*break*/, 5];\n case 4:\n error_11 = _b.sent();\n if (error_11.code !== logger_1.Logger.errors.CALL_EXCEPTION) {\n throw error_11;\n }\n return [3 /*break*/, 5];\n case 5:\n _b.trys.push([5, 8, , 9]);\n _a = _parseString;\n return [4 /*yield*/, this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + (0, hash_1.namehash)(node).substring(2))\n })];\n case 6:\n name_1 = _a.apply(void 0, [_b.sent(), 0]);\n return [4 /*yield*/, this.getResolver(name_1)];\n case 7:\n resolver = _b.sent();\n return [3 /*break*/, 9];\n case 8:\n error_12 = _b.sent();\n if (error_12.code !== logger_1.Logger.errors.CALL_EXCEPTION) {\n throw error_12;\n }\n return [2 /*return*/, null];\n case 9: return [3 /*break*/, 12];\n case 10: return [4 /*yield*/, this.getResolver(nameOrAddress)];\n case 11:\n // ENS name; forward lookup with wildcard\n resolver = _b.sent();\n if (!resolver) {\n return [2 /*return*/, null];\n }\n _b.label = 12;\n case 12: return [4 /*yield*/, resolver.getAvatar()];\n case 13:\n avatar = _b.sent();\n if (avatar == null) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, avatar.url];\n }\n });\n });\n };\n BaseProvider.prototype.perform = function (method, params) {\n return logger.throwError(method + \" not implemented\", logger_1.Logger.errors.NOT_IMPLEMENTED, { operation: method });\n };\n BaseProvider.prototype._startEvent = function (event) {\n this.polling = (this._events.filter(function (e) { return e.pollable(); }).length > 0);\n };\n BaseProvider.prototype._stopEvent = function (event) {\n this.polling = (this._events.filter(function (e) { return e.pollable(); }).length > 0);\n };\n BaseProvider.prototype._addEventListener = function (eventName, listener, once) {\n var event = new Event(getEventTag(eventName), listener, once);\n this._events.push(event);\n this._startEvent(event);\n return this;\n };\n BaseProvider.prototype.on = function (eventName, listener) {\n return this._addEventListener(eventName, listener, false);\n };\n BaseProvider.prototype.once = function (eventName, listener) {\n return this._addEventListener(eventName, listener, true);\n };\n BaseProvider.prototype.emit = function (eventName) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var result = false;\n var stopped = [];\n var eventTag = getEventTag(eventName);\n this._events = this._events.filter(function (event) {\n if (event.tag !== eventTag) {\n return true;\n }\n setTimeout(function () {\n event.listener.apply(_this, args);\n }, 0);\n result = true;\n if (event.once) {\n stopped.push(event);\n return false;\n }\n return true;\n });\n stopped.forEach(function (event) { _this._stopEvent(event); });\n return result;\n };\n BaseProvider.prototype.listenerCount = function (eventName) {\n if (!eventName) {\n return this._events.length;\n }\n var eventTag = getEventTag(eventName);\n return this._events.filter(function (event) {\n return (event.tag === eventTag);\n }).length;\n };\n BaseProvider.prototype.listeners = function (eventName) {\n if (eventName == null) {\n return this._events.map(function (event) { return event.listener; });\n }\n var eventTag = getEventTag(eventName);\n return this._events\n .filter(function (event) { return (event.tag === eventTag); })\n .map(function (event) { return event.listener; });\n };\n BaseProvider.prototype.off = function (eventName, listener) {\n var _this = this;\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n var stopped = [];\n var found = false;\n var eventTag = getEventTag(eventName);\n this._events = this._events.filter(function (event) {\n if (event.tag !== eventTag || event.listener != listener) {\n return true;\n }\n if (found) {\n return true;\n }\n found = true;\n stopped.push(event);\n return false;\n });\n stopped.forEach(function (event) { _this._stopEvent(event); });\n return this;\n };\n BaseProvider.prototype.removeAllListeners = function (eventName) {\n var _this = this;\n var stopped = [];\n if (eventName == null) {\n stopped = this._events;\n this._events = [];\n }\n else {\n var eventTag_1 = getEventTag(eventName);\n this._events = this._events.filter(function (event) {\n if (event.tag !== eventTag_1) {\n return true;\n }\n stopped.push(event);\n return false;\n });\n }\n stopped.forEach(function (event) { _this._stopEvent(event); });\n return this;\n };\n return BaseProvider;\n}(abstract_provider_1.Provider));\nexports.BaseProvider = BaseProvider;\n//# sourceMappingURL=base-provider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"abstract-signer/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VoidSigner = exports.Signer = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar allowedTransactionKeys = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\nvar forwardErrors = [\n logger_1.Logger.errors.INSUFFICIENT_FUNDS,\n logger_1.Logger.errors.NONCE_EXPIRED,\n logger_1.Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n;\n;\nvar Signer = /** @class */ (function () {\n ///////////////////\n // Sub-classes MUST call super\n function Signer() {\n var _newTarget = this.constructor;\n logger.checkAbstract(_newTarget, Signer);\n (0, properties_1.defineReadOnly)(this, \"_isSigner\", true);\n }\n ///////////////////\n // Sub-classes MAY override these\n Signer.prototype.getBalance = function (blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getBalance\");\n return [4 /*yield*/, this.provider.getBalance(this.getAddress(), blockTag)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Signer.prototype.getTransactionCount = function (blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getTransactionCount\");\n return [4 /*yield*/, this.provider.getTransactionCount(this.getAddress(), blockTag)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n Signer.prototype.estimateGas = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var tx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"estimateGas\");\n return [4 /*yield*/, (0, properties_1.resolveProperties)(this.checkTransaction(transaction))];\n case 1:\n tx = _a.sent();\n return [4 /*yield*/, this.provider.estimateGas(tx)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n // Populates \"from\" if unspecified, and calls with the transaction\n Signer.prototype.call = function (transaction, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var tx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"call\");\n return [4 /*yield*/, (0, properties_1.resolveProperties)(this.checkTransaction(transaction))];\n case 1:\n tx = _a.sent();\n return [4 /*yield*/, this.provider.call(tx, blockTag)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n // Populates all fields in a transaction, signs it and sends it to the network\n Signer.prototype.sendTransaction = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var tx, signedTx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"sendTransaction\");\n return [4 /*yield*/, this.populateTransaction(transaction)];\n case 1:\n tx = _a.sent();\n return [4 /*yield*/, this.signTransaction(tx)];\n case 2:\n signedTx = _a.sent();\n return [4 /*yield*/, this.provider.sendTransaction(signedTx)];\n case 3: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Signer.prototype.getChainId = function () {\n return __awaiter(this, void 0, void 0, function () {\n var network;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getChainId\");\n return [4 /*yield*/, this.provider.getNetwork()];\n case 1:\n network = _a.sent();\n return [2 /*return*/, network.chainId];\n }\n });\n });\n };\n Signer.prototype.getGasPrice = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getGasPrice\");\n return [4 /*yield*/, this.provider.getGasPrice()];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Signer.prototype.getFeeData = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getFeeData\");\n return [4 /*yield*/, this.provider.getFeeData()];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Signer.prototype.resolveName = function (name) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"resolveName\");\n return [4 /*yield*/, this.provider.resolveName(name)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n Signer.prototype.checkTransaction = function (transaction) {\n for (var key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n var tx = (0, properties_1.shallowCopy)(transaction);\n if (tx.from == null) {\n tx.from = this.getAddress();\n }\n else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then(function (result) {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n return tx;\n };\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n Signer.prototype.populateTransaction = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var tx, hasEip1559, feeData, gasPrice;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, (0, properties_1.resolveProperties)(this.checkTransaction(transaction))];\n case 1:\n tx = _a.sent();\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(function (to) { return __awaiter(_this, void 0, void 0, function () {\n var address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (to == null) {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, this.resolveName(to)];\n case 1:\n address = _a.sent();\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return [2 /*return*/, address];\n }\n });\n }); });\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch(function (error) { });\n }\n hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n }\n else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n if (!((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null))) return [3 /*break*/, 2];\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n return [3 /*break*/, 5];\n case 2:\n if (!(tx.type === 0 || tx.type === 1)) return [3 /*break*/, 3];\n // Explicit Legacy or EIP-2930 transaction\n // Populate missing gasPrice\n if (tx.gasPrice == null) {\n tx.gasPrice = this.getGasPrice();\n }\n return [3 /*break*/, 5];\n case 3: return [4 /*yield*/, this.getFeeData()];\n case 4:\n feeData = _a.sent();\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n if (tx.gasPrice != null) {\n gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n }\n else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) {\n tx.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (tx.maxPriorityFeePerGas == null) {\n tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n }\n else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n // Populate missing fee data\n if (tx.gasPrice == null) {\n tx.gasPrice = feeData.gasPrice;\n }\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n }\n else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n }\n else if (tx.type === 2) {\n // Explicitly using EIP-1559\n // Populate missing fee data\n if (tx.maxFeePerGas == null) {\n tx.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (tx.maxPriorityFeePerGas == null) {\n tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n _a.label = 5;\n case 5:\n if (tx.nonce == null) {\n tx.nonce = this.getTransactionCount(\"pending\");\n }\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch(function (error) {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n }\n else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then(function (results) {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n return [4 /*yield*/, (0, properties_1.resolveProperties)(tx)];\n case 6: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n ///////////////////\n // Sub-classes SHOULD leave these alone\n Signer.prototype._checkProvider = function (operation) {\n if (!this.provider) {\n logger.throwError(\"missing provider\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\")\n });\n }\n };\n Signer.isSigner = function (value) {\n return !!(value && value._isSigner);\n };\n return Signer;\n}());\nexports.Signer = Signer;\nvar VoidSigner = /** @class */ (function (_super) {\n __extends(VoidSigner, _super);\n function VoidSigner(address, provider) {\n var _this = _super.call(this) || this;\n (0, properties_1.defineReadOnly)(_this, \"address\", address);\n (0, properties_1.defineReadOnly)(_this, \"provider\", provider || null);\n return _this;\n }\n VoidSigner.prototype.getAddress = function () {\n return Promise.resolve(this.address);\n };\n VoidSigner.prototype._fail = function (message, operation) {\n return Promise.resolve().then(function () {\n logger.throwError(message, logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n };\n VoidSigner.prototype.signMessage = function (message) {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n };\n VoidSigner.prototype.signTransaction = function (transaction) {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n };\n VoidSigner.prototype._signTypedData = function (domain, types, value) {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n };\n VoidSigner.prototype.connect = function (provider) {\n return new VoidSigner(this.address, provider);\n };\n return VoidSigner;\n}(Signer));\nexports.VoidSigner = VoidSigner;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonRpcProvider = exports.JsonRpcSigner = void 0;\nvar abstract_signer_1 = require(\"@ethersproject/abstract-signer\");\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar hash_1 = require(\"@ethersproject/hash\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar strings_1 = require(\"@ethersproject/strings\");\nvar transactions_1 = require(\"@ethersproject/transactions\");\nvar web_1 = require(\"@ethersproject/web\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar base_provider_1 = require(\"./base-provider\");\nvar errorGas = [\"call\", \"estimateGas\"];\nfunction spelunk(value, requireData) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(\"reverted\")) {\n var data = (0, bytes_1.isHexString)(value.data) ? value.data : null;\n if (!requireData || data) {\n return { message: value.message, data: data };\n }\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (var key in value) {\n var result = spelunk(value[key], requireData);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n }\n catch (error) { }\n }\n return null;\n}\nfunction checkError(method, error, params) {\n var transaction = params.transaction || params.signedTransaction;\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n var result = spelunk(error, true);\n if (result) {\n return result.data;\n }\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", logger_1.Logger.errors.CALL_EXCEPTION, {\n data: \"0x\",\n transaction: transaction,\n error: error\n });\n }\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n var result = spelunk(error.body, false);\n if (result == null) {\n result = spelunk(error, false);\n }\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message,\n method: method,\n transaction: transaction,\n error: error\n });\n }\n }\n // @TODO: Should we spelunk for message too?\n var message = error.message;\n if (error.code === logger_1.Logger.errors.SERVER_ERROR && error.error && typeof (error.error.message) === \"string\") {\n message = error.error.message;\n }\n else if (typeof (error.body) === \"string\") {\n message = error.body;\n }\n else if (typeof (error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", logger_1.Logger.errors.INSUFFICIENT_FUNDS, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", logger_1.Logger.errors.NONCE_EXPIRED, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", logger_1.Logger.errors.REPLACEMENT_UNDERPRICED, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n throw error;\n}\nfunction timer(timeout) {\n return new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n });\n}\nfunction getResult(payload) {\n if (payload.error) {\n // @TODO: not any\n var error = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n return payload.result;\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nvar _constructorGuard = {};\nvar JsonRpcSigner = /** @class */ (function (_super) {\n __extends(JsonRpcSigner, _super);\n function JsonRpcSigner(constructorGuard, provider, addressOrIndex) {\n var _this = _super.call(this) || this;\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n (0, properties_1.defineReadOnly)(_this, \"provider\", provider);\n if (addressOrIndex == null) {\n addressOrIndex = 0;\n }\n if (typeof (addressOrIndex) === \"string\") {\n (0, properties_1.defineReadOnly)(_this, \"_address\", _this.provider.formatter.address(addressOrIndex));\n (0, properties_1.defineReadOnly)(_this, \"_index\", null);\n }\n else if (typeof (addressOrIndex) === \"number\") {\n (0, properties_1.defineReadOnly)(_this, \"_index\", addressOrIndex);\n (0, properties_1.defineReadOnly)(_this, \"_address\", null);\n }\n else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n return _this;\n }\n JsonRpcSigner.prototype.connect = function (provider) {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n };\n JsonRpcSigner.prototype.connectUnchecked = function () {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n };\n JsonRpcSigner.prototype.getAddress = function () {\n var _this = this;\n if (this._address) {\n return Promise.resolve(this._address);\n }\n return this.provider.send(\"eth_accounts\", []).then(function (accounts) {\n if (accounts.length <= _this._index) {\n logger.throwError(\"unknown account #\" + _this._index, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return _this.provider.formatter.address(accounts[_this._index]);\n });\n };\n JsonRpcSigner.prototype.sendUncheckedTransaction = function (transaction) {\n var _this = this;\n transaction = (0, properties_1.shallowCopy)(transaction);\n var fromAddress = this.getAddress().then(function (address) {\n if (address) {\n address = address.toLowerCase();\n }\n return address;\n });\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n var estimate = (0, properties_1.shallowCopy)(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(function (to) { return __awaiter(_this, void 0, void 0, function () {\n var address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (to == null) {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, this.provider.resolveName(to)];\n case 1:\n address = _a.sent();\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return [2 /*return*/, address];\n }\n });\n }); });\n }\n return (0, properties_1.resolveProperties)({\n tx: (0, properties_1.resolveProperties)(transaction),\n sender: fromAddress\n }).then(function (_a) {\n var tx = _a.tx, sender = _a.sender;\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n }\n else {\n tx.from = sender;\n }\n var hexTx = _this.provider.constructor.hexlifyTransaction(tx, { from: true });\n return _this.provider.send(\"eth_sendTransaction\", [hexTx]).then(function (hash) {\n return hash;\n }, function (error) {\n if (typeof (error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", logger_1.Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n };\n JsonRpcSigner.prototype.signTransaction = function (transaction) {\n return logger.throwError(\"signing transactions is unsupported\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n };\n JsonRpcSigner.prototype.sendTransaction = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var blockNumber, hash, error_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval)];\n case 1:\n blockNumber = _a.sent();\n return [4 /*yield*/, this.sendUncheckedTransaction(transaction)];\n case 2:\n hash = _a.sent();\n _a.label = 3;\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, (0, web_1.poll)(function () { return __awaiter(_this, void 0, void 0, function () {\n var tx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.provider.getTransaction(hash)];\n case 1:\n tx = _a.sent();\n if (tx === null) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, this.provider._wrapTransaction(tx, hash, blockNumber)];\n }\n });\n }); }, { oncePoll: this.provider })];\n case 4: \n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return [2 /*return*/, _a.sent()];\n case 5:\n error_1 = _a.sent();\n error_1.transactionHash = hash;\n throw error_1;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcSigner.prototype.signMessage = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var data, address, error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n data = ((typeof (message) === \"string\") ? (0, strings_1.toUtf8Bytes)(message) : message);\n return [4 /*yield*/, this.getAddress()];\n case 1:\n address = _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.provider.send(\"personal_sign\", [(0, bytes_1.hexlify)(data), address.toLowerCase()])];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n error_2 = _a.sent();\n if (typeof (error_2.message) === \"string\" && error_2.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", logger_1.Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error_2;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcSigner.prototype._legacySignMessage = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var data, address, error_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n data = ((typeof (message) === \"string\") ? (0, strings_1.toUtf8Bytes)(message) : message);\n return [4 /*yield*/, this.getAddress()];\n case 1:\n address = _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.provider.send(\"eth_sign\", [address.toLowerCase(), (0, bytes_1.hexlify)(data)])];\n case 3: \n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return [2 /*return*/, _a.sent()];\n case 4:\n error_3 = _a.sent();\n if (typeof (error_3.message) === \"string\" && error_3.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", logger_1.Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error_3;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcSigner.prototype._signTypedData = function (domain, types, value) {\n return __awaiter(this, void 0, void 0, function () {\n var populated, address, error_4;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, hash_1._TypedDataEncoder.resolveNames(domain, types, value, function (name) {\n return _this.provider.resolveName(name);\n })];\n case 1:\n populated = _a.sent();\n return [4 /*yield*/, this.getAddress()];\n case 2:\n address = _a.sent();\n _a.label = 3;\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(hash_1._TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ])];\n case 4: return [2 /*return*/, _a.sent()];\n case 5:\n error_4 = _a.sent();\n if (typeof (error_4.message) === \"string\" && error_4.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", logger_1.Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types: types, value: populated.value }\n });\n }\n throw error_4;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcSigner.prototype.unlock = function (password) {\n return __awaiter(this, void 0, void 0, function () {\n var provider, address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n provider = this.provider;\n return [4 /*yield*/, this.getAddress()];\n case 1:\n address = _a.sent();\n return [2 /*return*/, provider.send(\"personal_unlockAccount\", [address.toLowerCase(), password, null])];\n }\n });\n });\n };\n return JsonRpcSigner;\n}(abstract_signer_1.Signer));\nexports.JsonRpcSigner = JsonRpcSigner;\nvar UncheckedJsonRpcSigner = /** @class */ (function (_super) {\n __extends(UncheckedJsonRpcSigner, _super);\n function UncheckedJsonRpcSigner() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UncheckedJsonRpcSigner.prototype.sendTransaction = function (transaction) {\n var _this = this;\n return this.sendUncheckedTransaction(transaction).then(function (hash) {\n return {\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: function (confirmations) { return _this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n };\n return UncheckedJsonRpcSigner;\n}(JsonRpcSigner));\nvar allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n};\nvar JsonRpcProvider = /** @class */ (function (_super) {\n __extends(JsonRpcProvider, _super);\n function JsonRpcProvider(url, network) {\n var _this = this;\n var networkOrReady = network;\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise(function (resolve, reject) {\n setTimeout(function () {\n _this.detectNetwork().then(function (network) {\n resolve(network);\n }, function (error) {\n reject(error);\n });\n }, 0);\n });\n }\n _this = _super.call(this, networkOrReady) || this;\n // Default URL\n if (!url) {\n url = (0, properties_1.getStatic)(_this.constructor, \"defaultUrl\")();\n }\n if (typeof (url) === \"string\") {\n (0, properties_1.defineReadOnly)(_this, \"connection\", Object.freeze({\n url: url\n }));\n }\n else {\n (0, properties_1.defineReadOnly)(_this, \"connection\", Object.freeze((0, properties_1.shallowCopy)(url)));\n }\n _this._nextId = 42;\n return _this;\n }\n Object.defineProperty(JsonRpcProvider.prototype, \"_cache\", {\n get: function () {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = {};\n }\n return this._eventLoopCache;\n },\n enumerable: false,\n configurable: true\n });\n JsonRpcProvider.defaultUrl = function () {\n return \"http:/\\/localhost:8545\";\n };\n JsonRpcProvider.prototype.detectNetwork = function () {\n var _this = this;\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n // Clear this cache at the beginning of the next event loop\n setTimeout(function () {\n _this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n };\n JsonRpcProvider.prototype._uncachedDetectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n var chainId, error_5, error_6, getNetwork;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, timer(0)];\n case 1:\n _a.sent();\n chainId = null;\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 9]);\n return [4 /*yield*/, this.send(\"eth_chainId\", [])];\n case 3:\n chainId = _a.sent();\n return [3 /*break*/, 9];\n case 4:\n error_5 = _a.sent();\n _a.label = 5;\n case 5:\n _a.trys.push([5, 7, , 8]);\n return [4 /*yield*/, this.send(\"net_version\", [])];\n case 6:\n chainId = _a.sent();\n return [3 /*break*/, 8];\n case 7:\n error_6 = _a.sent();\n return [3 /*break*/, 8];\n case 8: return [3 /*break*/, 9];\n case 9:\n if (chainId != null) {\n getNetwork = (0, properties_1.getStatic)(this.constructor, \"getNetwork\");\n try {\n return [2 /*return*/, getNetwork(bignumber_1.BigNumber.from(chainId).toNumber())];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"could not detect network\", logger_1.Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n })];\n }\n }\n return [2 /*return*/, logger.throwError(\"could not detect network\", logger_1.Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n })];\n }\n });\n });\n };\n JsonRpcProvider.prototype.getSigner = function (addressOrIndex) {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n };\n JsonRpcProvider.prototype.getUncheckedSigner = function (addressOrIndex) {\n return this.getSigner(addressOrIndex).connectUnchecked();\n };\n JsonRpcProvider.prototype.listAccounts = function () {\n var _this = this;\n return this.send(\"eth_accounts\", []).then(function (accounts) {\n return accounts.map(function (a) { return _this.formatter.address(a); });\n });\n };\n JsonRpcProvider.prototype.send = function (method, params) {\n var _this = this;\n var request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n this.emit(\"debug\", {\n action: \"request\",\n request: (0, properties_1.deepCopy)(request),\n provider: this\n });\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n var cache = ([\"eth_chainId\", \"eth_blockNumber\"].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n var result = (0, web_1.fetchJson)(this.connection, JSON.stringify(request), getResult).then(function (result) {\n _this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: _this\n });\n return result;\n }, function (error) {\n _this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: _this\n });\n throw error;\n });\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(function () {\n _this._cache[method] = null;\n }, 0);\n }\n return result;\n };\n JsonRpcProvider.prototype.prepareRequest = function (method, params) {\n switch (method) {\n case \"getBlockNumber\":\n return [\"eth_blockNumber\", []];\n case \"getGasPrice\":\n return [\"eth_gasPrice\", []];\n case \"getBalance\":\n return [\"eth_getBalance\", [getLowerCase(params.address), params.blockTag]];\n case \"getTransactionCount\":\n return [\"eth_getTransactionCount\", [getLowerCase(params.address), params.blockTag]];\n case \"getCode\":\n return [\"eth_getCode\", [getLowerCase(params.address), params.blockTag]];\n case \"getStorageAt\":\n return [\"eth_getStorageAt\", [getLowerCase(params.address), (0, bytes_1.hexZeroPad)(params.position, 32), params.blockTag]];\n case \"sendTransaction\":\n return [\"eth_sendRawTransaction\", [params.signedTransaction]];\n case \"getBlock\":\n if (params.blockTag) {\n return [\"eth_getBlockByNumber\", [params.blockTag, !!params.includeTransactions]];\n }\n else if (params.blockHash) {\n return [\"eth_getBlockByHash\", [params.blockHash, !!params.includeTransactions]];\n }\n return null;\n case \"getTransaction\":\n return [\"eth_getTransactionByHash\", [params.transactionHash]];\n case \"getTransactionReceipt\":\n return [\"eth_getTransactionReceipt\", [params.transactionHash]];\n case \"call\": {\n var hexlifyTransaction = (0, properties_1.getStatic)(this.constructor, \"hexlifyTransaction\");\n return [\"eth_call\", [hexlifyTransaction(params.transaction, { from: true }), params.blockTag]];\n }\n case \"estimateGas\": {\n var hexlifyTransaction = (0, properties_1.getStatic)(this.constructor, \"hexlifyTransaction\");\n return [\"eth_estimateGas\", [hexlifyTransaction(params.transaction, { from: true })]];\n }\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [\"eth_getLogs\", [params.filter]];\n default:\n break;\n }\n return null;\n };\n JsonRpcProvider.prototype.perform = function (method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var tx, feeData, args, error_7;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(method === \"call\" || method === \"estimateGas\")) return [3 /*break*/, 2];\n tx = params.transaction;\n if (!(tx && tx.type != null && bignumber_1.BigNumber.from(tx.type).isZero())) return [3 /*break*/, 2];\n if (!(tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.getFeeData()];\n case 1:\n feeData = _a.sent();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = (0, properties_1.shallowCopy)(params);\n params.transaction = (0, properties_1.shallowCopy)(tx);\n delete params.transaction.type;\n }\n _a.label = 2;\n case 2:\n args = this.prepareRequest(method, params);\n if (args == null) {\n logger.throwError(method + \" not implemented\", logger_1.Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n _a.label = 3;\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, this.send(args[0], args[1])];\n case 4: return [2 /*return*/, _a.sent()];\n case 5:\n error_7 = _a.sent();\n return [2 /*return*/, checkError(method, error_7, params)];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcProvider.prototype._startEvent = function (event) {\n if (event.tag === \"pending\") {\n this._startPending();\n }\n _super.prototype._startEvent.call(this, event);\n };\n JsonRpcProvider.prototype._startPending = function () {\n if (this._pendingFilter != null) {\n return;\n }\n var self = this;\n var pendingFilter = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n pendingFilter.then(function (filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [filterId]).then(function (hashes) {\n if (self._pendingFilter != pendingFilter) {\n return null;\n }\n var seq = Promise.resolve();\n hashes.forEach(function (hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function () {\n return self.getTransaction(hash).then(function (tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n return seq.then(function () {\n return timer(1000);\n });\n }).then(function () {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [filterId]);\n return;\n }\n setTimeout(function () { poll(); }, 0);\n return null;\n }).catch(function (error) { });\n }\n poll();\n return filterId;\n }).catch(function (error) { });\n };\n JsonRpcProvider.prototype._stopEvent = function (event) {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n _super.prototype._stopEvent.call(this, event);\n };\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n JsonRpcProvider.hexlifyTransaction = function (transaction, allowExtra) {\n // Check only allowed properties are given\n var allowed = (0, properties_1.shallowCopy)(allowedTransactionKeys);\n if (allowExtra) {\n for (var key in allowExtra) {\n if (allowExtra[key]) {\n allowed[key] = true;\n }\n }\n }\n (0, properties_1.checkProperties)(transaction, allowed);\n var result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function (key) {\n if (transaction[key] == null) {\n return;\n }\n var value = (0, bytes_1.hexValue)(bignumber_1.BigNumber.from(transaction[key]));\n if (key === \"gasLimit\") {\n key = \"gas\";\n }\n result[key] = value;\n });\n [\"from\", \"to\", \"data\"].forEach(function (key) {\n if (transaction[key] == null) {\n return;\n }\n result[key] = (0, bytes_1.hexlify)(transaction[key]);\n });\n if (transaction.accessList) {\n result[\"accessList\"] = (0, transactions_1.accessListify)(transaction.accessList);\n }\n return result;\n };\n return JsonRpcProvider;\n}(base_provider_1.BaseProvider));\nexports.JsonRpcProvider = JsonRpcProvider;\n//# sourceMappingURL=json-rpc-provider.js.map","'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 8 && version !== 13) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message);\n }\n}\n","'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocket = void 0;\nvar ws_1 = __importDefault(require(\"ws\"));\nexports.WebSocket = ws_1.default;\n//# sourceMappingURL=ws.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketProvider = void 0;\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\nvar ws_1 = require(\"./ws\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\nvar NextId = 1;\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\nvar WebSocketProvider = /** @class */ (function (_super) {\n __extends(WebSocketProvider, _super);\n function WebSocketProvider(url, network) {\n var _this = this;\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n if (typeof (url) === \"string\") {\n _this = _super.call(this, url, network) || this;\n }\n else {\n _this = _super.call(this, \"_websocket\", network) || this;\n }\n _this._pollingInterval = -1;\n _this._wsReady = false;\n if (typeof (url) === \"string\") {\n (0, properties_1.defineReadOnly)(_this, \"_websocket\", new ws_1.WebSocket(_this.connection.url));\n }\n else {\n (0, properties_1.defineReadOnly)(_this, \"_websocket\", url);\n }\n (0, properties_1.defineReadOnly)(_this, \"_requests\", {});\n (0, properties_1.defineReadOnly)(_this, \"_subs\", {});\n (0, properties_1.defineReadOnly)(_this, \"_subIds\", {});\n (0, properties_1.defineReadOnly)(_this, \"_detectNetwork\", _super.prototype.detectNetwork.call(_this));\n // Stall sending requests until the socket is open...\n _this.websocket.onopen = function () {\n _this._wsReady = true;\n Object.keys(_this._requests).forEach(function (id) {\n _this.websocket.send(_this._requests[id].payload);\n });\n };\n _this.websocket.onmessage = function (messageEvent) {\n var data = messageEvent.data;\n var result = JSON.parse(data);\n if (result.id != null) {\n var id = String(result.id);\n var request = _this._requests[id];\n delete _this._requests[id];\n if (result.result !== undefined) {\n request.callback(null, result.result);\n _this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: _this\n });\n }\n else {\n var error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n (0, properties_1.defineReadOnly)(error, \"code\", result.error.code || null);\n (0, properties_1.defineReadOnly)(error, \"response\", data);\n }\n else {\n error = new Error(\"unknown error\");\n }\n request.callback(error, undefined);\n _this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: _this\n });\n }\n }\n else if (result.method === \"eth_subscription\") {\n // Subscription...\n var sub = _this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result);\n }\n }\n else {\n console.warn(\"this should not happen\");\n }\n };\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n var fauxPoll = setInterval(function () {\n _this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) {\n fauxPoll.unref();\n }\n return _this;\n }\n Object.defineProperty(WebSocketProvider.prototype, \"websocket\", {\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get: function () { return this._websocket; },\n enumerable: false,\n configurable: true\n });\n WebSocketProvider.prototype.detectNetwork = function () {\n return this._detectNetwork;\n };\n Object.defineProperty(WebSocketProvider.prototype, \"pollingInterval\", {\n get: function () {\n return 0;\n },\n set: function (value) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n },\n enumerable: false,\n configurable: true\n });\n WebSocketProvider.prototype.resetEventsBlock = function (blockNumber) {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n };\n WebSocketProvider.prototype.poll = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, null];\n });\n });\n };\n Object.defineProperty(WebSocketProvider.prototype, \"polling\", {\n set: function (value) {\n if (!value) {\n return;\n }\n logger.throwError(\"cannot set polling on WebSocketProvider\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n },\n enumerable: false,\n configurable: true\n });\n WebSocketProvider.prototype.send = function (method, params) {\n var _this = this;\n var rid = NextId++;\n return new Promise(function (resolve, reject) {\n function callback(error, result) {\n if (error) {\n return reject(error);\n }\n return resolve(result);\n }\n var payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n _this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: _this\n });\n _this._requests[String(rid)] = { callback: callback, payload: payload };\n if (_this._wsReady) {\n _this.websocket.send(payload);\n }\n });\n };\n WebSocketProvider.defaultUrl = function () {\n return \"ws:/\\/localhost:8546\";\n };\n WebSocketProvider.prototype._subscribe = function (tag, param, processFunc) {\n return __awaiter(this, void 0, void 0, function () {\n var subIdPromise, subId;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then(function (param) {\n return _this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n return [4 /*yield*/, subIdPromise];\n case 1:\n subId = _a.sent();\n this._subs[subId] = { tag: tag, processFunc: processFunc };\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketProvider.prototype._startEvent = function (event) {\n var _this = this;\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [\"newHeads\"], function (result) {\n var blockNumber = bignumber_1.BigNumber.from(result.number).toNumber();\n _this._emitted.block = blockNumber;\n _this.emit(\"block\", blockNumber);\n });\n break;\n case \"pending\":\n this._subscribe(\"pending\", [\"newPendingTransactions\"], function (result) {\n _this.emit(\"pending\", result);\n });\n break;\n case \"filter\":\n this._subscribe(event.tag, [\"logs\", this._getFilter(event.filter)], function (result) {\n if (result.removed == null) {\n result.removed = false;\n }\n _this.emit(event.filter, _this.formatter.filterLog(result));\n });\n break;\n case \"tx\": {\n var emitReceipt_1 = function (event) {\n var hash = event.hash;\n _this.getTransactionReceipt(hash).then(function (receipt) {\n if (!receipt) {\n return;\n }\n _this.emit(hash, receipt);\n });\n };\n // In case it is already mined\n emitReceipt_1(event);\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [\"newHeads\"], function (result) {\n _this._events.filter(function (e) { return (e.type === \"tx\"); }).forEach(emitReceipt_1);\n });\n break;\n }\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n };\n WebSocketProvider.prototype._stopEvent = function (event) {\n var _this = this;\n var tag = event.tag;\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter(function (e) { return (e.type === \"tx\"); }).length) {\n return;\n }\n tag = \"tx\";\n }\n else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n var subId = this._subIds[tag];\n if (!subId) {\n return;\n }\n delete this._subIds[tag];\n subId.then(function (subId) {\n if (!_this._subs[subId]) {\n return;\n }\n delete _this._subs[subId];\n _this.send(\"eth_unsubscribe\", [subId]);\n });\n };\n WebSocketProvider.prototype.destroy = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.websocket.readyState === ws_1.WebSocket.CONNECTING)) return [3 /*break*/, 2];\n return [4 /*yield*/, (new Promise(function (resolve) {\n _this.websocket.onopen = function () {\n resolve(true);\n };\n _this.websocket.onerror = function () {\n resolve(false);\n };\n }))];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n return [2 /*return*/];\n }\n });\n });\n };\n return WebSocketProvider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.WebSocketProvider = WebSocketProvider;\n//# sourceMappingURL=websocket-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UrlJsonRpcProvider = exports.StaticJsonRpcProvider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nvar StaticJsonRpcProvider = /** @class */ (function (_super) {\n __extends(StaticJsonRpcProvider, _super);\n function StaticJsonRpcProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StaticJsonRpcProvider.prototype.detectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n var network;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n network = this.network;\n if (!(network == null)) return [3 /*break*/, 2];\n return [4 /*yield*/, _super.prototype.detectNetwork.call(this)];\n case 1:\n network = _a.sent();\n if (!network) {\n logger.throwError(\"no network detected\", logger_1.Logger.errors.UNKNOWN_ERROR, {});\n }\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n (0, properties_1.defineReadOnly)(this, \"_network\", network);\n this.emit(\"network\", network, null);\n }\n _a.label = 2;\n case 2: return [2 /*return*/, network];\n }\n });\n });\n };\n return StaticJsonRpcProvider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.StaticJsonRpcProvider = StaticJsonRpcProvider;\nvar UrlJsonRpcProvider = /** @class */ (function (_super) {\n __extends(UrlJsonRpcProvider, _super);\n function UrlJsonRpcProvider(network, apiKey) {\n var _newTarget = this.constructor;\n var _this = this;\n logger.checkAbstract(_newTarget, UrlJsonRpcProvider);\n // Normalize the Network and API Key\n network = (0, properties_1.getStatic)(_newTarget, \"getNetwork\")(network);\n apiKey = (0, properties_1.getStatic)(_newTarget, \"getApiKey\")(apiKey);\n var connection = (0, properties_1.getStatic)(_newTarget, \"getUrl\")(network, apiKey);\n _this = _super.call(this, connection, network) || this;\n if (typeof (apiKey) === \"string\") {\n (0, properties_1.defineReadOnly)(_this, \"apiKey\", apiKey);\n }\n else if (apiKey != null) {\n Object.keys(apiKey).forEach(function (key) {\n (0, properties_1.defineReadOnly)(_this, key, apiKey[key]);\n });\n }\n return _this;\n }\n UrlJsonRpcProvider.prototype._startPending = function () {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n };\n UrlJsonRpcProvider.prototype.isCommunityResource = function () {\n return false;\n };\n UrlJsonRpcProvider.prototype.getSigner = function (address) {\n return logger.throwError(\"API provider does not support signing\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: \"getSigner\" });\n };\n UrlJsonRpcProvider.prototype.listAccounts = function () {\n return Promise.resolve([]);\n };\n // Return a defaultApiKey if null, otherwise validate the API key\n UrlJsonRpcProvider.getApiKey = function (apiKey) {\n return apiKey;\n };\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n UrlJsonRpcProvider.getUrl = function (network, apiKey) {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", logger_1.Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n };\n return UrlJsonRpcProvider;\n}(StaticJsonRpcProvider));\nexports.UrlJsonRpcProvider = UrlJsonRpcProvider;\n//# sourceMappingURL=url-json-rpc-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlchemyProvider = exports.AlchemyWebSocketProvider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar formatter_1 = require(\"./formatter\");\nvar websocket_provider_1 = require(\"./websocket-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\nvar defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nvar AlchemyWebSocketProvider = /** @class */ (function (_super) {\n __extends(AlchemyWebSocketProvider, _super);\n function AlchemyWebSocketProvider(network, apiKey) {\n var _this = this;\n var provider = new AlchemyProvider(network, apiKey);\n var url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n _this = _super.call(this, url, provider.network) || this;\n (0, properties_1.defineReadOnly)(_this, \"apiKey\", provider.apiKey);\n return _this;\n }\n AlchemyWebSocketProvider.prototype.isCommunityResource = function () {\n return (this.apiKey === defaultApiKey);\n };\n return AlchemyWebSocketProvider;\n}(websocket_provider_1.WebSocketProvider));\nexports.AlchemyWebSocketProvider = AlchemyWebSocketProvider;\nvar AlchemyProvider = /** @class */ (function (_super) {\n __extends(AlchemyProvider, _super);\n function AlchemyProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AlchemyProvider.getWebSocketProvider = function (network, apiKey) {\n return new AlchemyWebSocketProvider(network, apiKey);\n };\n AlchemyProvider.getApiKey = function (apiKey) {\n if (apiKey == null) {\n return defaultApiKey;\n }\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n };\n AlchemyProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.g.alchemy.com/v2/\";\n break;\n case \"sepolia\":\n host = \"eth-sepolia.g.alchemy.com/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n case \"arbitrum\":\n host = \"arb-mainnet.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-goerli\":\n host = \"arb-goerli.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-sepolia\":\n host = \"arb-sepolia.g.alchemy.com/v2/\";\n break;\n case \"optimism\":\n host = \"opt-mainnet.g.alchemy.com/v2/\";\n break;\n case \"optimism-goerli\":\n host = \"opt-goerli.g.alchemy.com/v2/\";\n break;\n case \"optimism-sepolia\":\n host = \"opt-sepolia.g.alchemy.com/v2/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: function (attempt, url) {\n if (apiKey === defaultApiKey) {\n (0, formatter_1.showThrottleMessage)();\n }\n return Promise.resolve(true);\n }\n };\n };\n AlchemyProvider.prototype.isCommunityResource = function () {\n return (this.apiKey === defaultApiKey);\n };\n return AlchemyProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.AlchemyProvider = AlchemyProvider;\n//# sourceMappingURL=alchemy-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnkrProvider = void 0;\nvar formatter_1 = require(\"./formatter\");\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth/\";\n case \"ropsten\":\n return \"rpc.ankr.com/eth_ropsten/\";\n case \"rinkeby\":\n return \"rpc.ankr.com/eth_rinkeby/\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli/\";\n case \"sepolia\":\n return \"rpc.ankr.com/eth_sepolia/\";\n case \"matic\":\n return \"rpc.ankr.com/polygon/\";\n case \"maticmum\":\n return \"rpc.ankr.com/polygon_mumbai/\";\n case \"optimism\":\n return \"rpc.ankr.com/optimism/\";\n case \"optimism-goerli\":\n return \"rpc.ankr.com/optimism_testnet/\";\n case \"optimism-sepolia\":\n return \"rpc.ankr.com/optimism_sepolia/\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum/\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"name\", name);\n}\nvar AnkrProvider = /** @class */ (function (_super) {\n __extends(AnkrProvider, _super);\n function AnkrProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnkrProvider.prototype.isCommunityResource = function () {\n return (this.apiKey === defaultApiKey);\n };\n AnkrProvider.getApiKey = function (apiKey) {\n if (apiKey == null) {\n return defaultApiKey;\n }\n return apiKey;\n };\n AnkrProvider.getUrl = function (network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n var connection = {\n allowGzip: true,\n url: (\"https:/\\/\" + getHost(network.name) + apiKey),\n throttleCallback: function (attempt, url) {\n if (apiKey.apiKey === defaultApiKey) {\n (0, formatter_1.showThrottleMessage)();\n }\n return Promise.resolve(true);\n }\n };\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret;\n }\n return connection;\n };\n return AnkrProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.AnkrProvider = AnkrProvider;\n//# sourceMappingURL=ankr-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CloudflareProvider = void 0;\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar CloudflareProvider = /** @class */ (function (_super) {\n __extends(CloudflareProvider, _super);\n function CloudflareProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CloudflareProvider.getApiKey = function (apiKey) {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n };\n CloudflareProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return host;\n };\n CloudflareProvider.prototype.perform = function (method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var block;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(method === \"getBlockNumber\")) return [3 /*break*/, 2];\n return [4 /*yield*/, _super.prototype.perform.call(this, \"getBlock\", { blockTag: \"latest\" })];\n case 1:\n block = _a.sent();\n return [2 /*return*/, block.number];\n case 2: return [2 /*return*/, _super.prototype.perform.call(this, method, params)];\n }\n });\n });\n };\n return CloudflareProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.CloudflareProvider = CloudflareProvider;\n//# sourceMappingURL=cloudflare-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EtherscanProvider = void 0;\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar transactions_1 = require(\"@ethersproject/transactions\");\nvar web_1 = require(\"@ethersproject/web\");\nvar formatter_1 = require(\"./formatter\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar base_provider_1 = require(\"./base-provider\");\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction) {\n var result = {};\n for (var key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n var value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = (0, bytes_1.hexValue)((0, bytes_1.hexlify)(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + (0, transactions_1.accessListify)(value).map(function (set) {\n return \"{address:\\\"\" + set.address + \"\\\",storageKeys:[\\\"\" + set.storageKeys.join('\",\"') + \"\\\"]}\";\n }).join(\",\") + \"]\";\n }\n else {\n value = (0, bytes_1.hexlify)(value);\n }\n result[key] = value;\n }\n return result;\n}\nfunction getResult(result) {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || typeof (result.message) !== \"string\" || !result.message.match(/^OK/)) {\n var error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n return result.result;\n}\nfunction getJsonResult(result) {\n // This response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n var error = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n var error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n var error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n}\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag) {\n if (blockTag === \"pending\") {\n throw new Error(\"pending not supported\");\n }\n if (blockTag === \"latest\") {\n return blockTag;\n }\n return parseInt(blockTag.substring(2), 16);\n}\nfunction checkError(method, error, transaction) {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === logger_1.Logger.errors.SERVER_ERROR) {\n var e = error.error;\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n var data = e.data;\n if (data) {\n data = \"0x\" + data.replace(/^.*0x/i, \"\");\n }\n if ((0, bytes_1.isHexString)(data)) {\n return data;\n }\n logger.throwError(\"missing revert data in call exception\", logger_1.Logger.errors.CALL_EXCEPTION, {\n error: error,\n data: \"0x\"\n });\n }\n }\n // Get the message from any nested error structure\n var message = error.message;\n if (error.code === logger_1.Logger.errors.SERVER_ERROR) {\n if (error.error && typeof (error.error.message) === \"string\") {\n message = error.error.message;\n }\n else if (typeof (error.body) === \"string\") {\n message = error.body;\n }\n else if (typeof (error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", logger_1.Logger.errors.INSUFFICIENT_FUNDS, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", logger_1.Logger.errors.NONCE_EXPIRED, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", logger_1.Logger.errors.REPLACEMENT_UNDERPRICED, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n throw error;\n}\nvar EtherscanProvider = /** @class */ (function (_super) {\n __extends(EtherscanProvider, _super);\n function EtherscanProvider(network, apiKey) {\n var _this = _super.call(this, network) || this;\n (0, properties_1.defineReadOnly)(_this, \"baseUrl\", _this.getBaseUrl());\n (0, properties_1.defineReadOnly)(_this, \"apiKey\", apiKey || null);\n return _this;\n }\n EtherscanProvider.prototype.getBaseUrl = function () {\n switch (this.network ? this.network.name : \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"maticmum\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network.name);\n };\n EtherscanProvider.prototype.getUrl = function (module, params) {\n var query = Object.keys(params).reduce(function (accum, key) {\n var value = params[key];\n if (value != null) {\n accum += \"&\" + key + \"=\" + value;\n }\n return accum;\n }, \"\");\n var apiKey = ((this.apiKey) ? \"&apikey=\" + this.apiKey : \"\");\n return this.baseUrl + \"/api?module=\" + module + query + apiKey;\n };\n EtherscanProvider.prototype.getPostUrl = function () {\n return this.baseUrl + \"/api\";\n };\n EtherscanProvider.prototype.getPostData = function (module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n };\n EtherscanProvider.prototype.fetch = function (module, params, post) {\n return __awaiter(this, void 0, void 0, function () {\n var url, payload, procFunc, connection, payloadStr, result;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = (post ? this.getPostUrl() : this.getUrl(module, params));\n payload = (post ? this.getPostData(module, params) : null);\n procFunc = (module === \"proxy\") ? getJsonResult : getResult;\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n connection = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: function (attempt, url) {\n if (_this.isCommunityResource()) {\n (0, formatter_1.showThrottleMessage)();\n }\n return Promise.resolve(true);\n }\n };\n payloadStr = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map(function (key) {\n return key + \"=\" + payload[key];\n }).join(\"&\");\n }\n return [4 /*yield*/, (0, web_1.fetchJson)(connection, payloadStr, procFunc || getJsonResult)];\n case 1:\n result = _a.sent();\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: (0, properties_1.deepCopy)(result),\n provider: this\n });\n return [2 /*return*/, result];\n }\n });\n });\n };\n EtherscanProvider.prototype.detectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.network];\n });\n });\n };\n EtherscanProvider.prototype.perform = function (method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, postData, error_1, postData, error_2, args, topic0, logs, blocks, i, log, block, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = method;\n switch (_a) {\n case \"getBlockNumber\": return [3 /*break*/, 1];\n case \"getGasPrice\": return [3 /*break*/, 2];\n case \"getBalance\": return [3 /*break*/, 3];\n case \"getTransactionCount\": return [3 /*break*/, 4];\n case \"getCode\": return [3 /*break*/, 5];\n case \"getStorageAt\": return [3 /*break*/, 6];\n case \"sendTransaction\": return [3 /*break*/, 7];\n case \"getBlock\": return [3 /*break*/, 8];\n case \"getTransaction\": return [3 /*break*/, 9];\n case \"getTransactionReceipt\": return [3 /*break*/, 10];\n case \"call\": return [3 /*break*/, 11];\n case \"estimateGas\": return [3 /*break*/, 15];\n case \"getLogs\": return [3 /*break*/, 19];\n case \"getEtherPrice\": return [3 /*break*/, 26];\n }\n return [3 /*break*/, 28];\n case 1: return [2 /*return*/, this.fetch(\"proxy\", { action: \"eth_blockNumber\" })];\n case 2: return [2 /*return*/, this.fetch(\"proxy\", { action: \"eth_gasPrice\" })];\n case 3: \n // Returns base-10 result\n return [2 /*return*/, this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n })];\n case 4: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n })];\n case 5: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n })];\n case 6: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n })];\n case 7: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch(function (error) {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n })];\n case 8:\n if (params.blockTag) {\n return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\" : \"false\")\n })];\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n case 9: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n })];\n case 10: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n })];\n case 11:\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n _c.label = 12;\n case 12:\n _c.trys.push([12, 14, , 15]);\n return [4 /*yield*/, this.fetch(\"proxy\", postData, true)];\n case 13: return [2 /*return*/, _c.sent()];\n case 14:\n error_1 = _c.sent();\n return [2 /*return*/, checkError(\"call\", error_1, params.transaction)];\n case 15:\n postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n _c.label = 16;\n case 16:\n _c.trys.push([16, 18, , 19]);\n return [4 /*yield*/, this.fetch(\"proxy\", postData, true)];\n case 17: return [2 /*return*/, _c.sent()];\n case 18:\n error_2 = _c.sent();\n return [2 /*return*/, checkError(\"estimateGas\", error_2, params.transaction)];\n case 19:\n args = { action: \"getLogs\" };\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n topic0 = params.filter.topics[0];\n if (typeof (topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n return [4 /*yield*/, this.fetch(\"logs\", args)];\n case 20:\n logs = _c.sent();\n blocks = {};\n i = 0;\n _c.label = 21;\n case 21:\n if (!(i < logs.length)) return [3 /*break*/, 25];\n log = logs[i];\n if (log.blockHash != null) {\n return [3 /*break*/, 24];\n }\n if (!(blocks[log.blockNumber] == null)) return [3 /*break*/, 23];\n return [4 /*yield*/, this.getBlock(log.blockNumber)];\n case 22:\n block = _c.sent();\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n _c.label = 23;\n case 23:\n log.blockHash = blocks[log.blockNumber];\n _c.label = 24;\n case 24:\n i++;\n return [3 /*break*/, 21];\n case 25: return [2 /*return*/, logs];\n case 26:\n if (this.network.name !== \"homestead\") {\n return [2 /*return*/, 0.0];\n }\n _b = parseFloat;\n return [4 /*yield*/, this.fetch(\"stats\", { action: \"ethprice\" })];\n case 27: return [2 /*return*/, _b.apply(void 0, [(_c.sent()).ethusd])];\n case 28: return [3 /*break*/, 29];\n case 29: return [2 /*return*/, _super.prototype.perform.call(this, method, params)];\n }\n });\n });\n };\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n EtherscanProvider.prototype.getHistory = function (addressOrName, startBlock, endBlock) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n var _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = {\n action: \"txlist\"\n };\n return [4 /*yield*/, this.resolveName(addressOrName)];\n case 1:\n params = (_a.address = (_b.sent()),\n _a.startblock = ((startBlock == null) ? 0 : startBlock),\n _a.endblock = ((endBlock == null) ? 99999999 : endBlock),\n _a.sort = \"asc\",\n _a);\n return [4 /*yield*/, this.fetch(\"account\", params)];\n case 2:\n result = _b.sent();\n return [2 /*return*/, result.map(function (tx) {\n [\"contractAddress\", \"to\"].forEach(function (key) {\n if (tx[key] == \"\") {\n delete tx[key];\n }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n var item = _this.formatter.transactionResponse(tx);\n if (tx.timeStamp) {\n item.timestamp = parseInt(tx.timeStamp);\n }\n return item;\n })];\n }\n });\n });\n };\n EtherscanProvider.prototype.isCommunityResource = function () {\n return (this.apiKey == null);\n };\n return EtherscanProvider;\n}(base_provider_1.BaseProvider));\nexports.EtherscanProvider = EtherscanProvider;\n//# sourceMappingURL=etherscan-provider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomBytes = void 0;\nvar crypto_1 = require(\"crypto\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nfunction randomBytes(length) {\n return (0, bytes_1.arrayify)((0, crypto_1.randomBytes)(length));\n}\nexports.randomBytes = randomBytes;\n//# sourceMappingURL=random.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shuffled = void 0;\nfunction shuffled(array) {\n array = array.slice();\n for (var i = array.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1));\n var tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n return array;\n}\nexports.shuffled = shuffled;\n//# sourceMappingURL=shuffle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shuffled = exports.randomBytes = void 0;\nvar random_1 = require(\"./random\");\nObject.defineProperty(exports, \"randomBytes\", { enumerable: true, get: function () { return random_1.randomBytes; } });\nvar shuffle_1 = require(\"./shuffle\");\nObject.defineProperty(exports, \"shuffled\", { enumerable: true, get: function () { return shuffle_1.shuffled; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FallbackProvider = void 0;\nvar abstract_provider_1 = require(\"@ethersproject/abstract-provider\");\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar random_1 = require(\"@ethersproject/random\");\nvar web_1 = require(\"@ethersproject/web\");\nvar base_provider_1 = require(\"./base-provider\");\nvar formatter_1 = require(\"./formatter\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nfunction now() { return (new Date()).getTime(); }\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks) {\n var result = null;\n for (var i = 0; i < networks.length; i++) {\n var network = networks[i];\n // Null! We do not know our network; bail.\n if (network == null) {\n return null;\n }\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n }\n else {\n result = network;\n }\n }\n return result;\n}\nfunction median(values, maxDelta) {\n values = values.slice().sort();\n var middle = Math.floor(values.length / 2);\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n // Even length; take the average of the two middle\n var a = values[middle - 1], b = values[middle];\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n return (a + b) / 2;\n}\nfunction serialize(value) {\n if (value === null) {\n return \"null\";\n }\n else if (typeof (value) === \"number\" || typeof (value) === \"boolean\") {\n return JSON.stringify(value);\n }\n else if (typeof (value) === \"string\") {\n return value;\n }\n else if (bignumber_1.BigNumber.isBigNumber(value)) {\n return value.toString();\n }\n else if (Array.isArray(value)) {\n return JSON.stringify(value.map(function (i) { return serialize(i); }));\n }\n else if (typeof (value) === \"object\") {\n var keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map(function (key) {\n var v = value[key];\n if (typeof (v) === \"function\") {\n v = \"[function]\";\n }\n else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n throw new Error(\"unknown value type: \" + typeof (value));\n}\n// Next request ID to use for emitting debug info\nvar nextRid = 1;\n;\nfunction stall(duration) {\n var cancel = null;\n var timer = null;\n var promise = (new Promise(function (resolve) {\n cancel = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n };\n timer = setTimeout(cancel, duration);\n }));\n var wait = function (func) {\n promise = promise.then(func);\n return promise;\n };\n function getPromise() {\n return promise;\n }\n return { cancel: cancel, getPromise: getPromise, wait: wait };\n}\nvar ForwardErrors = [\n logger_1.Logger.errors.CALL_EXCEPTION,\n logger_1.Logger.errors.INSUFFICIENT_FUNDS,\n logger_1.Logger.errors.NONCE_EXPIRED,\n logger_1.Logger.errors.REPLACEMENT_UNDERPRICED,\n logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\nvar ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n;\nfunction exposeDebugConfig(config, now) {\n var result = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: function () { return config.provider; } });\n if (config.start) {\n result.start = config.start;\n }\n if (now) {\n result.duration = (now - config.start);\n }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n }\n else {\n result.result = config.result || null;\n }\n }\n return result;\n}\nfunction normalizedTally(normalize, quorum) {\n return function (configs) {\n // Count the votes for each result\n var tally = {};\n configs.forEach(function (c) {\n var value = normalize(c.result);\n if (!tally[value]) {\n tally[value] = { count: 0, result: c.result };\n }\n tally[value].count++;\n });\n // Check for a quorum on any given result\n var keys = Object.keys(tally);\n for (var i = 0; i < keys.length; i++) {\n var check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n // No quroum\n return undefined;\n };\n}\nfunction getProcessFunc(provider, method, params) {\n var normalize = serialize;\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function (configs) {\n var values = configs.map(function (c) { return c.result; });\n // Get the median block number\n var blockNumber = median(configs.map(function (c) { return c.result; }), 2);\n if (blockNumber == null) {\n return undefined;\n }\n blockNumber = Math.ceil(blockNumber);\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) {\n blockNumber++;\n }\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n return provider._highestBlockNumber;\n };\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function (configs) {\n var values = configs.map(function (c) { return c.result; });\n values.sort();\n return values[Math.floor(values.length / 2)];\n };\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function (configs) {\n return median(configs.map(function (c) { return c.result; }));\n };\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function (tx) {\n if (tx == null) {\n return null;\n }\n tx = (0, properties_1.shallowCopy)(tx);\n tx.confirmations = -1;\n return serialize(tx);\n };\n break;\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function (block) {\n if (block == null) {\n return null;\n }\n block = (0, properties_1.shallowCopy)(block);\n block.transactions = block.transactions.map(function (tx) {\n tx = (0, properties_1.shallowCopy)(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n }\n else {\n normalize = function (block) {\n if (block == null) {\n return null;\n }\n return serialize(block);\n };\n }\n break;\n default:\n throw new Error(\"unknown method: \" + method);\n }\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n}\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nfunction waitForSync(config, blockNumber) {\n return __awaiter(this, void 0, void 0, function () {\n var provider;\n return __generator(this, function (_a) {\n provider = (config.provider);\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return [2 /*return*/, provider];\n }\n return [2 /*return*/, (0, web_1.poll)(function () {\n return new Promise(function (resolve, reject) {\n setTimeout(function () {\n // We are synced\n if (provider.blockNumber >= blockNumber) {\n return resolve(provider);\n }\n // We're done; just quit\n if (config.cancelled) {\n return resolve(null);\n }\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider })];\n });\n });\n}\nfunction getRunner(config, currentBlockNumber, method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var provider, _a, filter;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n provider = config.provider;\n _a = method;\n switch (_a) {\n case \"getBlockNumber\": return [3 /*break*/, 1];\n case \"getGasPrice\": return [3 /*break*/, 1];\n case \"getEtherPrice\": return [3 /*break*/, 2];\n case \"getBalance\": return [3 /*break*/, 3];\n case \"getTransactionCount\": return [3 /*break*/, 3];\n case \"getCode\": return [3 /*break*/, 3];\n case \"getStorageAt\": return [3 /*break*/, 6];\n case \"getBlock\": return [3 /*break*/, 9];\n case \"call\": return [3 /*break*/, 12];\n case \"estimateGas\": return [3 /*break*/, 12];\n case \"getTransaction\": return [3 /*break*/, 15];\n case \"getTransactionReceipt\": return [3 /*break*/, 15];\n case \"getLogs\": return [3 /*break*/, 16];\n }\n return [3 /*break*/, 19];\n case 1: return [2 /*return*/, provider[method]()];\n case 2:\n if (provider.getEtherPrice) {\n return [2 /*return*/, provider.getEtherPrice()];\n }\n return [3 /*break*/, 19];\n case 3:\n if (!(params.blockTag && (0, bytes_1.isHexString)(params.blockTag))) return [3 /*break*/, 5];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 4:\n provider = _b.sent();\n _b.label = 5;\n case 5: return [2 /*return*/, provider[method](params.address, params.blockTag || \"latest\")];\n case 6:\n if (!(params.blockTag && (0, bytes_1.isHexString)(params.blockTag))) return [3 /*break*/, 8];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 7:\n provider = _b.sent();\n _b.label = 8;\n case 8: return [2 /*return*/, provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\")];\n case 9:\n if (!(params.blockTag && (0, bytes_1.isHexString)(params.blockTag))) return [3 /*break*/, 11];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 10:\n provider = _b.sent();\n _b.label = 11;\n case 11: return [2 /*return*/, provider[(params.includeTransactions ? \"getBlockWithTransactions\" : \"getBlock\")](params.blockTag || params.blockHash)];\n case 12:\n if (!(params.blockTag && (0, bytes_1.isHexString)(params.blockTag))) return [3 /*break*/, 14];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 13:\n provider = _b.sent();\n _b.label = 14;\n case 14:\n if (method === \"call\" && params.blockTag) {\n return [2 /*return*/, provider[method](params.transaction, params.blockTag)];\n }\n return [2 /*return*/, provider[method](params.transaction)];\n case 15: return [2 /*return*/, provider[method](params.transactionHash)];\n case 16:\n filter = params.filter;\n if (!((filter.fromBlock && (0, bytes_1.isHexString)(filter.fromBlock)) || (filter.toBlock && (0, bytes_1.isHexString)(filter.toBlock)))) return [3 /*break*/, 18];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 17:\n provider = _b.sent();\n _b.label = 18;\n case 18: return [2 /*return*/, provider.getLogs(filter)];\n case 19: return [2 /*return*/, logger.throwError(\"unknown method error\", logger_1.Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n })];\n }\n });\n });\n}\nvar FallbackProvider = /** @class */ (function (_super) {\n __extends(FallbackProvider, _super);\n function FallbackProvider(providers, quorum) {\n var _this = this;\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n var providerConfigs = providers.map(function (configOrProvider, index) {\n if (abstract_provider_1.Provider.isProvider(configOrProvider)) {\n var stallTimeout = (0, formatter_1.isCommunityResource)(configOrProvider) ? 2000 : 750;\n var priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout: stallTimeout, priority: priority });\n }\n var config = (0, properties_1.shallowCopy)(configOrProvider);\n if (config.priority == null) {\n config.priority = 1;\n }\n if (config.stallTimeout == null) {\n config.stallTimeout = (0, formatter_1.isCommunityResource)(configOrProvider) ? 2000 : 750;\n }\n if (config.weight == null) {\n config.weight = 1;\n }\n var weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", \"providers[\" + index + \"].weight\", weight);\n }\n return Object.freeze(config);\n });\n var total = providerConfigs.reduce(function (accum, c) { return (accum + c.weight); }, 0);\n if (quorum == null) {\n quorum = total / 2;\n }\n else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n // Are all providers' networks are known\n var networkOrReady = checkNetworks(providerConfigs.map(function (c) { return (c.provider).network; }));\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise(function (resolve, reject) {\n setTimeout(function () {\n _this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n _this = _super.call(this, networkOrReady) || this;\n // Preserve a copy, so we do not get mutated\n (0, properties_1.defineReadOnly)(_this, \"providerConfigs\", Object.freeze(providerConfigs));\n (0, properties_1.defineReadOnly)(_this, \"quorum\", quorum);\n _this._highestBlockNumber = -1;\n return _this;\n }\n FallbackProvider.prototype.detectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n var networks;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(this.providerConfigs.map(function (c) { return c.provider.getNetwork(); }))];\n case 1:\n networks = _a.sent();\n return [2 /*return*/, checkNetworks(networks)];\n }\n });\n });\n };\n FallbackProvider.prototype.perform = function (method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var results, i_1, result, processFunc, configs, currentBlockNumber, i, first, _loop_1, this_1, state_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(method === \"sendTransaction\")) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(this.providerConfigs.map(function (c) {\n return c.provider.sendTransaction(params.signedTransaction).then(function (result) {\n return result.hash;\n }, function (error) {\n return error;\n });\n }))];\n case 1:\n results = _a.sent();\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (i_1 = 0; i_1 < results.length; i_1++) {\n result = results[i_1];\n if (typeof (result) === \"string\") {\n return [2 /*return*/, result];\n }\n }\n // They were all an error; pick the first error\n throw results[0];\n case 2:\n if (!(this._highestBlockNumber === -1 && method !== \"getBlockNumber\")) return [3 /*break*/, 4];\n return [4 /*yield*/, this.getBlockNumber()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n processFunc = getProcessFunc(this, method, params);\n configs = (0, random_1.shuffled)(this.providerConfigs.map(properties_1.shallowCopy));\n configs.sort(function (a, b) { return (a.priority - b.priority); });\n currentBlockNumber = this._highestBlockNumber;\n i = 0;\n first = true;\n _loop_1 = function () {\n var t0, inflightWeight, _loop_2, waiting, results, result, errors;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n t0 = now();\n inflightWeight = configs.filter(function (c) { return (c.runner && ((t0 - c.start) < c.stallTimeout)); })\n .reduce(function (accum, c) { return (accum + c.weight); }, 0);\n _loop_2 = function () {\n var config = configs[i++];\n var rid = nextRid++;\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(function () { config.staller = null; });\n config.runner = getRunner(config, currentBlockNumber, method, params).then(function (result) {\n config.done = true;\n config.result = result;\n if (_this.listenerCount(\"debug\")) {\n _this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: (0, properties_1.deepCopy)(params) },\n provider: _this\n });\n }\n }, function (error) {\n config.done = true;\n config.error = error;\n if (_this.listenerCount(\"debug\")) {\n _this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: (0, properties_1.deepCopy)(params) },\n provider: _this\n });\n }\n });\n if (this_1.listenerCount(\"debug\")) {\n this_1.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: (0, properties_1.deepCopy)(params) },\n provider: this_1\n });\n }\n inflightWeight += config.weight;\n };\n // Start running enough to meet quorum\n while (inflightWeight < this_1.quorum && i < configs.length) {\n _loop_2();\n }\n waiting = [];\n configs.forEach(function (c) {\n if (c.done || !c.runner) {\n return;\n }\n waiting.push(c.runner);\n if (c.staller) {\n waiting.push(c.staller.getPromise());\n }\n });\n if (!waiting.length) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.race(waiting)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n results = configs.filter(function (c) { return (c.done && c.error == null); });\n if (!(results.length >= this_1.quorum)) return [3 /*break*/, 5];\n result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(function (c) {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n return [2 /*return*/, { value: result }];\n }\n if (!!first) return [3 /*break*/, 4];\n return [4 /*yield*/, stall(100).getPromise()];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n first = false;\n _b.label = 5;\n case 5:\n errors = configs.reduce(function (accum, c) {\n if (!c.done || c.error == null) {\n return accum;\n }\n var code = (c.error).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) {\n accum[code] = { error: c.error, weight: 0 };\n }\n accum[code].weight += c.weight;\n }\n return accum;\n }, ({}));\n Object.keys(errors).forEach(function (errorCode) {\n var tally = errors[errorCode];\n if (tally.weight < _this.quorum) {\n return;\n }\n // Shut down any stallers\n configs.forEach(function (c) {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n var e = (tally.error);\n var props = {};\n ForwardProperties.forEach(function (name) {\n if (e[name] == null) {\n return;\n }\n props[name] = e[name];\n });\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n // All configs have run to completion; we will never get more data\n if (configs.filter(function (c) { return !c.done; }).length === 0) {\n return [2 /*return*/, \"break\"];\n }\n return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _a.label = 5;\n case 5:\n if (!true) return [3 /*break*/, 7];\n return [5 /*yield**/, _loop_1()];\n case 6:\n state_1 = _a.sent();\n if (typeof state_1 === \"object\")\n return [2 /*return*/, state_1.value];\n if (state_1 === \"break\")\n return [3 /*break*/, 7];\n return [3 /*break*/, 5];\n case 7:\n // Shut down any stallers; shouldn't be any\n configs.forEach(function (c) {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n return [2 /*return*/, logger.throwError(\"failed to meet quorum\", logger_1.Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map(function (c) { return exposeDebugConfig(c); }),\n provider: this\n })];\n }\n });\n });\n };\n return FallbackProvider;\n}(base_provider_1.BaseProvider));\nexports.FallbackProvider = FallbackProvider;\n//# sourceMappingURL=fallback-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IpcProvider = void 0;\nvar net_1 = require(\"net\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\nvar IpcProvider = /** @class */ (function (_super) {\n __extends(IpcProvider, _super);\n function IpcProvider(path, network) {\n var _this = this;\n if (path == null) {\n logger.throwError(\"missing path\", logger_1.Logger.errors.MISSING_ARGUMENT, { arg: \"path\" });\n }\n _this = _super.call(this, \"ipc://\" + path, network) || this;\n (0, properties_1.defineReadOnly)(_this, \"path\", path);\n return _this;\n }\n // @TODO: Create a connection to the IPC path and use filters instead of polling for block\n IpcProvider.prototype.send = function (method, params) {\n // This method is very simple right now. We create a new socket\n // connection each time, which may be slower, but the main\n // advantage we are aiming for now is security. This simplifies\n // multiplexing requests (since we do not need to multiplex).\n var _this = this;\n var payload = JSON.stringify({\n method: method,\n params: params,\n id: 42,\n jsonrpc: \"2.0\"\n });\n return new Promise(function (resolve, reject) {\n var response = Buffer.alloc(0);\n var stream = (0, net_1.connect)(_this.path);\n stream.on(\"data\", function (data) {\n response = Buffer.concat([response, data]);\n });\n stream.on(\"end\", function () {\n try {\n resolve(JSON.parse(response.toString()).result);\n // @TODO: Better pull apart the error\n stream.destroy();\n }\n catch (error) {\n reject(error);\n stream.destroy();\n }\n });\n stream.on(\"error\", function (error) {\n reject(error);\n stream.destroy();\n });\n stream.write(payload);\n stream.end();\n });\n };\n return IpcProvider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.IpcProvider = IpcProvider;\n//# sourceMappingURL=ipc-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InfuraProvider = exports.InfuraWebSocketProvider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar websocket_provider_1 = require(\"./websocket-provider\");\nvar formatter_1 = require(\"./formatter\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar defaultProjectId = \"84842078b09946638c03157f83405213\";\nvar InfuraWebSocketProvider = /** @class */ (function (_super) {\n __extends(InfuraWebSocketProvider, _super);\n function InfuraWebSocketProvider(network, apiKey) {\n var _this = this;\n var provider = new InfuraProvider(network, apiKey);\n var connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n var url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n _this = _super.call(this, url, network) || this;\n (0, properties_1.defineReadOnly)(_this, \"apiKey\", provider.projectId);\n (0, properties_1.defineReadOnly)(_this, \"projectId\", provider.projectId);\n (0, properties_1.defineReadOnly)(_this, \"projectSecret\", provider.projectSecret);\n return _this;\n }\n InfuraWebSocketProvider.prototype.isCommunityResource = function () {\n return (this.projectId === defaultProjectId);\n };\n return InfuraWebSocketProvider;\n}(websocket_provider_1.WebSocketProvider));\nexports.InfuraWebSocketProvider = InfuraWebSocketProvider;\nvar InfuraProvider = /** @class */ (function (_super) {\n __extends(InfuraProvider, _super);\n function InfuraProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InfuraProvider.getWebSocketProvider = function (network, apiKey) {\n return new InfuraWebSocketProvider(network, apiKey);\n };\n InfuraProvider.getApiKey = function (apiKey) {\n var apiKeyObj = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n if (apiKey == null) {\n return apiKeyObj;\n }\n if (typeof (apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n }\n else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof (apiKey.projectId) === \"string\"), \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof (apiKey.projectSecret) === \"string\"), \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n }\n else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n apiKeyObj.apiKey = apiKeyObj.projectId;\n return apiKeyObj;\n };\n InfuraProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network ? network.name : \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"optimism-sepolia\":\n host = \"optimism-sepolia.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n case \"arbitrum-sepolia\":\n host = \"arbitrum-sepolia.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", logger_1.Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n var connection = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: function (attempt, url) {\n if (apiKey.projectId === defaultProjectId) {\n (0, formatter_1.showThrottleMessage)();\n }\n return Promise.resolve(true);\n }\n };\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret;\n }\n return connection;\n };\n InfuraProvider.prototype.isCommunityResource = function () {\n return (this.projectId === defaultProjectId);\n };\n return InfuraProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.InfuraProvider = InfuraProvider;\n//# sourceMappingURL=infura-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonRpcBatchProvider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar web_1 = require(\"@ethersproject/web\");\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\n// Experimental\nvar JsonRpcBatchProvider = /** @class */ (function (_super) {\n __extends(JsonRpcBatchProvider, _super);\n function JsonRpcBatchProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n JsonRpcBatchProvider.prototype.send = function (method, params) {\n var _this = this;\n var request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n if (this._pendingBatch == null) {\n this._pendingBatch = [];\n }\n var inflightRequest = { request: request, resolve: null, reject: null };\n var promise = new Promise(function (resolve, reject) {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n this._pendingBatch.push(inflightRequest);\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(function () {\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n var batch = _this._pendingBatch;\n _this._pendingBatch = null;\n _this._pendingBatchAggregator = null;\n // Get the request as an array of requests\n var request = batch.map(function (inflight) { return inflight.request; });\n _this.emit(\"debug\", {\n action: \"requestBatch\",\n request: (0, properties_1.deepCopy)(request),\n provider: _this\n });\n return (0, web_1.fetchJson)(_this.connection, JSON.stringify(request)).then(function (result) {\n _this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: _this\n });\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach(function (inflightRequest, index) {\n var payload = result[index];\n if (payload.error) {\n var error = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n inflightRequest.reject(error);\n }\n else {\n inflightRequest.resolve(payload.result);\n }\n });\n }, function (error) {\n _this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: _this\n });\n batch.forEach(function (inflightRequest) {\n inflightRequest.reject(error);\n });\n });\n }, 10);\n }\n return promise;\n };\n return JsonRpcBatchProvider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.JsonRpcBatchProvider = JsonRpcBatchProvider;\n//# sourceMappingURL=json-rpc-batch-provider.js.map","/* istanbul ignore file */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodesmithProvider = void 0;\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n// Special API key provided by Nodesmith for ethers.js\nvar defaultApiKey = \"ETHERS_JS_SHARED\";\nvar NodesmithProvider = /** @class */ (function (_super) {\n __extends(NodesmithProvider, _super);\n function NodesmithProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NodesmithProvider.getApiKey = function (apiKey) {\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n };\n NodesmithProvider.getUrl = function (network, apiKey) {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n var host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return (host + \"?apiKey=\" + apiKey);\n };\n return NodesmithProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.NodesmithProvider = NodesmithProvider;\n//# sourceMappingURL=nodesmith-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PocketProvider = void 0;\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\nvar PocketProvider = /** @class */ (function (_super) {\n __extends(PocketProvider, _super);\n function PocketProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PocketProvider.getApiKey = function (apiKey) {\n var apiKeyObj = {\n applicationId: null,\n loadBalancer: true,\n applicationSecretKey: null\n };\n // Parse applicationId and applicationSecretKey\n if (apiKey == null) {\n apiKeyObj.applicationId = defaultApplicationId;\n }\n else if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n }\n else if (apiKey.applicationSecretKey != null) {\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n }\n else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n }\n else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n return apiKeyObj;\n };\n PocketProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network ? network.name : \"unknown\") {\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"kovan\":\n host = \"poa-kovan.gateway.pokt.network\";\n break;\n case \"matic\":\n host = \"poly-mainnet.gateway.pokt.network\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai-rpc.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", logger_1.Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n var url = \"https://\" + host + \"/v1/lb/\" + apiKey.applicationId;\n var connection = { headers: {}, url: url };\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey;\n }\n return connection;\n };\n PocketProvider.prototype.isCommunityResource = function () {\n return (this.applicationId === defaultApplicationId);\n };\n return PocketProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.PocketProvider = PocketProvider;\n//# sourceMappingURL=pocket-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuickNodeProvider = void 0;\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n// Special API key provided by Quicknode for ethers.js\nvar defaultApiKey = \"919b412a057b5e9c9b6dce193c5a60242d6efadb\";\nvar QuickNodeProvider = /** @class */ (function (_super) {\n __extends(QuickNodeProvider, _super);\n function QuickNodeProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n QuickNodeProvider.getApiKey = function (apiKey) {\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n };\n QuickNodeProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"ethers.quiknode.pro\";\n break;\n case \"goerli\":\n host = \"ethers.ethereum-goerli.quiknode.pro\";\n break;\n case \"sepolia\":\n host = \"ethers.ethereum-sepolia.quiknode.pro\";\n break;\n case \"holesky\":\n host = \"ethers.ethereum-holesky.quiknode.pro\";\n break;\n case \"arbitrum\":\n host = \"ethers.arbitrum-mainnet.quiknode.pro\";\n break;\n case \"arbitrum-goerli\":\n host = \"ethers.arbitrum-goerli.quiknode.pro\";\n break;\n case \"arbitrum-sepolia\":\n host = \"ethers.arbitrum-sepolia.quiknode.pro\";\n break;\n case \"base\":\n host = \"ethers.base-mainnet.quiknode.pro\";\n break;\n case \"base-goerli\":\n host = \"ethers.base-goerli.quiknode.pro\";\n break;\n case \"base-spolia\":\n host = \"ethers.base-sepolia.quiknode.pro\";\n break;\n case \"bnb\":\n host = \"ethers.bsc.quiknode.pro\";\n break;\n case \"bnbt\":\n host = \"ethers.bsc-testnet.quiknode.pro\";\n break;\n case \"matic\":\n host = \"ethers.matic.quiknode.pro\";\n break;\n case \"maticmum\":\n host = \"ethers.matic-testnet.quiknode.pro\";\n break;\n case \"optimism\":\n host = \"ethers.optimism.quiknode.pro\";\n break;\n case \"optimism-goerli\":\n host = \"ethers.optimism-goerli.quiknode.pro\";\n break;\n case \"optimism-sepolia\":\n host = \"ethers.optimism-sepolia.quiknode.pro\";\n break;\n case \"xdai\":\n host = \"ethers.xdai.quiknode.pro\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return (\"https:/\" + \"/\" + host + \"/\" + apiKey);\n };\n return QuickNodeProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.QuickNodeProvider = QuickNodeProvider;\n//# sourceMappingURL=quicknode-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3Provider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\nvar _nextId = 1;\nfunction buildWeb3LegacyFetcher(provider, sendFunc) {\n var fetcher = \"Web3LegacyFetcher\";\n return function (method, params) {\n var _this = this;\n var request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n return new Promise(function (resolve, reject) {\n _this.emit(\"debug\", {\n action: \"request\",\n fetcher: fetcher,\n request: (0, properties_1.deepCopy)(request),\n provider: _this\n });\n sendFunc(request, function (error, response) {\n if (error) {\n _this.emit(\"debug\", {\n action: \"response\",\n fetcher: fetcher,\n error: error,\n request: request,\n provider: _this\n });\n return reject(error);\n }\n _this.emit(\"debug\", {\n action: \"response\",\n fetcher: fetcher,\n request: request,\n response: response,\n provider: _this\n });\n if (response.error) {\n var error_1 = new Error(response.error.message);\n error_1.code = response.error.code;\n error_1.data = response.error.data;\n return reject(error_1);\n }\n resolve(response.result);\n });\n });\n };\n}\nfunction buildEip1193Fetcher(provider) {\n return function (method, params) {\n var _this = this;\n if (params == null) {\n params = [];\n }\n var request = { method: method, params: params };\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: (0, properties_1.deepCopy)(request),\n provider: this\n });\n return provider.request(request).then(function (response) {\n _this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request: request,\n response: response,\n provider: _this\n });\n return response;\n }, function (error) {\n _this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request: request,\n error: error,\n provider: _this\n });\n throw error;\n });\n };\n}\nvar Web3Provider = /** @class */ (function (_super) {\n __extends(Web3Provider, _super);\n function Web3Provider(provider, network) {\n var _this = this;\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n var path = null;\n var jsonRpcFetchFunc = null;\n var subprovider = null;\n if (typeof (provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n }\n else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n subprovider = provider;\n if (provider.request) {\n if (path === \"\") {\n path = \"eip-1193:\";\n }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n }\n else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n }\n else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n }\n else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n if (!path) {\n path = \"unknown:\";\n }\n }\n _this = _super.call(this, path, network) || this;\n (0, properties_1.defineReadOnly)(_this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n (0, properties_1.defineReadOnly)(_this, \"provider\", subprovider);\n return _this;\n }\n Web3Provider.prototype.send = function (method, params) {\n return this.jsonRpcFetchFunc(method, params);\n };\n return Web3Provider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.Web3Provider = Web3Provider;\n//# sourceMappingURL=web3-provider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Formatter = exports.showThrottleMessage = exports.isCommunityResourcable = exports.isCommunityResource = exports.getNetwork = exports.getDefaultProvider = exports.JsonRpcSigner = exports.IpcProvider = exports.WebSocketProvider = exports.Web3Provider = exports.StaticJsonRpcProvider = exports.QuickNodeProvider = exports.PocketProvider = exports.NodesmithProvider = exports.JsonRpcBatchProvider = exports.JsonRpcProvider = exports.InfuraWebSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyWebSocketProvider = exports.AlchemyProvider = exports.FallbackProvider = exports.UrlJsonRpcProvider = exports.Resolver = exports.BaseProvider = exports.Provider = void 0;\nvar abstract_provider_1 = require(\"@ethersproject/abstract-provider\");\nObject.defineProperty(exports, \"Provider\", { enumerable: true, get: function () { return abstract_provider_1.Provider; } });\nvar networks_1 = require(\"@ethersproject/networks\");\nObject.defineProperty(exports, \"getNetwork\", { enumerable: true, get: function () { return networks_1.getNetwork; } });\nvar base_provider_1 = require(\"./base-provider\");\nObject.defineProperty(exports, \"BaseProvider\", { enumerable: true, get: function () { return base_provider_1.BaseProvider; } });\nObject.defineProperty(exports, \"Resolver\", { enumerable: true, get: function () { return base_provider_1.Resolver; } });\nvar alchemy_provider_1 = require(\"./alchemy-provider\");\nObject.defineProperty(exports, \"AlchemyProvider\", { enumerable: true, get: function () { return alchemy_provider_1.AlchemyProvider; } });\nObject.defineProperty(exports, \"AlchemyWebSocketProvider\", { enumerable: true, get: function () { return alchemy_provider_1.AlchemyWebSocketProvider; } });\nvar ankr_provider_1 = require(\"./ankr-provider\");\nObject.defineProperty(exports, \"AnkrProvider\", { enumerable: true, get: function () { return ankr_provider_1.AnkrProvider; } });\nvar cloudflare_provider_1 = require(\"./cloudflare-provider\");\nObject.defineProperty(exports, \"CloudflareProvider\", { enumerable: true, get: function () { return cloudflare_provider_1.CloudflareProvider; } });\nvar etherscan_provider_1 = require(\"./etherscan-provider\");\nObject.defineProperty(exports, \"EtherscanProvider\", { enumerable: true, get: function () { return etherscan_provider_1.EtherscanProvider; } });\nvar fallback_provider_1 = require(\"./fallback-provider\");\nObject.defineProperty(exports, \"FallbackProvider\", { enumerable: true, get: function () { return fallback_provider_1.FallbackProvider; } });\nvar ipc_provider_1 = require(\"./ipc-provider\");\nObject.defineProperty(exports, \"IpcProvider\", { enumerable: true, get: function () { return ipc_provider_1.IpcProvider; } });\nvar infura_provider_1 = require(\"./infura-provider\");\nObject.defineProperty(exports, \"InfuraProvider\", { enumerable: true, get: function () { return infura_provider_1.InfuraProvider; } });\nObject.defineProperty(exports, \"InfuraWebSocketProvider\", { enumerable: true, get: function () { return infura_provider_1.InfuraWebSocketProvider; } });\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\nObject.defineProperty(exports, \"JsonRpcProvider\", { enumerable: true, get: function () { return json_rpc_provider_1.JsonRpcProvider; } });\nObject.defineProperty(exports, \"JsonRpcSigner\", { enumerable: true, get: function () { return json_rpc_provider_1.JsonRpcSigner; } });\nvar json_rpc_batch_provider_1 = require(\"./json-rpc-batch-provider\");\nObject.defineProperty(exports, \"JsonRpcBatchProvider\", { enumerable: true, get: function () { return json_rpc_batch_provider_1.JsonRpcBatchProvider; } });\nvar nodesmith_provider_1 = require(\"./nodesmith-provider\");\nObject.defineProperty(exports, \"NodesmithProvider\", { enumerable: true, get: function () { return nodesmith_provider_1.NodesmithProvider; } });\nvar pocket_provider_1 = require(\"./pocket-provider\");\nObject.defineProperty(exports, \"PocketProvider\", { enumerable: true, get: function () { return pocket_provider_1.PocketProvider; } });\nvar quicknode_provider_1 = require(\"./quicknode-provider\");\nObject.defineProperty(exports, \"QuickNodeProvider\", { enumerable: true, get: function () { return quicknode_provider_1.QuickNodeProvider; } });\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nObject.defineProperty(exports, \"StaticJsonRpcProvider\", { enumerable: true, get: function () { return url_json_rpc_provider_1.StaticJsonRpcProvider; } });\nObject.defineProperty(exports, \"UrlJsonRpcProvider\", { enumerable: true, get: function () { return url_json_rpc_provider_1.UrlJsonRpcProvider; } });\nvar web3_provider_1 = require(\"./web3-provider\");\nObject.defineProperty(exports, \"Web3Provider\", { enumerable: true, get: function () { return web3_provider_1.Web3Provider; } });\nvar websocket_provider_1 = require(\"./websocket-provider\");\nObject.defineProperty(exports, \"WebSocketProvider\", { enumerable: true, get: function () { return websocket_provider_1.WebSocketProvider; } });\nvar formatter_1 = require(\"./formatter\");\nObject.defineProperty(exports, \"Formatter\", { enumerable: true, get: function () { return formatter_1.Formatter; } });\nObject.defineProperty(exports, \"isCommunityResourcable\", { enumerable: true, get: function () { return formatter_1.isCommunityResourcable; } });\nObject.defineProperty(exports, \"isCommunityResource\", { enumerable: true, get: function () { return formatter_1.isCommunityResource; } });\nObject.defineProperty(exports, \"showThrottleMessage\", { enumerable: true, get: function () { return formatter_1.showThrottleMessage; } });\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n////////////////////////\n// Helper Functions\nfunction getDefaultProvider(network, options) {\n if (network == null) {\n network = \"homestead\";\n }\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof (network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n // Handle http and ws (and their secure variants)\n var match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\":\n case \"https\":\n return new json_rpc_provider_1.JsonRpcProvider(network);\n case \"ws\":\n case \"wss\":\n return new websocket_provider_1.WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n var n = (0, networks_1.getNetwork)(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", logger_1.Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n return n._defaultProvider({\n FallbackProvider: fallback_provider_1.FallbackProvider,\n AlchemyProvider: alchemy_provider_1.AlchemyProvider,\n AnkrProvider: ankr_provider_1.AnkrProvider,\n CloudflareProvider: cloudflare_provider_1.CloudflareProvider,\n EtherscanProvider: etherscan_provider_1.EtherscanProvider,\n InfuraProvider: infura_provider_1.InfuraProvider,\n JsonRpcProvider: json_rpc_provider_1.JsonRpcProvider,\n NodesmithProvider: nodesmith_provider_1.NodesmithProvider,\n PocketProvider: pocket_provider_1.PocketProvider,\n QuickNodeProvider: quicknode_provider_1.QuickNodeProvider,\n Web3Provider: web3_provider_1.Web3Provider,\n IpcProvider: ipc_provider_1.IpcProvider,\n }, options);\n}\nexports.getDefaultProvider = getDefaultProvider;\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lib-CJw8te9L.mjs","names":["crypto_1","EventEmitter","http","createHash","Duplex","module"],"sources":["../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.8.0/node_modules/@ethersproject/abstract-provider/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.8.0/node_modules/@ethersproject/abstract-provider/lib/index.js","../../../node_modules/.pnpm/@ethersproject+networks@5.8.0/node_modules/@ethersproject/networks/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+networks@5.8.0/node_modules/@ethersproject/networks/lib/index.js","../../../node_modules/.pnpm/@ethersproject+basex@5.8.0/node_modules/@ethersproject/basex/lib/index.js","../../../node_modules/.pnpm/@ethersproject+sha2@5.8.0/node_modules/@ethersproject/sha2/lib/types.js","../../../node_modules/.pnpm/@ethersproject+sha2@5.8.0/node_modules/@ethersproject/sha2/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+sha2@5.8.0/node_modules/@ethersproject/sha2/lib/sha2.js","../../../node_modules/.pnpm/@ethersproject+sha2@5.8.0/node_modules/@ethersproject/sha2/lib/index.js","../../../node_modules/.pnpm/@ethersproject+web@5.8.0/node_modules/@ethersproject/web/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+web@5.8.0/node_modules/@ethersproject/web/lib/geturl.js","../../../node_modules/.pnpm/@ethersproject+web@5.8.0/node_modules/@ethersproject/web/lib/index.js","../../../node_modules/.pnpm/bech32@1.1.4/node_modules/bech32/index.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/formatter.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/base-provider.js","../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.8.0/node_modules/@ethersproject/abstract-signer/lib/_version.js","../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.8.0/node_modules/@ethersproject/abstract-signer/lib/index.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/json-rpc-provider.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/constants.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/buffer-util.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/limiter.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/permessage-deflate.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/validation.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/receiver.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/sender.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/event-target.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/extension.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/websocket.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/stream.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/subprotocol.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/lib/websocket-server.js","../../../node_modules/.pnpm/ws@8.18.0/node_modules/ws/index.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/ws.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/websocket-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/url-json-rpc-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/alchemy-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/ankr-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/cloudflare-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/etherscan-provider.js","../../../node_modules/.pnpm/@ethersproject+random@5.8.0/node_modules/@ethersproject/random/lib/random.js","../../../node_modules/.pnpm/@ethersproject+random@5.8.0/node_modules/@ethersproject/random/lib/shuffle.js","../../../node_modules/.pnpm/@ethersproject+random@5.8.0/node_modules/@ethersproject/random/lib/index.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/fallback-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/ipc-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/infura-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/json-rpc-batch-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/nodesmith-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/pocket-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/quicknode-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/web3-provider.js","../../../node_modules/.pnpm/@ethersproject+providers@5.8.0/node_modules/@ethersproject/providers/lib/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"abstract-provider/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Provider = exports.TransactionOrderForkEvent = exports.TransactionForkEvent = exports.BlockForkEvent = exports.ForkEvent = void 0;\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n;\n;\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise<TransactionResponse>;\n//};\nvar ForkEvent = /** @class */ (function (_super) {\n __extends(ForkEvent, _super);\n function ForkEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ForkEvent.isForkEvent = function (value) {\n return !!(value && value._isForkEvent);\n };\n return ForkEvent;\n}(properties_1.Description));\nexports.ForkEvent = ForkEvent;\nvar BlockForkEvent = /** @class */ (function (_super) {\n __extends(BlockForkEvent, _super);\n function BlockForkEvent(blockHash, expiry) {\n var _this = this;\n if (!(0, bytes_1.isHexString)(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n _this = _super.call(this, {\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n }) || this;\n return _this;\n }\n return BlockForkEvent;\n}(ForkEvent));\nexports.BlockForkEvent = BlockForkEvent;\nvar TransactionForkEvent = /** @class */ (function (_super) {\n __extends(TransactionForkEvent, _super);\n function TransactionForkEvent(hash, expiry) {\n var _this = this;\n if (!(0, bytes_1.isHexString)(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n _this = _super.call(this, {\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n }) || this;\n return _this;\n }\n return TransactionForkEvent;\n}(ForkEvent));\nexports.TransactionForkEvent = TransactionForkEvent;\nvar TransactionOrderForkEvent = /** @class */ (function (_super) {\n __extends(TransactionOrderForkEvent, _super);\n function TransactionOrderForkEvent(beforeHash, afterHash, expiry) {\n var _this = this;\n if (!(0, bytes_1.isHexString)(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!(0, bytes_1.isHexString)(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n _this = _super.call(this, {\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n }) || this;\n return _this;\n }\n return TransactionOrderForkEvent;\n}(ForkEvent));\nexports.TransactionOrderForkEvent = TransactionOrderForkEvent;\n///////////////////////////////\n// Exported Abstracts\nvar Provider = /** @class */ (function () {\n function Provider() {\n var _newTarget = this.constructor;\n logger.checkAbstract(_newTarget, Provider);\n (0, properties_1.defineReadOnly)(this, \"_isProvider\", true);\n }\n Provider.prototype.getFeeData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, block, gasPrice, lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, (0, properties_1.resolveProperties)({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch(function (error) {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n })];\n case 1:\n _a = _b.sent(), block = _a.block, gasPrice = _a.gasPrice;\n lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = bignumber_1.BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n return [2 /*return*/, { lastBaseFeePerGas: lastBaseFeePerGas, maxFeePerGas: maxFeePerGas, maxPriorityFeePerGas: maxPriorityFeePerGas, gasPrice: gasPrice }];\n }\n });\n });\n };\n // Alias for \"on\"\n Provider.prototype.addListener = function (eventName, listener) {\n return this.on(eventName, listener);\n };\n // Alias for \"off\"\n Provider.prototype.removeListener = function (eventName, listener) {\n return this.off(eventName, listener);\n };\n Provider.isProvider = function (value) {\n return !!(value && value._isProvider);\n };\n return Provider;\n}());\nexports.Provider = Provider;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"networks/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNetwork = void 0;\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n;\nfunction isRenetworkable(value) {\n return (value && typeof (value.renetwork) === \"function\");\n}\nfunction ethDefaultProvider(network) {\n var func = function (providers, options) {\n if (options == null) {\n options = {};\n }\n var providerList = [];\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n }\n catch (error) { }\n }\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n }\n catch (error) { }\n }\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n }\n catch (error) { }\n }\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n var skip = [\"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\"];\n try {\n var provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n }\n catch (error) { }\n }\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n }\n catch (error) { }\n }\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n var skip = [\"ropsten\"];\n var provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n }\n catch (error) { }\n }\n if (providers.QuickNodeProvider && options.quicknode !== \"-\") {\n try {\n providerList.push(new providers.QuickNodeProvider(network, options.quicknode));\n }\n catch (error) { }\n }\n if (providerList.length === 0) {\n return null;\n }\n if (providers.FallbackProvider) {\n var quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n }\n else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n return providerList[0];\n };\n func.renetwork = function (network) {\n return ethDefaultProvider(network);\n };\n return func;\n}\nfunction etcDefaultProvider(url, network) {\n var func = function (providers, options) {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n return null;\n };\n func.renetwork = function (network) {\n return etcDefaultProvider(url, network);\n };\n return func;\n}\nvar homestead = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\nvar ropsten = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\nvar classicMordor = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n// See: https://chainlist.org\nvar networks = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n homestead: homestead,\n mainnet: homestead,\n morden: { chainId: 2, name: \"morden\" },\n ropsten: ropsten,\n testnet: ropsten,\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n sepolia: {\n chainId: 11155111,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n holesky: {\n chainId: 17000,\n name: \"holesky\",\n _defaultProvider: ethDefaultProvider(\"holesky\")\n },\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n xdai: { chainId: 100, name: \"xdai\" },\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: {\n chainId: 80001,\n name: \"maticmum\",\n _defaultProvider: ethDefaultProvider(\"maticmum\")\n },\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n \"optimism-sepolia\": { chainId: 11155420, name: \"optimism-sepolia\" },\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n \"arbitrum-sepolia\": { chainId: 421614, name: \"arbitrum-sepolia\" },\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n};\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nfunction getNetwork(network) {\n // No network (null)\n if (network == null) {\n return null;\n }\n if (typeof (network) === \"number\") {\n for (var name_1 in networks) {\n var standard_1 = networks[name_1];\n if (standard_1.chainId === network) {\n return {\n name: standard_1.name,\n chainId: standard_1.chainId,\n ensAddress: (standard_1.ensAddress || null),\n _defaultProvider: (standard_1._defaultProvider || null)\n };\n }\n }\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n if (typeof (network) === \"string\") {\n var standard_2 = networks[network];\n if (standard_2 == null) {\n return null;\n }\n return {\n name: standard_2.name,\n chainId: standard_2.chainId,\n ensAddress: standard_2.ensAddress,\n _defaultProvider: (standard_2._defaultProvider || null)\n };\n }\n var standard = networks[network.name];\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof (network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n var defaultProvider = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n }\n else {\n defaultProvider = standard._defaultProvider;\n }\n }\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\nexports.getNetwork = getNetwork;\n//# sourceMappingURL=index.js.map","\"use strict\";\n/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base58 = exports.Base32 = exports.BaseX = void 0;\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar BaseX = /** @class */ (function () {\n function BaseX(alphabet) {\n (0, properties_1.defineReadOnly)(this, \"alphabet\", alphabet);\n (0, properties_1.defineReadOnly)(this, \"base\", alphabet.length);\n (0, properties_1.defineReadOnly)(this, \"_alphabetMap\", {});\n (0, properties_1.defineReadOnly)(this, \"_leader\", alphabet.charAt(0));\n // pre-compute lookup table\n for (var i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n BaseX.prototype.encode = function (value) {\n var source = (0, bytes_1.arrayify)(value);\n if (source.length === 0) {\n return \"\";\n }\n var digits = [0];\n for (var i = 0; i < source.length; ++i) {\n var carry = source[i];\n for (var j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n var string = \"\";\n // deal with leading zeros\n for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n // convert digits to a string\n for (var q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n return string;\n };\n BaseX.prototype.decode = function (value) {\n if (typeof (value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n var bytes = [];\n if (value.length === 0) {\n return new Uint8Array(bytes);\n }\n bytes.push(0);\n for (var i = 0; i < value.length; i++) {\n var byte = this._alphabetMap[value[i]];\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n var carry = byte;\n for (var j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n // deal with leading zeros\n for (var k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0);\n }\n return (0, bytes_1.arrayify)(new Uint8Array(bytes.reverse()));\n };\n return BaseX;\n}());\nexports.BaseX = BaseX;\nvar Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nexports.Base32 = Base32;\nvar Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\nexports.Base58 = Base58;\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SupportedAlgorithm = void 0;\nvar SupportedAlgorithm;\n(function (SupportedAlgorithm) {\n SupportedAlgorithm[\"sha256\"] = \"sha256\";\n SupportedAlgorithm[\"sha512\"] = \"sha512\";\n})(SupportedAlgorithm = exports.SupportedAlgorithm || (exports.SupportedAlgorithm = {}));\n;\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"sha2/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.computeHmac = exports.sha512 = exports.sha256 = exports.ripemd160 = void 0;\nvar crypto_1 = require(\"crypto\");\nvar hash_js_1 = __importDefault(require(\"hash.js\"));\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar types_1 = require(\"./types\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nfunction ripemd160(data) {\n return \"0x\" + (hash_js_1.default.ripemd160().update((0, bytes_1.arrayify)(data)).digest(\"hex\"));\n}\nexports.ripemd160 = ripemd160;\nfunction sha256(data) {\n return \"0x\" + (0, crypto_1.createHash)(\"sha256\").update(Buffer.from((0, bytes_1.arrayify)(data))).digest(\"hex\");\n}\nexports.sha256 = sha256;\nfunction sha512(data) {\n return \"0x\" + (0, crypto_1.createHash)(\"sha512\").update(Buffer.from((0, bytes_1.arrayify)(data))).digest(\"hex\");\n}\nexports.sha512 = sha512;\nfunction computeHmac(algorithm, key, data) {\n /* istanbul ignore if */\n if (!types_1.SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm - \" + algorithm, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"computeHmac\",\n algorithm: algorithm\n });\n }\n return \"0x\" + (0, crypto_1.createHmac)(algorithm, Buffer.from((0, bytes_1.arrayify)(key))).update(Buffer.from((0, bytes_1.arrayify)(data))).digest(\"hex\");\n}\nexports.computeHmac = computeHmac;\n//# sourceMappingURL=sha2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SupportedAlgorithm = exports.sha512 = exports.sha256 = exports.ripemd160 = exports.computeHmac = void 0;\nvar sha2_1 = require(\"./sha2\");\nObject.defineProperty(exports, \"computeHmac\", { enumerable: true, get: function () { return sha2_1.computeHmac; } });\nObject.defineProperty(exports, \"ripemd160\", { enumerable: true, get: function () { return sha2_1.ripemd160; } });\nObject.defineProperty(exports, \"sha256\", { enumerable: true, get: function () { return sha2_1.sha256; } });\nObject.defineProperty(exports, \"sha512\", { enumerable: true, get: function () { return sha2_1.sha512; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"SupportedAlgorithm\", { enumerable: true, get: function () { return types_1.SupportedAlgorithm; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"web/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUrl = void 0;\nvar http_1 = __importDefault(require(\"http\"));\nvar https_1 = __importDefault(require(\"https\"));\nvar zlib_1 = require(\"zlib\");\nvar url_1 = require(\"url\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nfunction getResponse(request) {\n return new Promise(function (resolve, reject) {\n request.once(\"response\", function (resp) {\n var response = {\n statusCode: resp.statusCode,\n statusMessage: resp.statusMessage,\n headers: Object.keys(resp.headers).reduce(function (accum, name) {\n var value = resp.headers[name];\n if (Array.isArray(value)) {\n value = value.join(\", \");\n }\n accum[name] = value;\n return accum;\n }, {}),\n body: null\n };\n //resp.setEncoding(\"utf8\");\n resp.on(\"data\", function (chunk) {\n if (response.body == null) {\n response.body = new Uint8Array(0);\n }\n response.body = (0, bytes_1.concat)([response.body, chunk]);\n });\n resp.on(\"end\", function () {\n if (response.headers[\"content-encoding\"] === \"gzip\") {\n //const size = response.body.length;\n response.body = (0, bytes_1.arrayify)((0, zlib_1.gunzipSync)(response.body));\n //console.log(\"Delta:\", response.body.length - size, Buffer.from(response.body).toString());\n }\n resolve(response);\n });\n resp.on(\"error\", function (error) {\n /* istanbul ignore next */\n error.response = response;\n reject(error);\n });\n });\n request.on(\"error\", function (error) { reject(error); });\n });\n}\n// The URL.parse uses null instead of the empty string\nfunction nonnull(value) {\n if (value == null) {\n return \"\";\n }\n return value;\n}\nfunction getUrl(href, options) {\n return __awaiter(this, void 0, void 0, function () {\n var url, request, req, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (options == null) {\n options = {};\n }\n url = (0, url_1.parse)(href);\n request = {\n protocol: nonnull(url.protocol),\n hostname: nonnull(url.hostname),\n port: nonnull(url.port),\n path: (nonnull(url.pathname) + nonnull(url.search)),\n method: (options.method || \"GET\"),\n headers: (0, properties_1.shallowCopy)(options.headers || {}),\n };\n if (options.allowGzip) {\n request.headers[\"accept-encoding\"] = \"gzip\";\n }\n req = null;\n switch (nonnull(url.protocol)) {\n case \"http:\":\n req = http_1.default.request(request);\n break;\n case \"https:\":\n req = https_1.default.request(request);\n break;\n default:\n /* istanbul ignore next */\n logger.throwError(\"unsupported protocol \" + url.protocol, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n protocol: url.protocol,\n operation: \"request\"\n });\n }\n if (options.body) {\n req.write(Buffer.from(options.body));\n }\n req.end();\n return [4 /*yield*/, getResponse(req)];\n case 1:\n response = _a.sent();\n return [2 /*return*/, response];\n }\n });\n });\n}\nexports.getUrl = getUrl;\n//# sourceMappingURL=geturl.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.poll = exports.fetchJson = exports._fetchData = void 0;\nvar base64_1 = require(\"@ethersproject/base64\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar strings_1 = require(\"@ethersproject/strings\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar geturl_1 = require(\"./geturl\");\nfunction staller(duration) {\n return new Promise(function (resolve) {\n setTimeout(resolve, duration);\n });\n}\nfunction bodyify(value, type) {\n if (value == null) {\n return null;\n }\n if (typeof (value) === \"string\") {\n return value;\n }\n if ((0, bytes_1.isBytesLike)(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return (0, strings_1.toUtf8String)(value);\n }\n catch (error) { }\n ;\n }\n return (0, bytes_1.hexlify)(value);\n }\n return value;\n}\nfunction unpercent(value) {\n return (0, strings_1.toUtf8Bytes)(value.replace(/%([0-9a-f][0-9a-f])/gi, function (all, code) {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest<T = any>\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nfunction _fetchData(connection, body, processFunc) {\n // How many times to retry in the event of a throttle\n var attemptLimit = (typeof (connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit : 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0), \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n var throttleCallback = ((typeof (connection) === \"object\") ? connection.throttleCallback : null);\n var throttleSlotInterval = ((typeof (connection) === \"object\" && typeof (connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval : 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0), \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n var errorPassThrough = ((typeof (connection) === \"object\") ? !!(connection.errorPassThrough) : false);\n var headers = {};\n var url = null;\n // @TODO: Allow ConnectionInfo to override some of these values\n var options = {\n method: \"GET\",\n };\n var allow304 = false;\n var timeout = 2 * 60 * 1000;\n if (typeof (connection) === \"string\") {\n url = connection;\n }\n else if (typeof (connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n url = connection.url;\n if (typeof (connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n if (connection.headers) {\n for (var key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n options.allowGzip = !!connection.allowGzip;\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\"basic authentication requires a secure https url\", logger_1.Logger.errors.INVALID_ARGUMENT, { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" });\n }\n var authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + (0, base64_1.encode)((0, strings_1.toUtf8Bytes)(authorization))\n };\n }\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n if (connection.fetchOptions != null) {\n options.fetchOptions = (0, properties_1.shallowCopy)(connection.fetchOptions);\n }\n }\n var reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n var dataMatch = ((url) ? url.match(reData) : null);\n if (dataMatch) {\n try {\n var response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\") },\n body: (dataMatch[2] ? (0, base64_1.decode)(dataMatch[3]) : unpercent(dataMatch[3]))\n };\n var result = response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(result);\n }\n catch (error) {\n logger.throwError(\"processing response error\", logger_1.Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n var flatHeaders = {};\n Object.keys(headers).forEach(function (key) {\n var header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n var runningTimeout = (function () {\n var timer = null;\n var promise = new Promise(function (resolve, reject) {\n if (timeout) {\n timer = setTimeout(function () {\n if (timer == null) {\n return;\n }\n timer = null;\n reject(logger.makeError(\"timeout\", logger_1.Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n var cancel = function () {\n if (timer == null) {\n return;\n }\n clearTimeout(timer);\n timer = null;\n };\n return { promise: promise, cancel: cancel };\n })();\n var runningFetch = (function () {\n return __awaiter(this, void 0, void 0, function () {\n var attempt, response, location_1, tryAgain, stall, retryAfter, error_1, body_1, result, error_2, tryAgain, timeout_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n attempt = 0;\n _a.label = 1;\n case 1:\n if (!(attempt < attemptLimit)) return [3 /*break*/, 20];\n response = null;\n _a.label = 2;\n case 2:\n _a.trys.push([2, 9, , 10]);\n return [4 /*yield*/, (0, geturl_1.getUrl)(url, options)];\n case 3:\n response = _a.sent();\n if (!(attempt < attemptLimit)) return [3 /*break*/, 8];\n if (!(response.statusCode === 301 || response.statusCode === 302)) return [3 /*break*/, 4];\n location_1 = response.headers.location || \"\";\n if (options.method === \"GET\" && location_1.match(/^https:/)) {\n url = response.headers.location;\n return [3 /*break*/, 19];\n }\n return [3 /*break*/, 8];\n case 4:\n if (!(response.statusCode === 429)) return [3 /*break*/, 8];\n tryAgain = true;\n if (!throttleCallback) return [3 /*break*/, 6];\n return [4 /*yield*/, throttleCallback(attempt, url)];\n case 5:\n tryAgain = _a.sent();\n _a.label = 6;\n case 6:\n if (!tryAgain) return [3 /*break*/, 8];\n stall = 0;\n retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n }\n else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n //console.log(\"Stalling 429\");\n return [4 /*yield*/, staller(stall)];\n case 7:\n //console.log(\"Stalling 429\");\n _a.sent();\n return [3 /*break*/, 19];\n case 8: return [3 /*break*/, 10];\n case 9:\n error_1 = _a.sent();\n response = error_1.response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", logger_1.Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error_1,\n url: url\n });\n }\n return [3 /*break*/, 10];\n case 10:\n body_1 = response.body;\n if (allow304 && response.statusCode === 304) {\n body_1 = null;\n }\n else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", logger_1.Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body_1, ((response.headers) ? response.headers[\"content-type\"] : null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n if (!processFunc) return [3 /*break*/, 18];\n _a.label = 11;\n case 11:\n _a.trys.push([11, 13, , 18]);\n return [4 /*yield*/, processFunc(body_1, response)];\n case 12:\n result = _a.sent();\n runningTimeout.cancel();\n return [2 /*return*/, result];\n case 13:\n error_2 = _a.sent();\n if (!(error_2.throttleRetry && attempt < attemptLimit)) return [3 /*break*/, 17];\n tryAgain = true;\n if (!throttleCallback) return [3 /*break*/, 15];\n return [4 /*yield*/, throttleCallback(attempt, url)];\n case 14:\n tryAgain = _a.sent();\n _a.label = 15;\n case 15:\n if (!tryAgain) return [3 /*break*/, 17];\n timeout_1 = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n return [4 /*yield*/, staller(timeout_1)];\n case 16:\n //console.log(\"Stalling callback\");\n _a.sent();\n return [3 /*break*/, 19];\n case 17:\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", logger_1.Logger.errors.SERVER_ERROR, {\n body: bodyify(body_1, ((response.headers) ? response.headers[\"content-type\"] : null)),\n error: error_2,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n return [3 /*break*/, 18];\n case 18:\n runningTimeout.cancel();\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return [2 /*return*/, body_1];\n case 19:\n attempt++;\n return [3 /*break*/, 1];\n case 20: return [2 /*return*/, logger.throwError(\"failed response\", logger_1.Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n })];\n }\n });\n });\n })();\n return Promise.race([runningTimeout.promise, runningFetch]);\n}\nexports._fetchData = _fetchData;\nfunction fetchJson(connection, json, processFunc) {\n var processJsonFunc = function (value, response) {\n var result = null;\n if (value != null) {\n try {\n result = JSON.parse((0, strings_1.toUtf8String)(value));\n }\n catch (error) {\n logger.throwError(\"invalid JSON\", logger_1.Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n if (processFunc) {\n result = processFunc(result, response);\n }\n return result;\n };\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n var body = null;\n if (json != null) {\n body = (0, strings_1.toUtf8Bytes)(json);\n // Create a connection with the content-type set for JSON\n var updated = (typeof (connection) === \"string\") ? ({ url: connection }) : (0, properties_1.shallowCopy)(connection);\n if (updated.headers) {\n var hasContentType = (Object.keys(updated.headers).filter(function (k) { return (k.toLowerCase() === \"content-type\"); }).length) !== 0;\n if (!hasContentType) {\n updated.headers = (0, properties_1.shallowCopy)(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n }\n else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n return _fetchData(connection, body, processJsonFunc);\n}\nexports.fetchJson = fetchJson;\nfunction poll(func, options) {\n if (!options) {\n options = {};\n }\n options = (0, properties_1.shallowCopy)(options);\n if (options.floor == null) {\n options.floor = 0;\n }\n if (options.ceiling == null) {\n options.ceiling = 10000;\n }\n if (options.interval == null) {\n options.interval = 250;\n }\n return new Promise(function (resolve, reject) {\n var timer = null;\n var done = false;\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n var cancel = function () {\n if (done) {\n return false;\n }\n done = true;\n if (timer) {\n clearTimeout(timer);\n }\n return true;\n };\n if (options.timeout) {\n timer = setTimeout(function () {\n if (cancel()) {\n reject(new Error(\"timeout\"));\n }\n }, options.timeout);\n }\n var retryLimit = options.retryLimit;\n var attempt = 0;\n function check() {\n return func().then(function (result) {\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) {\n resolve(result);\n }\n }\n else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n }\n else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n // Otherwise, exponential back-off (up to 10s) our next request\n }\n else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) {\n reject(new Error(\"retry limit reached\"));\n }\n return;\n }\n var timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) {\n timeout = options.floor;\n }\n if (timeout > options.ceiling) {\n timeout = options.ceiling;\n }\n setTimeout(check, timeout);\n }\n return null;\n }, function (error) {\n if (cancel()) {\n reject(error);\n }\n });\n }\n check();\n });\n}\nexports.poll = poll;\n//# sourceMappingURL=index.js.map","'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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"providers/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.showThrottleMessage = exports.isCommunityResource = exports.isCommunityResourcable = exports.Formatter = void 0;\nvar address_1 = require(\"@ethersproject/address\");\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar constants_1 = require(\"@ethersproject/constants\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar transactions_1 = require(\"@ethersproject/transactions\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar Formatter = /** @class */ (function () {\n function Formatter() {\n this.formats = this.getDefaultFormats();\n }\n Formatter.prototype.getDefaultFormats = function () {\n var _this = this;\n var formats = ({});\n var address = this.address.bind(this);\n var bigNumber = this.bigNumber.bind(this);\n var blockTag = this.blockTag.bind(this);\n var data = this.data.bind(this);\n var hash = this.hash.bind(this);\n var hex = this.hex.bind(this);\n var number = this.number.bind(this);\n var type = this.type.bind(this);\n var strictData = function (v) { return _this.data(v, true); };\n formats.transaction = {\n hash: hash,\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n confirmations: Formatter.allowNull(number, null),\n from: address,\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n creates: Formatter.allowNull(address, null),\n raw: Formatter.allowNull(data),\n };\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: Formatter.allowNull(address),\n extraData: data,\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n formats.blockWithTransactions = (0, properties_1.shallowCopy)(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n removed: Formatter.allowNull(this.boolean.bind(this)),\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n topics: Formatter.arrayOf(hash),\n transactionHash: hash,\n logIndex: number,\n };\n return formats;\n };\n Formatter.prototype.accessList = function (accessList) {\n return (0, transactions_1.accessListify)(accessList || []);\n };\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n Formatter.prototype.number = function (number) {\n if (number === \"0x\") {\n return 0;\n }\n return bignumber_1.BigNumber.from(number).toNumber();\n };\n Formatter.prototype.type = function (number) {\n if (number === \"0x\" || number == null) {\n return 0;\n }\n return bignumber_1.BigNumber.from(number).toNumber();\n };\n // Strict! Used on input.\n Formatter.prototype.bigNumber = function (value) {\n return bignumber_1.BigNumber.from(value);\n };\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n Formatter.prototype.boolean = function (value) {\n if (typeof (value) === \"boolean\") {\n return value;\n }\n if (typeof (value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n }\n throw new Error(\"invalid boolean - \" + value);\n };\n Formatter.prototype.hex = function (value, strict) {\n if (typeof (value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if ((0, bytes_1.isHexString)(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n };\n Formatter.prototype.data = function (value, strict) {\n var result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n };\n // Requires an address\n // Strict! Used on input.\n Formatter.prototype.address = function (value) {\n return (0, address_1.getAddress)(value);\n };\n Formatter.prototype.callAddress = function (value) {\n if (!(0, bytes_1.isHexString)(value, 32)) {\n return null;\n }\n var address = (0, address_1.getAddress)((0, bytes_1.hexDataSlice)(value, 12));\n return (address === constants_1.AddressZero) ? null : address;\n };\n Formatter.prototype.contractAddress = function (value) {\n return (0, address_1.getContractAddress)(value);\n };\n // Strict! Used on input.\n Formatter.prototype.blockTag = function (blockTag) {\n if (blockTag == null) {\n return \"latest\";\n }\n if (blockTag === \"earliest\") {\n return \"0x0\";\n }\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\":\n case \"pending\":\n case \"safe\":\n case \"finalized\":\n return blockTag;\n }\n if (typeof (blockTag) === \"number\" || (0, bytes_1.isHexString)(blockTag)) {\n return (0, bytes_1.hexValue)(blockTag);\n }\n throw new Error(\"invalid blockTag\");\n };\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n Formatter.prototype.hash = function (value, strict) {\n var result = this.hex(value, strict);\n if ((0, bytes_1.hexDataLength)(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n };\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n Formatter.prototype.difficulty = function (value) {\n if (value == null) {\n return null;\n }\n var v = bignumber_1.BigNumber.from(value);\n try {\n return v.toNumber();\n }\n catch (error) { }\n return null;\n };\n Formatter.prototype.uint256 = function (value) {\n if (!(0, bytes_1.isHexString)(value)) {\n throw new Error(\"invalid uint256\");\n }\n return (0, bytes_1.hexZeroPad)(value, 32);\n };\n Formatter.prototype._block = function (value, format) {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n var difficulty = (value._difficulty != null) ? value._difficulty : value.difficulty;\n var result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null : bignumber_1.BigNumber.from(difficulty));\n return result;\n };\n Formatter.prototype.block = function (value) {\n return this._block(value, this.formats.block);\n };\n Formatter.prototype.blockWithTransactions = function (value) {\n return this._block(value, this.formats.blockWithTransactions);\n };\n // Strict! Used on input.\n Formatter.prototype.transactionRequest = function (value) {\n return Formatter.check(this.formats.transactionRequest, value);\n };\n Formatter.prototype.transactionResponse = function (transaction) {\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && bignumber_1.BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n if ((transaction.type === 1 || transaction.type === 2) && transaction.accessList == null) {\n transaction.accessList = [];\n }\n var result = Formatter.check(this.formats.transaction, transaction);\n if (transaction.chainId != null) {\n var chainId = transaction.chainId;\n if ((0, bytes_1.isHexString)(chainId)) {\n chainId = bignumber_1.BigNumber.from(chainId).toNumber();\n }\n result.chainId = chainId;\n }\n else {\n var chainId = transaction.networkId;\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n if ((0, bytes_1.isHexString)(chainId)) {\n chainId = bignumber_1.BigNumber.from(chainId).toNumber();\n }\n if (typeof (chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) {\n chainId = 0;\n }\n chainId = parseInt(chainId);\n }\n if (typeof (chainId) !== \"number\") {\n chainId = 0;\n }\n result.chainId = chainId;\n }\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n return result;\n };\n Formatter.prototype.transaction = function (value) {\n return (0, transactions_1.parse)(value);\n };\n Formatter.prototype.receiptLog = function (value) {\n return Formatter.check(this.formats.receiptLog, value);\n };\n Formatter.prototype.receipt = function (value) {\n var result = Formatter.check(this.formats.receipt, value);\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n var value_1 = bignumber_1.BigNumber.from(result.root).toNumber();\n if (value_1 === 0 || value_1 === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value_1)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value_1;\n delete result.root;\n }\n else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n }\n else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n if (result.status != null) {\n result.byzantium = true;\n }\n return result;\n };\n Formatter.prototype.topics = function (value) {\n var _this = this;\n if (Array.isArray(value)) {\n return value.map(function (v) { return _this.topics(v); });\n }\n else if (value != null) {\n return this.hash(value, true);\n }\n return null;\n };\n Formatter.prototype.filter = function (value) {\n return Formatter.check(this.formats.filter, value);\n };\n Formatter.prototype.filterLog = function (value) {\n return Formatter.check(this.formats.filterLog, value);\n };\n Formatter.check = function (format, object) {\n var result = {};\n for (var key in format) {\n try {\n var value = format[key](object[key]);\n if (value !== undefined) {\n result[key] = value;\n }\n }\n catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n };\n // if value is null-ish, nullValue is returned\n Formatter.allowNull = function (format, nullValue) {\n return (function (value) {\n if (value == null) {\n return nullValue;\n }\n return format(value);\n });\n };\n // If value is false-ish, replaceValue is returned\n Formatter.allowFalsish = function (format, replaceValue) {\n return (function (value) {\n if (!value) {\n return replaceValue;\n }\n return format(value);\n });\n };\n // Requires an Array satisfying check\n Formatter.arrayOf = function (format) {\n return (function (array) {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n var result = [];\n array.forEach(function (value) {\n result.push(format(value));\n });\n return result;\n });\n };\n return Formatter;\n}());\nexports.Formatter = Formatter;\nfunction isCommunityResourcable(value) {\n return (value && typeof (value.isCommunityResource) === \"function\");\n}\nexports.isCommunityResourcable = isCommunityResourcable;\nfunction isCommunityResource(value) {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\nexports.isCommunityResource = isCommunityResource;\n// Show the throttle message only once\nvar throttleMessage = false;\nfunction showThrottleMessage() {\n if (throttleMessage) {\n return;\n }\n throttleMessage = true;\n console.log(\"========= NOTICE =========\");\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\nexports.showThrottleMessage = showThrottleMessage;\n//# sourceMappingURL=formatter.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseProvider = exports.Resolver = exports.Event = void 0;\nvar abstract_provider_1 = require(\"@ethersproject/abstract-provider\");\nvar base64_1 = require(\"@ethersproject/base64\");\nvar basex_1 = require(\"@ethersproject/basex\");\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar constants_1 = require(\"@ethersproject/constants\");\nvar hash_1 = require(\"@ethersproject/hash\");\nvar networks_1 = require(\"@ethersproject/networks\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar sha2_1 = require(\"@ethersproject/sha2\");\nvar strings_1 = require(\"@ethersproject/strings\");\nvar web_1 = require(\"@ethersproject/web\");\nvar bech32_1 = __importDefault(require(\"bech32\"));\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar formatter_1 = require(\"./formatter\");\nvar MAX_CCIP_REDIRECTS = 10;\n//////////////////////////////\n// Event Serializeing\nfunction checkTopic(topic) {\n if (topic == null) {\n return \"null\";\n }\n if ((0, bytes_1.hexDataLength)(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\nfunction serializeTopics(topics) {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) {\n topics.pop();\n }\n return topics.map(function (topic) {\n if (Array.isArray(topic)) {\n // Only track unique OR-topics\n var unique_1 = {};\n topic.forEach(function (topic) {\n unique_1[checkTopic(topic)] = true;\n });\n // The order of OR-topics does not matter\n var sorted = Object.keys(unique_1);\n sorted.sort();\n return sorted.join(\"|\");\n }\n else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\nfunction deserializeTopics(data) {\n if (data === \"\") {\n return [];\n }\n return data.split(/&/g).map(function (topic) {\n if (topic === \"\") {\n return [];\n }\n var comps = topic.split(\"|\").map(function (topic) {\n return ((topic === \"null\") ? null : topic);\n });\n return ((comps.length === 1) ? comps[0] : comps);\n });\n}\nfunction getEventTag(eventName) {\n if (typeof (eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n if ((0, bytes_1.hexDataLength)(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n }\n else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n }\n else if (abstract_provider_1.ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n }\n else if (eventName && typeof (eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n throw new Error(\"invalid event - \" + eventName);\n}\n//////////////////////////////\n// Helper Object\nfunction getTime() {\n return (new Date()).getTime();\n}\nfunction stall(duration) {\n return new Promise(function (resolve) {\n setTimeout(resolve, duration);\n });\n}\n//////////////////////////////\n// Provider Object\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\nvar PollableEvents = [\"block\", \"network\", \"pending\", \"poll\"];\nvar Event = /** @class */ (function () {\n function Event(tag, listener, once) {\n (0, properties_1.defineReadOnly)(this, \"tag\", tag);\n (0, properties_1.defineReadOnly)(this, \"listener\", listener);\n (0, properties_1.defineReadOnly)(this, \"once\", once);\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n Object.defineProperty(Event.prototype, \"event\", {\n get: function () {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"type\", {\n get: function () {\n return this.tag.split(\":\")[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"hash\", {\n get: function () {\n var comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") {\n return null;\n }\n return comps[1];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Event.prototype, \"filter\", {\n get: function () {\n var comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") {\n return null;\n }\n var address = comps[1];\n var topics = deserializeTopics(comps[2]);\n var filter = {};\n if (topics.length > 0) {\n filter.topics = topics;\n }\n if (address && address !== \"*\") {\n filter.address = address;\n }\n return filter;\n },\n enumerable: false,\n configurable: true\n });\n Event.prototype.pollable = function () {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n };\n return Event;\n}());\nexports.Event = Event;\n;\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nvar coinInfos = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\nfunction bytes32ify(value) {\n return (0, bytes_1.hexZeroPad)(bignumber_1.BigNumber.from(value).toHexString(), 32);\n}\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data) {\n return basex_1.Base58.encode((0, bytes_1.concat)([data, (0, bytes_1.hexDataSlice)((0, sha2_1.sha256)((0, sha2_1.sha256)(data)), 0, 4)]));\n}\nvar matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nvar matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\nfunction _parseString(result, start) {\n try {\n return (0, strings_1.toUtf8String)(_parseBytes(result, start));\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n var offset = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(result, start, start + 32)).toNumber();\n var length = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(result, offset, offset + 32)).toNumber();\n return (0, bytes_1.hexDataSlice)(result, offset + 32, offset + 32 + length);\n}\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n return \"https://gateway.ipfs.io/ipfs/\" + link;\n}\nfunction numPad(value) {\n var result = (0, bytes_1.arrayify)(value);\n if (result.length > 32) {\n throw new Error(\"internal; should not happen\");\n }\n var padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n var result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n var result = [];\n var byteCount = 0;\n // Add place-holders for pointers as we add items\n for (var i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n for (var i = 0; i < datas.length; i++) {\n var data = (0, bytes_1.arrayify)(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n return (0, bytes_1.hexConcat)(result);\n}\nvar Resolver = /** @class */ (function () {\n // The resolvedAddress is only for creating a ReverseLookup resolver\n function Resolver(provider, address, name, resolvedAddress) {\n (0, properties_1.defineReadOnly)(this, \"provider\", provider);\n (0, properties_1.defineReadOnly)(this, \"name\", name);\n (0, properties_1.defineReadOnly)(this, \"address\", provider.formatter.address(address));\n (0, properties_1.defineReadOnly)(this, \"_resolvedAddress\", resolvedAddress);\n }\n Resolver.prototype.supportsWildcard = function () {\n var _this = this;\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then(function (result) {\n return bignumber_1.BigNumber.from(result).eq(1);\n }).catch(function (error) {\n if (error.code === logger_1.Logger.errors.CALL_EXCEPTION) {\n return false;\n }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n _this._supportsEip2544 = null;\n throw error;\n });\n }\n return this._supportsEip2544;\n };\n Resolver.prototype._fetch = function (selector, parameters) {\n return __awaiter(this, void 0, void 0, function () {\n var tx, parseBytes, result, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: (0, bytes_1.hexConcat)([selector, (0, hash_1.namehash)(this.name), (parameters || \"0x\")])\n };\n parseBytes = false;\n return [4 /*yield*/, this.supportsWildcard()];\n case 1:\n if (_a.sent()) {\n parseBytes = true;\n // selector(\"resolve(bytes,bytes)\")\n tx.data = (0, bytes_1.hexConcat)([\"0x9061b923\", encodeBytes([(0, hash_1.dnsEncode)(this.name), tx.data])]);\n }\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.provider.call(tx)];\n case 3:\n result = _a.sent();\n if (((0, bytes_1.arrayify)(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", logger_1.Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) {\n result = _parseBytes(result, 0);\n }\n return [2 /*return*/, result];\n case 4:\n error_1 = _a.sent();\n if (error_1.code === logger_1.Logger.errors.CALL_EXCEPTION) {\n return [2 /*return*/, null];\n }\n throw error_1;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Resolver.prototype._fetchBytes = function (selector, parameters) {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._fetch(selector, parameters)];\n case 1:\n result = _a.sent();\n if (result != null) {\n return [2 /*return*/, _parseBytes(result, 0)];\n }\n return [2 /*return*/, null];\n }\n });\n });\n };\n Resolver.prototype._getAddress = function (coinType, hexBytes) {\n var coinInfo = coinInfos[String(coinType)];\n if (coinInfo == null) {\n logger.throwError(\"unsupported coin type: \" + coinType, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress(\" + coinType + \")\"\n });\n }\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n var bytes = (0, bytes_1.arrayify)(hexBytes);\n // P2PKH: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n var p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n var length_1 = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length_1 * 2 && length_1 >= 1 && length_1 <= 75) {\n return base58Encode((0, bytes_1.concat)([[coinInfo.p2pkh], (\"0x\" + p2pkh[2])]));\n }\n }\n }\n // P2SH: OP_HASH160 <scriptHash> OP_EQUAL\n if (coinInfo.p2sh != null) {\n var p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n var length_2 = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length_2 * 2 && length_2 >= 1 && length_2 <= 75) {\n return base58Encode((0, bytes_1.concat)([[coinInfo.p2sh], (\"0x\" + p2sh[2])]));\n }\n }\n }\n // Bech32\n if (coinInfo.prefix != null) {\n var length_3 = bytes[1];\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n var version_1 = bytes[0];\n if (version_1 === 0x00) {\n if (length_3 !== 20 && length_3 !== 32) {\n version_1 = -1;\n }\n }\n else {\n version_1 = -1;\n }\n if (version_1 >= 0 && bytes.length === 2 + length_3 && length_3 >= 1 && length_3 <= 75) {\n var words = bech32_1.default.toWords(bytes.slice(2));\n words.unshift(version_1);\n return bech32_1.default.encode(coinInfo.prefix, words);\n }\n }\n return null;\n };\n Resolver.prototype.getAddress = function (coinType) {\n return __awaiter(this, void 0, void 0, function () {\n var result, error_2, hexBytes, address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (coinType == null) {\n coinType = 60;\n }\n if (!(coinType === 60)) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._fetch(\"0x3b3b57de\")];\n case 2:\n result = _a.sent();\n // No address\n if (result === \"0x\" || result === constants_1.HashZero) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, this.provider.formatter.callAddress(result)];\n case 3:\n error_2 = _a.sent();\n if (error_2.code === logger_1.Logger.errors.CALL_EXCEPTION) {\n return [2 /*return*/, null];\n }\n throw error_2;\n case 4: return [4 /*yield*/, this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType))];\n case 5:\n hexBytes = _a.sent();\n // No address\n if (hexBytes == null || hexBytes === \"0x\") {\n return [2 /*return*/, null];\n }\n address = this._getAddress(coinType, hexBytes);\n if (address == null) {\n logger.throwError(\"invalid or unsupported coin data\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress(\" + coinType + \")\",\n coinType: coinType,\n data: hexBytes\n });\n }\n return [2 /*return*/, address];\n }\n });\n });\n };\n Resolver.prototype.getAvatar = function () {\n return __awaiter(this, void 0, void 0, function () {\n var linkage, avatar, i, match, scheme, _a, selector, owner, _b, comps, addr, tokenId, tokenOwner, _c, _d, balance, _e, _f, tx, metadataUrl, _g, metadata, imageUrl, ipfs, error_3;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n linkage = [{ type: \"name\", content: this.name }];\n _h.label = 1;\n case 1:\n _h.trys.push([1, 19, , 20]);\n return [4 /*yield*/, this.getText(\"avatar\")];\n case 2:\n avatar = _h.sent();\n if (avatar == null) {\n return [2 /*return*/, null];\n }\n i = 0;\n _h.label = 3;\n case 3:\n if (!(i < matchers.length)) return [3 /*break*/, 18];\n match = avatar.match(matchers[i]);\n if (match == null) {\n return [3 /*break*/, 17];\n }\n scheme = match[1].toLowerCase();\n _a = scheme;\n switch (_a) {\n case \"https\": return [3 /*break*/, 4];\n case \"data\": return [3 /*break*/, 5];\n case \"ipfs\": return [3 /*break*/, 6];\n case \"erc721\": return [3 /*break*/, 7];\n case \"erc1155\": return [3 /*break*/, 7];\n }\n return [3 /*break*/, 17];\n case 4:\n linkage.push({ type: \"url\", content: avatar });\n return [2 /*return*/, { linkage: linkage, url: avatar }];\n case 5:\n linkage.push({ type: \"data\", content: avatar });\n return [2 /*return*/, { linkage: linkage, url: avatar }];\n case 6:\n linkage.push({ type: \"ipfs\", content: avatar });\n return [2 /*return*/, { linkage: linkage, url: getIpfsLink(avatar) }];\n case 7:\n selector = (scheme === \"erc721\") ? \"0xc87b56dd\" : \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n _b = this._resolvedAddress;\n if (_b) return [3 /*break*/, 9];\n return [4 /*yield*/, this.getAddress()];\n case 8:\n _b = (_h.sent());\n _h.label = 9;\n case 9:\n owner = (_b);\n comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, this.provider.formatter.address(comps[0])];\n case 10:\n addr = _h.sent();\n tokenId = (0, bytes_1.hexZeroPad)(bignumber_1.BigNumber.from(comps[1]).toHexString(), 32);\n if (!(scheme === \"erc721\")) return [3 /*break*/, 12];\n _d = (_c = this.provider.formatter).callAddress;\n return [4 /*yield*/, this.provider.call({\n to: addr, data: (0, bytes_1.hexConcat)([\"0x6352211e\", tokenId])\n })];\n case 11:\n tokenOwner = _d.apply(_c, [_h.sent()]);\n if (owner !== tokenOwner) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"owner\", content: tokenOwner });\n return [3 /*break*/, 14];\n case 12:\n if (!(scheme === \"erc1155\")) return [3 /*break*/, 14];\n _f = (_e = bignumber_1.BigNumber).from;\n return [4 /*yield*/, this.provider.call({\n to: addr, data: (0, bytes_1.hexConcat)([\"0x00fdd58e\", (0, bytes_1.hexZeroPad)(owner, 32), tokenId])\n })];\n case 13:\n balance = _f.apply(_e, [_h.sent()]);\n if (balance.isZero()) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"balance\", content: balance.toString() });\n _h.label = 14;\n case 14:\n tx = {\n to: this.provider.formatter.address(comps[0]),\n data: (0, bytes_1.hexConcat)([selector, tokenId])\n };\n _g = _parseString;\n return [4 /*yield*/, this.provider.call(tx)];\n case 15:\n metadataUrl = _g.apply(void 0, [_h.sent(), 0]);\n if (metadataUrl == null) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n return [4 /*yield*/, (0, web_1.fetchJson)(metadataUrl)];\n case 16:\n metadata = _h.sent();\n if (!metadata) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n return [2 /*return*/, null];\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n return [2 /*return*/, null];\n }\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", content: imageUrl });\n return [2 /*return*/, { linkage: linkage, url: imageUrl }];\n case 17:\n i++;\n return [3 /*break*/, 3];\n case 18: return [3 /*break*/, 20];\n case 19:\n error_3 = _h.sent();\n return [3 /*break*/, 20];\n case 20: return [2 /*return*/, null];\n }\n });\n });\n };\n Resolver.prototype.getContentHash = function () {\n return __awaiter(this, void 0, void 0, function () {\n var hexBytes, ipfs, length_4, ipns, length_5, swarm, skynet, urlSafe_1, hash;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._fetchBytes(\"0xbc1c58d1\")];\n case 1:\n hexBytes = _a.sent();\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n return [2 /*return*/, null];\n }\n ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n length_4 = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length_4 * 2) {\n return [2 /*return*/, \"ipfs:/\\/\" + basex_1.Base58.encode(\"0x\" + ipfs[1])];\n }\n }\n ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n length_5 = parseInt(ipns[3], 16);\n if (ipns[4].length === length_5 * 2) {\n return [2 /*return*/, \"ipns:/\\/\" + basex_1.Base58.encode(\"0x\" + ipns[1])];\n }\n }\n swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/);\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return [2 /*return*/, \"bzz:/\\/\" + swarm[1]];\n }\n }\n skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n urlSafe_1 = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n hash = (0, base64_1.encode)(\"0x\" + skynet[1]).replace(/[=+\\/]/g, function (a) { return (urlSafe_1[a]); });\n return [2 /*return*/, \"sia:/\\/\" + hash];\n }\n }\n return [2 /*return*/, logger.throwError(\"invalid or unsupported content hash data\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n })];\n }\n });\n });\n };\n Resolver.prototype.getText = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var keyBytes, hexBytes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n keyBytes = (0, strings_1.toUtf8Bytes)(key);\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = (0, bytes_1.concat)([bytes32ify(64), bytes32ify(keyBytes.length), keyBytes]);\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = (0, bytes_1.concat)([keyBytes, (0, bytes_1.hexZeroPad)(\"0x\", 32 - (key.length % 32))]);\n }\n return [4 /*yield*/, this._fetchBytes(\"0x59d1d43c\", (0, bytes_1.hexlify)(keyBytes))];\n case 1:\n hexBytes = _a.sent();\n if (hexBytes == null || hexBytes === \"0x\") {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, (0, strings_1.toUtf8String)(hexBytes)];\n }\n });\n });\n };\n return Resolver;\n}());\nexports.Resolver = Resolver;\nvar defaultFormatter = null;\nvar nextPollId = 1;\nvar BaseProvider = /** @class */ (function (_super) {\n __extends(BaseProvider, _super);\n /**\n * ready\n *\n * A Promise<Network> that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n function BaseProvider(network) {\n var _newTarget = this.constructor;\n var _this = _super.call(this) || this;\n // Events being listened to\n _this._events = [];\n _this._emitted = { block: -2 };\n _this.disableCcipRead = false;\n _this.formatter = _newTarget.getFormatter();\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n (0, properties_1.defineReadOnly)(_this, \"anyNetwork\", (network === \"any\"));\n if (_this.anyNetwork) {\n network = _this.detectNetwork();\n }\n if (network instanceof Promise) {\n _this._networkPromise = network;\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch(function (error) { });\n // Trigger initial network setting (async)\n _this._ready().catch(function (error) { });\n }\n else {\n var knownNetwork = (0, properties_1.getStatic)(_newTarget, \"getNetwork\")(network);\n if (knownNetwork) {\n (0, properties_1.defineReadOnly)(_this, \"_network\", knownNetwork);\n _this.emit(\"network\", knownNetwork, null);\n }\n else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n _this._maxInternalBlockNumber = -1024;\n _this._lastBlockNumber = -2;\n _this._maxFilterBlockRange = 10;\n _this._pollingInterval = 4000;\n _this._fastQueryDate = 0;\n return _this;\n }\n BaseProvider.prototype._ready = function () {\n return __awaiter(this, void 0, void 0, function () {\n var network, error_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this._network == null)) return [3 /*break*/, 7];\n network = null;\n if (!this._networkPromise) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._networkPromise];\n case 2:\n network = _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_4 = _a.sent();\n return [3 /*break*/, 4];\n case 4:\n if (!(network == null)) return [3 /*break*/, 6];\n return [4 /*yield*/, this.detectNetwork()];\n case 5:\n network = _a.sent();\n _a.label = 6;\n case 6:\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", logger_1.Logger.errors.UNKNOWN_ERROR, {});\n }\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n }\n else {\n (0, properties_1.defineReadOnly)(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n _a.label = 7;\n case 7: return [2 /*return*/, this._network];\n }\n });\n });\n };\n Object.defineProperty(BaseProvider.prototype, \"ready\", {\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get: function () {\n var _this = this;\n return (0, web_1.poll)(function () {\n return _this._ready().then(function (network) {\n return network;\n }, function (error) {\n // If the network isn't running yet, we will wait\n if (error.code === logger_1.Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n },\n enumerable: false,\n configurable: true\n });\n // @TODO: Remove this and just create a singleton formatter\n BaseProvider.getFormatter = function () {\n if (defaultFormatter == null) {\n defaultFormatter = new formatter_1.Formatter();\n }\n return defaultFormatter;\n };\n // @TODO: Remove this and just use getNetwork\n BaseProvider.getNetwork = function (network) {\n return (0, networks_1.getNetwork)((network == null) ? \"homestead\" : network);\n };\n BaseProvider.prototype.ccipReadFetch = function (tx, calldata, urls) {\n return __awaiter(this, void 0, void 0, function () {\n var sender, data, errorMessages, i, url, href, json, result, errorMessage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.disableCcipRead || urls.length === 0) {\n return [2 /*return*/, null];\n }\n sender = tx.to.toLowerCase();\n data = calldata.toLowerCase();\n errorMessages = [];\n i = 0;\n _a.label = 1;\n case 1:\n if (!(i < urls.length)) return [3 /*break*/, 4];\n url = urls[i];\n href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n json = (url.indexOf(\"{data}\") >= 0) ? null : JSON.stringify({ data: data, sender: sender });\n return [4 /*yield*/, (0, web_1.fetchJson)({ url: href, errorPassThrough: true }, json, function (value, response) {\n value.status = response.statusCode;\n return value;\n })];\n case 2:\n result = _a.sent();\n if (result.data) {\n return [2 /*return*/, result.data];\n }\n errorMessage = (result.message || \"unknown error\");\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return [2 /*return*/, logger.throwError(\"response not found during CCIP fetch: \" + errorMessage, logger_1.Logger.errors.SERVER_ERROR, { url: url, errorMessage: errorMessage })];\n }\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n _a.label = 3;\n case 3:\n i++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/, logger.throwError(\"error encountered during CCIP fetch: \" + errorMessages.map(function (m) { return JSON.stringify(m); }).join(\", \"), logger_1.Logger.errors.SERVER_ERROR, {\n urls: urls,\n errorMessages: errorMessages\n })];\n }\n });\n });\n };\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n BaseProvider.prototype._getInternalBlockNumber = function (maxAge) {\n return __awaiter(this, void 0, void 0, function () {\n var internalBlockNumber, result, error_5, reqTime, checkInternalBlockNumber;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ready()];\n case 1:\n _a.sent();\n if (!(maxAge > 0)) return [3 /*break*/, 7];\n _a.label = 2;\n case 2:\n if (!this._internalBlockNumber) return [3 /*break*/, 7];\n internalBlockNumber = this._internalBlockNumber;\n _a.label = 3;\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, internalBlockNumber];\n case 4:\n result = _a.sent();\n if ((getTime() - result.respTime) <= maxAge) {\n return [2 /*return*/, result.blockNumber];\n }\n // Too old; fetch a new value\n return [3 /*break*/, 7];\n case 5:\n error_5 = _a.sent();\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n return [3 /*break*/, 7];\n }\n return [3 /*break*/, 6];\n case 6: return [3 /*break*/, 2];\n case 7:\n reqTime = getTime();\n checkInternalBlockNumber = (0, properties_1.resolveProperties)({\n blockNumber: this.perform(\"getBlockNumber\", {}),\n networkError: this.getNetwork().then(function (network) { return (null); }, function (error) { return (error); })\n }).then(function (_a) {\n var blockNumber = _a.blockNumber, networkError = _a.networkError;\n if (networkError) {\n // Unremember this bad internal block number\n if (_this._internalBlockNumber === checkInternalBlockNumber) {\n _this._internalBlockNumber = null;\n }\n throw networkError;\n }\n var respTime = getTime();\n blockNumber = bignumber_1.BigNumber.from(blockNumber).toNumber();\n if (blockNumber < _this._maxInternalBlockNumber) {\n blockNumber = _this._maxInternalBlockNumber;\n }\n _this._maxInternalBlockNumber = blockNumber;\n _this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber: blockNumber, reqTime: reqTime, respTime: respTime };\n });\n this._internalBlockNumber = checkInternalBlockNumber;\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch(function (error) {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (_this._internalBlockNumber === checkInternalBlockNumber) {\n _this._internalBlockNumber = null;\n }\n });\n return [4 /*yield*/, checkInternalBlockNumber];\n case 8: return [2 /*return*/, (_a.sent()).blockNumber];\n }\n });\n });\n };\n BaseProvider.prototype.poll = function () {\n return __awaiter(this, void 0, void 0, function () {\n var pollId, runners, blockNumber, error_6, i;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n pollId = nextPollId++;\n runners = [];\n blockNumber = null;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._getInternalBlockNumber(100 + this.pollingInterval / 2)];\n case 2:\n blockNumber = _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_6 = _a.sent();\n this.emit(\"error\", error_6);\n return [2 /*return*/];\n case 4:\n this._setFastBlockNumber(blockNumber);\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return [2 /*return*/];\n }\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n if (Math.abs((this._emitted.block) - blockNumber) > 1000) {\n logger.warn(\"network block skew detected; skipping block events (emitted=\" + this._emitted.block + \" blockNumber\" + blockNumber + \")\");\n this.emit(\"error\", logger.makeError(\"network block skew detected\", logger_1.Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n }\n else {\n // Notify all listener for each block that has passed\n for (i = this._emitted.block + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n // The emitted block was updated, check for obsolete events\n if (this._emitted.block !== blockNumber) {\n this._emitted.block = blockNumber;\n Object.keys(this._emitted).forEach(function (key) {\n // The block event does not expire\n if (key === \"block\") {\n return;\n }\n // The block we were at when we emitted this event\n var eventBlockNumber = _this._emitted[key];\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") {\n return;\n }\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete _this._emitted[key];\n }\n });\n }\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach(function (event) {\n switch (event.type) {\n case \"tx\": {\n var hash_2 = event.hash;\n var runner = _this.getTransactionReceipt(hash_2).then(function (receipt) {\n if (!receipt || receipt.blockNumber == null) {\n return null;\n }\n _this._emitted[\"t:\" + hash_2] = receipt.blockNumber;\n _this.emit(hash_2, receipt);\n return null;\n }).catch(function (error) { _this.emit(\"error\", error); });\n runners.push(runner);\n break;\n }\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n var filter_1 = event.filter;\n filter_1.fromBlock = event._lastBlockNumber + 1;\n filter_1.toBlock = blockNumber;\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n var minFromBlock = filter_1.toBlock - _this._maxFilterBlockRange;\n if (minFromBlock > filter_1.fromBlock) {\n filter_1.fromBlock = minFromBlock;\n }\n if (filter_1.fromBlock < 0) {\n filter_1.fromBlock = 0;\n }\n var runner = _this.getLogs(filter_1).then(function (logs) {\n // Allow the next getLogs\n event._inflight = false;\n if (logs.length === 0) {\n return;\n }\n logs.forEach(function (log) {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n // Make sure we stall requests to fetch blocks and txs\n _this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n _this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n _this.emit(filter_1, log);\n });\n }).catch(function (error) {\n _this.emit(\"error\", error);\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n break;\n }\n }\n });\n this._lastBlockNumber = blockNumber;\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(function () {\n _this.emit(\"didPoll\", pollId);\n }).catch(function (error) { _this.emit(\"error\", error); });\n return [2 /*return*/];\n }\n });\n });\n };\n // Deprecated; do not use this\n BaseProvider.prototype.resetEventsBlock = function (blockNumber) {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) {\n this.poll();\n }\n };\n Object.defineProperty(BaseProvider.prototype, \"network\", {\n get: function () {\n return this._network;\n },\n enumerable: false,\n configurable: true\n });\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n BaseProvider.prototype.detectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, logger.throwError(\"provider does not support network detection\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n })];\n });\n });\n };\n BaseProvider.prototype.getNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n var network, currentNetwork, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ready()];\n case 1:\n network = _a.sent();\n return [4 /*yield*/, this.detectNetwork()];\n case 2:\n currentNetwork = _a.sent();\n if (!(network.chainId !== currentNetwork.chainId)) return [3 /*break*/, 5];\n if (!this.anyNetwork) return [3 /*break*/, 4];\n this._network = currentNetwork;\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n return [4 /*yield*/, stall(0)];\n case 3:\n _a.sent();\n return [2 /*return*/, this._network];\n case 4:\n error = logger.makeError(\"underlying network changed\", logger_1.Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n this.emit(\"error\", error);\n throw error;\n case 5: return [2 /*return*/, network];\n }\n });\n });\n };\n Object.defineProperty(BaseProvider.prototype, \"blockNumber\", {\n get: function () {\n var _this = this;\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then(function (blockNumber) {\n _this._setFastBlockNumber(blockNumber);\n }, function (error) { });\n return (this._fastBlockNumber != null) ? this._fastBlockNumber : -1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseProvider.prototype, \"polling\", {\n get: function () {\n return (this._poller != null);\n },\n set: function (value) {\n var _this = this;\n if (value && !this._poller) {\n this._poller = setInterval(function () { _this.poll(); }, this.pollingInterval);\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(function () {\n _this.poll();\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n _this._bootstrapPoll = setTimeout(function () {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!_this._poller) {\n _this.poll();\n }\n // Clear out the bootstrap so we can do another\n _this._bootstrapPoll = null;\n }, _this.pollingInterval);\n }, 0);\n }\n }\n else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseProvider.prototype, \"pollingInterval\", {\n get: function () {\n return this._pollingInterval;\n },\n set: function (value) {\n var _this = this;\n if (typeof (value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n this._pollingInterval = value;\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(function () { _this.poll(); }, this._pollingInterval);\n }\n },\n enumerable: false,\n configurable: true\n });\n BaseProvider.prototype._getFastBlockNumber = function () {\n var _this = this;\n var now = getTime();\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then(function (blockNumber) {\n if (_this._fastBlockNumber == null || blockNumber > _this._fastBlockNumber) {\n _this._fastBlockNumber = blockNumber;\n }\n return _this._fastBlockNumber;\n });\n }\n return this._fastBlockNumberPromise;\n };\n BaseProvider.prototype._setFastBlockNumber = function (blockNumber) {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) {\n return;\n }\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n };\n BaseProvider.prototype.waitForTransaction = function (transactionHash, confirmations, timeout) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._waitForTransaction(transactionHash, (confirmations == null) ? 1 : confirmations, timeout || 0, null)];\n });\n });\n };\n BaseProvider.prototype._waitForTransaction = function (transactionHash, confirmations, timeout, replaceable) {\n return __awaiter(this, void 0, void 0, function () {\n var receipt;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getTransactionReceipt(transactionHash)];\n case 1:\n receipt = _a.sent();\n // Receipt is already good\n if ((receipt ? receipt.confirmations : 0) >= confirmations) {\n return [2 /*return*/, receipt];\n }\n // Poll until the receipt is good...\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var cancelFuncs = [];\n var done = false;\n var alreadyDone = function () {\n if (done) {\n return true;\n }\n done = true;\n cancelFuncs.forEach(function (func) { func(); });\n return false;\n };\n var minedHandler = function (receipt) {\n if (receipt.confirmations < confirmations) {\n return;\n }\n if (alreadyDone()) {\n return;\n }\n resolve(receipt);\n };\n _this.on(transactionHash, minedHandler);\n cancelFuncs.push(function () { _this.removeListener(transactionHash, minedHandler); });\n if (replaceable) {\n var lastBlockNumber_1 = replaceable.startBlock;\n var scannedBlock_1 = null;\n var replaceHandler_1 = function (blockNumber) { return __awaiter(_this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (done) {\n return [2 /*return*/];\n }\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n return [4 /*yield*/, stall(1000)];\n case 1:\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n _a.sent();\n this.getTransactionCount(replaceable.from).then(function (nonce) { return __awaiter(_this, void 0, void 0, function () {\n var mined, block, ti, tx, receipt_1, reason;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (done) {\n return [2 /*return*/];\n }\n if (!(nonce <= replaceable.nonce)) return [3 /*break*/, 1];\n lastBlockNumber_1 = blockNumber;\n return [3 /*break*/, 9];\n case 1: return [4 /*yield*/, this.getTransaction(transactionHash)];\n case 2:\n mined = _a.sent();\n if (mined && mined.blockNumber != null) {\n return [2 /*return*/];\n }\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock_1 == null) {\n scannedBlock_1 = lastBlockNumber_1 - 3;\n if (scannedBlock_1 < replaceable.startBlock) {\n scannedBlock_1 = replaceable.startBlock;\n }\n }\n _a.label = 3;\n case 3:\n if (!(scannedBlock_1 <= blockNumber)) return [3 /*break*/, 9];\n if (done) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.getBlockWithTransactions(scannedBlock_1)];\n case 4:\n block = _a.sent();\n ti = 0;\n _a.label = 5;\n case 5:\n if (!(ti < block.transactions.length)) return [3 /*break*/, 8];\n tx = block.transactions[ti];\n // Successfully mined!\n if (tx.hash === transactionHash) {\n return [2 /*return*/];\n }\n if (!(tx.from === replaceable.from && tx.nonce === replaceable.nonce)) return [3 /*break*/, 7];\n if (done) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.waitForTransaction(tx.hash, confirmations)];\n case 6:\n receipt_1 = _a.sent();\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) {\n return [2 /*return*/];\n }\n reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n }\n else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\";\n }\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", logger_1.Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason: reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt: receipt_1\n }));\n return [2 /*return*/];\n case 7:\n ti++;\n return [3 /*break*/, 5];\n case 8:\n scannedBlock_1++;\n return [3 /*break*/, 3];\n case 9:\n if (done) {\n return [2 /*return*/];\n }\n this.once(\"block\", replaceHandler_1);\n return [2 /*return*/];\n }\n });\n }); }, function (error) {\n if (done) {\n return;\n }\n _this.once(\"block\", replaceHandler_1);\n });\n return [2 /*return*/];\n }\n });\n }); };\n if (done) {\n return;\n }\n _this.once(\"block\", replaceHandler_1);\n cancelFuncs.push(function () {\n _this.removeListener(\"block\", replaceHandler_1);\n });\n }\n if (typeof (timeout) === \"number\" && timeout > 0) {\n var timer_1 = setTimeout(function () {\n if (alreadyDone()) {\n return;\n }\n reject(logger.makeError(\"timeout exceeded\", logger_1.Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer_1.unref) {\n timer_1.unref();\n }\n cancelFuncs.push(function () { clearTimeout(timer_1); });\n }\n })];\n }\n });\n });\n };\n BaseProvider.prototype.getBlockNumber = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._getInternalBlockNumber(0)];\n });\n });\n };\n BaseProvider.prototype.getGasPrice = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.perform(\"getGasPrice\", {})];\n case 2:\n result = _a.sent();\n try {\n return [2 /*return*/, bignumber_1.BigNumber.from(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.getBalance = function (addressOrName, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getBalance\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, bignumber_1.BigNumber.from(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.getTransactionCount = function (addressOrName, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getTransactionCount\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, bignumber_1.BigNumber.from(result).toNumber()];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.getCode = function (addressOrName, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getCode\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, (0, bytes_1.hexlify)(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.getStorageAt = function (addressOrName, position, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then(function (p) { return (0, bytes_1.hexValue)(p); })\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getStorageAt\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, (0, bytes_1.hexlify)(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n // This should be called by any subclass wrapping a TransactionResponse\n BaseProvider.prototype._wrapTransaction = function (tx, hash, startBlock) {\n var _this = this;\n if (hash != null && (0, bytes_1.hexDataLength)(hash) !== 32) {\n throw new Error(\"invalid response - sendTransaction\");\n }\n var result = tx;\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", logger_1.Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n result.wait = function (confirms, timeout) { return __awaiter(_this, void 0, void 0, function () {\n var replacement, receipt;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (confirms == null) {\n confirms = 1;\n }\n if (timeout == null) {\n timeout = 0;\n }\n replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock: startBlock\n };\n }\n return [4 /*yield*/, this._waitForTransaction(tx.hash, confirms, timeout, replacement)];\n case 1:\n receipt = _a.sent();\n if (receipt == null && confirms === 0) {\n return [2 /*return*/, null];\n }\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", logger_1.Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return [2 /*return*/, receipt];\n }\n });\n }); };\n return result;\n };\n BaseProvider.prototype.sendTransaction = function (signedTransaction) {\n return __awaiter(this, void 0, void 0, function () {\n var hexTx, tx, blockNumber, hash, error_7;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, Promise.resolve(signedTransaction).then(function (t) { return (0, bytes_1.hexlify)(t); })];\n case 2:\n hexTx = _a.sent();\n tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) {\n tx.confirmations = 0;\n }\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 3:\n blockNumber = _a.sent();\n _a.label = 4;\n case 4:\n _a.trys.push([4, 6, , 7]);\n return [4 /*yield*/, this.perform(\"sendTransaction\", { signedTransaction: hexTx })];\n case 5:\n hash = _a.sent();\n return [2 /*return*/, this._wrapTransaction(tx, hash, blockNumber)];\n case 6:\n error_7 = _a.sent();\n error_7.transaction = tx;\n error_7.transactionHash = tx.hash;\n throw error_7;\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype._getTransactionRequest = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var values, tx, _a, _b;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, transaction];\n case 1:\n values = _c.sent();\n tx = {};\n [\"from\", \"to\"].forEach(function (key) {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then(function (v) { return (v ? _this._getAddress(v) : null); });\n });\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach(function (key) {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then(function (v) { return (v ? bignumber_1.BigNumber.from(v) : null); });\n });\n [\"type\"].forEach(function (key) {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then(function (v) { return ((v != null) ? v : null); });\n });\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n [\"data\"].forEach(function (key) {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then(function (v) { return (v ? (0, bytes_1.hexlify)(v) : null); });\n });\n _b = (_a = this.formatter).transactionRequest;\n return [4 /*yield*/, (0, properties_1.resolveProperties)(tx)];\n case 2: return [2 /*return*/, _b.apply(_a, [_c.sent()])];\n }\n });\n });\n };\n BaseProvider.prototype._getFilter = function (filter) {\n return __awaiter(this, void 0, void 0, function () {\n var result, _a, _b;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, filter];\n case 1:\n filter = _c.sent();\n result = {};\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n [\"blockHash\", \"topics\"].forEach(function (key) {\n if (filter[key] == null) {\n return;\n }\n result[key] = filter[key];\n });\n [\"fromBlock\", \"toBlock\"].forEach(function (key) {\n if (filter[key] == null) {\n return;\n }\n result[key] = _this._getBlockTag(filter[key]);\n });\n _b = (_a = this.formatter).filter;\n return [4 /*yield*/, (0, properties_1.resolveProperties)(result)];\n case 2: return [2 /*return*/, _b.apply(_a, [_c.sent()])];\n }\n });\n });\n };\n BaseProvider.prototype._call = function (transaction, blockTag, attempt) {\n return __awaiter(this, void 0, void 0, function () {\n var txSender, result, data, sender, urls, urlsOffset, urlsLength, urlsData, u, url, calldata, callbackSelector, extraData, ccipResult, tx, error_8;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", logger_1.Logger.errors.SERVER_ERROR, {\n redirects: attempt,\n transaction: transaction\n });\n }\n txSender = transaction.to;\n return [4 /*yield*/, this.perform(\"call\", { transaction: transaction, blockTag: blockTag })];\n case 1:\n result = _a.sent();\n if (!(attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && ((0, bytes_1.hexDataLength)(result) % 32 === 4))) return [3 /*break*/, 5];\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n data = (0, bytes_1.hexDataSlice)(result, 4);\n sender = (0, bytes_1.hexDataSlice)(data, 0, 32);\n if (!bignumber_1.BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", logger_1.Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction: transaction,\n data: result\n });\n }\n urls = [];\n urlsOffset = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(data, 32, 64)).toNumber();\n urlsLength = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(data, urlsOffset, urlsOffset + 32)).toNumber();\n urlsData = (0, bytes_1.hexDataSlice)(data, urlsOffset + 32);\n for (u = 0; u < urlsLength; u++) {\n url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", logger_1.Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction: transaction,\n data: result\n });\n }\n urls.push(url);\n }\n calldata = _parseBytes(data, 64);\n // Get the callbackSelector (bytes4)\n if (!bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", logger_1.Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction: transaction,\n data: result\n });\n }\n callbackSelector = (0, bytes_1.hexDataSlice)(data, 96, 100);\n extraData = _parseBytes(data, 128);\n return [4 /*yield*/, this.ccipReadFetch(transaction, calldata, urls)];\n case 3:\n ccipResult = _a.sent();\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", logger_1.Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction: transaction,\n data: result\n });\n }\n tx = {\n to: txSender,\n data: (0, bytes_1.hexConcat)([callbackSelector, encodeBytes([ccipResult, extraData])])\n };\n return [2 /*return*/, this._call(tx, blockTag, attempt + 1)];\n case 4:\n error_8 = _a.sent();\n if (error_8.code === logger_1.Logger.errors.SERVER_ERROR) {\n throw error_8;\n }\n return [3 /*break*/, 5];\n case 5:\n try {\n return [2 /*return*/, (0, bytes_1.hexlify)(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction: transaction, blockTag: blockTag },\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype.call = function (transaction, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var resolved;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n })];\n case 2:\n resolved = _a.sent();\n return [2 /*return*/, this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0 : -1)];\n }\n });\n });\n };\n BaseProvider.prototype.estimateGas = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({\n transaction: this._getTransactionRequest(transaction)\n })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"estimateGas\", params)];\n case 3:\n result = _a.sent();\n try {\n return [2 /*return*/, bignumber_1.BigNumber.from(result)];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"bad result from backend\", logger_1.Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params: params,\n result: result,\n error: error\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype._getAddress = function (addressOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, addressOrName];\n case 1:\n addressOrName = _a.sent();\n if (typeof (addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n return [4 /*yield*/, this.resolveName(addressOrName)];\n case 2:\n address = _a.sent();\n if (address == null) {\n logger.throwError(\"ENS name not configured\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName(\" + JSON.stringify(addressOrName) + \")\"\n });\n }\n return [2 /*return*/, address];\n }\n });\n });\n };\n BaseProvider.prototype._getBlock = function (blockHashOrBlockTag, includeTransactions) {\n return __awaiter(this, void 0, void 0, function () {\n var blockNumber, params, _a, error_9;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _b.sent();\n return [4 /*yield*/, blockHashOrBlockTag];\n case 2:\n blockHashOrBlockTag = _b.sent();\n blockNumber = -128;\n params = {\n includeTransactions: !!includeTransactions\n };\n if (!(0, bytes_1.isHexString)(blockHashOrBlockTag, 32)) return [3 /*break*/, 3];\n params.blockHash = blockHashOrBlockTag;\n return [3 /*break*/, 6];\n case 3:\n _b.trys.push([3, 5, , 6]);\n _a = params;\n return [4 /*yield*/, this._getBlockTag(blockHashOrBlockTag)];\n case 4:\n _a.blockTag = _b.sent();\n if ((0, bytes_1.isHexString)(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n return [3 /*break*/, 6];\n case 5:\n error_9 = _b.sent();\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/, (0, web_1.poll)(function () { return __awaiter(_this, void 0, void 0, function () {\n var block, blockNumber_1, i, tx, confirmations, blockWithTxs;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.perform(\"getBlock\", params)];\n case 1:\n block = _a.sent();\n // Block was not found\n if (block == null) {\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) {\n return [2 /*return*/, null];\n }\n }\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) {\n return [2 /*return*/, null];\n }\n }\n // Retry on the next block\n return [2 /*return*/, undefined];\n }\n if (!includeTransactions) return [3 /*break*/, 8];\n blockNumber_1 = null;\n i = 0;\n _a.label = 2;\n case 2:\n if (!(i < block.transactions.length)) return [3 /*break*/, 7];\n tx = block.transactions[i];\n if (!(tx.blockNumber == null)) return [3 /*break*/, 3];\n tx.confirmations = 0;\n return [3 /*break*/, 6];\n case 3:\n if (!(tx.confirmations == null)) return [3 /*break*/, 6];\n if (!(blockNumber_1 == null)) return [3 /*break*/, 5];\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 4:\n blockNumber_1 = _a.sent();\n _a.label = 5;\n case 5:\n confirmations = (blockNumber_1 - tx.blockNumber) + 1;\n if (confirmations <= 0) {\n confirmations = 1;\n }\n tx.confirmations = confirmations;\n _a.label = 6;\n case 6:\n i++;\n return [3 /*break*/, 2];\n case 7:\n blockWithTxs = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map(function (tx) { return _this._wrapTransaction(tx); });\n return [2 /*return*/, blockWithTxs];\n case 8: return [2 /*return*/, this.formatter.block(block)];\n }\n });\n }); }, { oncePoll: this })];\n }\n });\n });\n };\n BaseProvider.prototype.getBlock = function (blockHashOrBlockTag) {\n return (this._getBlock(blockHashOrBlockTag, false));\n };\n BaseProvider.prototype.getBlockWithTransactions = function (blockHashOrBlockTag) {\n return (this._getBlock(blockHashOrBlockTag, true));\n };\n BaseProvider.prototype.getTransaction = function (transactionHash) {\n return __awaiter(this, void 0, void 0, function () {\n var params;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, transactionHash];\n case 2:\n transactionHash = _a.sent();\n params = { transactionHash: this.formatter.hash(transactionHash, true) };\n return [2 /*return*/, (0, web_1.poll)(function () { return __awaiter(_this, void 0, void 0, function () {\n var result, tx, blockNumber, confirmations;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.perform(\"getTransaction\", params)];\n case 1:\n result = _a.sent();\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, undefined];\n }\n tx = this.formatter.transactionResponse(result);\n if (!(tx.blockNumber == null)) return [3 /*break*/, 2];\n tx.confirmations = 0;\n return [3 /*break*/, 4];\n case 2:\n if (!(tx.confirmations == null)) return [3 /*break*/, 4];\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 3:\n blockNumber = _a.sent();\n confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) {\n confirmations = 1;\n }\n tx.confirmations = confirmations;\n _a.label = 4;\n case 4: return [2 /*return*/, this._wrapTransaction(tx)];\n }\n });\n }); }, { oncePoll: this })];\n }\n });\n });\n };\n BaseProvider.prototype.getTransactionReceipt = function (transactionHash) {\n return __awaiter(this, void 0, void 0, function () {\n var params;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, transactionHash];\n case 2:\n transactionHash = _a.sent();\n params = { transactionHash: this.formatter.hash(transactionHash, true) };\n return [2 /*return*/, (0, web_1.poll)(function () { return __awaiter(_this, void 0, void 0, function () {\n var result, receipt, blockNumber, confirmations;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.perform(\"getTransactionReceipt\", params)];\n case 1:\n result = _a.sent();\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, undefined];\n }\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) {\n return [2 /*return*/, undefined];\n }\n receipt = this.formatter.receipt(result);\n if (!(receipt.blockNumber == null)) return [3 /*break*/, 2];\n receipt.confirmations = 0;\n return [3 /*break*/, 4];\n case 2:\n if (!(receipt.confirmations == null)) return [3 /*break*/, 4];\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 3:\n blockNumber = _a.sent();\n confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) {\n confirmations = 1;\n }\n receipt.confirmations = confirmations;\n _a.label = 4;\n case 4: return [2 /*return*/, receipt];\n }\n });\n }); }, { oncePoll: this })];\n }\n });\n });\n };\n BaseProvider.prototype.getLogs = function (filter) {\n return __awaiter(this, void 0, void 0, function () {\n var params, logs;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [4 /*yield*/, (0, properties_1.resolveProperties)({ filter: this._getFilter(filter) })];\n case 2:\n params = _a.sent();\n return [4 /*yield*/, this.perform(\"getLogs\", params)];\n case 3:\n logs = _a.sent();\n logs.forEach(function (log) {\n if (log.removed == null) {\n log.removed = false;\n }\n });\n return [2 /*return*/, formatter_1.Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs)];\n }\n });\n });\n };\n BaseProvider.prototype.getEtherPrice = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getNetwork()];\n case 1:\n _a.sent();\n return [2 /*return*/, this.perform(\"getEtherPrice\", {})];\n }\n });\n });\n };\n BaseProvider.prototype._getBlockTag = function (blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var blockNumber;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, blockTag];\n case 1:\n blockTag = _a.sent();\n if (!(typeof (blockTag) === \"number\" && blockTag < 0)) return [3 /*break*/, 3];\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n return [4 /*yield*/, this._getInternalBlockNumber(100 + 2 * this.pollingInterval)];\n case 2:\n blockNumber = _a.sent();\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return [2 /*return*/, this.formatter.blockTag(blockNumber)];\n case 3: return [2 /*return*/, this.formatter.blockTag(blockTag)];\n }\n });\n });\n };\n BaseProvider.prototype.getResolver = function (name) {\n return __awaiter(this, void 0, void 0, function () {\n var currentName, addr, resolver, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n currentName = name;\n _b.label = 1;\n case 1:\n if (!true) return [3 /*break*/, 6];\n if (currentName === \"\" || currentName === \".\") {\n return [2 /*return*/, null];\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, this._getResolver(currentName, \"getResolver\")];\n case 2:\n addr = _b.sent();\n if (!(addr != null)) return [3 /*break*/, 5];\n resolver = new Resolver(this, addr, name);\n _a = currentName !== name;\n if (!_a) return [3 /*break*/, 4];\n return [4 /*yield*/, resolver.supportsWildcard()];\n case 3:\n _a = !(_b.sent());\n _b.label = 4;\n case 4:\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (_a) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, resolver];\n case 5:\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n return [3 /*break*/, 1];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n BaseProvider.prototype._getResolver = function (name, operation) {\n return __awaiter(this, void 0, void 0, function () {\n var network, addrData, error_10;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (operation == null) {\n operation = \"ENS\";\n }\n return [4 /*yield*/, this.getNetwork()];\n case 1:\n network = _a.sent();\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\"network does not support ENS\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: operation, network: network.name });\n }\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + (0, hash_1.namehash)(name).substring(2))\n })];\n case 3:\n addrData = _a.sent();\n return [2 /*return*/, this.formatter.callAddress(addrData)];\n case 4:\n error_10 = _a.sent();\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/, null];\n }\n });\n });\n };\n BaseProvider.prototype.resolveName = function (name) {\n return __awaiter(this, void 0, void 0, function () {\n var resolver;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, name];\n case 1:\n name = _a.sent();\n // If it is already an address, nothing to resolve\n try {\n return [2 /*return*/, Promise.resolve(this.formatter.address(name))];\n }\n catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if ((0, bytes_1.isHexString)(name)) {\n throw error;\n }\n }\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n return [4 /*yield*/, this.getResolver(name)];\n case 2:\n resolver = _a.sent();\n if (!resolver) {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, resolver.getAddress()];\n case 3: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n BaseProvider.prototype.lookupAddress = function (address) {\n return __awaiter(this, void 0, void 0, function () {\n var node, resolverAddr, name, _a, addr;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, address];\n case 1:\n address = _b.sent();\n address = this.formatter.address(address);\n node = address.substring(2).toLowerCase() + \".addr.reverse\";\n return [4 /*yield*/, this._getResolver(node, \"lookupAddress\")];\n case 2:\n resolverAddr = _b.sent();\n if (resolverAddr == null) {\n return [2 /*return*/, null];\n }\n _a = _parseString;\n return [4 /*yield*/, this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + (0, hash_1.namehash)(node).substring(2))\n })];\n case 3:\n name = _a.apply(void 0, [_b.sent(), 0]);\n return [4 /*yield*/, this.resolveName(name)];\n case 4:\n addr = _b.sent();\n if (addr != address) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, name];\n }\n });\n });\n };\n BaseProvider.prototype.getAvatar = function (nameOrAddress) {\n return __awaiter(this, void 0, void 0, function () {\n var resolver, address, node, resolverAddress, avatar_1, error_11, name_1, _a, error_12, avatar;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n resolver = null;\n if (!(0, bytes_1.isHexString)(nameOrAddress)) return [3 /*break*/, 10];\n address = this.formatter.address(nameOrAddress);\n node = address.substring(2).toLowerCase() + \".addr.reverse\";\n return [4 /*yield*/, this._getResolver(node, \"getAvatar\")];\n case 1:\n resolverAddress = _b.sent();\n if (!resolverAddress) {\n return [2 /*return*/, null];\n }\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n _b.label = 2;\n case 2:\n _b.trys.push([2, 4, , 5]);\n return [4 /*yield*/, resolver.getAvatar()];\n case 3:\n avatar_1 = _b.sent();\n if (avatar_1) {\n return [2 /*return*/, avatar_1.url];\n }\n return [3 /*break*/, 5];\n case 4:\n error_11 = _b.sent();\n if (error_11.code !== logger_1.Logger.errors.CALL_EXCEPTION) {\n throw error_11;\n }\n return [3 /*break*/, 5];\n case 5:\n _b.trys.push([5, 8, , 9]);\n _a = _parseString;\n return [4 /*yield*/, this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + (0, hash_1.namehash)(node).substring(2))\n })];\n case 6:\n name_1 = _a.apply(void 0, [_b.sent(), 0]);\n return [4 /*yield*/, this.getResolver(name_1)];\n case 7:\n resolver = _b.sent();\n return [3 /*break*/, 9];\n case 8:\n error_12 = _b.sent();\n if (error_12.code !== logger_1.Logger.errors.CALL_EXCEPTION) {\n throw error_12;\n }\n return [2 /*return*/, null];\n case 9: return [3 /*break*/, 12];\n case 10: return [4 /*yield*/, this.getResolver(nameOrAddress)];\n case 11:\n // ENS name; forward lookup with wildcard\n resolver = _b.sent();\n if (!resolver) {\n return [2 /*return*/, null];\n }\n _b.label = 12;\n case 12: return [4 /*yield*/, resolver.getAvatar()];\n case 13:\n avatar = _b.sent();\n if (avatar == null) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, avatar.url];\n }\n });\n });\n };\n BaseProvider.prototype.perform = function (method, params) {\n return logger.throwError(method + \" not implemented\", logger_1.Logger.errors.NOT_IMPLEMENTED, { operation: method });\n };\n BaseProvider.prototype._startEvent = function (event) {\n this.polling = (this._events.filter(function (e) { return e.pollable(); }).length > 0);\n };\n BaseProvider.prototype._stopEvent = function (event) {\n this.polling = (this._events.filter(function (e) { return e.pollable(); }).length > 0);\n };\n BaseProvider.prototype._addEventListener = function (eventName, listener, once) {\n var event = new Event(getEventTag(eventName), listener, once);\n this._events.push(event);\n this._startEvent(event);\n return this;\n };\n BaseProvider.prototype.on = function (eventName, listener) {\n return this._addEventListener(eventName, listener, false);\n };\n BaseProvider.prototype.once = function (eventName, listener) {\n return this._addEventListener(eventName, listener, true);\n };\n BaseProvider.prototype.emit = function (eventName) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var result = false;\n var stopped = [];\n var eventTag = getEventTag(eventName);\n this._events = this._events.filter(function (event) {\n if (event.tag !== eventTag) {\n return true;\n }\n setTimeout(function () {\n event.listener.apply(_this, args);\n }, 0);\n result = true;\n if (event.once) {\n stopped.push(event);\n return false;\n }\n return true;\n });\n stopped.forEach(function (event) { _this._stopEvent(event); });\n return result;\n };\n BaseProvider.prototype.listenerCount = function (eventName) {\n if (!eventName) {\n return this._events.length;\n }\n var eventTag = getEventTag(eventName);\n return this._events.filter(function (event) {\n return (event.tag === eventTag);\n }).length;\n };\n BaseProvider.prototype.listeners = function (eventName) {\n if (eventName == null) {\n return this._events.map(function (event) { return event.listener; });\n }\n var eventTag = getEventTag(eventName);\n return this._events\n .filter(function (event) { return (event.tag === eventTag); })\n .map(function (event) { return event.listener; });\n };\n BaseProvider.prototype.off = function (eventName, listener) {\n var _this = this;\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n var stopped = [];\n var found = false;\n var eventTag = getEventTag(eventName);\n this._events = this._events.filter(function (event) {\n if (event.tag !== eventTag || event.listener != listener) {\n return true;\n }\n if (found) {\n return true;\n }\n found = true;\n stopped.push(event);\n return false;\n });\n stopped.forEach(function (event) { _this._stopEvent(event); });\n return this;\n };\n BaseProvider.prototype.removeAllListeners = function (eventName) {\n var _this = this;\n var stopped = [];\n if (eventName == null) {\n stopped = this._events;\n this._events = [];\n }\n else {\n var eventTag_1 = getEventTag(eventName);\n this._events = this._events.filter(function (event) {\n if (event.tag !== eventTag_1) {\n return true;\n }\n stopped.push(event);\n return false;\n });\n }\n stopped.forEach(function (event) { _this._stopEvent(event); });\n return this;\n };\n return BaseProvider;\n}(abstract_provider_1.Provider));\nexports.BaseProvider = BaseProvider;\n//# sourceMappingURL=base-provider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\nexports.version = \"abstract-signer/5.8.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VoidSigner = exports.Signer = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar allowedTransactionKeys = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\nvar forwardErrors = [\n logger_1.Logger.errors.INSUFFICIENT_FUNDS,\n logger_1.Logger.errors.NONCE_EXPIRED,\n logger_1.Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n;\n;\nvar Signer = /** @class */ (function () {\n ///////////////////\n // Sub-classes MUST call super\n function Signer() {\n var _newTarget = this.constructor;\n logger.checkAbstract(_newTarget, Signer);\n (0, properties_1.defineReadOnly)(this, \"_isSigner\", true);\n }\n ///////////////////\n // Sub-classes MAY override these\n Signer.prototype.getBalance = function (blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getBalance\");\n return [4 /*yield*/, this.provider.getBalance(this.getAddress(), blockTag)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Signer.prototype.getTransactionCount = function (blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getTransactionCount\");\n return [4 /*yield*/, this.provider.getTransactionCount(this.getAddress(), blockTag)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n Signer.prototype.estimateGas = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var tx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"estimateGas\");\n return [4 /*yield*/, (0, properties_1.resolveProperties)(this.checkTransaction(transaction))];\n case 1:\n tx = _a.sent();\n return [4 /*yield*/, this.provider.estimateGas(tx)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n // Populates \"from\" if unspecified, and calls with the transaction\n Signer.prototype.call = function (transaction, blockTag) {\n return __awaiter(this, void 0, void 0, function () {\n var tx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"call\");\n return [4 /*yield*/, (0, properties_1.resolveProperties)(this.checkTransaction(transaction))];\n case 1:\n tx = _a.sent();\n return [4 /*yield*/, this.provider.call(tx, blockTag)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n // Populates all fields in a transaction, signs it and sends it to the network\n Signer.prototype.sendTransaction = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var tx, signedTx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"sendTransaction\");\n return [4 /*yield*/, this.populateTransaction(transaction)];\n case 1:\n tx = _a.sent();\n return [4 /*yield*/, this.signTransaction(tx)];\n case 2:\n signedTx = _a.sent();\n return [4 /*yield*/, this.provider.sendTransaction(signedTx)];\n case 3: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Signer.prototype.getChainId = function () {\n return __awaiter(this, void 0, void 0, function () {\n var network;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getChainId\");\n return [4 /*yield*/, this.provider.getNetwork()];\n case 1:\n network = _a.sent();\n return [2 /*return*/, network.chainId];\n }\n });\n });\n };\n Signer.prototype.getGasPrice = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getGasPrice\");\n return [4 /*yield*/, this.provider.getGasPrice()];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Signer.prototype.getFeeData = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"getFeeData\");\n return [4 /*yield*/, this.provider.getFeeData()];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Signer.prototype.resolveName = function (name) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._checkProvider(\"resolveName\");\n return [4 /*yield*/, this.provider.resolveName(name)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n Signer.prototype.checkTransaction = function (transaction) {\n for (var key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n var tx = (0, properties_1.shallowCopy)(transaction);\n if (tx.from == null) {\n tx.from = this.getAddress();\n }\n else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then(function (result) {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n return tx;\n };\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n Signer.prototype.populateTransaction = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var tx, hasEip1559, feeData, gasPrice;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, (0, properties_1.resolveProperties)(this.checkTransaction(transaction))];\n case 1:\n tx = _a.sent();\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(function (to) { return __awaiter(_this, void 0, void 0, function () {\n var address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (to == null) {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, this.resolveName(to)];\n case 1:\n address = _a.sent();\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return [2 /*return*/, address];\n }\n });\n }); });\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch(function (error) { });\n }\n hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n }\n else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n if (!((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null))) return [3 /*break*/, 2];\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n return [3 /*break*/, 5];\n case 2:\n if (!(tx.type === 0 || tx.type === 1)) return [3 /*break*/, 3];\n // Explicit Legacy or EIP-2930 transaction\n // Populate missing gasPrice\n if (tx.gasPrice == null) {\n tx.gasPrice = this.getGasPrice();\n }\n return [3 /*break*/, 5];\n case 3: return [4 /*yield*/, this.getFeeData()];\n case 4:\n feeData = _a.sent();\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n if (tx.gasPrice != null) {\n gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n }\n else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) {\n tx.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (tx.maxPriorityFeePerGas == null) {\n tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n }\n else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n // Populate missing fee data\n if (tx.gasPrice == null) {\n tx.gasPrice = feeData.gasPrice;\n }\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n }\n else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n }\n else if (tx.type === 2) {\n // Explicitly using EIP-1559\n // Populate missing fee data\n if (tx.maxFeePerGas == null) {\n tx.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (tx.maxPriorityFeePerGas == null) {\n tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n _a.label = 5;\n case 5:\n if (tx.nonce == null) {\n tx.nonce = this.getTransactionCount(\"pending\");\n }\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch(function (error) {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n }\n else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then(function (results) {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n return [4 /*yield*/, (0, properties_1.resolveProperties)(tx)];\n case 6: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n ///////////////////\n // Sub-classes SHOULD leave these alone\n Signer.prototype._checkProvider = function (operation) {\n if (!this.provider) {\n logger.throwError(\"missing provider\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\")\n });\n }\n };\n Signer.isSigner = function (value) {\n return !!(value && value._isSigner);\n };\n return Signer;\n}());\nexports.Signer = Signer;\nvar VoidSigner = /** @class */ (function (_super) {\n __extends(VoidSigner, _super);\n function VoidSigner(address, provider) {\n var _this = _super.call(this) || this;\n (0, properties_1.defineReadOnly)(_this, \"address\", address);\n (0, properties_1.defineReadOnly)(_this, \"provider\", provider || null);\n return _this;\n }\n VoidSigner.prototype.getAddress = function () {\n return Promise.resolve(this.address);\n };\n VoidSigner.prototype._fail = function (message, operation) {\n return Promise.resolve().then(function () {\n logger.throwError(message, logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n };\n VoidSigner.prototype.signMessage = function (message) {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n };\n VoidSigner.prototype.signTransaction = function (transaction) {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n };\n VoidSigner.prototype._signTypedData = function (domain, types, value) {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n };\n VoidSigner.prototype.connect = function (provider) {\n return new VoidSigner(this.address, provider);\n };\n return VoidSigner;\n}(Signer));\nexports.VoidSigner = VoidSigner;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonRpcProvider = exports.JsonRpcSigner = void 0;\nvar abstract_signer_1 = require(\"@ethersproject/abstract-signer\");\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar hash_1 = require(\"@ethersproject/hash\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar strings_1 = require(\"@ethersproject/strings\");\nvar transactions_1 = require(\"@ethersproject/transactions\");\nvar web_1 = require(\"@ethersproject/web\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar base_provider_1 = require(\"./base-provider\");\nvar errorGas = [\"call\", \"estimateGas\"];\nfunction spelunk(value, requireData) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(\"reverted\")) {\n var data = (0, bytes_1.isHexString)(value.data) ? value.data : null;\n if (!requireData || data) {\n return { message: value.message, data: data };\n }\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (var key in value) {\n var result = spelunk(value[key], requireData);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n }\n catch (error) { }\n }\n return null;\n}\nfunction checkError(method, error, params) {\n var transaction = params.transaction || params.signedTransaction;\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n var result = spelunk(error, true);\n if (result) {\n return result.data;\n }\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", logger_1.Logger.errors.CALL_EXCEPTION, {\n data: \"0x\",\n transaction: transaction,\n error: error\n });\n }\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n var result = spelunk(error.body, false);\n if (result == null) {\n result = spelunk(error, false);\n }\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message,\n method: method,\n transaction: transaction,\n error: error\n });\n }\n }\n // @TODO: Should we spelunk for message too?\n var message = error.message;\n if (error.code === logger_1.Logger.errors.SERVER_ERROR && error.error && typeof (error.error.message) === \"string\") {\n message = error.error.message;\n }\n else if (typeof (error.body) === \"string\") {\n message = error.body;\n }\n else if (typeof (error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", logger_1.Logger.errors.INSUFFICIENT_FUNDS, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", logger_1.Logger.errors.NONCE_EXPIRED, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", logger_1.Logger.errors.REPLACEMENT_UNDERPRICED, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n throw error;\n}\nfunction timer(timeout) {\n return new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n });\n}\nfunction getResult(payload) {\n if (payload.error) {\n // @TODO: not any\n var error = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n return payload.result;\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nvar _constructorGuard = {};\nvar JsonRpcSigner = /** @class */ (function (_super) {\n __extends(JsonRpcSigner, _super);\n function JsonRpcSigner(constructorGuard, provider, addressOrIndex) {\n var _this = _super.call(this) || this;\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n (0, properties_1.defineReadOnly)(_this, \"provider\", provider);\n if (addressOrIndex == null) {\n addressOrIndex = 0;\n }\n if (typeof (addressOrIndex) === \"string\") {\n (0, properties_1.defineReadOnly)(_this, \"_address\", _this.provider.formatter.address(addressOrIndex));\n (0, properties_1.defineReadOnly)(_this, \"_index\", null);\n }\n else if (typeof (addressOrIndex) === \"number\") {\n (0, properties_1.defineReadOnly)(_this, \"_index\", addressOrIndex);\n (0, properties_1.defineReadOnly)(_this, \"_address\", null);\n }\n else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n return _this;\n }\n JsonRpcSigner.prototype.connect = function (provider) {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n };\n JsonRpcSigner.prototype.connectUnchecked = function () {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n };\n JsonRpcSigner.prototype.getAddress = function () {\n var _this = this;\n if (this._address) {\n return Promise.resolve(this._address);\n }\n return this.provider.send(\"eth_accounts\", []).then(function (accounts) {\n if (accounts.length <= _this._index) {\n logger.throwError(\"unknown account #\" + _this._index, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return _this.provider.formatter.address(accounts[_this._index]);\n });\n };\n JsonRpcSigner.prototype.sendUncheckedTransaction = function (transaction) {\n var _this = this;\n transaction = (0, properties_1.shallowCopy)(transaction);\n var fromAddress = this.getAddress().then(function (address) {\n if (address) {\n address = address.toLowerCase();\n }\n return address;\n });\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n var estimate = (0, properties_1.shallowCopy)(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(function (to) { return __awaiter(_this, void 0, void 0, function () {\n var address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (to == null) {\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, this.provider.resolveName(to)];\n case 1:\n address = _a.sent();\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return [2 /*return*/, address];\n }\n });\n }); });\n }\n return (0, properties_1.resolveProperties)({\n tx: (0, properties_1.resolveProperties)(transaction),\n sender: fromAddress\n }).then(function (_a) {\n var tx = _a.tx, sender = _a.sender;\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n }\n else {\n tx.from = sender;\n }\n var hexTx = _this.provider.constructor.hexlifyTransaction(tx, { from: true });\n return _this.provider.send(\"eth_sendTransaction\", [hexTx]).then(function (hash) {\n return hash;\n }, function (error) {\n if (typeof (error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", logger_1.Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n };\n JsonRpcSigner.prototype.signTransaction = function (transaction) {\n return logger.throwError(\"signing transactions is unsupported\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n };\n JsonRpcSigner.prototype.sendTransaction = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var blockNumber, hash, error_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval)];\n case 1:\n blockNumber = _a.sent();\n return [4 /*yield*/, this.sendUncheckedTransaction(transaction)];\n case 2:\n hash = _a.sent();\n _a.label = 3;\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, (0, web_1.poll)(function () { return __awaiter(_this, void 0, void 0, function () {\n var tx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.provider.getTransaction(hash)];\n case 1:\n tx = _a.sent();\n if (tx === null) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, this.provider._wrapTransaction(tx, hash, blockNumber)];\n }\n });\n }); }, { oncePoll: this.provider })];\n case 4: \n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return [2 /*return*/, _a.sent()];\n case 5:\n error_1 = _a.sent();\n error_1.transactionHash = hash;\n throw error_1;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcSigner.prototype.signMessage = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var data, address, error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n data = ((typeof (message) === \"string\") ? (0, strings_1.toUtf8Bytes)(message) : message);\n return [4 /*yield*/, this.getAddress()];\n case 1:\n address = _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.provider.send(\"personal_sign\", [(0, bytes_1.hexlify)(data), address.toLowerCase()])];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n error_2 = _a.sent();\n if (typeof (error_2.message) === \"string\" && error_2.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", logger_1.Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error_2;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcSigner.prototype._legacySignMessage = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var data, address, error_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n data = ((typeof (message) === \"string\") ? (0, strings_1.toUtf8Bytes)(message) : message);\n return [4 /*yield*/, this.getAddress()];\n case 1:\n address = _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.provider.send(\"eth_sign\", [address.toLowerCase(), (0, bytes_1.hexlify)(data)])];\n case 3: \n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return [2 /*return*/, _a.sent()];\n case 4:\n error_3 = _a.sent();\n if (typeof (error_3.message) === \"string\" && error_3.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", logger_1.Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error_3;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcSigner.prototype._signTypedData = function (domain, types, value) {\n return __awaiter(this, void 0, void 0, function () {\n var populated, address, error_4;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, hash_1._TypedDataEncoder.resolveNames(domain, types, value, function (name) {\n return _this.provider.resolveName(name);\n })];\n case 1:\n populated = _a.sent();\n return [4 /*yield*/, this.getAddress()];\n case 2:\n address = _a.sent();\n _a.label = 3;\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(hash_1._TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ])];\n case 4: return [2 /*return*/, _a.sent()];\n case 5:\n error_4 = _a.sent();\n if (typeof (error_4.message) === \"string\" && error_4.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", logger_1.Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types: types, value: populated.value }\n });\n }\n throw error_4;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcSigner.prototype.unlock = function (password) {\n return __awaiter(this, void 0, void 0, function () {\n var provider, address;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n provider = this.provider;\n return [4 /*yield*/, this.getAddress()];\n case 1:\n address = _a.sent();\n return [2 /*return*/, provider.send(\"personal_unlockAccount\", [address.toLowerCase(), password, null])];\n }\n });\n });\n };\n return JsonRpcSigner;\n}(abstract_signer_1.Signer));\nexports.JsonRpcSigner = JsonRpcSigner;\nvar UncheckedJsonRpcSigner = /** @class */ (function (_super) {\n __extends(UncheckedJsonRpcSigner, _super);\n function UncheckedJsonRpcSigner() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UncheckedJsonRpcSigner.prototype.sendTransaction = function (transaction) {\n var _this = this;\n return this.sendUncheckedTransaction(transaction).then(function (hash) {\n return {\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: function (confirmations) { return _this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n };\n return UncheckedJsonRpcSigner;\n}(JsonRpcSigner));\nvar allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n};\nvar JsonRpcProvider = /** @class */ (function (_super) {\n __extends(JsonRpcProvider, _super);\n function JsonRpcProvider(url, network) {\n var _this = this;\n var networkOrReady = network;\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise(function (resolve, reject) {\n setTimeout(function () {\n _this.detectNetwork().then(function (network) {\n resolve(network);\n }, function (error) {\n reject(error);\n });\n }, 0);\n });\n }\n _this = _super.call(this, networkOrReady) || this;\n // Default URL\n if (!url) {\n url = (0, properties_1.getStatic)(_this.constructor, \"defaultUrl\")();\n }\n if (typeof (url) === \"string\") {\n (0, properties_1.defineReadOnly)(_this, \"connection\", Object.freeze({\n url: url\n }));\n }\n else {\n (0, properties_1.defineReadOnly)(_this, \"connection\", Object.freeze((0, properties_1.shallowCopy)(url)));\n }\n _this._nextId = 42;\n return _this;\n }\n Object.defineProperty(JsonRpcProvider.prototype, \"_cache\", {\n get: function () {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = {};\n }\n return this._eventLoopCache;\n },\n enumerable: false,\n configurable: true\n });\n JsonRpcProvider.defaultUrl = function () {\n return \"http:/\\/localhost:8545\";\n };\n JsonRpcProvider.prototype.detectNetwork = function () {\n var _this = this;\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n // Clear this cache at the beginning of the next event loop\n setTimeout(function () {\n _this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n };\n JsonRpcProvider.prototype._uncachedDetectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n var chainId, error_5, error_6, getNetwork;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, timer(0)];\n case 1:\n _a.sent();\n chainId = null;\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 9]);\n return [4 /*yield*/, this.send(\"eth_chainId\", [])];\n case 3:\n chainId = _a.sent();\n return [3 /*break*/, 9];\n case 4:\n error_5 = _a.sent();\n _a.label = 5;\n case 5:\n _a.trys.push([5, 7, , 8]);\n return [4 /*yield*/, this.send(\"net_version\", [])];\n case 6:\n chainId = _a.sent();\n return [3 /*break*/, 8];\n case 7:\n error_6 = _a.sent();\n return [3 /*break*/, 8];\n case 8: return [3 /*break*/, 9];\n case 9:\n if (chainId != null) {\n getNetwork = (0, properties_1.getStatic)(this.constructor, \"getNetwork\");\n try {\n return [2 /*return*/, getNetwork(bignumber_1.BigNumber.from(chainId).toNumber())];\n }\n catch (error) {\n return [2 /*return*/, logger.throwError(\"could not detect network\", logger_1.Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n })];\n }\n }\n return [2 /*return*/, logger.throwError(\"could not detect network\", logger_1.Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n })];\n }\n });\n });\n };\n JsonRpcProvider.prototype.getSigner = function (addressOrIndex) {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n };\n JsonRpcProvider.prototype.getUncheckedSigner = function (addressOrIndex) {\n return this.getSigner(addressOrIndex).connectUnchecked();\n };\n JsonRpcProvider.prototype.listAccounts = function () {\n var _this = this;\n return this.send(\"eth_accounts\", []).then(function (accounts) {\n return accounts.map(function (a) { return _this.formatter.address(a); });\n });\n };\n JsonRpcProvider.prototype.send = function (method, params) {\n var _this = this;\n var request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n this.emit(\"debug\", {\n action: \"request\",\n request: (0, properties_1.deepCopy)(request),\n provider: this\n });\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n var cache = ([\"eth_chainId\", \"eth_blockNumber\"].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n var result = (0, web_1.fetchJson)(this.connection, JSON.stringify(request), getResult).then(function (result) {\n _this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: _this\n });\n return result;\n }, function (error) {\n _this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: _this\n });\n throw error;\n });\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(function () {\n _this._cache[method] = null;\n }, 0);\n }\n return result;\n };\n JsonRpcProvider.prototype.prepareRequest = function (method, params) {\n switch (method) {\n case \"getBlockNumber\":\n return [\"eth_blockNumber\", []];\n case \"getGasPrice\":\n return [\"eth_gasPrice\", []];\n case \"getBalance\":\n return [\"eth_getBalance\", [getLowerCase(params.address), params.blockTag]];\n case \"getTransactionCount\":\n return [\"eth_getTransactionCount\", [getLowerCase(params.address), params.blockTag]];\n case \"getCode\":\n return [\"eth_getCode\", [getLowerCase(params.address), params.blockTag]];\n case \"getStorageAt\":\n return [\"eth_getStorageAt\", [getLowerCase(params.address), (0, bytes_1.hexZeroPad)(params.position, 32), params.blockTag]];\n case \"sendTransaction\":\n return [\"eth_sendRawTransaction\", [params.signedTransaction]];\n case \"getBlock\":\n if (params.blockTag) {\n return [\"eth_getBlockByNumber\", [params.blockTag, !!params.includeTransactions]];\n }\n else if (params.blockHash) {\n return [\"eth_getBlockByHash\", [params.blockHash, !!params.includeTransactions]];\n }\n return null;\n case \"getTransaction\":\n return [\"eth_getTransactionByHash\", [params.transactionHash]];\n case \"getTransactionReceipt\":\n return [\"eth_getTransactionReceipt\", [params.transactionHash]];\n case \"call\": {\n var hexlifyTransaction = (0, properties_1.getStatic)(this.constructor, \"hexlifyTransaction\");\n return [\"eth_call\", [hexlifyTransaction(params.transaction, { from: true }), params.blockTag]];\n }\n case \"estimateGas\": {\n var hexlifyTransaction = (0, properties_1.getStatic)(this.constructor, \"hexlifyTransaction\");\n return [\"eth_estimateGas\", [hexlifyTransaction(params.transaction, { from: true })]];\n }\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [\"eth_getLogs\", [params.filter]];\n default:\n break;\n }\n return null;\n };\n JsonRpcProvider.prototype.perform = function (method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var tx, feeData, args, error_7;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(method === \"call\" || method === \"estimateGas\")) return [3 /*break*/, 2];\n tx = params.transaction;\n if (!(tx && tx.type != null && bignumber_1.BigNumber.from(tx.type).isZero())) return [3 /*break*/, 2];\n if (!(tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.getFeeData()];\n case 1:\n feeData = _a.sent();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = (0, properties_1.shallowCopy)(params);\n params.transaction = (0, properties_1.shallowCopy)(tx);\n delete params.transaction.type;\n }\n _a.label = 2;\n case 2:\n args = this.prepareRequest(method, params);\n if (args == null) {\n logger.throwError(method + \" not implemented\", logger_1.Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n _a.label = 3;\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, this.send(args[0], args[1])];\n case 4: return [2 /*return*/, _a.sent()];\n case 5:\n error_7 = _a.sent();\n return [2 /*return*/, checkError(method, error_7, params)];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n JsonRpcProvider.prototype._startEvent = function (event) {\n if (event.tag === \"pending\") {\n this._startPending();\n }\n _super.prototype._startEvent.call(this, event);\n };\n JsonRpcProvider.prototype._startPending = function () {\n if (this._pendingFilter != null) {\n return;\n }\n var self = this;\n var pendingFilter = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n pendingFilter.then(function (filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [filterId]).then(function (hashes) {\n if (self._pendingFilter != pendingFilter) {\n return null;\n }\n var seq = Promise.resolve();\n hashes.forEach(function (hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function () {\n return self.getTransaction(hash).then(function (tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n return seq.then(function () {\n return timer(1000);\n });\n }).then(function () {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [filterId]);\n return;\n }\n setTimeout(function () { poll(); }, 0);\n return null;\n }).catch(function (error) { });\n }\n poll();\n return filterId;\n }).catch(function (error) { });\n };\n JsonRpcProvider.prototype._stopEvent = function (event) {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n _super.prototype._stopEvent.call(this, event);\n };\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n JsonRpcProvider.hexlifyTransaction = function (transaction, allowExtra) {\n // Check only allowed properties are given\n var allowed = (0, properties_1.shallowCopy)(allowedTransactionKeys);\n if (allowExtra) {\n for (var key in allowExtra) {\n if (allowExtra[key]) {\n allowed[key] = true;\n }\n }\n }\n (0, properties_1.checkProperties)(transaction, allowed);\n var result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function (key) {\n if (transaction[key] == null) {\n return;\n }\n var value = (0, bytes_1.hexValue)(bignumber_1.BigNumber.from(transaction[key]));\n if (key === \"gasLimit\") {\n key = \"gas\";\n }\n result[key] = value;\n });\n [\"from\", \"to\", \"data\"].forEach(function (key) {\n if (transaction[key] == null) {\n return;\n }\n result[key] = (0, bytes_1.hexlify)(transaction[key]);\n });\n if (transaction.accessList) {\n result[\"accessList\"] = (0, transactions_1.accessListify)(transaction.accessList);\n }\n return result;\n };\n return JsonRpcProvider;\n}(base_provider_1.BaseProvider));\nexports.JsonRpcProvider = JsonRpcProvider;\n//# sourceMappingURL=json-rpc-provider.js.map","'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 8 && version !== 13) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message);\n }\n}\n","'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocket = void 0;\nvar ws_1 = __importDefault(require(\"ws\"));\nexports.WebSocket = ws_1.default;\n//# sourceMappingURL=ws.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketProvider = void 0;\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\nvar ws_1 = require(\"./ws\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\nvar NextId = 1;\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\nvar WebSocketProvider = /** @class */ (function (_super) {\n __extends(WebSocketProvider, _super);\n function WebSocketProvider(url, network) {\n var _this = this;\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n if (typeof (url) === \"string\") {\n _this = _super.call(this, url, network) || this;\n }\n else {\n _this = _super.call(this, \"_websocket\", network) || this;\n }\n _this._pollingInterval = -1;\n _this._wsReady = false;\n if (typeof (url) === \"string\") {\n (0, properties_1.defineReadOnly)(_this, \"_websocket\", new ws_1.WebSocket(_this.connection.url));\n }\n else {\n (0, properties_1.defineReadOnly)(_this, \"_websocket\", url);\n }\n (0, properties_1.defineReadOnly)(_this, \"_requests\", {});\n (0, properties_1.defineReadOnly)(_this, \"_subs\", {});\n (0, properties_1.defineReadOnly)(_this, \"_subIds\", {});\n (0, properties_1.defineReadOnly)(_this, \"_detectNetwork\", _super.prototype.detectNetwork.call(_this));\n // Stall sending requests until the socket is open...\n _this.websocket.onopen = function () {\n _this._wsReady = true;\n Object.keys(_this._requests).forEach(function (id) {\n _this.websocket.send(_this._requests[id].payload);\n });\n };\n _this.websocket.onmessage = function (messageEvent) {\n var data = messageEvent.data;\n var result = JSON.parse(data);\n if (result.id != null) {\n var id = String(result.id);\n var request = _this._requests[id];\n delete _this._requests[id];\n if (result.result !== undefined) {\n request.callback(null, result.result);\n _this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: _this\n });\n }\n else {\n var error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n (0, properties_1.defineReadOnly)(error, \"code\", result.error.code || null);\n (0, properties_1.defineReadOnly)(error, \"response\", data);\n }\n else {\n error = new Error(\"unknown error\");\n }\n request.callback(error, undefined);\n _this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: _this\n });\n }\n }\n else if (result.method === \"eth_subscription\") {\n // Subscription...\n var sub = _this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result);\n }\n }\n else {\n console.warn(\"this should not happen\");\n }\n };\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n var fauxPoll = setInterval(function () {\n _this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) {\n fauxPoll.unref();\n }\n return _this;\n }\n Object.defineProperty(WebSocketProvider.prototype, \"websocket\", {\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get: function () { return this._websocket; },\n enumerable: false,\n configurable: true\n });\n WebSocketProvider.prototype.detectNetwork = function () {\n return this._detectNetwork;\n };\n Object.defineProperty(WebSocketProvider.prototype, \"pollingInterval\", {\n get: function () {\n return 0;\n },\n set: function (value) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n },\n enumerable: false,\n configurable: true\n });\n WebSocketProvider.prototype.resetEventsBlock = function (blockNumber) {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n };\n WebSocketProvider.prototype.poll = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, null];\n });\n });\n };\n Object.defineProperty(WebSocketProvider.prototype, \"polling\", {\n set: function (value) {\n if (!value) {\n return;\n }\n logger.throwError(\"cannot set polling on WebSocketProvider\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n },\n enumerable: false,\n configurable: true\n });\n WebSocketProvider.prototype.send = function (method, params) {\n var _this = this;\n var rid = NextId++;\n return new Promise(function (resolve, reject) {\n function callback(error, result) {\n if (error) {\n return reject(error);\n }\n return resolve(result);\n }\n var payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n _this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: _this\n });\n _this._requests[String(rid)] = { callback: callback, payload: payload };\n if (_this._wsReady) {\n _this.websocket.send(payload);\n }\n });\n };\n WebSocketProvider.defaultUrl = function () {\n return \"ws:/\\/localhost:8546\";\n };\n WebSocketProvider.prototype._subscribe = function (tag, param, processFunc) {\n return __awaiter(this, void 0, void 0, function () {\n var subIdPromise, subId;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then(function (param) {\n return _this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n return [4 /*yield*/, subIdPromise];\n case 1:\n subId = _a.sent();\n this._subs[subId] = { tag: tag, processFunc: processFunc };\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketProvider.prototype._startEvent = function (event) {\n var _this = this;\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [\"newHeads\"], function (result) {\n var blockNumber = bignumber_1.BigNumber.from(result.number).toNumber();\n _this._emitted.block = blockNumber;\n _this.emit(\"block\", blockNumber);\n });\n break;\n case \"pending\":\n this._subscribe(\"pending\", [\"newPendingTransactions\"], function (result) {\n _this.emit(\"pending\", result);\n });\n break;\n case \"filter\":\n this._subscribe(event.tag, [\"logs\", this._getFilter(event.filter)], function (result) {\n if (result.removed == null) {\n result.removed = false;\n }\n _this.emit(event.filter, _this.formatter.filterLog(result));\n });\n break;\n case \"tx\": {\n var emitReceipt_1 = function (event) {\n var hash = event.hash;\n _this.getTransactionReceipt(hash).then(function (receipt) {\n if (!receipt) {\n return;\n }\n _this.emit(hash, receipt);\n });\n };\n // In case it is already mined\n emitReceipt_1(event);\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [\"newHeads\"], function (result) {\n _this._events.filter(function (e) { return (e.type === \"tx\"); }).forEach(emitReceipt_1);\n });\n break;\n }\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n };\n WebSocketProvider.prototype._stopEvent = function (event) {\n var _this = this;\n var tag = event.tag;\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter(function (e) { return (e.type === \"tx\"); }).length) {\n return;\n }\n tag = \"tx\";\n }\n else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n var subId = this._subIds[tag];\n if (!subId) {\n return;\n }\n delete this._subIds[tag];\n subId.then(function (subId) {\n if (!_this._subs[subId]) {\n return;\n }\n delete _this._subs[subId];\n _this.send(\"eth_unsubscribe\", [subId]);\n });\n };\n WebSocketProvider.prototype.destroy = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.websocket.readyState === ws_1.WebSocket.CONNECTING)) return [3 /*break*/, 2];\n return [4 /*yield*/, (new Promise(function (resolve) {\n _this.websocket.onopen = function () {\n resolve(true);\n };\n _this.websocket.onerror = function () {\n resolve(false);\n };\n }))];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n return [2 /*return*/];\n }\n });\n });\n };\n return WebSocketProvider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.WebSocketProvider = WebSocketProvider;\n//# sourceMappingURL=websocket-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UrlJsonRpcProvider = exports.StaticJsonRpcProvider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nvar StaticJsonRpcProvider = /** @class */ (function (_super) {\n __extends(StaticJsonRpcProvider, _super);\n function StaticJsonRpcProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StaticJsonRpcProvider.prototype.detectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n var network;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n network = this.network;\n if (!(network == null)) return [3 /*break*/, 2];\n return [4 /*yield*/, _super.prototype.detectNetwork.call(this)];\n case 1:\n network = _a.sent();\n if (!network) {\n logger.throwError(\"no network detected\", logger_1.Logger.errors.UNKNOWN_ERROR, {});\n }\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n (0, properties_1.defineReadOnly)(this, \"_network\", network);\n this.emit(\"network\", network, null);\n }\n _a.label = 2;\n case 2: return [2 /*return*/, network];\n }\n });\n });\n };\n return StaticJsonRpcProvider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.StaticJsonRpcProvider = StaticJsonRpcProvider;\nvar UrlJsonRpcProvider = /** @class */ (function (_super) {\n __extends(UrlJsonRpcProvider, _super);\n function UrlJsonRpcProvider(network, apiKey) {\n var _newTarget = this.constructor;\n var _this = this;\n logger.checkAbstract(_newTarget, UrlJsonRpcProvider);\n // Normalize the Network and API Key\n network = (0, properties_1.getStatic)(_newTarget, \"getNetwork\")(network);\n apiKey = (0, properties_1.getStatic)(_newTarget, \"getApiKey\")(apiKey);\n var connection = (0, properties_1.getStatic)(_newTarget, \"getUrl\")(network, apiKey);\n _this = _super.call(this, connection, network) || this;\n if (typeof (apiKey) === \"string\") {\n (0, properties_1.defineReadOnly)(_this, \"apiKey\", apiKey);\n }\n else if (apiKey != null) {\n Object.keys(apiKey).forEach(function (key) {\n (0, properties_1.defineReadOnly)(_this, key, apiKey[key]);\n });\n }\n return _this;\n }\n UrlJsonRpcProvider.prototype._startPending = function () {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n };\n UrlJsonRpcProvider.prototype.isCommunityResource = function () {\n return false;\n };\n UrlJsonRpcProvider.prototype.getSigner = function (address) {\n return logger.throwError(\"API provider does not support signing\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: \"getSigner\" });\n };\n UrlJsonRpcProvider.prototype.listAccounts = function () {\n return Promise.resolve([]);\n };\n // Return a defaultApiKey if null, otherwise validate the API key\n UrlJsonRpcProvider.getApiKey = function (apiKey) {\n return apiKey;\n };\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n UrlJsonRpcProvider.getUrl = function (network, apiKey) {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", logger_1.Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n };\n return UrlJsonRpcProvider;\n}(StaticJsonRpcProvider));\nexports.UrlJsonRpcProvider = UrlJsonRpcProvider;\n//# sourceMappingURL=url-json-rpc-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlchemyProvider = exports.AlchemyWebSocketProvider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar formatter_1 = require(\"./formatter\");\nvar websocket_provider_1 = require(\"./websocket-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\nvar defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nvar AlchemyWebSocketProvider = /** @class */ (function (_super) {\n __extends(AlchemyWebSocketProvider, _super);\n function AlchemyWebSocketProvider(network, apiKey) {\n var _this = this;\n var provider = new AlchemyProvider(network, apiKey);\n var url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n _this = _super.call(this, url, provider.network) || this;\n (0, properties_1.defineReadOnly)(_this, \"apiKey\", provider.apiKey);\n return _this;\n }\n AlchemyWebSocketProvider.prototype.isCommunityResource = function () {\n return (this.apiKey === defaultApiKey);\n };\n return AlchemyWebSocketProvider;\n}(websocket_provider_1.WebSocketProvider));\nexports.AlchemyWebSocketProvider = AlchemyWebSocketProvider;\nvar AlchemyProvider = /** @class */ (function (_super) {\n __extends(AlchemyProvider, _super);\n function AlchemyProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AlchemyProvider.getWebSocketProvider = function (network, apiKey) {\n return new AlchemyWebSocketProvider(network, apiKey);\n };\n AlchemyProvider.getApiKey = function (apiKey) {\n if (apiKey == null) {\n return defaultApiKey;\n }\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n };\n AlchemyProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.g.alchemy.com/v2/\";\n break;\n case \"sepolia\":\n host = \"eth-sepolia.g.alchemy.com/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n case \"arbitrum\":\n host = \"arb-mainnet.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-goerli\":\n host = \"arb-goerli.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-sepolia\":\n host = \"arb-sepolia.g.alchemy.com/v2/\";\n break;\n case \"optimism\":\n host = \"opt-mainnet.g.alchemy.com/v2/\";\n break;\n case \"optimism-goerli\":\n host = \"opt-goerli.g.alchemy.com/v2/\";\n break;\n case \"optimism-sepolia\":\n host = \"opt-sepolia.g.alchemy.com/v2/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: function (attempt, url) {\n if (apiKey === defaultApiKey) {\n (0, formatter_1.showThrottleMessage)();\n }\n return Promise.resolve(true);\n }\n };\n };\n AlchemyProvider.prototype.isCommunityResource = function () {\n return (this.apiKey === defaultApiKey);\n };\n return AlchemyProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.AlchemyProvider = AlchemyProvider;\n//# sourceMappingURL=alchemy-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnkrProvider = void 0;\nvar formatter_1 = require(\"./formatter\");\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth/\";\n case \"ropsten\":\n return \"rpc.ankr.com/eth_ropsten/\";\n case \"rinkeby\":\n return \"rpc.ankr.com/eth_rinkeby/\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli/\";\n case \"sepolia\":\n return \"rpc.ankr.com/eth_sepolia/\";\n case \"matic\":\n return \"rpc.ankr.com/polygon/\";\n case \"maticmum\":\n return \"rpc.ankr.com/polygon_mumbai/\";\n case \"optimism\":\n return \"rpc.ankr.com/optimism/\";\n case \"optimism-goerli\":\n return \"rpc.ankr.com/optimism_testnet/\";\n case \"optimism-sepolia\":\n return \"rpc.ankr.com/optimism_sepolia/\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum/\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"name\", name);\n}\nvar AnkrProvider = /** @class */ (function (_super) {\n __extends(AnkrProvider, _super);\n function AnkrProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnkrProvider.prototype.isCommunityResource = function () {\n return (this.apiKey === defaultApiKey);\n };\n AnkrProvider.getApiKey = function (apiKey) {\n if (apiKey == null) {\n return defaultApiKey;\n }\n return apiKey;\n };\n AnkrProvider.getUrl = function (network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n var connection = {\n allowGzip: true,\n url: (\"https:/\\/\" + getHost(network.name) + apiKey),\n throttleCallback: function (attempt, url) {\n if (apiKey.apiKey === defaultApiKey) {\n (0, formatter_1.showThrottleMessage)();\n }\n return Promise.resolve(true);\n }\n };\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret;\n }\n return connection;\n };\n return AnkrProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.AnkrProvider = AnkrProvider;\n//# sourceMappingURL=ankr-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CloudflareProvider = void 0;\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar CloudflareProvider = /** @class */ (function (_super) {\n __extends(CloudflareProvider, _super);\n function CloudflareProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CloudflareProvider.getApiKey = function (apiKey) {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n };\n CloudflareProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return host;\n };\n CloudflareProvider.prototype.perform = function (method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var block;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(method === \"getBlockNumber\")) return [3 /*break*/, 2];\n return [4 /*yield*/, _super.prototype.perform.call(this, \"getBlock\", { blockTag: \"latest\" })];\n case 1:\n block = _a.sent();\n return [2 /*return*/, block.number];\n case 2: return [2 /*return*/, _super.prototype.perform.call(this, method, params)];\n }\n });\n });\n };\n return CloudflareProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.CloudflareProvider = CloudflareProvider;\n//# sourceMappingURL=cloudflare-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EtherscanProvider = void 0;\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar transactions_1 = require(\"@ethersproject/transactions\");\nvar web_1 = require(\"@ethersproject/web\");\nvar formatter_1 = require(\"./formatter\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar base_provider_1 = require(\"./base-provider\");\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction) {\n var result = {};\n for (var key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n var value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = (0, bytes_1.hexValue)((0, bytes_1.hexlify)(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + (0, transactions_1.accessListify)(value).map(function (set) {\n return \"{address:\\\"\" + set.address + \"\\\",storageKeys:[\\\"\" + set.storageKeys.join('\",\"') + \"\\\"]}\";\n }).join(\",\") + \"]\";\n }\n else {\n value = (0, bytes_1.hexlify)(value);\n }\n result[key] = value;\n }\n return result;\n}\nfunction getResult(result) {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || typeof (result.message) !== \"string\" || !result.message.match(/^OK/)) {\n var error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n return result.result;\n}\nfunction getJsonResult(result) {\n // This response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n var error = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n var error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n var error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n}\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag) {\n if (blockTag === \"pending\") {\n throw new Error(\"pending not supported\");\n }\n if (blockTag === \"latest\") {\n return blockTag;\n }\n return parseInt(blockTag.substring(2), 16);\n}\nfunction checkError(method, error, transaction) {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === logger_1.Logger.errors.SERVER_ERROR) {\n var e = error.error;\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n var data = e.data;\n if (data) {\n data = \"0x\" + data.replace(/^.*0x/i, \"\");\n }\n if ((0, bytes_1.isHexString)(data)) {\n return data;\n }\n logger.throwError(\"missing revert data in call exception\", logger_1.Logger.errors.CALL_EXCEPTION, {\n error: error,\n data: \"0x\"\n });\n }\n }\n // Get the message from any nested error structure\n var message = error.message;\n if (error.code === logger_1.Logger.errors.SERVER_ERROR) {\n if (error.error && typeof (error.error.message) === \"string\") {\n message = error.error.message;\n }\n else if (typeof (error.body) === \"string\") {\n message = error.body;\n }\n else if (typeof (error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", logger_1.Logger.errors.INSUFFICIENT_FUNDS, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", logger_1.Logger.errors.NONCE_EXPIRED, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", logger_1.Logger.errors.REPLACEMENT_UNDERPRICED, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n method: method,\n transaction: transaction\n });\n }\n throw error;\n}\nvar EtherscanProvider = /** @class */ (function (_super) {\n __extends(EtherscanProvider, _super);\n function EtherscanProvider(network, apiKey) {\n var _this = _super.call(this, network) || this;\n (0, properties_1.defineReadOnly)(_this, \"baseUrl\", _this.getBaseUrl());\n (0, properties_1.defineReadOnly)(_this, \"apiKey\", apiKey || null);\n return _this;\n }\n EtherscanProvider.prototype.getBaseUrl = function () {\n switch (this.network ? this.network.name : \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"maticmum\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network.name);\n };\n EtherscanProvider.prototype.getUrl = function (module, params) {\n var query = Object.keys(params).reduce(function (accum, key) {\n var value = params[key];\n if (value != null) {\n accum += \"&\" + key + \"=\" + value;\n }\n return accum;\n }, \"\");\n var apiKey = ((this.apiKey) ? \"&apikey=\" + this.apiKey : \"\");\n return this.baseUrl + \"/api?module=\" + module + query + apiKey;\n };\n EtherscanProvider.prototype.getPostUrl = function () {\n return this.baseUrl + \"/api\";\n };\n EtherscanProvider.prototype.getPostData = function (module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n };\n EtherscanProvider.prototype.fetch = function (module, params, post) {\n return __awaiter(this, void 0, void 0, function () {\n var url, payload, procFunc, connection, payloadStr, result;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = (post ? this.getPostUrl() : this.getUrl(module, params));\n payload = (post ? this.getPostData(module, params) : null);\n procFunc = (module === \"proxy\") ? getJsonResult : getResult;\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n connection = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: function (attempt, url) {\n if (_this.isCommunityResource()) {\n (0, formatter_1.showThrottleMessage)();\n }\n return Promise.resolve(true);\n }\n };\n payloadStr = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map(function (key) {\n return key + \"=\" + payload[key];\n }).join(\"&\");\n }\n return [4 /*yield*/, (0, web_1.fetchJson)(connection, payloadStr, procFunc || getJsonResult)];\n case 1:\n result = _a.sent();\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: (0, properties_1.deepCopy)(result),\n provider: this\n });\n return [2 /*return*/, result];\n }\n });\n });\n };\n EtherscanProvider.prototype.detectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.network];\n });\n });\n };\n EtherscanProvider.prototype.perform = function (method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, postData, error_1, postData, error_2, args, topic0, logs, blocks, i, log, block, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = method;\n switch (_a) {\n case \"getBlockNumber\": return [3 /*break*/, 1];\n case \"getGasPrice\": return [3 /*break*/, 2];\n case \"getBalance\": return [3 /*break*/, 3];\n case \"getTransactionCount\": return [3 /*break*/, 4];\n case \"getCode\": return [3 /*break*/, 5];\n case \"getStorageAt\": return [3 /*break*/, 6];\n case \"sendTransaction\": return [3 /*break*/, 7];\n case \"getBlock\": return [3 /*break*/, 8];\n case \"getTransaction\": return [3 /*break*/, 9];\n case \"getTransactionReceipt\": return [3 /*break*/, 10];\n case \"call\": return [3 /*break*/, 11];\n case \"estimateGas\": return [3 /*break*/, 15];\n case \"getLogs\": return [3 /*break*/, 19];\n case \"getEtherPrice\": return [3 /*break*/, 26];\n }\n return [3 /*break*/, 28];\n case 1: return [2 /*return*/, this.fetch(\"proxy\", { action: \"eth_blockNumber\" })];\n case 2: return [2 /*return*/, this.fetch(\"proxy\", { action: \"eth_gasPrice\" })];\n case 3: \n // Returns base-10 result\n return [2 /*return*/, this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n })];\n case 4: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n })];\n case 5: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n })];\n case 6: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n })];\n case 7: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch(function (error) {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n })];\n case 8:\n if (params.blockTag) {\n return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\" : \"false\")\n })];\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n case 9: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n })];\n case 10: return [2 /*return*/, this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n })];\n case 11:\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n _c.label = 12;\n case 12:\n _c.trys.push([12, 14, , 15]);\n return [4 /*yield*/, this.fetch(\"proxy\", postData, true)];\n case 13: return [2 /*return*/, _c.sent()];\n case 14:\n error_1 = _c.sent();\n return [2 /*return*/, checkError(\"call\", error_1, params.transaction)];\n case 15:\n postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n _c.label = 16;\n case 16:\n _c.trys.push([16, 18, , 19]);\n return [4 /*yield*/, this.fetch(\"proxy\", postData, true)];\n case 17: return [2 /*return*/, _c.sent()];\n case 18:\n error_2 = _c.sent();\n return [2 /*return*/, checkError(\"estimateGas\", error_2, params.transaction)];\n case 19:\n args = { action: \"getLogs\" };\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n topic0 = params.filter.topics[0];\n if (typeof (topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n return [4 /*yield*/, this.fetch(\"logs\", args)];\n case 20:\n logs = _c.sent();\n blocks = {};\n i = 0;\n _c.label = 21;\n case 21:\n if (!(i < logs.length)) return [3 /*break*/, 25];\n log = logs[i];\n if (log.blockHash != null) {\n return [3 /*break*/, 24];\n }\n if (!(blocks[log.blockNumber] == null)) return [3 /*break*/, 23];\n return [4 /*yield*/, this.getBlock(log.blockNumber)];\n case 22:\n block = _c.sent();\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n _c.label = 23;\n case 23:\n log.blockHash = blocks[log.blockNumber];\n _c.label = 24;\n case 24:\n i++;\n return [3 /*break*/, 21];\n case 25: return [2 /*return*/, logs];\n case 26:\n if (this.network.name !== \"homestead\") {\n return [2 /*return*/, 0.0];\n }\n _b = parseFloat;\n return [4 /*yield*/, this.fetch(\"stats\", { action: \"ethprice\" })];\n case 27: return [2 /*return*/, _b.apply(void 0, [(_c.sent()).ethusd])];\n case 28: return [3 /*break*/, 29];\n case 29: return [2 /*return*/, _super.prototype.perform.call(this, method, params)];\n }\n });\n });\n };\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n EtherscanProvider.prototype.getHistory = function (addressOrName, startBlock, endBlock) {\n return __awaiter(this, void 0, void 0, function () {\n var params, result;\n var _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = {\n action: \"txlist\"\n };\n return [4 /*yield*/, this.resolveName(addressOrName)];\n case 1:\n params = (_a.address = (_b.sent()),\n _a.startblock = ((startBlock == null) ? 0 : startBlock),\n _a.endblock = ((endBlock == null) ? 99999999 : endBlock),\n _a.sort = \"asc\",\n _a);\n return [4 /*yield*/, this.fetch(\"account\", params)];\n case 2:\n result = _b.sent();\n return [2 /*return*/, result.map(function (tx) {\n [\"contractAddress\", \"to\"].forEach(function (key) {\n if (tx[key] == \"\") {\n delete tx[key];\n }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n var item = _this.formatter.transactionResponse(tx);\n if (tx.timeStamp) {\n item.timestamp = parseInt(tx.timeStamp);\n }\n return item;\n })];\n }\n });\n });\n };\n EtherscanProvider.prototype.isCommunityResource = function () {\n return (this.apiKey == null);\n };\n return EtherscanProvider;\n}(base_provider_1.BaseProvider));\nexports.EtherscanProvider = EtherscanProvider;\n//# sourceMappingURL=etherscan-provider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomBytes = void 0;\nvar crypto_1 = require(\"crypto\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nfunction randomBytes(length) {\n return (0, bytes_1.arrayify)((0, crypto_1.randomBytes)(length));\n}\nexports.randomBytes = randomBytes;\n//# sourceMappingURL=random.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shuffled = void 0;\nfunction shuffled(array) {\n array = array.slice();\n for (var i = array.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1));\n var tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n return array;\n}\nexports.shuffled = shuffled;\n//# sourceMappingURL=shuffle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shuffled = exports.randomBytes = void 0;\nvar random_1 = require(\"./random\");\nObject.defineProperty(exports, \"randomBytes\", { enumerable: true, get: function () { return random_1.randomBytes; } });\nvar shuffle_1 = require(\"./shuffle\");\nObject.defineProperty(exports, \"shuffled\", { enumerable: true, get: function () { return shuffle_1.shuffled; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FallbackProvider = void 0;\nvar abstract_provider_1 = require(\"@ethersproject/abstract-provider\");\nvar bignumber_1 = require(\"@ethersproject/bignumber\");\nvar bytes_1 = require(\"@ethersproject/bytes\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar random_1 = require(\"@ethersproject/random\");\nvar web_1 = require(\"@ethersproject/web\");\nvar base_provider_1 = require(\"./base-provider\");\nvar formatter_1 = require(\"./formatter\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nfunction now() { return (new Date()).getTime(); }\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks) {\n var result = null;\n for (var i = 0; i < networks.length; i++) {\n var network = networks[i];\n // Null! We do not know our network; bail.\n if (network == null) {\n return null;\n }\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n }\n else {\n result = network;\n }\n }\n return result;\n}\nfunction median(values, maxDelta) {\n values = values.slice().sort();\n var middle = Math.floor(values.length / 2);\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n // Even length; take the average of the two middle\n var a = values[middle - 1], b = values[middle];\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n return (a + b) / 2;\n}\nfunction serialize(value) {\n if (value === null) {\n return \"null\";\n }\n else if (typeof (value) === \"number\" || typeof (value) === \"boolean\") {\n return JSON.stringify(value);\n }\n else if (typeof (value) === \"string\") {\n return value;\n }\n else if (bignumber_1.BigNumber.isBigNumber(value)) {\n return value.toString();\n }\n else if (Array.isArray(value)) {\n return JSON.stringify(value.map(function (i) { return serialize(i); }));\n }\n else if (typeof (value) === \"object\") {\n var keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map(function (key) {\n var v = value[key];\n if (typeof (v) === \"function\") {\n v = \"[function]\";\n }\n else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n throw new Error(\"unknown value type: \" + typeof (value));\n}\n// Next request ID to use for emitting debug info\nvar nextRid = 1;\n;\nfunction stall(duration) {\n var cancel = null;\n var timer = null;\n var promise = (new Promise(function (resolve) {\n cancel = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n };\n timer = setTimeout(cancel, duration);\n }));\n var wait = function (func) {\n promise = promise.then(func);\n return promise;\n };\n function getPromise() {\n return promise;\n }\n return { cancel: cancel, getPromise: getPromise, wait: wait };\n}\nvar ForwardErrors = [\n logger_1.Logger.errors.CALL_EXCEPTION,\n logger_1.Logger.errors.INSUFFICIENT_FUNDS,\n logger_1.Logger.errors.NONCE_EXPIRED,\n logger_1.Logger.errors.REPLACEMENT_UNDERPRICED,\n logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\nvar ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n;\nfunction exposeDebugConfig(config, now) {\n var result = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: function () { return config.provider; } });\n if (config.start) {\n result.start = config.start;\n }\n if (now) {\n result.duration = (now - config.start);\n }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n }\n else {\n result.result = config.result || null;\n }\n }\n return result;\n}\nfunction normalizedTally(normalize, quorum) {\n return function (configs) {\n // Count the votes for each result\n var tally = {};\n configs.forEach(function (c) {\n var value = normalize(c.result);\n if (!tally[value]) {\n tally[value] = { count: 0, result: c.result };\n }\n tally[value].count++;\n });\n // Check for a quorum on any given result\n var keys = Object.keys(tally);\n for (var i = 0; i < keys.length; i++) {\n var check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n // No quroum\n return undefined;\n };\n}\nfunction getProcessFunc(provider, method, params) {\n var normalize = serialize;\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function (configs) {\n var values = configs.map(function (c) { return c.result; });\n // Get the median block number\n var blockNumber = median(configs.map(function (c) { return c.result; }), 2);\n if (blockNumber == null) {\n return undefined;\n }\n blockNumber = Math.ceil(blockNumber);\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) {\n blockNumber++;\n }\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n return provider._highestBlockNumber;\n };\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function (configs) {\n var values = configs.map(function (c) { return c.result; });\n values.sort();\n return values[Math.floor(values.length / 2)];\n };\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function (configs) {\n return median(configs.map(function (c) { return c.result; }));\n };\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function (tx) {\n if (tx == null) {\n return null;\n }\n tx = (0, properties_1.shallowCopy)(tx);\n tx.confirmations = -1;\n return serialize(tx);\n };\n break;\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function (block) {\n if (block == null) {\n return null;\n }\n block = (0, properties_1.shallowCopy)(block);\n block.transactions = block.transactions.map(function (tx) {\n tx = (0, properties_1.shallowCopy)(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n }\n else {\n normalize = function (block) {\n if (block == null) {\n return null;\n }\n return serialize(block);\n };\n }\n break;\n default:\n throw new Error(\"unknown method: \" + method);\n }\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n}\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nfunction waitForSync(config, blockNumber) {\n return __awaiter(this, void 0, void 0, function () {\n var provider;\n return __generator(this, function (_a) {\n provider = (config.provider);\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return [2 /*return*/, provider];\n }\n return [2 /*return*/, (0, web_1.poll)(function () {\n return new Promise(function (resolve, reject) {\n setTimeout(function () {\n // We are synced\n if (provider.blockNumber >= blockNumber) {\n return resolve(provider);\n }\n // We're done; just quit\n if (config.cancelled) {\n return resolve(null);\n }\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider })];\n });\n });\n}\nfunction getRunner(config, currentBlockNumber, method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var provider, _a, filter;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n provider = config.provider;\n _a = method;\n switch (_a) {\n case \"getBlockNumber\": return [3 /*break*/, 1];\n case \"getGasPrice\": return [3 /*break*/, 1];\n case \"getEtherPrice\": return [3 /*break*/, 2];\n case \"getBalance\": return [3 /*break*/, 3];\n case \"getTransactionCount\": return [3 /*break*/, 3];\n case \"getCode\": return [3 /*break*/, 3];\n case \"getStorageAt\": return [3 /*break*/, 6];\n case \"getBlock\": return [3 /*break*/, 9];\n case \"call\": return [3 /*break*/, 12];\n case \"estimateGas\": return [3 /*break*/, 12];\n case \"getTransaction\": return [3 /*break*/, 15];\n case \"getTransactionReceipt\": return [3 /*break*/, 15];\n case \"getLogs\": return [3 /*break*/, 16];\n }\n return [3 /*break*/, 19];\n case 1: return [2 /*return*/, provider[method]()];\n case 2:\n if (provider.getEtherPrice) {\n return [2 /*return*/, provider.getEtherPrice()];\n }\n return [3 /*break*/, 19];\n case 3:\n if (!(params.blockTag && (0, bytes_1.isHexString)(params.blockTag))) return [3 /*break*/, 5];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 4:\n provider = _b.sent();\n _b.label = 5;\n case 5: return [2 /*return*/, provider[method](params.address, params.blockTag || \"latest\")];\n case 6:\n if (!(params.blockTag && (0, bytes_1.isHexString)(params.blockTag))) return [3 /*break*/, 8];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 7:\n provider = _b.sent();\n _b.label = 8;\n case 8: return [2 /*return*/, provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\")];\n case 9:\n if (!(params.blockTag && (0, bytes_1.isHexString)(params.blockTag))) return [3 /*break*/, 11];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 10:\n provider = _b.sent();\n _b.label = 11;\n case 11: return [2 /*return*/, provider[(params.includeTransactions ? \"getBlockWithTransactions\" : \"getBlock\")](params.blockTag || params.blockHash)];\n case 12:\n if (!(params.blockTag && (0, bytes_1.isHexString)(params.blockTag))) return [3 /*break*/, 14];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 13:\n provider = _b.sent();\n _b.label = 14;\n case 14:\n if (method === \"call\" && params.blockTag) {\n return [2 /*return*/, provider[method](params.transaction, params.blockTag)];\n }\n return [2 /*return*/, provider[method](params.transaction)];\n case 15: return [2 /*return*/, provider[method](params.transactionHash)];\n case 16:\n filter = params.filter;\n if (!((filter.fromBlock && (0, bytes_1.isHexString)(filter.fromBlock)) || (filter.toBlock && (0, bytes_1.isHexString)(filter.toBlock)))) return [3 /*break*/, 18];\n return [4 /*yield*/, waitForSync(config, currentBlockNumber)];\n case 17:\n provider = _b.sent();\n _b.label = 18;\n case 18: return [2 /*return*/, provider.getLogs(filter)];\n case 19: return [2 /*return*/, logger.throwError(\"unknown method error\", logger_1.Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n })];\n }\n });\n });\n}\nvar FallbackProvider = /** @class */ (function (_super) {\n __extends(FallbackProvider, _super);\n function FallbackProvider(providers, quorum) {\n var _this = this;\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n var providerConfigs = providers.map(function (configOrProvider, index) {\n if (abstract_provider_1.Provider.isProvider(configOrProvider)) {\n var stallTimeout = (0, formatter_1.isCommunityResource)(configOrProvider) ? 2000 : 750;\n var priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout: stallTimeout, priority: priority });\n }\n var config = (0, properties_1.shallowCopy)(configOrProvider);\n if (config.priority == null) {\n config.priority = 1;\n }\n if (config.stallTimeout == null) {\n config.stallTimeout = (0, formatter_1.isCommunityResource)(configOrProvider) ? 2000 : 750;\n }\n if (config.weight == null) {\n config.weight = 1;\n }\n var weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", \"providers[\" + index + \"].weight\", weight);\n }\n return Object.freeze(config);\n });\n var total = providerConfigs.reduce(function (accum, c) { return (accum + c.weight); }, 0);\n if (quorum == null) {\n quorum = total / 2;\n }\n else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n // Are all providers' networks are known\n var networkOrReady = checkNetworks(providerConfigs.map(function (c) { return (c.provider).network; }));\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise(function (resolve, reject) {\n setTimeout(function () {\n _this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n _this = _super.call(this, networkOrReady) || this;\n // Preserve a copy, so we do not get mutated\n (0, properties_1.defineReadOnly)(_this, \"providerConfigs\", Object.freeze(providerConfigs));\n (0, properties_1.defineReadOnly)(_this, \"quorum\", quorum);\n _this._highestBlockNumber = -1;\n return _this;\n }\n FallbackProvider.prototype.detectNetwork = function () {\n return __awaiter(this, void 0, void 0, function () {\n var networks;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(this.providerConfigs.map(function (c) { return c.provider.getNetwork(); }))];\n case 1:\n networks = _a.sent();\n return [2 /*return*/, checkNetworks(networks)];\n }\n });\n });\n };\n FallbackProvider.prototype.perform = function (method, params) {\n return __awaiter(this, void 0, void 0, function () {\n var results, i_1, result, processFunc, configs, currentBlockNumber, i, first, _loop_1, this_1, state_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(method === \"sendTransaction\")) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(this.providerConfigs.map(function (c) {\n return c.provider.sendTransaction(params.signedTransaction).then(function (result) {\n return result.hash;\n }, function (error) {\n return error;\n });\n }))];\n case 1:\n results = _a.sent();\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (i_1 = 0; i_1 < results.length; i_1++) {\n result = results[i_1];\n if (typeof (result) === \"string\") {\n return [2 /*return*/, result];\n }\n }\n // They were all an error; pick the first error\n throw results[0];\n case 2:\n if (!(this._highestBlockNumber === -1 && method !== \"getBlockNumber\")) return [3 /*break*/, 4];\n return [4 /*yield*/, this.getBlockNumber()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n processFunc = getProcessFunc(this, method, params);\n configs = (0, random_1.shuffled)(this.providerConfigs.map(properties_1.shallowCopy));\n configs.sort(function (a, b) { return (a.priority - b.priority); });\n currentBlockNumber = this._highestBlockNumber;\n i = 0;\n first = true;\n _loop_1 = function () {\n var t0, inflightWeight, _loop_2, waiting, results, result, errors;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n t0 = now();\n inflightWeight = configs.filter(function (c) { return (c.runner && ((t0 - c.start) < c.stallTimeout)); })\n .reduce(function (accum, c) { return (accum + c.weight); }, 0);\n _loop_2 = function () {\n var config = configs[i++];\n var rid = nextRid++;\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(function () { config.staller = null; });\n config.runner = getRunner(config, currentBlockNumber, method, params).then(function (result) {\n config.done = true;\n config.result = result;\n if (_this.listenerCount(\"debug\")) {\n _this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: (0, properties_1.deepCopy)(params) },\n provider: _this\n });\n }\n }, function (error) {\n config.done = true;\n config.error = error;\n if (_this.listenerCount(\"debug\")) {\n _this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: (0, properties_1.deepCopy)(params) },\n provider: _this\n });\n }\n });\n if (this_1.listenerCount(\"debug\")) {\n this_1.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: (0, properties_1.deepCopy)(params) },\n provider: this_1\n });\n }\n inflightWeight += config.weight;\n };\n // Start running enough to meet quorum\n while (inflightWeight < this_1.quorum && i < configs.length) {\n _loop_2();\n }\n waiting = [];\n configs.forEach(function (c) {\n if (c.done || !c.runner) {\n return;\n }\n waiting.push(c.runner);\n if (c.staller) {\n waiting.push(c.staller.getPromise());\n }\n });\n if (!waiting.length) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.race(waiting)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n results = configs.filter(function (c) { return (c.done && c.error == null); });\n if (!(results.length >= this_1.quorum)) return [3 /*break*/, 5];\n result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(function (c) {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n return [2 /*return*/, { value: result }];\n }\n if (!!first) return [3 /*break*/, 4];\n return [4 /*yield*/, stall(100).getPromise()];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n first = false;\n _b.label = 5;\n case 5:\n errors = configs.reduce(function (accum, c) {\n if (!c.done || c.error == null) {\n return accum;\n }\n var code = (c.error).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) {\n accum[code] = { error: c.error, weight: 0 };\n }\n accum[code].weight += c.weight;\n }\n return accum;\n }, ({}));\n Object.keys(errors).forEach(function (errorCode) {\n var tally = errors[errorCode];\n if (tally.weight < _this.quorum) {\n return;\n }\n // Shut down any stallers\n configs.forEach(function (c) {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n var e = (tally.error);\n var props = {};\n ForwardProperties.forEach(function (name) {\n if (e[name] == null) {\n return;\n }\n props[name] = e[name];\n });\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n // All configs have run to completion; we will never get more data\n if (configs.filter(function (c) { return !c.done; }).length === 0) {\n return [2 /*return*/, \"break\"];\n }\n return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _a.label = 5;\n case 5:\n if (!true) return [3 /*break*/, 7];\n return [5 /*yield**/, _loop_1()];\n case 6:\n state_1 = _a.sent();\n if (typeof state_1 === \"object\")\n return [2 /*return*/, state_1.value];\n if (state_1 === \"break\")\n return [3 /*break*/, 7];\n return [3 /*break*/, 5];\n case 7:\n // Shut down any stallers; shouldn't be any\n configs.forEach(function (c) {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n return [2 /*return*/, logger.throwError(\"failed to meet quorum\", logger_1.Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map(function (c) { return exposeDebugConfig(c); }),\n provider: this\n })];\n }\n });\n });\n };\n return FallbackProvider;\n}(base_provider_1.BaseProvider));\nexports.FallbackProvider = FallbackProvider;\n//# sourceMappingURL=fallback-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IpcProvider = void 0;\nvar net_1 = require(\"net\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\nvar IpcProvider = /** @class */ (function (_super) {\n __extends(IpcProvider, _super);\n function IpcProvider(path, network) {\n var _this = this;\n if (path == null) {\n logger.throwError(\"missing path\", logger_1.Logger.errors.MISSING_ARGUMENT, { arg: \"path\" });\n }\n _this = _super.call(this, \"ipc://\" + path, network) || this;\n (0, properties_1.defineReadOnly)(_this, \"path\", path);\n return _this;\n }\n // @TODO: Create a connection to the IPC path and use filters instead of polling for block\n IpcProvider.prototype.send = function (method, params) {\n // This method is very simple right now. We create a new socket\n // connection each time, which may be slower, but the main\n // advantage we are aiming for now is security. This simplifies\n // multiplexing requests (since we do not need to multiplex).\n var _this = this;\n var payload = JSON.stringify({\n method: method,\n params: params,\n id: 42,\n jsonrpc: \"2.0\"\n });\n return new Promise(function (resolve, reject) {\n var response = Buffer.alloc(0);\n var stream = (0, net_1.connect)(_this.path);\n stream.on(\"data\", function (data) {\n response = Buffer.concat([response, data]);\n });\n stream.on(\"end\", function () {\n try {\n resolve(JSON.parse(response.toString()).result);\n // @TODO: Better pull apart the error\n stream.destroy();\n }\n catch (error) {\n reject(error);\n stream.destroy();\n }\n });\n stream.on(\"error\", function (error) {\n reject(error);\n stream.destroy();\n });\n stream.write(payload);\n stream.end();\n });\n };\n return IpcProvider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.IpcProvider = IpcProvider;\n//# sourceMappingURL=ipc-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InfuraProvider = exports.InfuraWebSocketProvider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar websocket_provider_1 = require(\"./websocket-provider\");\nvar formatter_1 = require(\"./formatter\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar defaultProjectId = \"84842078b09946638c03157f83405213\";\nvar InfuraWebSocketProvider = /** @class */ (function (_super) {\n __extends(InfuraWebSocketProvider, _super);\n function InfuraWebSocketProvider(network, apiKey) {\n var _this = this;\n var provider = new InfuraProvider(network, apiKey);\n var connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n var url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n _this = _super.call(this, url, network) || this;\n (0, properties_1.defineReadOnly)(_this, \"apiKey\", provider.projectId);\n (0, properties_1.defineReadOnly)(_this, \"projectId\", provider.projectId);\n (0, properties_1.defineReadOnly)(_this, \"projectSecret\", provider.projectSecret);\n return _this;\n }\n InfuraWebSocketProvider.prototype.isCommunityResource = function () {\n return (this.projectId === defaultProjectId);\n };\n return InfuraWebSocketProvider;\n}(websocket_provider_1.WebSocketProvider));\nexports.InfuraWebSocketProvider = InfuraWebSocketProvider;\nvar InfuraProvider = /** @class */ (function (_super) {\n __extends(InfuraProvider, _super);\n function InfuraProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InfuraProvider.getWebSocketProvider = function (network, apiKey) {\n return new InfuraWebSocketProvider(network, apiKey);\n };\n InfuraProvider.getApiKey = function (apiKey) {\n var apiKeyObj = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n if (apiKey == null) {\n return apiKeyObj;\n }\n if (typeof (apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n }\n else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof (apiKey.projectId) === \"string\"), \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof (apiKey.projectSecret) === \"string\"), \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n }\n else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n apiKeyObj.apiKey = apiKeyObj.projectId;\n return apiKeyObj;\n };\n InfuraProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network ? network.name : \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"optimism-sepolia\":\n host = \"optimism-sepolia.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n case \"arbitrum-sepolia\":\n host = \"arbitrum-sepolia.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", logger_1.Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n var connection = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: function (attempt, url) {\n if (apiKey.projectId === defaultProjectId) {\n (0, formatter_1.showThrottleMessage)();\n }\n return Promise.resolve(true);\n }\n };\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret;\n }\n return connection;\n };\n InfuraProvider.prototype.isCommunityResource = function () {\n return (this.projectId === defaultProjectId);\n };\n return InfuraProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.InfuraProvider = InfuraProvider;\n//# sourceMappingURL=infura-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonRpcBatchProvider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar web_1 = require(\"@ethersproject/web\");\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\n// Experimental\nvar JsonRpcBatchProvider = /** @class */ (function (_super) {\n __extends(JsonRpcBatchProvider, _super);\n function JsonRpcBatchProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n JsonRpcBatchProvider.prototype.send = function (method, params) {\n var _this = this;\n var request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n if (this._pendingBatch == null) {\n this._pendingBatch = [];\n }\n var inflightRequest = { request: request, resolve: null, reject: null };\n var promise = new Promise(function (resolve, reject) {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n this._pendingBatch.push(inflightRequest);\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(function () {\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n var batch = _this._pendingBatch;\n _this._pendingBatch = null;\n _this._pendingBatchAggregator = null;\n // Get the request as an array of requests\n var request = batch.map(function (inflight) { return inflight.request; });\n _this.emit(\"debug\", {\n action: \"requestBatch\",\n request: (0, properties_1.deepCopy)(request),\n provider: _this\n });\n return (0, web_1.fetchJson)(_this.connection, JSON.stringify(request)).then(function (result) {\n _this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: _this\n });\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach(function (inflightRequest, index) {\n var payload = result[index];\n if (payload.error) {\n var error = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n inflightRequest.reject(error);\n }\n else {\n inflightRequest.resolve(payload.result);\n }\n });\n }, function (error) {\n _this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: _this\n });\n batch.forEach(function (inflightRequest) {\n inflightRequest.reject(error);\n });\n });\n }, 10);\n }\n return promise;\n };\n return JsonRpcBatchProvider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.JsonRpcBatchProvider = JsonRpcBatchProvider;\n//# sourceMappingURL=json-rpc-batch-provider.js.map","/* istanbul ignore file */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodesmithProvider = void 0;\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n// Special API key provided by Nodesmith for ethers.js\nvar defaultApiKey = \"ETHERS_JS_SHARED\";\nvar NodesmithProvider = /** @class */ (function (_super) {\n __extends(NodesmithProvider, _super);\n function NodesmithProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NodesmithProvider.getApiKey = function (apiKey) {\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n };\n NodesmithProvider.getUrl = function (network, apiKey) {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n var host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return (host + \"?apiKey=\" + apiKey);\n };\n return NodesmithProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.NodesmithProvider = NodesmithProvider;\n//# sourceMappingURL=nodesmith-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PocketProvider = void 0;\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\nvar PocketProvider = /** @class */ (function (_super) {\n __extends(PocketProvider, _super);\n function PocketProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PocketProvider.getApiKey = function (apiKey) {\n var apiKeyObj = {\n applicationId: null,\n loadBalancer: true,\n applicationSecretKey: null\n };\n // Parse applicationId and applicationSecretKey\n if (apiKey == null) {\n apiKeyObj.applicationId = defaultApplicationId;\n }\n else if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n }\n else if (apiKey.applicationSecretKey != null) {\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n }\n else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n }\n else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n return apiKeyObj;\n };\n PocketProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network ? network.name : \"unknown\") {\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"kovan\":\n host = \"poa-kovan.gateway.pokt.network\";\n break;\n case \"matic\":\n host = \"poly-mainnet.gateway.pokt.network\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai-rpc.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", logger_1.Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n var url = \"https://\" + host + \"/v1/lb/\" + apiKey.applicationId;\n var connection = { headers: {}, url: url };\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey;\n }\n return connection;\n };\n PocketProvider.prototype.isCommunityResource = function () {\n return (this.applicationId === defaultApplicationId);\n };\n return PocketProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.PocketProvider = PocketProvider;\n//# sourceMappingURL=pocket-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuickNodeProvider = void 0;\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n// Special API key provided by Quicknode for ethers.js\nvar defaultApiKey = \"919b412a057b5e9c9b6dce193c5a60242d6efadb\";\nvar QuickNodeProvider = /** @class */ (function (_super) {\n __extends(QuickNodeProvider, _super);\n function QuickNodeProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n QuickNodeProvider.getApiKey = function (apiKey) {\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n };\n QuickNodeProvider.getUrl = function (network, apiKey) {\n var host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"ethers.quiknode.pro\";\n break;\n case \"goerli\":\n host = \"ethers.ethereum-goerli.quiknode.pro\";\n break;\n case \"sepolia\":\n host = \"ethers.ethereum-sepolia.quiknode.pro\";\n break;\n case \"holesky\":\n host = \"ethers.ethereum-holesky.quiknode.pro\";\n break;\n case \"arbitrum\":\n host = \"ethers.arbitrum-mainnet.quiknode.pro\";\n break;\n case \"arbitrum-goerli\":\n host = \"ethers.arbitrum-goerli.quiknode.pro\";\n break;\n case \"arbitrum-sepolia\":\n host = \"ethers.arbitrum-sepolia.quiknode.pro\";\n break;\n case \"base\":\n host = \"ethers.base-mainnet.quiknode.pro\";\n break;\n case \"base-goerli\":\n host = \"ethers.base-goerli.quiknode.pro\";\n break;\n case \"base-spolia\":\n host = \"ethers.base-sepolia.quiknode.pro\";\n break;\n case \"bnb\":\n host = \"ethers.bsc.quiknode.pro\";\n break;\n case \"bnbt\":\n host = \"ethers.bsc-testnet.quiknode.pro\";\n break;\n case \"matic\":\n host = \"ethers.matic.quiknode.pro\";\n break;\n case \"maticmum\":\n host = \"ethers.matic-testnet.quiknode.pro\";\n break;\n case \"optimism\":\n host = \"ethers.optimism.quiknode.pro\";\n break;\n case \"optimism-goerli\":\n host = \"ethers.optimism-goerli.quiknode.pro\";\n break;\n case \"optimism-sepolia\":\n host = \"ethers.optimism-sepolia.quiknode.pro\";\n break;\n case \"xdai\":\n host = \"ethers.xdai.quiknode.pro\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return (\"https:/\" + \"/\" + host + \"/\" + apiKey);\n };\n return QuickNodeProvider;\n}(url_json_rpc_provider_1.UrlJsonRpcProvider));\nexports.QuickNodeProvider = QuickNodeProvider;\n//# sourceMappingURL=quicknode-provider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3Provider = void 0;\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\nvar _nextId = 1;\nfunction buildWeb3LegacyFetcher(provider, sendFunc) {\n var fetcher = \"Web3LegacyFetcher\";\n return function (method, params) {\n var _this = this;\n var request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n return new Promise(function (resolve, reject) {\n _this.emit(\"debug\", {\n action: \"request\",\n fetcher: fetcher,\n request: (0, properties_1.deepCopy)(request),\n provider: _this\n });\n sendFunc(request, function (error, response) {\n if (error) {\n _this.emit(\"debug\", {\n action: \"response\",\n fetcher: fetcher,\n error: error,\n request: request,\n provider: _this\n });\n return reject(error);\n }\n _this.emit(\"debug\", {\n action: \"response\",\n fetcher: fetcher,\n request: request,\n response: response,\n provider: _this\n });\n if (response.error) {\n var error_1 = new Error(response.error.message);\n error_1.code = response.error.code;\n error_1.data = response.error.data;\n return reject(error_1);\n }\n resolve(response.result);\n });\n });\n };\n}\nfunction buildEip1193Fetcher(provider) {\n return function (method, params) {\n var _this = this;\n if (params == null) {\n params = [];\n }\n var request = { method: method, params: params };\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: (0, properties_1.deepCopy)(request),\n provider: this\n });\n return provider.request(request).then(function (response) {\n _this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request: request,\n response: response,\n provider: _this\n });\n return response;\n }, function (error) {\n _this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request: request,\n error: error,\n provider: _this\n });\n throw error;\n });\n };\n}\nvar Web3Provider = /** @class */ (function (_super) {\n __extends(Web3Provider, _super);\n function Web3Provider(provider, network) {\n var _this = this;\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n var path = null;\n var jsonRpcFetchFunc = null;\n var subprovider = null;\n if (typeof (provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n }\n else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n subprovider = provider;\n if (provider.request) {\n if (path === \"\") {\n path = \"eip-1193:\";\n }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n }\n else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n }\n else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n }\n else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n if (!path) {\n path = \"unknown:\";\n }\n }\n _this = _super.call(this, path, network) || this;\n (0, properties_1.defineReadOnly)(_this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n (0, properties_1.defineReadOnly)(_this, \"provider\", subprovider);\n return _this;\n }\n Web3Provider.prototype.send = function (method, params) {\n return this.jsonRpcFetchFunc(method, params);\n };\n return Web3Provider;\n}(json_rpc_provider_1.JsonRpcProvider));\nexports.Web3Provider = Web3Provider;\n//# sourceMappingURL=web3-provider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Formatter = exports.showThrottleMessage = exports.isCommunityResourcable = exports.isCommunityResource = exports.getNetwork = exports.getDefaultProvider = exports.JsonRpcSigner = exports.IpcProvider = exports.WebSocketProvider = exports.Web3Provider = exports.StaticJsonRpcProvider = exports.QuickNodeProvider = exports.PocketProvider = exports.NodesmithProvider = exports.JsonRpcBatchProvider = exports.JsonRpcProvider = exports.InfuraWebSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyWebSocketProvider = exports.AlchemyProvider = exports.FallbackProvider = exports.UrlJsonRpcProvider = exports.Resolver = exports.BaseProvider = exports.Provider = void 0;\nvar abstract_provider_1 = require(\"@ethersproject/abstract-provider\");\nObject.defineProperty(exports, \"Provider\", { enumerable: true, get: function () { return abstract_provider_1.Provider; } });\nvar networks_1 = require(\"@ethersproject/networks\");\nObject.defineProperty(exports, \"getNetwork\", { enumerable: true, get: function () { return networks_1.getNetwork; } });\nvar base_provider_1 = require(\"./base-provider\");\nObject.defineProperty(exports, \"BaseProvider\", { enumerable: true, get: function () { return base_provider_1.BaseProvider; } });\nObject.defineProperty(exports, \"Resolver\", { enumerable: true, get: function () { return base_provider_1.Resolver; } });\nvar alchemy_provider_1 = require(\"./alchemy-provider\");\nObject.defineProperty(exports, \"AlchemyProvider\", { enumerable: true, get: function () { return alchemy_provider_1.AlchemyProvider; } });\nObject.defineProperty(exports, \"AlchemyWebSocketProvider\", { enumerable: true, get: function () { return alchemy_provider_1.AlchemyWebSocketProvider; } });\nvar ankr_provider_1 = require(\"./ankr-provider\");\nObject.defineProperty(exports, \"AnkrProvider\", { enumerable: true, get: function () { return ankr_provider_1.AnkrProvider; } });\nvar cloudflare_provider_1 = require(\"./cloudflare-provider\");\nObject.defineProperty(exports, \"CloudflareProvider\", { enumerable: true, get: function () { return cloudflare_provider_1.CloudflareProvider; } });\nvar etherscan_provider_1 = require(\"./etherscan-provider\");\nObject.defineProperty(exports, \"EtherscanProvider\", { enumerable: true, get: function () { return etherscan_provider_1.EtherscanProvider; } });\nvar fallback_provider_1 = require(\"./fallback-provider\");\nObject.defineProperty(exports, \"FallbackProvider\", { enumerable: true, get: function () { return fallback_provider_1.FallbackProvider; } });\nvar ipc_provider_1 = require(\"./ipc-provider\");\nObject.defineProperty(exports, \"IpcProvider\", { enumerable: true, get: function () { return ipc_provider_1.IpcProvider; } });\nvar infura_provider_1 = require(\"./infura-provider\");\nObject.defineProperty(exports, \"InfuraProvider\", { enumerable: true, get: function () { return infura_provider_1.InfuraProvider; } });\nObject.defineProperty(exports, \"InfuraWebSocketProvider\", { enumerable: true, get: function () { return infura_provider_1.InfuraWebSocketProvider; } });\nvar json_rpc_provider_1 = require(\"./json-rpc-provider\");\nObject.defineProperty(exports, \"JsonRpcProvider\", { enumerable: true, get: function () { return json_rpc_provider_1.JsonRpcProvider; } });\nObject.defineProperty(exports, \"JsonRpcSigner\", { enumerable: true, get: function () { return json_rpc_provider_1.JsonRpcSigner; } });\nvar json_rpc_batch_provider_1 = require(\"./json-rpc-batch-provider\");\nObject.defineProperty(exports, \"JsonRpcBatchProvider\", { enumerable: true, get: function () { return json_rpc_batch_provider_1.JsonRpcBatchProvider; } });\nvar nodesmith_provider_1 = require(\"./nodesmith-provider\");\nObject.defineProperty(exports, \"NodesmithProvider\", { enumerable: true, get: function () { return nodesmith_provider_1.NodesmithProvider; } });\nvar pocket_provider_1 = require(\"./pocket-provider\");\nObject.defineProperty(exports, \"PocketProvider\", { enumerable: true, get: function () { return pocket_provider_1.PocketProvider; } });\nvar quicknode_provider_1 = require(\"./quicknode-provider\");\nObject.defineProperty(exports, \"QuickNodeProvider\", { enumerable: true, get: function () { return quicknode_provider_1.QuickNodeProvider; } });\nvar url_json_rpc_provider_1 = require(\"./url-json-rpc-provider\");\nObject.defineProperty(exports, \"StaticJsonRpcProvider\", { enumerable: true, get: function () { return url_json_rpc_provider_1.StaticJsonRpcProvider; } });\nObject.defineProperty(exports, \"UrlJsonRpcProvider\", { enumerable: true, get: function () { return url_json_rpc_provider_1.UrlJsonRpcProvider; } });\nvar web3_provider_1 = require(\"./web3-provider\");\nObject.defineProperty(exports, \"Web3Provider\", { enumerable: true, get: function () { return web3_provider_1.Web3Provider; } });\nvar websocket_provider_1 = require(\"./websocket-provider\");\nObject.defineProperty(exports, \"WebSocketProvider\", { enumerable: true, get: function () { return websocket_provider_1.WebSocketProvider; } });\nvar formatter_1 = require(\"./formatter\");\nObject.defineProperty(exports, \"Formatter\", { enumerable: true, get: function () { return formatter_1.Formatter; } });\nObject.defineProperty(exports, \"isCommunityResourcable\", { enumerable: true, get: function () { return formatter_1.isCommunityResourcable; } });\nObject.defineProperty(exports, \"isCommunityResource\", { enumerable: true, get: function () { return formatter_1.isCommunityResource; } });\nObject.defineProperty(exports, \"showThrottleMessage\", { enumerable: true, get: function () { return formatter_1.showThrottleMessage; } });\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nvar logger = new logger_1.Logger(_version_1.version);\n////////////////////////\n// Helper Functions\nfunction getDefaultProvider(network, options) {\n if (network == null) {\n network = \"homestead\";\n }\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof (network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n // Handle http and ws (and their secure variants)\n var match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\":\n case \"https\":\n return new json_rpc_provider_1.JsonRpcProvider(network);\n case \"ws\":\n case \"wss\":\n return new websocket_provider_1.WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n var n = (0, networks_1.getNetwork)(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", logger_1.Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n return n._defaultProvider({\n FallbackProvider: fallback_provider_1.FallbackProvider,\n AlchemyProvider: alchemy_provider_1.AlchemyProvider,\n AnkrProvider: ankr_provider_1.AnkrProvider,\n CloudflareProvider: cloudflare_provider_1.CloudflareProvider,\n EtherscanProvider: etherscan_provider_1.EtherscanProvider,\n InfuraProvider: infura_provider_1.InfuraProvider,\n JsonRpcProvider: json_rpc_provider_1.JsonRpcProvider,\n NodesmithProvider: nodesmith_provider_1.NodesmithProvider,\n PocketProvider: pocket_provider_1.PocketProvider,\n QuickNodeProvider: quicknode_provider_1.QuickNodeProvider,\n Web3Provider: web3_provider_1.Web3Provider,\n IpcProvider: ipc_provider_1.IpcProvider,\n }, options);\n}\nexports.getDefaultProvider = getDefaultProvider;\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"mappings":"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"}
|