{"version":3,"sources":["webpack:///./node_modules/@metamask/post-message-stream/dist/index.js","webpack:///./src/vendor/MetaMask/MobilePortStream.js","webpack:///./node_modules/wrappy/wrappy.js","webpack:///./node_modules/json-rpc-engine/dist/index.js","webpack:///./node_modules/json-rpc-engine/dist/idRemapMiddleware.js","webpack:///./node_modules/json-rpc-engine/dist/createAsyncMiddleware.js","webpack:///./node_modules/json-rpc-engine/dist/createScaffoldMiddleware.js","webpack:///./node_modules/fast-safe-stringify/index.js","webpack:///./node_modules/eth-rpc-errors/dist/errors.js","webpack:///./node_modules/json-rpc-engine/dist/mergeMiddleware.js","webpack:///./node_modules/json-rpc-middleware-stream/dist/index.js","webpack:///./node_modules/json-rpc-middleware-stream/dist/createEngineStream.js","webpack:///./node_modules/json-rpc-middleware-stream/dist/createStreamMiddleware.js","webpack:///./node_modules/@metamask/object-multiplex/dist/ObjectMultiplex.js","webpack:///./node_modules/@metamask/object-multiplex/dist/Substream.js","webpack:///./node_modules/@metamask/inpage-provider/node_modules/fast-deep-equal/index.js","webpack:///./node_modules/@metamask/inpage-provider/node_modules/is-stream/index.js","webpack:///./node_modules/@metamask/inpage-provider/dist/siteMetadata.js","webpack:///./node_modules/@metamask/inpage-provider/dist/initializeProvider.js","webpack:///./node_modules/@metamask/post-message-stream/dist/WindowPostMessageStream.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/@metamask/post-message-stream/dist/WorkerPostMessageStream.js","webpack:///./node_modules/@metamask/post-message-stream/dist/WorkerParentPostMessageStream.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./src/vendor/inpage-metamask-mobile.js","webpack:///./src/vendor/inpage-metamask.js","webpack:///./node_modules/pump/index.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/process-nextick-args/index.js","webpack:///./node_modules/@metamask/inpage-provider/dist/index.js","webpack:///./node_modules/@metamask/object-multiplex/dist/index.js","webpack:///./node_modules/once/once.js","webpack:///./node_modules/@metamask/safe-event-emitter/index.js","webpack:///./node_modules/eth-rpc-errors/dist/index.js","webpack:///./node_modules/eth-rpc-errors/dist/classes.js","webpack:///./node_modules/eth-rpc-errors/dist/error-constants.js","webpack:///./node_modules/@metamask/post-message-stream/dist/BasePostMessageStream.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/safe-buffer/index.js","webpack:///./src/vendor/MetaMask/ReactNativePostMessageStream.js","webpack:///./node_modules/@metamask/inpage-provider/dist/MetaMaskInpageProvider.js","webpack:///./node_modules/end-of-stream/index.js","webpack:///./node_modules/json-rpc-engine/dist/getUniqueId.js","webpack:///./node_modules/json-rpc-engine/dist/JsonRpcEngine.js","webpack:///./node_modules/eth-rpc-errors/dist/utils.js","webpack:///./node_modules/@metamask/inpage-provider/dist/messages.js","webpack:///./node_modules/@metamask/inpage-provider/dist/utils.js","webpack:///./node_modules/@metamask/inpage-provider/dist/shimWeb3.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/@metamask/post-message-stream/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/@metamask/post-message-stream/dist/enums.js"],"names":["Object","defineProperty","exports","value","WorkerParentPostMessageStream","WorkerPostMessageStream","WindowPostMessageStream","WindowPostMessageStream_1","enumerable","get","WorkerPostMessageStream_1","WorkerParentPostMessageStream_1","Duplex","inherits","MobilePortStream","port","call","this","objectMode","_name","name","_targetWindow","window","_port","_origin","location","origin","addEventListener","_onMessage","bind","module","prototype","event","msg","data","target","toNative","Buffer","isBuffer","_isBuffer","from","push","_onDisconnect","destroy","_read","_write","_encoding","cb","toJSON","ReactNativeWebView","postMessage","JSON","stringify","href","err","Error","wrappy","fn","TypeError","keys","forEach","k","wrapper","args","Array","arguments","length","i","ret","apply","__createBinding","create","o","m","k2","undefined","__exportStar","p","hasOwnProperty","createIdRemapMiddleware","getUniqueId_1","req","res","next","_end","originalId","id","newId","getUniqueId","done","createAsyncMiddleware","asyncMiddleware","async","end","resolveNextPromise","nextPromise","Promise","resolve","returnHandlerCallback","nextWasCalled","asyncNext","runReturnHandlersCallback","error","createScaffoldMiddleware","handlers","handler","method","result","default","stable","deterministicStringify","stableStringify","arr","replacerStack","obj","replacer","spacer","decirc","val","stack","parent","propertyDescriptor","getOwnPropertyDescriptor","configurable","isArray","key","pop","replaceGetterValues","part","compareFunction","a","b","tmp","deterministicDecirc","sort","v","splice","ethErrors","classes_1","utils_1","error_constants_1","getEthJsonRpcError","code","arg","message","parseOpts","EthereumRpcError","getMessageFromCode","getEthProviderError","EthereumProviderError","rpc","parse","errorCodes","invalidRequest","invalidParams","methodNotFound","internal","server","opts","Number","isInteger","invalidInput","resourceNotFound","resourceUnavailable","transactionRejected","methodNotSupported","limitExceeded","provider","userRejectedRequest","unauthorized","unsupportedMethod","disconnected","chainDisconnected","custom","mergeMiddleware","JsonRpcEngine_1","middlewareStack","engine","JsonRpcEngine","middleware","asMiddleware","__importDefault","mod","__esModule","createStreamMiddleware","createEngineStream","createEngineStream_1","createStreamMiddleware_1","readable_stream_1","stream","read","write","handle","_err","on","safe_event_emitter_1","idMap","events","emit","processNotification","context","assign","setTimeout","processResponse","ObjectMultiplex","end_of_stream_1","once_1","Substream_1","IGNORE_SUBSTREAM","Symbol","super","_substreams","destroyed","_readableState","ended","_writableState","substream","Substream","_cb","readable","writable","anyStreamEnd","_error","chunk","callback","console","warn","_parent","keyList","hasProp","equal","arrA","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","isStream","pipe","duplex","transform","_transform","_transformState","messages_1","getSiteName","windowObject","document","siteName","querySelector","content","metaTitle","title","hostname","getSiteIcon","icons","querySelectorAll","icon","imgExists","url","reject","img","createElement","onload","onerror","src","e","log","domainMetadata","getSiteMetadata","jsonrpc","params","NOOP","errors","sendSiteMetadata","originalError","setGlobalProvider","initializeProvider","MetaMaskInpageProvider_1","shimWeb3_1","providerInstance","ethereum","dispatchEvent","Event","connectionStream","jsonRpcStreamName","logger","maxEventListeners","shouldSendMetadata","shouldSetOnWindow","shouldShimWeb3","Proxy","deleteProperty","BasePostMessageStream_1","BasePostMessageStream","targetWindow","_target","_targetOrigin","_handshake","source","_onData","removeEventListener","Stream","Readable","Writable","Transform","PassThrough","BufferList","instance","Constructor","_classCallCheck","head","tail","entry","unshift","shift","clear","join","s","concat","n","alloc","offset","allocUnsafe","copy","util","options","encoding","enums_1","DEDICATED_WORKER_NAME","self","onmessage","worker","_worker","processNextTick","objectKeys","allowHalfOpen","once","onend","onEndNT","set","_destroy","INPAGE","injectMobile","metamaskStream","pageStream","appStream","pageMux","setMaxListeners","appMux","logStreamDisconnectWarning","channelName","muxA","muxB","channelA","createStream","channelB","forwardTrafficBetweenMuxes","setupProviderStreams","remoteLabel","warningMsg","web3","navigator","userAgent","includes","eos","fs","noop","ancient","test","process","version","isFn","destroyer","reading","writing","closed","ReadStream","WriteStream","close","isFS","setHeader","abort","isRequest","to","streams","slice","destroys","map","reduce","indexOf","arg1","arg2","arg3","len","nextTick","shimWeb3","MetaMaskInpageProvider","initializeProvider_1","ObjectMultiplex_1","f","called","onceStrict","onceError","strict","proto","Function","events_1","safeApply","Reflect","SafeEventEmitter","EventEmitter","type","doError","_events","er","listeners","arrayClone","serializeError","errors_1","fast_safe_stringify_1","serialized","serialize","stringifyReplacer","_","isValidEthProviderCode","errorValues","standard","_init","_haveSyn","cork","uncork","_postMessage","buffer","copyProps","dst","SafeBuffer","encodingOrOffset","allocUnsafeSlow","size","fill","buf","SlowBuffer","PostMessageStream","top","pump_1","json_rpc_engine_1","json_rpc_middleware_stream_1","object_multiplex_1","fast_deep_equal_1","eth_rpc_errors_1","is_stream_1","siteMetadata_1","invalidDuplexStream","invalidOptions","methodKeys","invalidLoggerMethod","invalidLoggerObject","validateLoggerObject","_log","isMetaMask","_state","sentWarnings","enable","experimentalMethods","send","networkChanged","notification","accounts","isConnected","isUnlocked","initialized","isPermanentlyDisconnected","_metamask","_getExperimentalApi","selectedAddress","networkVersion","chainId","_handleAccountsChanged","_handleConnect","_handleChainChanged","_handleDisconnect","_handleStreamDisconnect","_handleUnlockStateChanged","_sendSync","_rpcRequest","_warnOfDeprecation","request","sendAsync","mux","ignoreStream","jsonRpcConnection","rpcEngine","createErrorMiddleware","_rpcEngine","_initializeState","payload","EMITTED_NOTIFICATIONS","permanentlyDisconnected","readyState","domContentLoadedHandler","invalidRequestArgs","invalidRequestMethod","invalidRequestParams","getRpcPromiseCallback","eventName","listener","addListener","prependListener","prependOnceListener","debug","info","connected","isRecoverable","errorMessage","streamName","startsWith","isEthAccounts","_accounts","account","warnings","requestBatch","requests","prop","enableDeprecation","methodOrPayload","callbackOrArgs","sendDeprecation","unsupportedSync","ws","rs","cancelled","onlegacyfinish","onfinish","onexit","exitCode","onclose","onclosenexttick","onrequest","stdio","isChildProcess","removeListener","idCounter","Math","floor","random","_middleware","_handleBatch","_handle","_promiseHandle","middlewareError","isComplete","returnHandlers","_runAllMiddleware","_runReturnHandlers","handlerCallback","reqs","responses","all","callerReq","_processRequest","_checkForCompletion","_runMiddleware","reverse","returnHandler","jsonify","isValidCode","JSON_RPC_SERVER_ERROR_MESSAGE","FALLBACK_ERROR_CODE","FALLBACK_ERROR","fallbackMessage","codeString","hasKey","isJsonRpcServerError","assignOriginalError","fallbackError","shouldIncludeStack","_a","_b","messages","unwrapResult","response","emitter","listenerCount","loggedCurrentProvider","loggedMissingProperty","SHIM_IDENTIFIER","web3Shim","currentProvider","property","catch","ReadableState","EElistenerCount","OurUint8Array","global","Uint8Array","debugUtil","debuglog","StringDecoder","destroyImpl","kProxyEvents","readableObjectMode","hwm","highWaterMark","defaultHwm","pipes","pipesCount","flowing","endEmitted","sync","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","state","emitReadable","onEofChunk","chunkInvalid","getPrototypeOf","_uint8ArrayToBuffer","addChunk","maybeReadMore","needMoreData","_undestroy","undestroy","isPaused","setEncoding","enc","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","list","hasStrings","c","str","nb","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","x","l","parseInt","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","increasedAwaitDrain","pause","resume","dests","index","ev","wrap","paused","_fromList","emitErrorNT","_this","readableDestroyed","writableDestroyed","errorEmitted","ending","finished","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","browser","setImmediate","WritableState","internalUtil","deprecate","realHasInstance","nop","writableObjectMode","finalCalled","noDecode","decodeStrings","corked","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","current","out","hasInstance","object","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","last","writeOrBuffer","setDefaultEncoding","toLowerCase","endWritable","TransformState","afterTransform","ts","transforming","writechunk","needTransform","writeencoding","flush","_flush","err2"],"mappings":"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","file":"metaMaskFirefox.6670aac9e9324e4851cb.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkerParentPostMessageStream = exports.WorkerPostMessageStream = exports.WindowPostMessageStream = void 0;\nvar WindowPostMessageStream_1 = require(\"./WindowPostMessageStream\");\nObject.defineProperty(exports, \"WindowPostMessageStream\", { enumerable: true, get: function () { return WindowPostMessageStream_1.WindowPostMessageStream; } });\nvar WorkerPostMessageStream_1 = require(\"./WorkerPostMessageStream\");\nObject.defineProperty(exports, \"WorkerPostMessageStream\", { enumerable: true, get: function () { return WorkerPostMessageStream_1.WorkerPostMessageStream; } });\nvar WorkerParentPostMessageStream_1 = require(\"./WorkerParentPostMessageStream\");\nObject.defineProperty(exports, \"WorkerParentPostMessageStream\", { enumerable: true, get: function () { return WorkerParentPostMessageStream_1.WorkerParentPostMessageStream; } });\n//# sourceMappingURL=index.js.map","const { Duplex } = require('readable-stream');\nconst { inherits } = require('util');\n\nconst noop = () => undefined;\n\nmodule.exports = MobilePortStream;\n\ninherits(MobilePortStream, Duplex);\n\n/**\n * Creates a stream that's both readable and writable.\n * The stream supports arbitrary objects.\n *\n * @class\n * @param {Object} port Remote Port object\n */\nfunction MobilePortStream(port) {\n  Duplex.call(this, {\n    objectMode: true\n  });\n  this._name = port.name;\n  this._targetWindow = window;\n  this._port = port;\n  this._origin = location.origin;\n  window.addEventListener('message', this._onMessage.bind(this), false);\n}\n\n/**\n * Callback triggered when a message is received from\n * the remote Port associated with this Stream.\n *\n * @private\n * @param {Object} msg - Payload from the onMessage listener of Port\n */\nMobilePortStream.prototype._onMessage = function (event) {\n  const msg = event.data;\n\n  // validate message\n  if (this._origin !== '*' && event.origin !== this._origin) {\n    return;\n  }\n  if (!msg || typeof msg !== 'object') {\n    return;\n  }\n  if (!msg.data || typeof msg.data !== 'object') {\n    return;\n  }\n  if (msg.target && msg.target !== this._name) {\n    return;\n  }\n  // Filter outgoing messages\n  if (msg.data.data && msg.data.data.toNative) {\n    return;\n  }\n\n  if (Buffer.isBuffer(msg)) {\n    delete msg._isBuffer;\n    const data = Buffer.from(msg);\n    this.push(data);\n  } else {\n    this.push(msg);\n  }\n};\n\n/**\n * Callback triggered when the remote Port\n * associated with this Stream disconnects.\n *\n * @private\n */\nMobilePortStream.prototype._onDisconnect = function () {\n  this.destroy();\n};\n\n/**\n * Explicitly sets read operations to a no-op\n */\nMobilePortStream.prototype._read = noop;\n\n/**\n * Called internally when data should be written to\n * this writable stream.\n *\n * @private\n * @param {*} msg Arbitrary object to write\n * @param {string} encoding Encoding to use when writing payload\n * @param {Function} cb Called when writing is complete or an error occurs\n */\nMobilePortStream.prototype._write = function (msg, _encoding, cb) {\n  try {\n    if (Buffer.isBuffer(msg)) {\n      const data = msg.toJSON();\n      data._isBuffer = true;\n      window.ReactNativeWebView.postMessage(\n        JSON.stringify({ ...data, origin: window.location.href })\n      );\n    } else {\n      if (msg.data) {\n        msg.data.toNative = true;\n      }\n      window.ReactNativeWebView.postMessage(\n        JSON.stringify({ ...msg, origin: window.location.href })\n      );\n    }\n  } catch (err) {\n    return cb(new Error('MobilePortStream - disconnected'));\n  }\n  return cb();\n};\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n  if (fn && cb) return wrappy(fn)(cb)\n\n  if (typeof fn !== 'function')\n    throw new TypeError('need wrapper function')\n\n  Object.keys(fn).forEach(function (k) {\n    wrapper[k] = fn[k]\n  })\n\n  return wrapper\n\n  function wrapper() {\n    var args = new Array(arguments.length)\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n    var ret = fn.apply(this, args)\n    var cb = args[args.length-1]\n    if (typeof ret === 'function' && ret !== cb) {\n      Object.keys(cb).forEach(function (k) {\n        ret[k] = cb[k]\n      })\n    }\n    return ret\n  }\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./idRemapMiddleware\"), exports);\n__exportStar(require(\"./createAsyncMiddleware\"), exports);\n__exportStar(require(\"./createScaffoldMiddleware\"), exports);\n__exportStar(require(\"./getUniqueId\"), exports);\n__exportStar(require(\"./JsonRpcEngine\"), exports);\n__exportStar(require(\"./mergeMiddleware\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQW9DO0FBQ3BDLDBEQUF3QztBQUN4Qyw2REFBMkM7QUFDM0MsZ0RBQThCO0FBQzlCLGtEQUFnQztBQUNoQyxvREFBa0MifQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createIdRemapMiddleware = void 0;\nconst getUniqueId_1 = require(\"./getUniqueId\");\nfunction createIdRemapMiddleware() {\n    return (req, res, next, _end) => {\n        const originalId = req.id;\n        const newId = getUniqueId_1.getUniqueId();\n        req.id = newId;\n        res.id = newId;\n        next((done) => {\n            req.id = originalId;\n            res.id = originalId;\n            done();\n        });\n    };\n}\nexports.createIdRemapMiddleware = createIdRemapMiddleware;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRSZW1hcE1pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaWRSZW1hcE1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBQTRDO0FBRzVDLFNBQWdCLHVCQUF1QjtJQUNyQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDOUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyx5QkFBVyxFQUFFLENBQUM7UUFDNUIsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDZixHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osR0FBRyxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDcEIsR0FBRyxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDcEIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCwwREFZQyJ9","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createAsyncMiddleware = void 0;\n/**\n * JsonRpcEngine only accepts callback-based middleware directly.\n * createAsyncMiddleware exists to enable consumers to pass in async middleware\n * functions.\n *\n * Async middleware have no \"end\" function. Instead, they \"end\" if they return\n * without calling \"next\". Rather than passing in explicit return handlers,\n * async middleware can simply await \"next\", and perform operations on the\n * response object when execution resumes.\n *\n * To accomplish this, createAsyncMiddleware passes the async middleware a\n * wrapped \"next\" function. That function calls the internal JsonRpcEngine\n * \"next\" function with a return handler that resolves a promise when called.\n *\n * The return handler will always be called. Its resolution of the promise\n * enables the control flow described above.\n */\nfunction createAsyncMiddleware(asyncMiddleware) {\n    return async (req, res, next, end) => {\n        // nextPromise is the key to the implementation\n        // it is resolved by the return handler passed to the\n        // \"next\" function\n        let resolveNextPromise;\n        const nextPromise = new Promise((resolve) => {\n            resolveNextPromise = resolve;\n        });\n        let returnHandlerCallback = null;\n        let nextWasCalled = false;\n        // This will be called by the consumer's async middleware.\n        const asyncNext = async () => {\n            nextWasCalled = true;\n            // We pass a return handler to next(). When it is called by the engine,\n            // the consumer's async middleware will resume executing.\n            // eslint-disable-next-line node/callback-return\n            next((runReturnHandlersCallback) => {\n                // This callback comes from JsonRpcEngine._runReturnHandlers\n                returnHandlerCallback = runReturnHandlersCallback;\n                resolveNextPromise();\n            });\n            await nextPromise;\n        };\n        try {\n            await asyncMiddleware(req, res, asyncNext);\n            if (nextWasCalled) {\n                await nextPromise; // we must wait until the return handler is called\n                returnHandlerCallback(null);\n            }\n            else {\n                end(null);\n            }\n        }\n        catch (error) {\n            if (returnHandlerCallback) {\n                returnHandlerCallback(error);\n            }\n            else {\n                end(error);\n            }\n        }\n    };\n}\nexports.createAsyncMiddleware = createAsyncMiddleware;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQXN5bmNNaWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NyZWF0ZUFzeW5jTWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnQkE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxTQUFnQixxQkFBcUIsQ0FDbkMsZUFBNkM7SUFFN0MsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDbkMsK0NBQStDO1FBQy9DLHFEQUFxRDtRQUNyRCxrQkFBa0I7UUFDbEIsSUFBSSxrQkFBOEIsQ0FBQztRQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUkscUJBQXFCLEdBQVksSUFBSSxDQUFDO1FBQzFDLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUUxQiwwREFBMEQ7UUFDMUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDM0IsYUFBYSxHQUFHLElBQUksQ0FBQztZQUVyQix1RUFBdUU7WUFDdkUseURBQXlEO1lBQ3pELGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsQ0FBQyx5QkFBeUIsRUFBRSxFQUFFO2dCQUNqQyw0REFBNEQ7Z0JBQzVELHFCQUFxQixHQUFHLHlCQUF5QixDQUFDO2dCQUNsRCxrQkFBa0IsRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxXQUFXLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBRUYsSUFBSTtZQUNGLE1BQU0sZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFM0MsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLE1BQU0sV0FBVyxDQUFDLENBQUMsa0RBQWtEO2dCQUNwRSxxQkFBK0MsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4RDtpQkFBTTtnQkFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDWDtTQUNGO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLHFCQUFxQixFQUFFO2dCQUN4QixxQkFBK0MsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6RDtpQkFBTTtnQkFDTCxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDWjtTQUNGO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQS9DRCxzREErQ0MifQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createScaffoldMiddleware = void 0;\nfunction createScaffoldMiddleware(handlers) {\n    return (req, res, next, end) => {\n        const handler = handlers[req.method];\n        // if no handler, return\n        if (handler === undefined) {\n            return next();\n        }\n        // if handler is fn, call as middleware\n        if (typeof handler === 'function') {\n            return handler(req, res, next, end);\n        }\n        // if handler is some other value, use as result\n        res.result = handler;\n        return end();\n    };\n}\nexports.createScaffoldMiddleware = createScaffoldMiddleware;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU2NhZmZvbGRNaWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NyZWF0ZVNjYWZmb2xkTWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxTQUFnQix3QkFBd0IsQ0FBQyxRQUV4QztJQUNDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUM3QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLHdCQUF3QjtRQUN4QixJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDekIsT0FBTyxJQUFJLEVBQUUsQ0FBQztTQUNmO1FBQ0QsdUNBQXVDO1FBQ3ZDLElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxFQUFFO1lBQ2pDLE9BQU8sT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsZ0RBQWdEO1FBQy9DLEdBQStCLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUNsRCxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWpCRCw0REFpQkMifQ==","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar arr = []\nvar replacerStack = []\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer) {\n  decirc(obj, '', [], undefined)\n  var res\n  if (replacerStack.length === 0) {\n    res = JSON.stringify(obj, replacer, spacer)\n  } else {\n    res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n  }\n  while (arr.length !== 0) {\n    var part = arr.pop()\n    if (part.length === 4) {\n      Object.defineProperty(part[0], part[1], part[3])\n    } else {\n      part[0][part[1]] = part[2]\n    }\n  }\n  return res\n}\nfunction decirc (val, k, stack, parent) {\n  var i\n  if (typeof val === 'object' && val !== null) {\n    for (i = 0; i < stack.length; i++) {\n      if (stack[i] === val) {\n        var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n        if (propertyDescriptor.get !== undefined) {\n          if (propertyDescriptor.configurable) {\n            Object.defineProperty(parent, k, { value: '[Circular]' })\n            arr.push([parent, k, val, propertyDescriptor])\n          } else {\n            replacerStack.push([val, k])\n          }\n        } else {\n          parent[k] = '[Circular]'\n          arr.push([parent, k, val])\n        }\n        return\n      }\n    }\n    stack.push(val)\n    // Optimize for Arrays. Big arrays could kill the performance otherwise!\n    if (Array.isArray(val)) {\n      for (i = 0; i < val.length; i++) {\n        decirc(val[i], i, stack, val)\n      }\n    } else {\n      var keys = Object.keys(val)\n      for (i = 0; i < keys.length; i++) {\n        var key = keys[i]\n        decirc(val[key], key, stack, val)\n      }\n    }\n    stack.pop()\n  }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n  if (a < b) {\n    return -1\n  }\n  if (a > b) {\n    return 1\n  }\n  return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer) {\n  var tmp = deterministicDecirc(obj, '', [], undefined) || obj\n  var res\n  if (replacerStack.length === 0) {\n    res = JSON.stringify(tmp, replacer, spacer)\n  } else {\n    res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n  }\n  while (arr.length !== 0) {\n    var part = arr.pop()\n    if (part.length === 4) {\n      Object.defineProperty(part[0], part[1], part[3])\n    } else {\n      part[0][part[1]] = part[2]\n    }\n  }\n  return res\n}\n\nfunction deterministicDecirc (val, k, stack, parent) {\n  var i\n  if (typeof val === 'object' && val !== null) {\n    for (i = 0; i < stack.length; i++) {\n      if (stack[i] === val) {\n        var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n        if (propertyDescriptor.get !== undefined) {\n          if (propertyDescriptor.configurable) {\n            Object.defineProperty(parent, k, { value: '[Circular]' })\n            arr.push([parent, k, val, propertyDescriptor])\n          } else {\n            replacerStack.push([val, k])\n          }\n        } else {\n          parent[k] = '[Circular]'\n          arr.push([parent, k, val])\n        }\n        return\n      }\n    }\n    if (typeof val.toJSON === 'function') {\n      return\n    }\n    stack.push(val)\n    // Optimize for Arrays. Big arrays could kill the performance otherwise!\n    if (Array.isArray(val)) {\n      for (i = 0; i < val.length; i++) {\n        deterministicDecirc(val[i], i, stack, val)\n      }\n    } else {\n      // Create a temporary object in the required way\n      var tmp = {}\n      var keys = Object.keys(val).sort(compareFunction)\n      for (i = 0; i < keys.length; i++) {\n        var key = keys[i]\n        deterministicDecirc(val[key], key, stack, val)\n        tmp[key] = val[key]\n      }\n      if (parent !== undefined) {\n        arr.push([parent, k, val])\n        parent[k] = tmp\n      } else {\n        return tmp\n      }\n    }\n    stack.pop()\n  }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as [Circular]\nfunction replaceGetterValues (replacer) {\n  replacer = replacer !== undefined ? replacer : function (k, v) { return v }\n  return function (key, val) {\n    if (replacerStack.length > 0) {\n      for (var i = 0; i < replacerStack.length; i++) {\n        var part = replacerStack[i]\n        if (part[1] === key && part[0] === val) {\n          val = '[Circular]'\n          replacerStack.splice(i, 1)\n          break\n        }\n      }\n    }\n    return replacer.call(this, key, val)\n  }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ethErrors = void 0;\nconst classes_1 = require(\"./classes\");\nconst utils_1 = require(\"./utils\");\nconst error_constants_1 = require(\"./error-constants\");\nexports.ethErrors = {\n    rpc: {\n        /**\n         * Get a JSON RPC 2.0 Parse (-32700) error.\n         */\n        parse: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.parse, arg),\n        /**\n         * Get a JSON RPC 2.0 Invalid Request (-32600) error.\n         */\n        invalidRequest: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.invalidRequest, arg),\n        /**\n         * Get a JSON RPC 2.0 Invalid Params (-32602) error.\n         */\n        invalidParams: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.invalidParams, arg),\n        /**\n         * Get a JSON RPC 2.0 Method Not Found (-32601) error.\n         */\n        methodNotFound: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.methodNotFound, arg),\n        /**\n         * Get a JSON RPC 2.0 Internal (-32603) error.\n         */\n        internal: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.internal, arg),\n        /**\n         * Get a JSON RPC 2.0 Server error.\n         * Permits integer error codes in the [ -32099 <= -32005 ] range.\n         * Codes -32000 through -32004 are reserved by EIP-1474.\n         */\n        server: (opts) => {\n            if (!opts || typeof opts !== 'object' || Array.isArray(opts)) {\n                throw new Error('Ethereum RPC Server errors must provide single object argument.');\n            }\n            const { code } = opts;\n            if (!Number.isInteger(code) || code > -32005 || code < -32099) {\n                throw new Error('\"code\" must be an integer such that: -32099 <= code <= -32005');\n            }\n            return getEthJsonRpcError(code, opts);\n        },\n        /**\n         * Get an Ethereum JSON RPC Invalid Input (-32000) error.\n         */\n        invalidInput: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.invalidInput, arg),\n        /**\n         * Get an Ethereum JSON RPC Resource Not Found (-32001) error.\n         */\n        resourceNotFound: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.resourceNotFound, arg),\n        /**\n         * Get an Ethereum JSON RPC Resource Unavailable (-32002) error.\n         */\n        resourceUnavailable: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.resourceUnavailable, arg),\n        /**\n         * Get an Ethereum JSON RPC Transaction Rejected (-32003) error.\n         */\n        transactionRejected: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.transactionRejected, arg),\n        /**\n         * Get an Ethereum JSON RPC Method Not Supported (-32004) error.\n         */\n        methodNotSupported: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.methodNotSupported, arg),\n        /**\n         * Get an Ethereum JSON RPC Limit Exceeded (-32005) error.\n         */\n        limitExceeded: (arg) => getEthJsonRpcError(error_constants_1.errorCodes.rpc.limitExceeded, arg),\n    },\n    provider: {\n        /**\n         * Get an Ethereum Provider User Rejected Request (4001) error.\n         */\n        userRejectedRequest: (arg) => {\n            return getEthProviderError(error_constants_1.errorCodes.provider.userRejectedRequest, arg);\n        },\n        /**\n         * Get an Ethereum Provider Unauthorized (4100) error.\n         */\n        unauthorized: (arg) => {\n            return getEthProviderError(error_constants_1.errorCodes.provider.unauthorized, arg);\n        },\n        /**\n         * Get an Ethereum Provider Unsupported Method (4200) error.\n         */\n        unsupportedMethod: (arg) => {\n            return getEthProviderError(error_constants_1.errorCodes.provider.unsupportedMethod, arg);\n        },\n        /**\n         * Get an Ethereum Provider Not Connected (4900) error.\n         */\n        disconnected: (arg) => {\n            return getEthProviderError(error_constants_1.errorCodes.provider.disconnected, arg);\n        },\n        /**\n         * Get an Ethereum Provider Chain Not Connected (4901) error.\n         */\n        chainDisconnected: (arg) => {\n            return getEthProviderError(error_constants_1.errorCodes.provider.chainDisconnected, arg);\n        },\n        /**\n         * Get a custom Ethereum Provider error.\n         */\n        custom: (opts) => {\n            if (!opts || typeof opts !== 'object' || Array.isArray(opts)) {\n                throw new Error('Ethereum Provider custom errors must provide single object argument.');\n            }\n            const { code, message, data } = opts;\n            if (!message || typeof message !== 'string') {\n                throw new Error('\"message\" must be a nonempty string');\n            }\n            return new classes_1.EthereumProviderError(code, message, data);\n        },\n    },\n};\n// Internal\nfunction getEthJsonRpcError(code, arg) {\n    const [message, data] = parseOpts(arg);\n    return new classes_1.EthereumRpcError(code, message || utils_1.getMessageFromCode(code), data);\n}\nfunction getEthProviderError(code, arg) {\n    const [message, data] = parseOpts(arg);\n    return new classes_1.EthereumProviderError(code, message || utils_1.getMessageFromCode(code), data);\n}\nfunction parseOpts(arg) {\n    if (arg) {\n        if (typeof arg === 'string') {\n            return [arg];\n        }\n        else if (typeof arg === 'object' && !Array.isArray(arg)) {\n            const { message, data } = arg;\n            if (message && typeof message !== 'string') {\n                throw new Error('Must specify string message.');\n            }\n            return [message || undefined, data];\n        }\n    }\n    return [];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBb0U7QUFDcEUsbUNBQTZDO0FBQzdDLHVEQUErQztBQWVsQyxRQUFBLFNBQVMsR0FBRztJQUN2QixHQUFHLEVBQUU7UUFFSDs7V0FFRztRQUNILEtBQUssRUFBRSxDQUFJLEdBQXFCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUNyRCw0QkFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUMxQjtRQUVEOztXQUVHO1FBQ0gsY0FBYyxFQUFFLENBQUksR0FBcUIsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQzlELDRCQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQ25DO1FBRUQ7O1dBRUc7UUFDSCxhQUFhLEVBQUUsQ0FBSSxHQUFxQixFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FDN0QsNEJBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FDbEM7UUFFRDs7V0FFRztRQUNILGNBQWMsRUFBRSxDQUFJLEdBQXFCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUM5RCw0QkFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUNuQztRQUVEOztXQUVHO1FBQ0gsUUFBUSxFQUFFLENBQUksR0FBcUIsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQ3hELDRCQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQzdCO1FBRUQ7Ozs7V0FJRztRQUNILE1BQU0sRUFBRSxDQUFJLElBQTJCLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7YUFDcEY7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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeMiddleware = void 0;\nconst JsonRpcEngine_1 = require(\"./JsonRpcEngine\");\nfunction mergeMiddleware(middlewareStack) {\n    const engine = new JsonRpcEngine_1.JsonRpcEngine();\n    middlewareStack.forEach((middleware) => engine.push(middleware));\n    return engine.asMiddleware();\n}\nexports.mergeMiddleware = mergeMiddleware;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VNaWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21lcmdlTWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBbUU7QUFFbkUsU0FBZ0IsZUFBZSxDQUFDLGVBQXNEO0lBQ3BGLE1BQU0sTUFBTSxHQUFHLElBQUksNkJBQWEsRUFBRSxDQUFDO0lBQ25DLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNqRSxPQUFPLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUMvQixDQUFDO0FBSkQsMENBSUMifQ==","\"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.createStreamMiddleware = exports.createEngineStream = void 0;\nconst createEngineStream_1 = __importDefault(require(\"./createEngineStream\"));\nexports.createEngineStream = createEngineStream_1.default;\nconst createStreamMiddleware_1 = __importDefault(require(\"./createStreamMiddleware\"));\nexports.createStreamMiddleware = createStreamMiddleware_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * Takes a JsonRpcEngine and returns a Duplex stream wrapping it.\n *\n * @param opts - Options bag.\n * @param opts.engine - The JsonRpcEngine to wrap in a stream.\n * @returns The stream wrapping the engine.\n */\nfunction createEngineStream(opts) {\n    if (!opts || !opts.engine) {\n        throw new Error('Missing engine parameter!');\n    }\n    const { engine } = opts;\n    const stream = new readable_stream_1.Duplex({ objectMode: true, read, write });\n    // forward notifications\n    if (engine.on) {\n        engine.on('notification', (message) => {\n            stream.push(message);\n        });\n    }\n    return stream;\n    function read() {\n        return undefined;\n    }\n    function write(req, _encoding, cb) {\n        engine.handle(req, (_err, res) => {\n            stream.push(res);\n        });\n        cb();\n    }\n}\nexports.default = createEngineStream;\n//# sourceMappingURL=createEngineStream.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 });\nconst safe_event_emitter_1 = __importDefault(require(\"@metamask/safe-event-emitter\"));\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * Creates a JsonRpcEngine middleware with an associated Duplex stream and\n * EventEmitter. The middleware, and by extension stream, assume that middleware\n * parameters are properly formatted. No runtime type checking or validation is\n * performed.\n *\n * @returns The event emitter, middleware, and stream.\n */\nfunction createStreamMiddleware() {\n    const idMap = {};\n    const stream = new readable_stream_1.Duplex({\n        objectMode: true,\n        read: readNoop,\n        write: processMessage,\n    });\n    const events = new safe_event_emitter_1.default();\n    const middleware = (req, res, next, end) => {\n        // write req to stream\n        stream.push(req);\n        // register request on id map\n        idMap[req.id] = { req, res, next, end };\n    };\n    return { events, middleware, stream };\n    function readNoop() {\n        return false;\n    }\n    function processMessage(res, _encoding, cb) {\n        let err;\n        try {\n            const isNotification = !res.id;\n            if (isNotification) {\n                processNotification(res);\n            }\n            else {\n                processResponse(res);\n            }\n        }\n        catch (_err) {\n            err = _err;\n        }\n        // continue processing stream\n        cb(err);\n    }\n    function processResponse(res) {\n        const context = idMap[res.id];\n        if (!context) {\n            throw new Error(`StreamMiddleware - Unknown response id \"${res.id}\"`);\n        }\n        delete idMap[res.id];\n        // copy whole res onto original res\n        Object.assign(context.res, res);\n        // run callback on empty stack,\n        // prevent internal stream-handler from catching errors\n        setTimeout(context.end);\n    }\n    function processNotification(res) {\n        events.emit('notification', res);\n    }\n}\nexports.default = createStreamMiddleware;\n//# sourceMappingURL=createStreamMiddleware.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.ObjectMultiplex = void 0;\nconst readable_stream_1 = require(\"readable-stream\");\nconst end_of_stream_1 = __importDefault(require(\"end-of-stream\"));\nconst once_1 = __importDefault(require(\"once\"));\nconst Substream_1 = require(\"./Substream\");\nconst IGNORE_SUBSTREAM = Symbol('IGNORE_SUBSTREAM');\nclass ObjectMultiplex extends readable_stream_1.Duplex {\n    constructor(opts = {}) {\n        super(Object.assign(Object.assign({}, opts), { objectMode: true }));\n        this._substreams = {};\n    }\n    createStream(name) {\n        // guard stream against destroyed already\n        if (this.destroyed) {\n            throw new Error(`ObjectMultiplex - parent stream for name \"${name}\" already destroyed`);\n        }\n        // guard stream against ended already\n        if (this._readableState.ended || this._writableState.ended) {\n            throw new Error(`ObjectMultiplex - parent stream for name \"${name}\" already ended`);\n        }\n        // validate name\n        if (!name) {\n            throw new Error('ObjectMultiplex - name must not be empty');\n        }\n        if (this._substreams[name]) {\n            throw new Error(`ObjectMultiplex - Substream for name \"${name}\" already exists`);\n        }\n        // create substream\n        const substream = new Substream_1.Substream({ parent: this, name });\n        this._substreams[name] = substream;\n        // listen for parent stream to end\n        anyStreamEnd(this, (_error) => {\n            return substream.destroy(_error || undefined);\n        });\n        return substream;\n    }\n    // ignore streams (dont display orphaned data warning)\n    ignoreStream(name) {\n        // validate name\n        if (!name) {\n            throw new Error('ObjectMultiplex - name must not be empty');\n        }\n        if (this._substreams[name]) {\n            throw new Error(`ObjectMultiplex - Substream for name \"${name}\" already exists`);\n        }\n        // set\n        this._substreams[name] = IGNORE_SUBSTREAM;\n    }\n    _read() {\n        return undefined;\n    }\n    _write(chunk, _encoding, callback) {\n        const { name, data } = chunk;\n        if (!name) {\n            console.warn(`ObjectMultiplex - malformed chunk without name \"${chunk}\"`);\n            return callback();\n        }\n        // get corresponding substream\n        const substream = this._substreams[name];\n        if (!substream) {\n            console.warn(`ObjectMultiplex - orphaned data for stream \"${name}\"`);\n            return callback();\n        }\n        // push data into substream\n        if (substream !== IGNORE_SUBSTREAM) {\n            substream.push(data);\n        }\n        return callback();\n    }\n}\nexports.ObjectMultiplex = ObjectMultiplex;\n// util\nfunction anyStreamEnd(stream, _cb) {\n    const cb = once_1.default(_cb);\n    end_of_stream_1.default(stream, { readable: false }, cb);\n    end_of_stream_1.default(stream, { writable: false }, cb);\n}\n//# sourceMappingURL=ObjectMultiplex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Substream = void 0;\nconst readable_stream_1 = require(\"readable-stream\");\nclass Substream extends readable_stream_1.Duplex {\n    constructor({ parent, name }) {\n        super({ objectMode: true });\n        this._parent = parent;\n        this._name = name;\n    }\n    /**\n     * Explicitly sets read operations to a no-op.\n     */\n    _read() {\n        return undefined;\n    }\n    /**\n     * Called when data should be written to this writable stream.\n     *\n     * @param chunk - Arbitrary object to write\n     * @param encoding - Encoding to use when writing payload\n     * @param callback - Called when writing is complete or an error occurs\n     */\n    _write(chunk, _encoding, callback) {\n        this._parent.push({\n            name: this._name,\n            data: chunk,\n        });\n        callback();\n    }\n}\nexports.Substream = Substream;\n//# sourceMappingURL=Substream.js.map","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    var arrA = isArray(a)\n      , arrB = isArray(b)\n      , i\n      , length\n      , key;\n\n    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n\n    var dateA = a instanceof Date\n      , dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n\n    var regexpA = a instanceof RegExp\n      , regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n\n    var keys = keyList(a);\n    length = keys.length;\n\n    if (length !== keyList(b).length)\n      return false;\n\n    for (i = length; i-- !== 0;)\n      if (!hasProp.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  return a!==a && b!==b;\n};\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function' &&\n\ttypeof stream._transformState === 'object';\n\nmodule.exports = isStream;\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 });\nconst messages_1 = __importDefault(require(\"./messages\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Sends site metadata over an RPC request.\n *\n * @param engine - The JSON RPC Engine to send metadata over.\n * @param log - The logging API to use.\n */\nasync function sendSiteMetadata(engine, log) {\n    try {\n        const domainMetadata = await getSiteMetadata();\n        // call engine.handle directly to avoid normal RPC request handling\n        engine.handle({\n            jsonrpc: '2.0',\n            id: 1,\n            method: 'metamask_sendDomainMetadata',\n            params: domainMetadata,\n        }, utils_1.NOOP);\n    }\n    catch (error) {\n        log.error({\n            message: messages_1.default.errors.sendSiteMetadata(),\n            originalError: error,\n        });\n    }\n}\nexports.default = sendSiteMetadata;\n/**\n * Gets site metadata and returns it\n *\n */\nasync function getSiteMetadata() {\n    return {\n        name: getSiteName(window),\n        icon: await getSiteIcon(window),\n    };\n}\n/**\n * Extracts a name for the site from the DOM\n */\nfunction getSiteName(windowObject) {\n    const { document } = windowObject;\n    const siteName = document.querySelector('head > meta[property=\"og:site_name\"]');\n    if (siteName) {\n        return siteName.content;\n    }\n    const metaTitle = document.querySelector('head > meta[name=\"title\"]');\n    if (metaTitle) {\n        return metaTitle.content;\n    }\n    if (document.title && document.title.length > 0) {\n        return document.title;\n    }\n    return window.location.hostname;\n}\n/**\n * Extracts an icon for the site from the DOM\n * @returns an icon URL\n */\nasync function getSiteIcon(windowObject) {\n    const { document } = windowObject;\n    const icons = document.querySelectorAll('head > link[rel~=\"icon\"]');\n    for (const icon of icons) {\n        if (icon && await imgExists(icon.href)) {\n            return icon.href;\n        }\n    }\n    return null;\n}\n/**\n * Returns whether the given image URL exists\n * @param url - the url of the image\n * @returns Whether the image exists.\n */\nfunction imgExists(url) {\n    return new Promise((resolve, reject) => {\n        try {\n            const img = document.createElement('img');\n            img.onload = () => resolve(true);\n            img.onerror = () => resolve(false);\n            img.src = url;\n        }\n        catch (e) {\n            reject(e);\n        }\n    });\n}\n//# sourceMappingURL=siteMetadata.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.setGlobalProvider = exports.initializeProvider = void 0;\nconst MetaMaskInpageProvider_1 = __importDefault(require(\"./MetaMaskInpageProvider\"));\nconst shimWeb3_1 = __importDefault(require(\"./shimWeb3\"));\n/**\n * Initializes a MetaMaskInpageProvider and (optionally) assigns it as window.ethereum.\n *\n * @param options - An options bag.\n * @param options.connectionStream - A Node.js stream.\n * @param options.jsonRpcStreamName - The name of the internal JSON-RPC stream.\n * @param options.maxEventListeners - The maximum number of event listeners.\n * @param options.shouldSendMetadata - Whether the provider should send page metadata.\n * @param options.shouldSetOnWindow - Whether the provider should be set as window.ethereum.\n * @param options.shouldShimWeb3 - Whether a window.web3 shim should be injected.\n * @returns The initialized provider (whether set or not).\n */\nfunction initializeProvider({ connectionStream, jsonRpcStreamName, logger = console, maxEventListeners = 100, shouldSendMetadata = true, shouldSetOnWindow = true, shouldShimWeb3 = false, }) {\n    let provider = new MetaMaskInpageProvider_1.default(connectionStream, {\n        jsonRpcStreamName,\n        logger,\n        maxEventListeners,\n        shouldSendMetadata,\n    });\n    provider = new Proxy(provider, {\n        // some common libraries, e.g. web3@1.x, mess with our API\n        deleteProperty: () => true,\n    });\n    if (shouldSetOnWindow) {\n        setGlobalProvider(provider);\n    }\n    if (shouldShimWeb3) {\n        shimWeb3_1.default(provider, logger);\n    }\n    return provider;\n}\nexports.initializeProvider = initializeProvider;\n/**\n * Sets the given provider instance as window.ethereum and dispatches the\n * 'ethereum#initialized' event on window.\n *\n * @param providerInstance - The provider instance.\n */\nfunction setGlobalProvider(providerInstance) {\n    window.ethereum = providerInstance;\n    window.dispatchEvent(new Event('ethereum#initialized'));\n}\nexports.setGlobalProvider = setGlobalProvider;\n//# sourceMappingURL=initializeProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WindowPostMessageStream = void 0;\nconst BasePostMessageStream_1 = require(\"./BasePostMessageStream\");\n/**\n * Window.postMessage stream.\n */\nclass WindowPostMessageStream extends BasePostMessageStream_1.BasePostMessageStream {\n    /**\n     * Creates a stream for communicating with other streams across the same or\n     * different window objects.\n     *\n     * @param args.name - The name of the stream. Used to differentiate between\n     * multiple streams sharing the same window object.\n     * @param args.target - The name of the stream to exchange messages with.\n     * @param args.targetWindow - The window object of the target stream. Defaults\n     * to `window`.\n     */\n    constructor({ name, target, targetWindow }) {\n        if (!name || !target) {\n            throw new Error('Invalid input.');\n        }\n        super();\n        this._name = name;\n        this._target = target;\n        this._targetOrigin = targetWindow ? '*' : location.origin;\n        this._targetWindow = targetWindow || window;\n        this._onMessage = this._onMessage.bind(this);\n        window.addEventListener('message', this._onMessage, false);\n        this._handshake();\n    }\n    _postMessage(data) {\n        this._targetWindow.postMessage({\n            target: this._target,\n            data,\n        }, this._targetOrigin);\n    }\n    _onMessage(event) {\n        const message = event.data;\n        // validate message\n        if ((this._targetOrigin !== '*' && event.origin !== this._targetOrigin) ||\n            event.source !== this._targetWindow ||\n            typeof message !== 'object' ||\n            message.target !== this._name ||\n            !message.data) {\n            return;\n        }\n        this._onData(message.data);\n    }\n    _destroy() {\n        window.removeEventListener('message', this._onMessage, false);\n    }\n}\nexports.WindowPostMessageStream = WindowPostMessageStream;\n//# sourceMappingURL=WindowPostMessageStream.js.map","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","'use strict';\n\n/*<replacement>*/\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nfunction copyBuffer(src, target, offset) {\n  src.copy(target, offset);\n}\n\nmodule.exports = function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  BufferList.prototype.push = function push(v) {\n    var entry = { data: v, next: null };\n    if (this.length > 0) this.tail.next = entry;else this.head = entry;\n    this.tail = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.unshift = function unshift(v) {\n    var entry = { data: v, next: this.head };\n    if (this.length === 0) this.tail = entry;\n    this.head = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.shift = function shift() {\n    if (this.length === 0) return;\n    var ret = this.head.data;\n    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n    --this.length;\n    return ret;\n  };\n\n  BufferList.prototype.clear = function clear() {\n    this.head = this.tail = null;\n    this.length = 0;\n  };\n\n  BufferList.prototype.join = function join(s) {\n    if (this.length === 0) return '';\n    var p = this.head;\n    var ret = '' + p.data;\n    while (p = p.next) {\n      ret += s + p.data;\n    }return ret;\n  };\n\n  BufferList.prototype.concat = function concat(n) {\n    if (this.length === 0) return Buffer.alloc(0);\n    if (this.length === 1) return this.head.data;\n    var ret = Buffer.allocUnsafe(n >>> 0);\n    var p = this.head;\n    var i = 0;\n    while (p) {\n      copyBuffer(p.data, ret, i);\n      i += p.data.length;\n      p = p.next;\n    }\n    return ret;\n  };\n\n  return BufferList;\n}();","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkerPostMessageStream = void 0;\n/* istanbul ignore file */\n// We ignore coverage for the entire file due to limits on our instrumentation,\n// but it is in fact covered by our tests.\nconst BasePostMessageStream_1 = require(\"./BasePostMessageStream\");\nconst enums_1 = require(\"./enums\");\n/**\n * Worker-side dedicated web worker `postMessage` stream.\n */\nclass WorkerPostMessageStream extends BasePostMessageStream_1.BasePostMessageStream {\n    /**\n     * Note: Designed for use in web workers only.\n     *\n     * Creates a stream for communicating with the window that created this web\n     * worker.\n     */\n    constructor() {\n        super();\n        this._name = enums_1.DEDICATED_WORKER_NAME;\n        self.onmessage = this._onMessage.bind(this);\n        this._handshake();\n    }\n    _postMessage(data) {\n        // Cast of self.postMessage due to usage of DOM lib\n        self.postMessage({ data });\n    }\n    _onMessage(event) {\n        const message = event.data;\n        // validate message\n        if (typeof message !== 'object' ||\n            message.target !== this._name ||\n            !message.data) {\n            return;\n        }\n        this._onData(message.data);\n    }\n    // worker stream lifecycle assumed to be coterminous with global scope\n    _destroy() {\n        return undefined;\n    }\n}\nexports.WorkerPostMessageStream = WorkerPostMessageStream;\n//# sourceMappingURL=WorkerPostMessageStream.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkerParentPostMessageStream = void 0;\nconst BasePostMessageStream_1 = require(\"./BasePostMessageStream\");\nconst enums_1 = require(\"./enums\");\n/**\n * Parent-side dedicated web worker `postMessage` stream.\n */\nclass WorkerParentPostMessageStream extends BasePostMessageStream_1.BasePostMessageStream {\n    /**\n     * Creates a stream for communicating with a dedicated web worker.\n     *\n     * @param args.worker - The Web Worker to exchange messages with. The worker\n     * must instantiate a WorkerPostMessageStream.\n     */\n    constructor({ worker }) {\n        if (!worker) {\n            throw new Error('Invalid input.');\n        }\n        super();\n        this._target = enums_1.DEDICATED_WORKER_NAME;\n        this._worker = worker;\n        this._worker.onmessage = this._onMessage.bind(this);\n        this._handshake();\n    }\n    _postMessage(data) {\n        this._worker.postMessage({\n            target: this._target,\n            data,\n        });\n    }\n    _onMessage(event) {\n        const message = event.data;\n        // validate message\n        if (typeof message !== 'object' || !message.data) {\n            return;\n        }\n        this._onData(message.data);\n    }\n    _destroy() {\n        this._worker.onmessage = null;\n        this._worker = null;\n    }\n}\nexports.WorkerParentPostMessageStream = WorkerParentPostMessageStream;\n//# sourceMappingURL=WorkerParentPostMessageStream.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    keys.push(key);\n  }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nvar keys = objectKeys(Writable.prototype);\nfor (var v = 0; v < keys.length; v++) {\n  var method = keys[v];\n  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n\n  Readable.call(this, options);\n  Writable.call(this, options);\n\n  if (options && options.readable === false) this.readable = false;\n\n  if (options && options.writable === false) this.writable = false;\n\n  this.allowHalfOpen = true;\n  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n  this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n  // if we allow half-open state, or if the writable side ended,\n  // then we're ok.\n  if (this.allowHalfOpen || this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  processNextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n  this.push(null);\n  this.end();\n\n  processNextTick(cb, err);\n};\n\nfunction forEach(xs, f) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    f(xs[i], i);\n  }\n}","// Based of: https://github.com/MetaMask/mobile-provider/blob/main/src/inpage/index.js\n\nimport { initializeProvider } from '@metamask/inpage-provider';\nimport ObjectMultiplex from '@metamask/object-multiplex';\nimport pump from 'pump';\n\nimport MobilePortStream from './MetaMask/MobilePortStream';\nimport ReactNativePostMessageStream from './MetaMask/ReactNativePostMessageStream';\n\nconst INPAGE = 'metamask-inpage';\nconst CONTENT_SCRIPT = 'metamask-contentscript';\nconst PROVIDER = 'metamask-provider';\n\nexport const injectMobile = () => {\n  // Setup stream for content script communication\n  const metamaskStream = new ReactNativePostMessageStream({\n    name: INPAGE,\n    target: CONTENT_SCRIPT\n  });\n\n  // Initialize provider object (window.ethereum)\n  initializeProvider({\n    connectionStream: metamaskStream,\n    shouldSendMetadata: false\n  });\n\n  setupProviderStreams();\n};\n\n// Functions\n\n/**\n * Setup function called from content script after the DOM is ready.\n */\nfunction setupProviderStreams() {\n  // the transport-specific streams for communication between inpage and background\n  const pageStream = new ReactNativePostMessageStream({\n    name: CONTENT_SCRIPT,\n    target: INPAGE\n  });\n\n  const appStream = new MobilePortStream({\n    name: CONTENT_SCRIPT\n  });\n\n  // create and connect channel muxes\n  // so we can handle the channels individually\n  const pageMux = new ObjectMultiplex();\n  pageMux.setMaxListeners(25);\n  const appMux = new ObjectMultiplex();\n  appMux.setMaxListeners(25);\n\n  pump(pageMux, pageStream, pageMux, (err) =>\n    logStreamDisconnectWarning('MetaMask Inpage Multiplex', err)\n  );\n  pump(appMux, appStream, appMux, (err) => {\n    logStreamDisconnectWarning('MetaMask Background Multiplex', err);\n    notifyProviderOfStreamFailure();\n  });\n\n  // forward communication across inpage-background for these channels only\n  forwardTrafficBetweenMuxes(PROVIDER, pageMux, appMux);\n}\n\n/**\n * Set up two-way communication between muxes for a single, named channel.\n *\n * @param {string} channelName - The name of the channel.\n * @param {ObjectMultiplex} muxA - The first mux.\n * @param {ObjectMultiplex} muxB - The second mux.\n */\nfunction forwardTrafficBetweenMuxes(channelName, muxA, muxB) {\n  const channelA = muxA.createStream(channelName);\n  const channelB = muxB.createStream(channelName);\n  pump(channelA, channelB, channelA, (err) =>\n    logStreamDisconnectWarning(`MetaMask muxed traffic for channel \"${channelName}\" failed.`, err)\n  );\n}\n\n/**\n * Error handler for page to extension stream disconnections\n *\n * @param {string} remoteLabel - Remote stream name\n * @param {Error} err - Stream connection error\n */\nfunction logStreamDisconnectWarning(remoteLabel, err) {\n  let warningMsg = `MetamaskContentscript - lost connection to ${remoteLabel}`;\n  if (err) {\n    warningMsg += `\\n${err.stack}`;\n  }\n  console.warn(warningMsg);\n  console.error(err);\n}\n\n/**\n * This function must ONLY be called in pump destruction/close callbacks.\n * Notifies the inpage context that streams have failed, via window.postMessage.\n * Relies on @metamask/object-multiplex and post-message-stream implementation details.\n */\nfunction notifyProviderOfStreamFailure() {\n  window.postMessage(\n    {\n      target: INPAGE, // the post-message-stream \"target\"\n      data: {\n        // this object gets passed to object-multiplex\n        name: PROVIDER, // the object-multiplex channel name\n        data: {\n          jsonrpc: '2.0',\n          method: 'METAMASK_STREAM_FAILURE'\n        }\n      }\n    },\n    window.location.origin\n  );\n}\n","import { initializeProvider } from '@metamask/inpage-provider';\nimport { WindowPostMessageStream } from '@metamask/post-message-stream';\n\nimport { injectMobile } from './inpage-metamask-mobile';\n\n// MetaMask injection hack\n// Due to https://github.com/MetaMask/metamask-extension/issues/3133\n\n(() => {\n  if (window.ethereum || window.web3) {\n    return;\n  }\n  if (navigator.userAgent.includes('Firefox')) {\n    // setup background connection\n    const metamaskStream = new WindowPostMessageStream({\n      name: 'metamask-inpage',\n      target: 'metamask-contentscript'\n    });\n\n    // this will initialize the provider and set it as window.ethereum\n    initializeProvider({\n      connectionStream: metamaskStream,\n      shouldShimWeb3: true\n    });\n  } else if (navigator.userAgent.includes('iPhone')) {\n    injectMobile();\n  }\n})();\n","var once = require('once')\nvar eos = require('end-of-stream')\nvar fs = require('fs') // we only need fs to get the ReadStream and WriteStream prototypes\n\nvar noop = function () {}\nvar ancient = /^v?\\.0/.test(process.version)\n\nvar isFn = function (fn) {\n  return typeof fn === 'function'\n}\n\nvar isFS = function (stream) {\n  if (!ancient) return false // newer node version do not need to care about fs is a special way\n  if (!fs) return false // browser\n  return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)\n}\n\nvar isRequest = function (stream) {\n  return stream.setHeader && isFn(stream.abort)\n}\n\nvar destroyer = function (stream, reading, writing, callback) {\n  callback = once(callback)\n\n  var closed = false\n  stream.on('close', function () {\n    closed = true\n  })\n\n  eos(stream, {readable: reading, writable: writing}, function (err) {\n    if (err) return callback(err)\n    closed = true\n    callback()\n  })\n\n  var destroyed = false\n  return function (err) {\n    if (closed) return\n    if (destroyed) return\n    destroyed = true\n\n    if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks\n    if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want\n\n    if (isFn(stream.destroy)) return stream.destroy()\n\n    callback(err || new Error('stream was destroyed'))\n  }\n}\n\nvar call = function (fn) {\n  fn()\n}\n\nvar pipe = function (from, to) {\n  return from.pipe(to)\n}\n\nvar pump = function () {\n  var streams = Array.prototype.slice.call(arguments)\n  var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop\n\n  if (Array.isArray(streams[0])) streams = streams[0]\n  if (streams.length < 2) throw new Error('pump requires two streams per minimum')\n\n  var error\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1\n    var writing = i > 0\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err\n      if (err) destroys.forEach(call)\n      if (reading) return\n      destroys.forEach(call)\n      callback(error)\n    })\n  })\n\n  return streams.reduce(pipe)\n}\n\nmodule.exports = pump\n","'use strict';\n\nif (!process.version ||\n    process.version.indexOf('v0.') === 0 ||\n    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n  module.exports = nextTick;\n} else {\n  module.exports = process.nextTick;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('\"callback\" argument must be a function');\n  }\n  var len = arguments.length;\n  var args, i;\n  switch (len) {\n  case 0:\n  case 1:\n    return process.nextTick(fn);\n  case 2:\n    return process.nextTick(function afterTickOne() {\n      fn.call(null, arg1);\n    });\n  case 3:\n    return process.nextTick(function afterTickTwo() {\n      fn.call(null, arg1, arg2);\n    });\n  case 4:\n    return process.nextTick(function afterTickThree() {\n      fn.call(null, arg1, arg2, arg3);\n    });\n  default:\n    args = new Array(len - 1);\n    i = 0;\n    while (i < args.length) {\n      args[i++] = arguments[i];\n    }\n    return process.nextTick(function afterTick() {\n      fn.apply(null, args);\n    });\n  }\n}\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.shimWeb3 = exports.setGlobalProvider = exports.MetaMaskInpageProvider = exports.initializeProvider = void 0;\nconst MetaMaskInpageProvider_1 = __importDefault(require(\"./MetaMaskInpageProvider\"));\nexports.MetaMaskInpageProvider = MetaMaskInpageProvider_1.default;\nconst initializeProvider_1 = require(\"./initializeProvider\");\nObject.defineProperty(exports, \"initializeProvider\", { enumerable: true, get: function () { return initializeProvider_1.initializeProvider; } });\nObject.defineProperty(exports, \"setGlobalProvider\", { enumerable: true, get: function () { return initializeProvider_1.setGlobalProvider; } });\nconst shimWeb3_1 = __importDefault(require(\"./shimWeb3\"));\nexports.shimWeb3 = shimWeb3_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nconst ObjectMultiplex_1 = require(\"./ObjectMultiplex\");\nmodule.exports = ObjectMultiplex_1.ObjectMultiplex;\n//# sourceMappingURL=index.js.map","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n  Object.defineProperty(Function.prototype, 'once', {\n    value: function () {\n      return once(this)\n    },\n    configurable: true\n  })\n\n  Object.defineProperty(Function.prototype, 'onceStrict', {\n    value: function () {\n      return onceStrict(this)\n    },\n    configurable: true\n  })\n})\n\nfunction once (fn) {\n  var f = function () {\n    if (f.called) return f.value\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  f.called = false\n  return f\n}\n\nfunction onceStrict (fn) {\n  var f = function () {\n    if (f.called)\n      throw new Error(f.onceError)\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  var name = fn.name || 'Function wrapped with `once`'\n  f.onceError = name + \" shouldn't be called more than once\"\n  f.called = false\n  return f\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nfunction safeApply(handler, context, args) {\n    try {\n        Reflect.apply(handler, context, args);\n    }\n    catch (err) {\n        // Throw error after timeout so as not to interrupt the stack\n        setTimeout(() => {\n            throw err;\n        });\n    }\n}\nfunction arrayClone(arr) {\n    const n = arr.length;\n    const copy = new Array(n);\n    for (let i = 0; i < n; i += 1) {\n        copy[i] = arr[i];\n    }\n    return copy;\n}\nclass SafeEventEmitter extends events_1.EventEmitter {\n    emit(type, ...args) {\n        let doError = type === 'error';\n        const events = this._events;\n        if (events !== undefined) {\n            doError = doError && events.error === undefined;\n        }\n        else if (!doError) {\n            return false;\n        }\n        // If there is no 'error' event listener then throw.\n        if (doError) {\n            let er;\n            if (args.length > 0) {\n                [er] = args;\n            }\n            if (er instanceof Error) {\n                // Note: The comments on the `throw` lines are intentional, they show\n                // up in Node's output if this results in an unhandled exception.\n                throw er; // Unhandled 'error' event\n            }\n            // At least give some kind of context to the user\n            const err = new Error(`Unhandled error.${er ? ` (${er.message})` : ''}`);\n            err.context = er;\n            throw err; // Unhandled 'error' event\n        }\n        const handler = events[type];\n        if (handler === undefined) {\n            return false;\n        }\n        if (typeof handler === 'function') {\n            safeApply(handler, this, args);\n        }\n        else {\n            const len = handler.length;\n            const listeners = arrayClone(handler);\n            for (let i = 0; i < len; i += 1) {\n                safeApply(listeners[i], this, args);\n            }\n        }\n        return true;\n    }\n}\nexports.default = SafeEventEmitter;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMessageFromCode = exports.serializeError = exports.EthereumProviderError = exports.EthereumRpcError = exports.ethErrors = exports.errorCodes = void 0;\nconst classes_1 = require(\"./classes\");\nObject.defineProperty(exports, \"EthereumRpcError\", { enumerable: true, get: function () { return classes_1.EthereumRpcError; } });\nObject.defineProperty(exports, \"EthereumProviderError\", { enumerable: true, get: function () { return classes_1.EthereumProviderError; } });\nconst utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"serializeError\", { enumerable: true, get: function () { return utils_1.serializeError; } });\nObject.defineProperty(exports, \"getMessageFromCode\", { enumerable: true, get: function () { return utils_1.getMessageFromCode; } });\nconst errors_1 = require(\"./errors\");\nObject.defineProperty(exports, \"ethErrors\", { enumerable: true, get: function () { return errors_1.ethErrors; } });\nconst error_constants_1 = require(\"./error-constants\");\nObject.defineProperty(exports, \"errorCodes\", { enumerable: true, get: function () { return error_constants_1.errorCodes; } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQW9FO0FBVWxFLGlHQVZPLDBCQUFnQixPQVVQO0FBQ2hCLHNHQVh5QiwrQkFBcUIsT0FXekI7QUFWdkIsbUNBRWlCO0FBU2YsK0ZBVkEsc0JBQWMsT0FVQTtBQUNkLG1HQVhnQiwwQkFBa0IsT0FXaEI7QUFUcEIscUNBQXFDO0FBS25DLDBGQUxPLGtCQUFTLE9BS1A7QUFKWCx1REFBK0M7QUFHN0MsMkZBSE8sNEJBQVUsT0FHUCJ9","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EthereumProviderError = exports.EthereumRpcError = void 0;\nconst fast_safe_stringify_1 = require(\"fast-safe-stringify\");\n/**\n * Error subclass implementing JSON RPC 2.0 errors and Ethereum RPC errors\n * per EIP-1474.\n * Permits any integer error code.\n */\nclass EthereumRpcError extends Error {\n    constructor(code, message, data) {\n        if (!Number.isInteger(code)) {\n            throw new Error('\"code\" must be an integer.');\n        }\n        if (!message || typeof message !== 'string') {\n            throw new Error('\"message\" must be a nonempty string.');\n        }\n        super(message);\n        this.code = code;\n        if (data !== undefined) {\n            this.data = data;\n        }\n    }\n    /**\n     * Returns a plain object with all public class properties.\n     */\n    serialize() {\n        const serialized = {\n            code: this.code,\n            message: this.message,\n        };\n        if (this.data !== undefined) {\n            serialized.data = this.data;\n        }\n        if (this.stack) {\n            serialized.stack = this.stack;\n        }\n        return serialized;\n    }\n    /**\n     * Return a string representation of the serialized error, omitting\n     * any circular references.\n     */\n    toString() {\n        return fast_safe_stringify_1.default(this.serialize(), stringifyReplacer, 2);\n    }\n}\nexports.EthereumRpcError = EthereumRpcError;\n/**\n * Error subclass implementing Ethereum Provider errors per EIP-1193.\n * Permits integer error codes in the [ 1000 <= 4999 ] range.\n */\nclass EthereumProviderError extends EthereumRpcError {\n    /**\n     * Create an Ethereum Provider JSON-RPC error.\n     * `code` must be an integer in the 1000 <= 4999 range.\n     */\n    constructor(code, message, data) {\n        if (!isValidEthProviderCode(code)) {\n            throw new Error('\"code\" must be an integer such that: 1000 <= code <= 4999');\n        }\n        super(code, message, data);\n    }\n}\nexports.EthereumProviderError = EthereumProviderError;\n// Internal\nfunction isValidEthProviderCode(code) {\n    return Number.isInteger(code) && code >= 1000 && code <= 4999;\n}\nfunction stringifyReplacer(_, value) {\n    if (value === '[Circular]') {\n        return undefined;\n    }\n    return value;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzc2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZEQUFnRDtBQVNoRDs7OztHQUlHO0FBQ0gsTUFBYSxnQkFBb0IsU0FBUSxLQUFLO0lBTTVDLFlBQVksSUFBWSxFQUFFLE9BQWUsRUFBRSxJQUFRO1FBRWpELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEJBQTRCLENBQzdCLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0NBQXNDLENBQ3ZDLENBQUM7U0FDSDtRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxNQUFNLFVBQVUsR0FBK0I7WUFDN0MsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzNCLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUM3QjtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUMvQjtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyw2QkFBYSxDQUNsQixJQUFJLENBQUMsU0FBUyxFQUFFLEVBQ2hCLGlCQUFpQixFQUNqQixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXRERCw0Q0FzREM7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLHFCQUF5QixTQUFRLGdCQUFtQjtJQUUvRDs7O09BR0c7SUFDSCxZQUFZLElBQVksRUFBRSxPQUFlLEVBQUUsSUFBUTtRQUVqRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FDNUQsQ0FBQztTQUNIO1FBRUQsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBaEJELHNEQWdCQztBQUVELFdBQVc7QUFFWCxTQUFTLHNCQUFzQixDQUFDLElBQVk7SUFDMUMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQztBQUNoRSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxDQUFVLEVBQUUsS0FBYztJQUNuRCxJQUFJLEtBQUssS0FBSyxZQUFZLEVBQUU7UUFDMUIsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMifQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.errorValues = exports.errorCodes = void 0;\nexports.errorCodes = {\n    rpc: {\n        invalidInput: -32000,\n        resourceNotFound: -32001,\n        resourceUnavailable: -32002,\n        transactionRejected: -32003,\n        methodNotSupported: -32004,\n        limitExceeded: -32005,\n        parse: -32700,\n        invalidRequest: -32600,\n        methodNotFound: -32601,\n        invalidParams: -32602,\n        internal: -32603,\n    },\n    provider: {\n        userRejectedRequest: 4001,\n        unauthorized: 4100,\n        unsupportedMethod: 4200,\n        disconnected: 4900,\n        chainDisconnected: 4901,\n    },\n};\nexports.errorValues = {\n    '-32700': {\n        standard: 'JSON RPC 2.0',\n        message: 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',\n    },\n    '-32600': {\n        standard: 'JSON RPC 2.0',\n        message: 'The JSON sent is not a valid Request object.',\n    },\n    '-32601': {\n        standard: 'JSON RPC 2.0',\n        message: 'The method does not exist / is not available.',\n    },\n    '-32602': {\n        standard: 'JSON RPC 2.0',\n        message: 'Invalid method parameter(s).',\n    },\n    '-32603': {\n        standard: 'JSON RPC 2.0',\n        message: 'Internal JSON-RPC error.',\n    },\n    '-32000': {\n        standard: 'EIP-1474',\n        message: 'Invalid input.',\n    },\n    '-32001': {\n        standard: 'EIP-1474',\n        message: 'Resource not found.',\n    },\n    '-32002': {\n        standard: 'EIP-1474',\n        message: 'Resource unavailable.',\n    },\n    '-32003': {\n        standard: 'EIP-1474',\n        message: 'Transaction rejected.',\n    },\n    '-32004': {\n        standard: 'EIP-1474',\n        message: 'Method not supported.',\n    },\n    '-32005': {\n        standard: 'EIP-1474',\n        message: 'Request limit exceeded.',\n    },\n    '4001': {\n        standard: 'EIP-1193',\n        message: 'User rejected the request.',\n    },\n    '4100': {\n        standard: 'EIP-1193',\n        message: 'The requested account and/or method has not been authorized by the user.',\n    },\n    '4200': {\n        standard: 'EIP-1193',\n        message: 'The requested method is not supported by this Ethereum provider.',\n    },\n    '4900': {\n        standard: 'EIP-1193',\n        message: 'The provider is disconnected from all chains.',\n    },\n    '4901': {\n        standard: 'EIP-1193',\n        message: 'The provider is disconnected from the specified chain.',\n    },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9yLWNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1QmEsUUFBQSxVQUFVLEdBQWU7SUFDcEMsR0FBRyxFQUFFO1FBQ0gsWUFBWSxFQUFFLENBQUMsS0FBSztRQUNwQixnQkFBZ0IsRUFBRSxDQUFDLEtBQUs7UUFDeEIsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLO1FBQzNCLG1CQUFtQixFQUFFLENBQUMsS0FBSztRQUMzQixrQkFBa0IsRUFBRSxDQUFDLEtBQUs7UUFDMUIsYUFBYSxFQUFFLENBQUMsS0FBSztRQUNyQixLQUFLLEVBQUUsQ0FBQyxLQUFLO1FBQ2IsY0FBYyxFQUFFLENBQUMsS0FBSztRQUN0QixjQUFjLEVBQUUsQ0FBQyxLQUFLO1FBQ3RCLGFBQWEsRUFBRSxDQUFDLEtBQUs7UUFDckIsUUFBUSxFQUFFLENBQUMsS0FBSztLQUNqQjtJQUNELFFBQVEsRUFBRTtRQUNSLG1CQUFtQixFQUFFLElBQUk7UUFDekIsWUFBWSxFQUFFLElBQUk7UUFDbEIsaUJBQWlCLEVBQUUsSUFBSTtRQUN2QixZQUFZLEVBQUUsSUFBSTtRQUNsQixpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0NBQ0YsQ0FBQztBQUVXLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxjQUFjO1FBQ3hCLE9BQU8sRUFBRSx1R0FBdUc7S0FDakg7SUFDRCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsY0FBYztRQUN4QixPQUFPLEVBQUUsOENBQThDO0tBQ3hEO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLGNBQWM7UUFDeEIsT0FBTyxFQUFFLCtDQUErQztLQUN6RDtJQUNELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxjQUFjO1FBQ3hCLE9BQU8sRUFBRSw4QkFBOEI7S0FDeEM7SUFDRCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsY0FBYztRQUN4QixPQUFPLEVBQUUsMEJBQTBCO0tBQ3BDO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLFVBQVU7UUFDcEIsT0FBTyxFQUFFLGdCQUFnQjtLQUMxQjtJQUNELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLE9BQU8sRUFBRSxxQkFBcUI7S0FDL0I7SUFDRCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUsdUJBQXVCO0tBQ2pDO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLFVBQVU7UUFDcEIsT0FBTyxFQUFFLHVCQUF1QjtLQUNqQztJQUNELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLE9BQU8sRUFBRSx1QkFBdUI7S0FDakM7SUFDRCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUseUJBQXlCO0tBQ25DO0lBQ0QsTUFBTSxFQUFFO1FBQ04sUUFBUSxFQUFFLFVBQVU7UUFDcEIsT0FBTyxFQUFFLDRCQUE0QjtLQUN0QztJQUNELE1BQU0sRUFBRTtRQUNOLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLE9BQU8sRUFBRSwwRUFBMEU7S0FDcEY7SUFDRCxNQUFNLEVBQUU7UUFDTixRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUsa0VBQWtFO0tBQzVFO0lBQ0QsTUFBTSxFQUFFO1FBQ04sUUFBUSxFQUFFLFVBQVU7UUFDcEIsT0FBTyxFQUFFLCtDQUErQztLQUN6RDtJQUNELE1BQU0sRUFBRTtRQUNOLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLE9BQU8sRUFBRSx3REFBd0Q7S0FDbEU7Q0FDRixDQUFDIn0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasePostMessageStream = void 0;\nconst readable_stream_1 = require(\"readable-stream\");\nfunction noop() {\n    return undefined;\n}\nconst SYN = 'SYN';\nconst ACK = 'ACK';\n/**\n * Abstract base class for postMessage streams.\n */\nclass BasePostMessageStream extends readable_stream_1.Duplex {\n    constructor() {\n        super({\n            objectMode: true,\n        });\n        // Initialization flags\n        this._init = false;\n        this._haveSyn = false;\n    }\n    /**\n     * Must be called at end of child constructor to initiate\n     * communication with other end.\n     */\n    _handshake() {\n        // Send synchronization message\n        this._write(SYN, null, noop);\n        this.cork();\n    }\n    _onData(data) {\n        if (this._init) {\n            // Forward message\n            try {\n                this.push(data);\n            }\n            catch (err) {\n                this.emit('error', err);\n            }\n        }\n        else if (data === SYN) {\n            // Listen for handshake\n            this._haveSyn = true;\n            this._write(ACK, null, noop);\n        }\n        else if (data === ACK) {\n            this._init = true;\n            if (!this._haveSyn) {\n                this._write(ACK, null, noop);\n            }\n            this.uncork();\n        }\n    }\n    _read() {\n        return undefined;\n    }\n    _write(data, _encoding, cb) {\n        this._postMessage(data);\n        cb();\n    }\n}\nexports.BasePostMessageStream = BasePostMessageStream;\n//# sourceMappingURL=BasePostMessageStream.js.map","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","const { Duplex } = require('readable-stream');\nconst { inherits } = require('util');\n\nconst noop = () => undefined;\n\nmodule.exports = PostMessageStream;\n\ninherits(PostMessageStream, Duplex);\n\nfunction PostMessageStream(opts) {\n  Duplex.call(this, {\n    objectMode: true\n  });\n\n  this._name = opts.name;\n  this._target = opts.target;\n  this._targetWindow = opts.targetWindow || window;\n  this._origin = opts.targetWindow ? '*' : location.origin;\n\n  // initialization flags\n  this._init = false;\n  this._haveSyn = false;\n\n  window.addEventListener('message', this._onMessage.bind(this), false);\n  // send syncorization message\n  this._write('SYN', null, noop);\n  this.cork();\n}\n\n// private\nPostMessageStream.prototype._onMessage = function (event) {\n  const msg = event.data;\n\n  // validate message\n  if (this._origin !== '*' && event.origin !== this._origin) {\n    return;\n  }\n  if (event.source !== this._targetWindow && window === top) {\n    return;\n  }\n  if (!msg || typeof msg !== 'object') {\n    return;\n  }\n  if (msg.target !== this._name) {\n    return;\n  }\n  if (!msg.data) {\n    return;\n  }\n\n  if (this._init) {\n    // forward message\n    try {\n      this.push(msg.data);\n    } catch (err) {\n      this.emit('error', err);\n    }\n  } else if (msg.data === 'SYN') {\n    this._haveSyn = true;\n    this._write('ACK', null, noop);\n  } else if (msg.data === 'ACK') {\n    this._init = true;\n    if (!this._haveSyn) {\n      this._write('ACK', null, noop);\n    }\n    this.uncork();\n  }\n};\n\n// stream plumbing\nPostMessageStream.prototype._read = noop;\n\nPostMessageStream.prototype._write = function (data, _encoding, cb) {\n  const message = {\n    target: this._target,\n    data\n  };\n  this._targetWindow.postMessage(message, this._origin);\n  cb();\n};\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 });\nconst pump_1 = __importDefault(require(\"pump\"));\nconst json_rpc_engine_1 = require(\"json-rpc-engine\");\nconst json_rpc_middleware_stream_1 = require(\"json-rpc-middleware-stream\");\nconst object_multiplex_1 = __importDefault(require(\"@metamask/object-multiplex\"));\nconst safe_event_emitter_1 = __importDefault(require(\"@metamask/safe-event-emitter\"));\nconst fast_deep_equal_1 = __importDefault(require(\"fast-deep-equal\"));\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nconst is_stream_1 = require(\"is-stream\");\nconst messages_1 = __importDefault(require(\"./messages\"));\nconst siteMetadata_1 = __importDefault(require(\"./siteMetadata\"));\nconst utils_1 = require(\"./utils\");\nclass MetaMaskInpageProvider extends safe_event_emitter_1.default {\n    /**\n     * @param connectionStream - A Node.js duplex stream\n     * @param options - An options bag\n     * @param options.jsonRpcStreamName - The name of the internal JSON-RPC stream.\n     * Default: metamask-provider\n     * @param options.logger - The logging API to use. Default: console\n     * @param options.maxEventListeners - The maximum number of event\n     * listeners. Default: 100\n     * @param options.shouldSendMetadata - Whether the provider should\n     * send page metadata. Default: true\n     */\n    constructor(connectionStream, { jsonRpcStreamName = 'metamask-provider', logger = console, maxEventListeners = 100, shouldSendMetadata = true, } = {}) {\n        if (!is_stream_1.duplex(connectionStream)) {\n            throw new Error(messages_1.default.errors.invalidDuplexStream());\n        }\n        if (typeof maxEventListeners !== 'number' ||\n            typeof shouldSendMetadata !== 'boolean') {\n            throw new Error(messages_1.default.errors.invalidOptions(maxEventListeners, shouldSendMetadata));\n        }\n        validateLoggerObject(logger);\n        super();\n        this._log = logger;\n        this.isMetaMask = true;\n        this.setMaxListeners(maxEventListeners);\n        // private state\n        this._state = {\n            sentWarnings: {\n                // methods\n                enable: false,\n                experimentalMethods: false,\n                send: false,\n                // events\n                events: {\n                    close: false,\n                    data: false,\n                    networkChanged: false,\n                    notification: false,\n                },\n            },\n            accounts: null,\n            isConnected: false,\n            isUnlocked: false,\n            initialized: false,\n            isPermanentlyDisconnected: false,\n        };\n        this._metamask = this._getExperimentalApi();\n        // public state\n        this.selectedAddress = null;\n        this.networkVersion = null;\n        this.chainId = null;\n        // bind functions (to prevent consumers from making unbound calls)\n        this._handleAccountsChanged = this._handleAccountsChanged.bind(this);\n        this._handleConnect = this._handleConnect.bind(this);\n        this._handleChainChanged = this._handleChainChanged.bind(this);\n        this._handleDisconnect = this._handleDisconnect.bind(this);\n        this._handleStreamDisconnect = this._handleStreamDisconnect.bind(this);\n        this._handleUnlockStateChanged = this._handleUnlockStateChanged.bind(this);\n        this._sendSync = this._sendSync.bind(this);\n        this._rpcRequest = this._rpcRequest.bind(this);\n        this._warnOfDeprecation = this._warnOfDeprecation.bind(this);\n        this.enable = this.enable.bind(this);\n        this.request = this.request.bind(this);\n        this.send = this.send.bind(this);\n        this.sendAsync = this.sendAsync.bind(this);\n        // setup connectionStream multiplexing\n        const mux = new object_multiplex_1.default();\n        pump_1.default(connectionStream, mux, connectionStream, this._handleStreamDisconnect.bind(this, 'MetaMask'));\n        // ignore phishing warning message (handled elsewhere)\n        mux.ignoreStream('phishing');\n        // setup own event listeners\n        // EIP-1193 connect\n        this.on('connect', () => {\n            this._state.isConnected = true;\n        });\n        // setup RPC connection\n        const jsonRpcConnection = json_rpc_middleware_stream_1.createStreamMiddleware();\n        pump_1.default(jsonRpcConnection.stream, mux.createStream(jsonRpcStreamName), jsonRpcConnection.stream, this._handleStreamDisconnect.bind(this, 'MetaMask RpcProvider'));\n        // handle RPC requests via dapp-side rpc engine\n        const rpcEngine = new json_rpc_engine_1.JsonRpcEngine();\n        rpcEngine.push(json_rpc_engine_1.createIdRemapMiddleware());\n        rpcEngine.push(utils_1.createErrorMiddleware(this._log));\n        rpcEngine.push(jsonRpcConnection.middleware);\n        this._rpcEngine = rpcEngine;\n        this._initializeState();\n        // handle JSON-RPC notifications\n        jsonRpcConnection.events.on('notification', (payload) => {\n            const { method, params } = payload;\n            if (method === 'metamask_accountsChanged') {\n                this._handleAccountsChanged(params);\n            }\n            else if (method === 'metamask_unlockStateChanged') {\n                this._handleUnlockStateChanged(params);\n            }\n            else if (method === 'metamask_chainChanged') {\n                this._handleChainChanged(params);\n            }\n            else if (utils_1.EMITTED_NOTIFICATIONS.includes(method)) {\n                // deprecated\n                // emitted here because that was the original order\n                this.emit('data', payload);\n                this.emit('message', {\n                    type: method,\n                    data: params,\n                });\n                // deprecated\n                this.emit('notification', payload.params.result);\n            }\n            else if (method === 'METAMASK_STREAM_FAILURE') {\n                connectionStream.destroy(new Error(messages_1.default.errors.permanentlyDisconnected()));\n            }\n        });\n        // miscellanea\n        // send website metadata\n        if (shouldSendMetadata) {\n            if (document.readyState === 'complete') {\n                siteMetadata_1.default(this._rpcEngine, this._log);\n            }\n            else {\n                const domContentLoadedHandler = () => {\n                    siteMetadata_1.default(this._rpcEngine, this._log);\n                    window.removeEventListener('DOMContentLoaded', domContentLoadedHandler);\n                };\n                window.addEventListener('DOMContentLoaded', domContentLoadedHandler);\n            }\n        }\n    }\n    //====================\n    // Public Methods\n    //====================\n    /**\n     * Returns whether the provider can process RPC requests.\n     */\n    isConnected() {\n        return this._state.isConnected;\n    }\n    /**\n     * Submits an RPC request for the given method, with the given params.\n     * Resolves with the result of the method call, or rejects on error.\n     *\n     * @param args - The RPC request arguments.\n     * @param args.method - The RPC method name.\n     * @param args.params - The parameters for the RPC method.\n     * @returns A Promise that resolves with the result of the RPC method,\n     * or rejects if an error is encountered.\n     */\n    async request(args) {\n        if (!args || typeof args !== 'object' || Array.isArray(args)) {\n            throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n                message: messages_1.default.errors.invalidRequestArgs(),\n                data: args,\n            });\n        }\n        const { method, params } = args;\n        if (typeof method !== 'string' || method.length === 0) {\n            throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n                message: messages_1.default.errors.invalidRequestMethod(),\n                data: args,\n            });\n        }\n        if (params !== undefined && !Array.isArray(params) &&\n            (typeof params !== 'object' || params === null)) {\n            throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n                message: messages_1.default.errors.invalidRequestParams(),\n                data: args,\n            });\n        }\n        return new Promise((resolve, reject) => {\n            this._rpcRequest({ method, params }, utils_1.getRpcPromiseCallback(resolve, reject));\n        });\n    }\n    /**\n     * Submits an RPC request per the given JSON-RPC request object.\n     *\n     * @param payload - The RPC request object.\n     * @param cb - The callback function.\n     */\n    sendAsync(payload, callback) {\n        this._rpcRequest(payload, callback);\n    }\n    /**\n     * We override the following event methods so that we can warn consumers\n     * about deprecated events:\n     *   addListener, on, once, prependListener, prependOnceListener\n     */\n    addListener(eventName, listener) {\n        this._warnOfDeprecation(eventName);\n        return super.addListener(eventName, listener);\n    }\n    on(eventName, listener) {\n        this._warnOfDeprecation(eventName);\n        return super.on(eventName, listener);\n    }\n    once(eventName, listener) {\n        this._warnOfDeprecation(eventName);\n        return super.once(eventName, listener);\n    }\n    prependListener(eventName, listener) {\n        this._warnOfDeprecation(eventName);\n        return super.prependListener(eventName, listener);\n    }\n    prependOnceListener(eventName, listener) {\n        this._warnOfDeprecation(eventName);\n        return super.prependOnceListener(eventName, listener);\n    }\n    //====================\n    // Private Methods\n    //====================\n    /**\n     * Constructor helper.\n     * Populates initial state by calling 'metamask_getProviderState' and emits\n     * necessary events.\n     */\n    async _initializeState() {\n        try {\n            const { accounts, chainId, isUnlocked, networkVersion, } = await this.request({\n                method: 'metamask_getProviderState',\n            });\n            // indicate that we've connected, for EIP-1193 compliance\n            this.emit('connect', { chainId });\n            this._handleChainChanged({ chainId, networkVersion });\n            this._handleUnlockStateChanged({ accounts, isUnlocked });\n            this._handleAccountsChanged(accounts);\n        }\n        catch (error) {\n            this._log.error('MetaMask: Failed to get initial state. Please report this bug.', error);\n        }\n        finally {\n            this._state.initialized = true;\n            this.emit('_initialized');\n        }\n    }\n    /**\n     * Internal RPC method. Forwards requests to background via the RPC engine.\n     * Also remap ids inbound and outbound.\n     *\n     * @param payload - The RPC request object.\n     * @param callback - The consumer's callback.\n     */\n    _rpcRequest(payload, callback) {\n        let cb = callback;\n        if (!Array.isArray(payload)) {\n            if (!payload.jsonrpc) {\n                payload.jsonrpc = '2.0';\n            }\n            if (payload.method === 'eth_accounts' ||\n                payload.method === 'eth_requestAccounts') {\n                // handle accounts changing\n                cb = (err, res) => {\n                    this._handleAccountsChanged(res.result || [], payload.method === 'eth_accounts');\n                    callback(err, res);\n                };\n            }\n            return this._rpcEngine.handle(payload, cb);\n        }\n        return this._rpcEngine.handle(payload, cb);\n    }\n    /**\n     * When the provider becomes connected, updates internal state and emits\n     * required events. Idempotent.\n     *\n     * @param chainId - The ID of the newly connected chain.\n     * @emits MetaMaskInpageProvider#connect\n     */\n    _handleConnect(chainId) {\n        if (!this._state.isConnected) {\n            this._state.isConnected = true;\n            this.emit('connect', { chainId });\n            this._log.debug(messages_1.default.info.connected(chainId));\n        }\n    }\n    /**\n     * When the provider becomes disconnected, updates internal state and emits\n     * required events. Idempotent with respect to the isRecoverable parameter.\n     *\n     * Error codes per the CloseEvent status codes as required by EIP-1193:\n     * https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n     *\n     * @param isRecoverable - Whether the disconnection is recoverable.\n     * @param errorMessage - A custom error message.\n     * @emits MetaMaskInpageProvider#disconnect\n     */\n    _handleDisconnect(isRecoverable, errorMessage) {\n        if (this._state.isConnected ||\n            (!this._state.isPermanentlyDisconnected && !isRecoverable)) {\n            this._state.isConnected = false;\n            let error;\n            if (isRecoverable) {\n                error = new eth_rpc_errors_1.EthereumRpcError(1013, // Try again later\n                errorMessage || messages_1.default.errors.disconnected());\n                this._log.debug(error);\n            }\n            else {\n                error = new eth_rpc_errors_1.EthereumRpcError(1011, // Internal error\n                errorMessage || messages_1.default.errors.permanentlyDisconnected());\n                this._log.error(error);\n                this.chainId = null;\n                this.networkVersion = null;\n                this._state.accounts = null;\n                this.selectedAddress = null;\n                this._state.isUnlocked = false;\n                this._state.isPermanentlyDisconnected = true;\n            }\n            this.emit('disconnect', error);\n            this.emit('close', error); // deprecated\n        }\n    }\n    /**\n     * Called when connection is lost to critical streams.\n     *\n     * @emits MetamaskInpageProvider#disconnect\n     */\n    _handleStreamDisconnect(streamName, error) {\n        utils_1.logStreamDisconnectWarning(this._log, streamName, error, this);\n        this._handleDisconnect(false, error ? error.message : undefined);\n    }\n    /**\n     * Upon receipt of a new chainId and networkVersion, emits corresponding\n     * events and sets relevant public state.\n     * Does nothing if neither the chainId nor the networkVersion are different\n     * from existing values.\n     *\n     * @emits MetamaskInpageProvider#chainChanged\n     * @param networkInfo - An object with network info.\n     * @param networkInfo.chainId - The latest chain ID.\n     * @param networkInfo.networkVersion - The latest network ID.\n     */\n    _handleChainChanged({ chainId, networkVersion, } = {}) {\n        if (!chainId || typeof chainId !== 'string' || !chainId.startsWith('0x') ||\n            !networkVersion || typeof networkVersion !== 'string') {\n            this._log.error('MetaMask: Received invalid network parameters. Please report this bug.', { chainId, networkVersion });\n            return;\n        }\n        if (networkVersion === 'loading') {\n            this._handleDisconnect(true);\n        }\n        else {\n            this._handleConnect(chainId);\n            if (chainId !== this.chainId) {\n                this.chainId = chainId;\n                if (this._state.initialized) {\n                    this.emit('chainChanged', this.chainId);\n                }\n            }\n            if (networkVersion !== this.networkVersion) {\n                this.networkVersion = networkVersion;\n                if (this._state.initialized) {\n                    this.emit('networkChanged', this.networkVersion);\n                }\n            }\n        }\n    }\n    /**\n     * Called when accounts may have changed. Diffs the new accounts value with\n     * the current one, updates all state as necessary, and emits the\n     * accountsChanged event.\n     *\n     * @param accounts - The new accounts value.\n     * @param isEthAccounts - Whether the accounts value was returned by\n     * a call to eth_accounts.\n     */\n    _handleAccountsChanged(accounts, isEthAccounts = false) {\n        let _accounts = accounts;\n        if (!Array.isArray(accounts)) {\n            this._log.error('MetaMask: Received invalid accounts parameter. Please report this bug.', accounts);\n            _accounts = [];\n        }\n        for (const account of accounts) {\n            if (typeof account !== 'string') {\n                this._log.error('MetaMask: Received non-string account. Please report this bug.', accounts);\n                _accounts = [];\n                break;\n            }\n        }\n        // emit accountsChanged if anything about the accounts array has changed\n        if (!fast_deep_equal_1.default(this._state.accounts, _accounts)) {\n            // we should always have the correct accounts even before eth_accounts\n            // returns\n            if (isEthAccounts && this._state.accounts !== null) {\n                this._log.error(`MetaMask: 'eth_accounts' unexpectedly updated accounts. Please report this bug.`, _accounts);\n            }\n            this._state.accounts = _accounts;\n            // handle selectedAddress\n            if (this.selectedAddress !== _accounts[0]) {\n                this.selectedAddress = _accounts[0] || null;\n            }\n            // finally, after all state has been updated, emit the event\n            if (this._state.initialized) {\n                this.emit('accountsChanged', _accounts);\n            }\n        }\n    }\n    /**\n     * Upon receipt of a new isUnlocked state, sets relevant public state.\n     * Calls the accounts changed handler with the received accounts, or an empty\n     * array.\n     *\n     * Does nothing if the received value is equal to the existing value.\n     * There are no lock/unlock events.\n     *\n     * @param opts - Options bag.\n     * @param opts.accounts - The exposed accounts, if any.\n     * @param opts.isUnlocked - The latest isUnlocked value.\n     */\n    _handleUnlockStateChanged({ accounts, isUnlocked, } = {}) {\n        if (typeof isUnlocked !== 'boolean') {\n            this._log.error('MetaMask: Received invalid isUnlocked parameter. Please report this bug.');\n            return;\n        }\n        if (isUnlocked !== this._state.isUnlocked) {\n            this._state.isUnlocked = isUnlocked;\n            this._handleAccountsChanged(accounts || []);\n        }\n    }\n    /**\n     * Warns of deprecation for the given event, if applicable.\n     */\n    _warnOfDeprecation(eventName) {\n        if (this._state.sentWarnings.events[eventName] === false) {\n            this._log.warn(messages_1.default.warnings.events[eventName]);\n            this._state.sentWarnings.events[eventName] = true;\n        }\n    }\n    /**\n     * Constructor helper.\n     * Gets experimental _metamask API as Proxy, so that we can warn consumers\n     * about its experiment nature.\n     */\n    _getExperimentalApi() {\n        return new Proxy({\n            /**\n             * Determines if MetaMask is unlocked by the user.\n             *\n             * @returns Promise resolving to true if MetaMask is currently unlocked\n             */\n            isUnlocked: async () => {\n                if (!this._state.initialized) {\n                    await new Promise((resolve) => {\n                        this.on('_initialized', () => resolve());\n                    });\n                }\n                return this._state.isUnlocked;\n            },\n            /**\n             * Make a batch RPC request.\n             */\n            requestBatch: async (requests) => {\n                if (!Array.isArray(requests)) {\n                    throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n                        message: 'Batch requests must be made with an array of request objects.',\n                        data: requests,\n                    });\n                }\n                return new Promise((resolve, reject) => {\n                    this._rpcRequest(requests, utils_1.getRpcPromiseCallback(resolve, reject));\n                });\n            },\n        }, {\n            get: (obj, prop, ...args) => {\n                if (!this._state.sentWarnings.experimentalMethods) {\n                    this._log.warn(messages_1.default.warnings.experimentalMethods);\n                    this._state.sentWarnings.experimentalMethods = true;\n                }\n                return Reflect.get(obj, prop, ...args);\n            },\n        });\n    }\n    //====================\n    // Deprecated Methods\n    //====================\n    /**\n     * Equivalent to: ethereum.request('eth_requestAccounts')\n     *\n     * @deprecated Use request({ method: 'eth_requestAccounts' }) instead.\n     * @returns A promise that resolves to an array of addresses.\n     */\n    enable() {\n        if (!this._state.sentWarnings.enable) {\n            this._log.warn(messages_1.default.warnings.enableDeprecation);\n            this._state.sentWarnings.enable = true;\n        }\n        return new Promise((resolve, reject) => {\n            try {\n                this._rpcRequest({ method: 'eth_requestAccounts', params: [] }, utils_1.getRpcPromiseCallback(resolve, reject));\n            }\n            catch (error) {\n                reject(error);\n            }\n        });\n    }\n    send(methodOrPayload, callbackOrArgs) {\n        if (!this._state.sentWarnings.send) {\n            this._log.warn(messages_1.default.warnings.sendDeprecation);\n            this._state.sentWarnings.send = true;\n        }\n        if (typeof methodOrPayload === 'string' &&\n            (!callbackOrArgs || Array.isArray(callbackOrArgs))) {\n            return new Promise((resolve, reject) => {\n                try {\n                    this._rpcRequest({ method: methodOrPayload, params: callbackOrArgs }, utils_1.getRpcPromiseCallback(resolve, reject, false));\n                }\n                catch (error) {\n                    reject(error);\n                }\n            });\n        }\n        else if (methodOrPayload &&\n            typeof methodOrPayload === 'object' &&\n            typeof callbackOrArgs === 'function') {\n            return this._rpcRequest(methodOrPayload, callbackOrArgs);\n        }\n        return this._sendSync(methodOrPayload);\n    }\n    /**\n     * Internal backwards compatibility method, used in send.\n     *\n     * @deprecated\n     */\n    _sendSync(payload) {\n        let result;\n        switch (payload.method) {\n            case 'eth_accounts':\n                result = this.selectedAddress ? [this.selectedAddress] : [];\n                break;\n            case 'eth_coinbase':\n                result = this.selectedAddress || null;\n                break;\n            case 'eth_uninstallFilter':\n                this._rpcRequest(payload, utils_1.NOOP);\n                result = true;\n                break;\n            case 'net_version':\n                result = this.networkVersion || null;\n                break;\n            default:\n                throw new Error(messages_1.default.errors.unsupportedSync(payload.method));\n        }\n        return {\n            id: payload.id,\n            jsonrpc: payload.jsonrpc,\n            result,\n        };\n    }\n}\nexports.default = MetaMaskInpageProvider;\nfunction validateLoggerObject(logger) {\n    if (logger !== console) {\n        if (typeof logger === 'object') {\n            const methodKeys = ['log', 'warn', 'error', 'debug', 'info', 'trace'];\n            for (const key of methodKeys) {\n                if (typeof logger[key] !== 'function') {\n                    throw new Error(messages_1.default.errors.invalidLoggerMethod(key));\n                }\n            }\n            return;\n        }\n        throw new Error(messages_1.default.errors.invalidLoggerObject());\n    }\n}\n//# sourceMappingURL=MetaMaskInpageProvider.js.map","var once = require('once');\n\nvar noop = function() {};\n\nvar isRequest = function(stream) {\n\treturn stream.setHeader && typeof stream.abort === 'function';\n};\n\nvar isChildProcess = function(stream) {\n\treturn stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3\n};\n\nvar eos = function(stream, opts, callback) {\n\tif (typeof opts === 'function') return eos(stream, null, opts);\n\tif (!opts) opts = {};\n\n\tcallback = once(callback || noop);\n\n\tvar ws = stream._writableState;\n\tvar rs = stream._readableState;\n\tvar readable = opts.readable || (opts.readable !== false && stream.readable);\n\tvar writable = opts.writable || (opts.writable !== false && stream.writable);\n\tvar cancelled = false;\n\n\tvar onlegacyfinish = function() {\n\t\tif (!stream.writable) onfinish();\n\t};\n\n\tvar onfinish = function() {\n\t\twritable = false;\n\t\tif (!readable) callback.call(stream);\n\t};\n\n\tvar onend = function() {\n\t\treadable = false;\n\t\tif (!writable) callback.call(stream);\n\t};\n\n\tvar onexit = function(exitCode) {\n\t\tcallback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);\n\t};\n\n\tvar onerror = function(err) {\n\t\tcallback.call(stream, err);\n\t};\n\n\tvar onclose = function() {\n\t\tprocess.nextTick(onclosenexttick);\n\t};\n\n\tvar onclosenexttick = function() {\n\t\tif (cancelled) return;\n\t\tif (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));\n\t\tif (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));\n\t};\n\n\tvar onrequest = function() {\n\t\tstream.req.on('finish', onfinish);\n\t};\n\n\tif (isRequest(stream)) {\n\t\tstream.on('complete', onfinish);\n\t\tstream.on('abort', onclose);\n\t\tif (stream.req) onrequest();\n\t\telse stream.on('request', onrequest);\n\t} else if (writable && !ws) { // legacy streams\n\t\tstream.on('end', onlegacyfinish);\n\t\tstream.on('close', onlegacyfinish);\n\t}\n\n\tif (isChildProcess(stream)) stream.on('exit', onexit);\n\n\tstream.on('end', onend);\n\tstream.on('finish', onfinish);\n\tif (opts.error !== false) stream.on('error', onerror);\n\tstream.on('close', onclose);\n\n\treturn function() {\n\t\tcancelled = true;\n\t\tstream.removeListener('complete', onfinish);\n\t\tstream.removeListener('abort', onclose);\n\t\tstream.removeListener('request', onrequest);\n\t\tif (stream.req) stream.req.removeListener('finish', onfinish);\n\t\tstream.removeListener('end', onlegacyfinish);\n\t\tstream.removeListener('close', onlegacyfinish);\n\t\tstream.removeListener('finish', onfinish);\n\t\tstream.removeListener('exit', onexit);\n\t\tstream.removeListener('end', onend);\n\t\tstream.removeListener('error', onerror);\n\t\tstream.removeListener('close', onclose);\n\t};\n};\n\nmodule.exports = eos;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUniqueId = void 0;\n// uint32 (two's complement) max\n// more conservative than Number.MAX_SAFE_INTEGER\nconst MAX = 4294967295;\nlet idCounter = Math.floor(Math.random() * MAX);\nfunction getUniqueId() {\n    idCounter = (idCounter + 1) % MAX;\n    return idCounter;\n}\nexports.getUniqueId = getUniqueId;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0VW5pcXVlSWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0VW5pcXVlSWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0NBQWdDO0FBQ2hDLGlEQUFpRDtBQUNqRCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7QUFDdkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFFaEQsU0FBZ0IsV0FBVztJQUN6QixTQUFTLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2xDLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFIRCxrQ0FHQyJ9","\"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.JsonRpcEngine = void 0;\nconst safe_event_emitter_1 = __importDefault(require(\"@metamask/safe-event-emitter\"));\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\n/**\n * A JSON-RPC request and response processor.\n * Give it a stack of middleware, pass it requests, and get back responses.\n */\nclass JsonRpcEngine extends safe_event_emitter_1.default {\n    constructor() {\n        super();\n        this._middleware = [];\n    }\n    /**\n     * Add a middleware function to the engine's middleware stack.\n     *\n     * @param middleware - The middleware function to add.\n     */\n    push(middleware) {\n        this._middleware.push(middleware);\n    }\n    handle(req, cb) {\n        if (cb && typeof cb !== 'function') {\n            throw new Error('\"callback\" must be a function if provided.');\n        }\n        if (Array.isArray(req)) {\n            if (cb) {\n                return this._handleBatch(req, cb);\n            }\n            return this._handleBatch(req);\n        }\n        if (cb) {\n            return this._handle(req, cb);\n        }\n        return this._promiseHandle(req);\n    }\n    /**\n     * Returns this engine as a middleware function that can be pushed to other\n     * engines.\n     *\n     * @returns This engine as a middleware function.\n     */\n    asMiddleware() {\n        return async (req, res, next, end) => {\n            try {\n                const [middlewareError, isComplete, returnHandlers,] = await JsonRpcEngine._runAllMiddleware(req, res, this._middleware);\n                if (isComplete) {\n                    await JsonRpcEngine._runReturnHandlers(returnHandlers);\n                    return end(middlewareError);\n                }\n                return next(async (handlerCallback) => {\n                    try {\n                        await JsonRpcEngine._runReturnHandlers(returnHandlers);\n                    }\n                    catch (error) {\n                        return handlerCallback(error);\n                    }\n                    return handlerCallback();\n                });\n            }\n            catch (error) {\n                return end(error);\n            }\n        };\n    }\n    async _handleBatch(reqs, cb) {\n        // The order here is important\n        try {\n            // 2. Wait for all requests to finish, or throw on some kind of fatal\n            // error\n            const responses = await Promise.all(\n            // 1. Begin executing each request in the order received\n            reqs.map(this._promiseHandle.bind(this)));\n            // 3. Return batch response\n            if (cb) {\n                return cb(null, responses);\n            }\n            return responses;\n        }\n        catch (error) {\n            if (cb) {\n                return cb(error);\n            }\n            throw error;\n        }\n    }\n    /**\n     * A promise-wrapped _handle.\n     */\n    _promiseHandle(req) {\n        return new Promise((resolve) => {\n            this._handle(req, (_err, res) => {\n                // There will always be a response, and it will always have any error\n                // that is caught and propagated.\n                resolve(res);\n            });\n        });\n    }\n    /**\n     * Ensures that the request object is valid, processes it, and passes any\n     * error and the response object to the given callback.\n     *\n     * Does not reject.\n     */\n    async _handle(callerReq, cb) {\n        if (!callerReq ||\n            Array.isArray(callerReq) ||\n            typeof callerReq !== 'object') {\n            const error = new eth_rpc_errors_1.EthereumRpcError(eth_rpc_errors_1.errorCodes.rpc.invalidRequest, `Requests must be plain objects. Received: ${typeof callerReq}`, { request: callerReq });\n            return cb(error, { id: undefined, jsonrpc: '2.0', error });\n        }\n        if (typeof callerReq.method !== 'string') {\n            const error = new eth_rpc_errors_1.EthereumRpcError(eth_rpc_errors_1.errorCodes.rpc.invalidRequest, `Must specify a string method. Received: ${typeof callerReq.method}`, { request: callerReq });\n            return cb(error, { id: callerReq.id, jsonrpc: '2.0', error });\n        }\n        const req = Object.assign({}, callerReq);\n        const res = {\n            id: req.id,\n            jsonrpc: req.jsonrpc,\n        };\n        let error = null;\n        try {\n            await this._processRequest(req, res);\n        }\n        catch (_error) {\n            // A request handler error, a re-thrown middleware error, or something\n            // unexpected.\n            error = _error;\n        }\n        if (error) {\n            // Ensure no result is present on an errored response\n            delete res.result;\n            if (!res.error) {\n                res.error = eth_rpc_errors_1.serializeError(error);\n            }\n        }\n        return cb(error, res);\n    }\n    /**\n     * For the given request and response, runs all middleware and their return\n     * handlers, if any, and ensures that internal request processing semantics\n     * are satisfied.\n     */\n    async _processRequest(req, res) {\n        const [error, isComplete, returnHandlers,] = await JsonRpcEngine._runAllMiddleware(req, res, this._middleware);\n        // Throw if \"end\" was not called, or if the response has neither a result\n        // nor an error.\n        JsonRpcEngine._checkForCompletion(req, res, isComplete);\n        // The return handlers should run even if an error was encountered during\n        // middleware processing.\n        await JsonRpcEngine._runReturnHandlers(returnHandlers);\n        // Now we re-throw the middleware processing error, if any, to catch it\n        // further up the call chain.\n        if (error) {\n            throw error;\n        }\n    }\n    /**\n     * Serially executes the given stack of middleware.\n     *\n     * @returns An array of any error encountered during middleware execution,\n     * a boolean indicating whether the request was completed, and an array of\n     * middleware-defined return handlers.\n     */\n    static async _runAllMiddleware(req, res, middlewareStack) {\n        const returnHandlers = [];\n        let error = null;\n        let isComplete = false;\n        // Go down stack of middleware, call and collect optional returnHandlers\n        for (const middleware of middlewareStack) {\n            [error, isComplete] = await JsonRpcEngine._runMiddleware(req, res, middleware, returnHandlers);\n            if (isComplete) {\n                break;\n            }\n        }\n        return [error, isComplete, returnHandlers.reverse()];\n    }\n    /**\n     * Runs an individual middleware.\n     *\n     * @returns An array of any error encountered during middleware exection,\n     * and a boolean indicating whether the request should end.\n     */\n    static _runMiddleware(req, res, middleware, returnHandlers) {\n        return new Promise((resolve) => {\n            const end = (err) => {\n                const error = err || res.error;\n                if (error) {\n                    res.error = eth_rpc_errors_1.serializeError(error);\n                }\n                // True indicates that the request should end\n                resolve([error, true]);\n            };\n            const next = (returnHandler) => {\n                if (res.error) {\n                    end(res.error);\n                }\n                else {\n                    if (returnHandler) {\n                        if (typeof returnHandler !== 'function') {\n                            end(new eth_rpc_errors_1.EthereumRpcError(eth_rpc_errors_1.errorCodes.rpc.internal, `JsonRpcEngine: \"next\" return handlers must be functions. ` +\n                                `Received \"${typeof returnHandler}\" for request:\\n${jsonify(req)}`, { request: req }));\n                        }\n                        returnHandlers.push(returnHandler);\n                    }\n                    // False indicates that the request should not end\n                    resolve([null, false]);\n                }\n            };\n            try {\n                middleware(req, res, next, end);\n            }\n            catch (error) {\n                end(error);\n            }\n        });\n    }\n    /**\n     * Serially executes array of return handlers. The request and response are\n     * assumed to be in their scope.\n     */\n    static async _runReturnHandlers(handlers) {\n        for (const handler of handlers) {\n            await new Promise((resolve, reject) => {\n                handler((err) => (err ? reject(err) : resolve()));\n            });\n        }\n    }\n    /**\n     * Throws an error if the response has neither a result nor an error, or if\n     * the \"isComplete\" flag is falsy.\n     */\n    static _checkForCompletion(req, res, isComplete) {\n        if (!('result' in res) && !('error' in res)) {\n            throw new eth_rpc_errors_1.EthereumRpcError(eth_rpc_errors_1.errorCodes.rpc.internal, `JsonRpcEngine: Response has no error or result for request:\\n${jsonify(req)}`, { request: req });\n        }\n        if (!isComplete) {\n            throw new eth_rpc_errors_1.EthereumRpcError(eth_rpc_errors_1.errorCodes.rpc.internal, `JsonRpcEngine: Nothing ended request:\\n${jsonify(req)}`, { request: req });\n        }\n    }\n}\nexports.JsonRpcEngine = JsonRpcEngine;\nfunction jsonify(request) {\n    return JSON.stringify(request, null, 2);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSnNvblJwY0VuZ2luZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Kc29uUnBjRW5naW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHNGQUE0RDtBQUM1RCxtREFBOEU7QUF1RjlFOzs7R0FHRztBQUNILE1BQWEsYUFBYyxTQUFRLDRCQUFnQjtJQUdqRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLENBQU8sVUFBbUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBaUQsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUEyQ0QsTUFBTSxDQUFDLEdBQVksRUFBRSxFQUFRO1FBQzNCLElBQUksRUFBRSxJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRTtZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxFQUFFLEVBQUU7Z0JBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNuQztZQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQjtRQUVELElBQUksRUFBRSxFQUFFO1lBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQThCLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBOEIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVk7UUFDVixPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNuQyxJQUFJ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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializeError = exports.isValidCode = exports.getMessageFromCode = exports.JSON_RPC_SERVER_ERROR_MESSAGE = void 0;\nconst error_constants_1 = require(\"./error-constants\");\nconst classes_1 = require(\"./classes\");\nconst FALLBACK_ERROR_CODE = error_constants_1.errorCodes.rpc.internal;\nconst FALLBACK_MESSAGE = 'Unspecified error message. This is a bug, please report it.';\nconst FALLBACK_ERROR = {\n    code: FALLBACK_ERROR_CODE,\n    message: getMessageFromCode(FALLBACK_ERROR_CODE),\n};\nexports.JSON_RPC_SERVER_ERROR_MESSAGE = 'Unspecified server error.';\n/**\n * Gets the message for a given code, or a fallback message if the code has\n * no corresponding message.\n */\nfunction getMessageFromCode(code, fallbackMessage = FALLBACK_MESSAGE) {\n    if (Number.isInteger(code)) {\n        const codeString = code.toString();\n        if (hasKey(error_constants_1.errorValues, codeString)) {\n            return error_constants_1.errorValues[codeString].message;\n        }\n        if (isJsonRpcServerError(code)) {\n            return exports.JSON_RPC_SERVER_ERROR_MESSAGE;\n        }\n    }\n    return fallbackMessage;\n}\nexports.getMessageFromCode = getMessageFromCode;\n/**\n * Returns whether the given code is valid.\n * A code is only valid if it has a message.\n */\nfunction isValidCode(code) {\n    if (!Number.isInteger(code)) {\n        return false;\n    }\n    const codeString = code.toString();\n    if (error_constants_1.errorValues[codeString]) {\n        return true;\n    }\n    if (isJsonRpcServerError(code)) {\n        return true;\n    }\n    return false;\n}\nexports.isValidCode = isValidCode;\n/**\n * Serializes the given error to an Ethereum JSON RPC-compatible error object.\n * Merely copies the given error's values if it is already compatible.\n * If the given error is not fully compatible, it will be preserved on the\n * returned object's data.originalError property.\n */\nfunction serializeError(error, { fallbackError = FALLBACK_ERROR, shouldIncludeStack = false, } = {}) {\n    var _a, _b;\n    if (!fallbackError ||\n        !Number.isInteger(fallbackError.code) ||\n        typeof fallbackError.message !== 'string') {\n        throw new Error('Must provide fallback error with integer number code and string message.');\n    }\n    if (error instanceof classes_1.EthereumRpcError) {\n        return error.serialize();\n    }\n    const serialized = {};\n    if (error &&\n        typeof error === 'object' &&\n        !Array.isArray(error) &&\n        hasKey(error, 'code') &&\n        isValidCode(error.code)) {\n        const _error = error;\n        serialized.code = _error.code;\n        if (_error.message && typeof _error.message === 'string') {\n            serialized.message = _error.message;\n            if (hasKey(_error, 'data')) {\n                serialized.data = _error.data;\n            }\n        }\n        else {\n            serialized.message = getMessageFromCode(serialized.code);\n            serialized.data = { originalError: assignOriginalError(error) };\n        }\n    }\n    else {\n        serialized.code = fallbackError.code;\n        const message = (_a = error) === null || _a === void 0 ? void 0 : _a.message;\n        serialized.message = (message && typeof message === 'string'\n            ? message\n            : fallbackError.message);\n        serialized.data = { originalError: assignOriginalError(error) };\n    }\n    const stack = (_b = error) === null || _b === void 0 ? void 0 : _b.stack;\n    if (shouldIncludeStack && error && stack && typeof stack === 'string') {\n        serialized.stack = stack;\n    }\n    return serialized;\n}\nexports.serializeError = serializeError;\n// Internal\nfunction isJsonRpcServerError(code) {\n    return code >= -32099 && code <= -32000;\n}\nfunction assignOriginalError(error) {\n    if (error && typeof error === 'object' && !Array.isArray(error)) {\n        return Object.assign({}, error);\n    }\n    return error;\n}\nfunction hasKey(obj, key) {\n    return Object.prototype.hasOwnProperty.call(obj, key);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQTREO0FBQzVELHVDQUF5RTtBQUV6RSxNQUFNLG1CQUFtQixHQUFHLDRCQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUNwRCxNQUFNLGdCQUFnQixHQUFHLDZEQUE2RCxDQUFDO0FBQ3ZGLE1BQU0sY0FBYyxHQUErQjtJQUNqRCxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQztDQUNqRCxDQUFDO0FBRVcsUUFBQSw2QkFBNkIsR0FBRywyQkFBMkIsQ0FBQztBQUl6RTs7O0dBR0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsSUFBWSxFQUNaLGtCQUEwQixnQkFBZ0I7SUFFMUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVuQyxJQUFJLE1BQU0sQ0FBQyw2QkFBVyxFQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sNkJBQVcsQ0FBQyxVQUEyQixDQUFDLENBQUMsT0FBTyxDQUFDO1NBQ3pEO1FBQ0QsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QixPQUFPLHFDQUE2QixDQUFDO1NBQ3RDO0tBQ0Y7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBZkQsZ0RBZUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixXQUFXLENBQUMsSUFBWTtJQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLElBQUksNkJBQVcsQ0FBQyxVQUEy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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst messages = {\n    errors: {\n        disconnected: () => 'MetaMask: Disconnected from chain. Attempting to connect.',\n        permanentlyDisconnected: () => 'MetaMask: Disconnected from MetaMask background. Page reload required.',\n        sendSiteMetadata: () => `MetaMask: Failed to send site metadata. This is an internal error, please report this bug.`,\n        unsupportedSync: (method) => `MetaMask: The MetaMask Ethereum provider does not support synchronous methods like ${method} without a callback parameter.`,\n        invalidDuplexStream: () => 'Must provide a Node.js-style duplex stream.',\n        invalidOptions: (maxEventListeners, shouldSendMetadata) => `Invalid options. Received: { maxEventListeners: ${maxEventListeners}, shouldSendMetadata: ${shouldSendMetadata} }`,\n        invalidRequestArgs: () => `Expected a single, non-array, object argument.`,\n        invalidRequestMethod: () => `'args.method' must be a non-empty string.`,\n        invalidRequestParams: () => `'args.params' must be an object or array if provided.`,\n        invalidLoggerObject: () => `'args.logger' must be an object if provided.`,\n        invalidLoggerMethod: (method) => `'args.logger' must include required method '${method}'.`,\n    },\n    info: {\n        connected: (chainId) => `MetaMask: Connected to chain with ID \"${chainId}\".`,\n    },\n    warnings: {\n        // deprecated methods\n        enableDeprecation: `MetaMask: 'ethereum.enable()' is deprecated and may be removed in the future. Please use the 'eth_requestAccounts' RPC method instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1102`,\n        sendDeprecation: `MetaMask: 'ethereum.send(...)' is deprecated and may be removed in the future. Please use 'ethereum.sendAsync(...)' or 'ethereum.request(...)' instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193`,\n        // deprecated events\n        events: {\n            close: `MetaMask: The event 'close' is deprecated and may be removed in the future. Please use 'disconnect' instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193#disconnect`,\n            data: `MetaMask: The event 'data' is deprecated and will be removed in the future. Use 'message' instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193#message`,\n            networkChanged: `MetaMask: The event 'networkChanged' is deprecated and may be removed in the future. Use 'chainChanged' instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193#chainchanged`,\n            notification: `MetaMask: The event 'notification' is deprecated and may be removed in the future. Use 'message' instead.\\nFor more information, see: https://eips.ethereum.org/EIPS/eip-1193#message`,\n        },\n        // misc\n        experimentalMethods: `MetaMask: 'ethereum._metamask' exposes non-standard, experimental methods. They may be removed or changed without warning.`,\n    },\n};\nexports.default = messages;\n//# sourceMappingURL=messages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EMITTED_NOTIFICATIONS = exports.NOOP = exports.logStreamDisconnectWarning = exports.getRpcPromiseCallback = exports.createErrorMiddleware = void 0;\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\n// utility functions\n/**\n * json-rpc-engine middleware that logs RPC errors and and validates req.method.\n *\n * @param log - The logging API to use.\n * @returns  json-rpc-engine middleware function\n */\nfunction createErrorMiddleware(log) {\n    return (req, res, next) => {\n        // json-rpc-engine will terminate the request when it notices this error\n        if (typeof req.method !== 'string' || !req.method) {\n            res.error = eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n                message: `The request 'method' must be a non-empty string.`,\n                data: req,\n            });\n        }\n        next((done) => {\n            const { error } = res;\n            if (!error) {\n                return done();\n            }\n            log.error(`MetaMask - RPC Error: ${error.message}`, error);\n            return done();\n        });\n    };\n}\nexports.createErrorMiddleware = createErrorMiddleware;\n// resolve response.result or response, reject errors\nconst getRpcPromiseCallback = (resolve, reject, unwrapResult = true) => (error, response) => {\n    if (error || response.error) {\n        reject(error || response.error);\n    }\n    else {\n        !unwrapResult || Array.isArray(response)\n            ? resolve(response)\n            : resolve(response.result);\n    }\n};\nexports.getRpcPromiseCallback = getRpcPromiseCallback;\n/**\n * Logs a stream disconnection error. Emits an 'error' if given an\n * EventEmitter that has listeners for the 'error' event.\n *\n * @param log - The logging API to use.\n * @param remoteLabel - The label of the disconnected stream.\n * @param error - The associated error to log.\n * @param emitter - The logging API to use.\n */\nfunction logStreamDisconnectWarning(log, remoteLabel, error, emitter) {\n    let warningMsg = `MetaMask: Lost connection to \"${remoteLabel}\".`;\n    if (error === null || error === void 0 ? void 0 : error.stack) {\n        warningMsg += `\\n${error.stack}`;\n    }\n    log.warn(warningMsg);\n    if (emitter && emitter.listenerCount('error') > 0) {\n        emitter.emit('error', warningMsg);\n    }\n}\nexports.logStreamDisconnectWarning = logStreamDisconnectWarning;\nconst NOOP = () => undefined;\nexports.NOOP = NOOP;\n// constants\nexports.EMITTED_NOTIFICATIONS = [\n    'eth_subscription',\n];\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * If no existing window.web3 is found, this function injects a web3 \"shim\" to\n * not break dapps that rely on window.web3.currentProvider.\n *\n * @param provider - The provider to set as window.web3.currentProvider.\n * @param log - The logging API to use.\n */\nfunction shimWeb3(provider, log = console) {\n    let loggedCurrentProvider = false;\n    let loggedMissingProperty = false;\n    if (!window.web3) {\n        const SHIM_IDENTIFIER = '__isMetaMaskShim__';\n        let web3Shim = { currentProvider: provider };\n        Object.defineProperty(web3Shim, SHIM_IDENTIFIER, {\n            value: true,\n            enumerable: true,\n            configurable: false,\n            writable: false,\n        });\n        web3Shim = new Proxy(web3Shim, {\n            get: (target, property, ...args) => {\n                if (property === 'currentProvider' && !loggedCurrentProvider) {\n                    loggedCurrentProvider = true;\n                    log.warn('You are accessing the MetaMask window.web3.currentProvider shim. This property is deprecated; use window.ethereum instead. For details, see: https://docs.metamask.io/guide/provider-migration.html#replacing-window-web3');\n                }\n                else if (property !== SHIM_IDENTIFIER && !loggedMissingProperty) {\n                    loggedMissingProperty = true;\n                    log.error(`MetaMask no longer injects web3. For details, see: https://docs.metamask.io/guide/provider-migration.html#replacing-window-web3`);\n                    provider.request({ method: 'metamask_logWeb3ShimUsage' })\n                        .catch((error) => {\n                        log.debug('MetaMask: Failed to log web3 shim usage.', error);\n                    });\n                }\n                return Reflect.get(target, property, ...args);\n            },\n            set: (...args) => {\n                log.warn('You are accessing the MetaMask window.web3 shim. This object is deprecated; use window.ethereum instead. For details, see: https://docs.metamask.io/guide/provider-migration.html#replacing-window-web3');\n                return Reflect.set(...args);\n            },\n        });\n        Object.defineProperty(window, 'web3', {\n            value: web3Shim,\n            enumerable: false,\n            configurable: true,\n            writable: true,\n        });\n    }\n}\nexports.default = shimWeb3;\n//# sourceMappingURL=shimWeb3.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n// TODO(bmeurer): Change this back to const once hole checks are\n// properly optimized away early in Ignition+TurboFan.\n/*<replacement>*/\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') {\n    return emitter.prependListener(event, fn);\n  } else {\n    // This is a hack to make sure that our error handler is attached before any\n    // userland ones.  NEVER DO THIS. This is here only because this code needs\n    // to continue to work with older versions of Node.js that do not include\n    // the prependListener() method. The goal is to eventually remove this hack.\n    if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n  }\n}\n\nfunction ReadableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n\n  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  var hwm = options.highWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  this._readableState = new ReadableState(options, this);\n\n  // legacy\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  this.push(null);\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      stream.emit('error', er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        stream.emit('error', new Error('stream.push() after EOF'));\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n    }\n  }\n\n  return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    stream.emit('data', chunk);\n    stream.read(0);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes.  This is to work around cases where hwm=0,\n// such as the repl.  Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  this._readableState.decoder = new StringDecoder(enc);\n  this._readableState.encoding = enc;\n  return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = true;\n    n = 0;\n  } else {\n    state.length -= n;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n\n  // emit 'readable' now to make sure it gets picked up.\n  emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  debug('emit readable');\n  stream.emit('readable');\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    processNextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  var len = state.length;\n  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;else len = state.length;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  // If the user pushes more data while we're writing to dest then we'll end up\n  // in ondata again. However, we only want to increase awaitDrain once because\n  // dest will only emit one 'drain' event for the multiple writes.\n  // => Introduce a guard on increasing awaitDrain.\n  var increasedAwaitDrain = false;\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    increasedAwaitDrain = false;\n    var ret = dest.write(chunk);\n    if (false === ret && !increasedAwaitDrain) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', src._readableState.awaitDrain);\n        src._readableState.awaitDrain++;\n        increasedAwaitDrain = true;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function () {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = { hasUnpiped: false };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, unpipeInfo);\n    }return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n  dest.emit('unpipe', this, unpipeInfo);\n\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n\n  if (ev === 'data') {\n    // Start flowing on next tick if stream isn't explicitly paused\n    if (this._readableState.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    var state = this._readableState;\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.emittedReadable = false;\n      if (!state.reading) {\n        processNextTick(nReadingNextTick, this);\n      } else if (state.length) {\n        emitReadable(this);\n      }\n    }\n  }\n\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    state.flowing = true;\n    resume(this, state);\n  }\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    processNextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  if (!state.reading) {\n    debug('resume read 0');\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  state.awaitDrain = 0;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (false !== this._readableState.flowing) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var state = this._readableState;\n  var paused = false;\n\n  var self = this;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) self.push(chunk);\n    }\n\n    self.push(null);\n  });\n\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = self.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function (method) {\n        return function () {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  self._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = fromListPartial(n, state.buffer, state.decoder);\n  }\n\n  return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n  var ret;\n  if (n < list.head.data.length) {\n    // slice is the same for buffers and strings\n    ret = list.head.data.slice(0, n);\n    list.head.data = list.head.data.slice(n);\n  } else if (n === list.head.data.length) {\n    // first chunk is a perfect match\n    ret = list.shift();\n  } else {\n    // result spans more than one buffer\n    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n  }\n  return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n  var p = list.head;\n  var c = 1;\n  var ret = p.data;\n  n -= ret.length;\n  while (p = p.next) {\n    var str = p.data;\n    var nb = n > str.length ? str.length : n;\n    if (nb === str.length) ret += str;else ret += str.slice(0, n);\n    n -= nb;\n    if (n === 0) {\n      if (nb === str.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = str.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n  var ret = Buffer.allocUnsafe(n);\n  var p = list.head;\n  var c = 1;\n  p.data.copy(ret);\n  n -= p.data.length;\n  while (p = p.next) {\n    var buf = p.data;\n    var nb = n > buf.length ? buf.length : n;\n    buf.copy(ret, ret.length - n, 0, nb);\n    n -= nb;\n    if (n === 0) {\n      if (nb === buf.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = buf.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n\n  // If we get here before consuming all the bytes, then that is a\n  // bug in node.  Should never happen.\n  if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    processNextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n  }\n}\n\nfunction forEach(xs, f) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    f(xs[i], i);\n  }\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n      processNextTick(emitErrorNT, this, err);\n    }\n    return;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      processNextTick(emitErrorNT, _this, err);\n      if (_this._writableState) {\n        _this._writableState.errorEmitted = true;\n      }\n    } else if (cb) {\n      cb(err);\n    }\n  });\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n\n  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  var hwm = options.highWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function () {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function (object) {\n      if (realHasInstance.call(this, object)) return true;\n\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function (object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n    return new Writable(options);\n  }\n\n  this._writableState = new WritableState(options, this);\n\n  // legacy.\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n\n    if (typeof options.writev === 'function') this._writev = options.writev;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new Error('write after end');\n  // TODO: defer error events consistently everywhere, not just the cb\n  stream.emit('error', er);\n  processNextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var valid = true;\n  var er = false;\n\n  if (chunk === null) {\n    er = new TypeError('May not write null values to stream');\n  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  if (er) {\n    stream.emit('error', er);\n    processNextTick(cb, er);\n    valid = false;\n  }\n  return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = _isUint8Array(chunk) && !state.objectMode;\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n  if (typeof cb !== 'function') cb = nop;\n\n  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  var state = this._writableState;\n\n  state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n\n    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n\n  state.length += len;\n\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    processNextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    processNextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n\n  onwriteStateUpdate(state);\n\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state);\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      /*<replacement>*/\n      asyncWrite(afterWrite, stream, state, finished, cb);\n      /*</replacement>*/\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequestCount = 0;\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      stream.emit('error', err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function') {\n      state.pendingcb++;\n      state.finalCalled = true;\n      processNextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n    }\n  }\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n  if (state.corkedRequestsFree) {\n    state.corkedRequestsFree.next = corkReq;\n  } else {\n    state.corkedRequestsFree = corkReq;\n  }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  get: function () {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  this.end();\n  cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction TransformState(stream) {\n  this.afterTransform = function (er, data) {\n    return afterTransform(stream, er, data);\n  };\n\n  this.needTransform = false;\n  this.transforming = false;\n  this.writecb = null;\n  this.writechunk = null;\n  this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n  var ts = stream._transformState;\n  ts.transforming = false;\n\n  var cb = ts.writecb;\n\n  if (!cb) {\n    return stream.emit('error', new Error('write callback called multiple times'));\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n\n  if (data !== null && data !== undefined) stream.push(data);\n\n  cb(er);\n\n  var rs = stream._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    stream._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n\n  Duplex.call(this, options);\n\n  this._transformState = new TransformState(this);\n\n  var stream = this;\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.once('prefinish', function () {\n    if (typeof this._flush === 'function') this._flush(function (er, data) {\n      done(stream, er, data);\n    });else done(stream);\n  });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  var _this = this;\n\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n    _this.emit('close');\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n\n  if (data !== null && data !== undefined) stream.push(data);\n\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  var ws = stream._writableState;\n  var ts = stream._transformState;\n\n  if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n  if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n  return stream.push(null);\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEDICATED_WORKER_NAME = void 0;\nexports.DEDICATED_WORKER_NAME = 'dedicatedWorker';\n//# sourceMappingURL=enums.js.map"],"sourceRoot":""}