diff --git a/CHANGELOG.md b/CHANGELOG.md index 516fa40cdf..f40cf0a035 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [2.0.27](https://github.com/webtorrent/webtorrent/compare/v2.0.26...v2.0.27) (2023-05-31) + + +### Bug Fixes + +* **deps:** update dependency lt_donthave to v2 ([#2555](https://github.com/webtorrent/webtorrent/issues/2555)) ([21e5007](https://github.com/webtorrent/webtorrent/commit/21e5007e111de492ce46c6d858c7b4a6b05523af)) + ## [2.0.26](https://github.com/webtorrent/webtorrent/compare/v2.0.25...v2.0.26) (2023-05-31) diff --git a/dist/webtorrent.chromeapp.js b/dist/webtorrent.chromeapp.js index 7b58a12507..4b022ac19a 100644 --- a/dist/webtorrent.chromeapp.js +++ b/dist/webtorrent.chromeapp.js @@ -1,2 +1,2 @@ -var e={5249:(e,t,n)=>{var r=n(8768);const i=n(7460),s=n(9539),o=n(7187),a=s.debuglog("http");function h(e){if(!(this instanceof h))return new h(e);o.call(this);var t=this;t.defaultPort=80,t.protocol="http:",t.options=s._extend({},e),t.options.path=null,t.requests={},t.sockets={},t.freeSockets={},t.keepAliveMsecs=t.options.keepAliveMsecs||1e3,t.keepAlive=t.options.keepAlive||!1,t.maxSockets=t.options.maxSockets||h.defaultMaxSockets,t.maxFreeSockets=t.options.maxFreeSockets||256,t.on("free",(function(e,n){var r=t.getName(n);if(a("agent.on(free)",r),e.writable&&t.requests[r]&&t.requests[r].length)t.requests[r].shift().onSocket(e),0===t.requests[r].length&&delete t.requests[r];else{var i=e._httpMessage;if(i&&i.shouldKeepAlive&&e.writable&&t.keepAlive){var s=t.freeSockets[r],o=s?s.length:0,h=o;t.sockets[r]&&(h+=t.sockets[r].length),h>t.maxSockets||o>=t.maxFreeSockets?e.destroy():(s=s||[],t.freeSockets[r]=s,e.setKeepAlive(!0,t.keepAliveMsecs),e.unref(),e._httpMessage=null,t.removeSocket(e,n),s.push(e))}else e.destroy()}}))}s.inherits(h,o),t.Agent=h,h.defaultMaxSockets=1/0,h.prototype.createConnection=i.createConnection,h.prototype.getName=function(e){var t=e.host||"localhost";return t+=":",e.port&&(t+=e.port),t+=":",e.localAddress&&(t+=e.localAddress),4!==e.family&&6!==e.family||(t+=":"+e.family),t},h.prototype.addRequest=function(e,t){"string"==typeof t&&(t={host:t,port:arguments[2],localAddress:arguments[3]}),t=s._extend({},t),t=s._extend(t,this.options);var n=this.getName(t);this.sockets[n]||(this.sockets[n]=[]);var i=this.freeSockets[n]?this.freeSockets[n].length:0,o=i+this.sockets[n].length;if(i){var h=this.freeSockets[n].shift();a("have free socket"),this.freeSockets[n].length||delete this.freeSockets[n],h.ref(),e.onSocket(h),this.sockets[n].push(h)}else o{var r=n(8768);const i=n(9539),s=n(7460),o=n(8575),a=n(772).HTTPParser,h=n(8583).ok,c=n(2390),l=c.httpSocketSetup,u=c.parsers,d=c.freeParser,f=c.debug,p=n(1088).OutgoingMessage,g=n(5249),_=n(8764).Buffer;function m(e,t){var n=this;if(p.call(n),"string"==typeof e){if(!(e=o.parse(e)).hostname)throw new Error("Unable to determine the domain name")}else e=i._extend({},e);var a=e.agent,h=e._defaultAgent||g.globalAgent;!1===a?a=new h.constructor:null==a&&"function"!=typeof e.createConnection&&(a=h),n.agent=a;var l=e.protocol||h.protocol,u=h.protocol;if(n.agent&&n.agent.protocol&&(u=n.agent.protocol),e.path&&/ /.test(e.path))throw new TypeError("Request path contains unescaped characters");if(l!==u)throw new Error('Protocol "'+l+'" not supported. Expected "'+u+'"');const d=e.defaultPort||n.agent&&n.agent.defaultPort;var m=e.port=e.port||d||80,y=e.host=e.hostname||e.host||"localhost";if(void 0===e.setHost)var b=!0;n.socketPath=e.socketPath;var w=n.method=(e.method||"GET").toUpperCase();if(!c._checkIsHttpToken(w))throw new TypeError("Method must be a valid HTTP token");if(n.path=e.path||"/",t&&n.once("response",t),!Array.isArray(e.headers)){if(e.headers)for(var v=Object.keys(e.headers),k=0,E=v.length;k0?(n.upgradeOrConnect=!0,t.emit("agentRemove"),t.removeListener("close",w),t.removeListener("error",v),t._readableState.flowing=null,n.emit(c,o,t,a),n.emit("close")):t.destroy(),d(r,n,t)}else r.incoming&&r.incoming.complete&&100!==r.incoming.statusCode&&(t.removeListener("data",x),t.removeListener("end",E),d(r,n,t))}function S(e,t){var n=this.socket,r=n._httpMessage;if(r.domain&&!e.domain&&(f('setting "res.domain"'),e.domain=r.domain),f("AGENT incoming response!"),!r.res){if(r.res=e,"CONNECT"===r.method)return e.upgrade=!0,2;var i="HEAD"===r.method;return f("AGENT isHeadResponse",i),100===e.statusCode?(delete r.res,r.emit("continue"),!0):(!r.shouldKeepAlive||t||r.upgradeOrConnect||(r.shouldKeepAlive=!1),r.res=e,e.req=r,e.on("end",A),r.on("prefinish",C),r.emit("response",e)||e._dump(),i)}n.destroy()}function T(e,t){var n=t.socket;t.shouldKeepAlive?(f("AGENT socket keep-alive"),t.timeoutCb&&(n.setTimeout(0,t.timeoutCb),t.timeoutCb=null),n.removeListener("close",w),n.removeListener("error",v),n.once("error",k),r.nextTick(I,n)):(n.writable&&(f("AGENT socket.destroySoon()"),n.destroySoon()),h(!n.writable))}function A(){const e=this.req;e._ended=!0,e.shouldKeepAlive&&!e.finished||T(0,e)}function C(){const e=this;this.res;e.shouldKeepAlive&&e._ended&&T(0,e)}function I(e){e.emit("free")}function P(e,t){e.aborted?t.emit("free"):function(e,t){var n=u.alloc();e.socket=t,e.connection=t,n.reinitialize(a.RESPONSE),n.socket=t,n.incoming=null,n.outgoing=e,e.parser=n,t.parser=n,t._httpMessage=e,l(t),"number"==typeof e.maxHeadersCount?n.maxHeaderPairs=e.maxHeadersCount<<1:n.maxHeaderPairs=2e3,n.onIncoming=S,t.removeListener("error",k),t.on("error",v),t.on("data",x),t.on("end",E),t.on("close",w),e.emit("socket",t)}(e,t)}i.inherits(m,p),t.ClientRequest=m,m.prototype.aborted=void 0,m.prototype._finish=function(){p.prototype._finish.call(this)},m.prototype._implicitHeader=function(){this._storeHeader(this.method+" "+this.path+" HTTP/1.1\r\n",this._renderHeaders())},m.prototype.abort=function(){void 0===this.aborted&&r.nextTick(y,this),this.aborted=Date.now(),this.res?this.res._dump():this.once("response",(function(e){e._dump()})),this.socket&&this.socket.destroy()},m.prototype.onSocket=function(e){r.nextTick(P,this,e)},m.prototype._deferToConnect=function(e,t,n){var r=this;function i(){e&&r.socket[e].apply(r.socket,t),"function"==typeof n&&n()}var s=function(){r.socket.writable?i():r.socket.once("connect",i)};r.socket?s():r.once("socket",s)},m.prototype.setTimeout=function(e,t){t&&this.once("timeout",t);var n=this;function r(){n.emit("timeout")}if(this.socket&&this.socket.writable)return this.timeoutCb&&this.socket.setTimeout(0,this.timeoutCb),this.timeoutCb=r,this.socket.setTimeout(e,r),this;if(this.timeoutCb=r,this.socket){var i=this.socket;return this.socket.once("connect",(function(){i.setTimeout(e,r)})),this}return this.once("socket",(function(t){t.setTimeout(e,r)})),this},m.prototype.setNoDelay=function(){const e=arguments.length,t=new Array(e);for(var n=0;n{const r=n(772),i=r.methods,s=r.HTTPParser,o=n(3245).FreeList,a=n(7243),h=a.IncomingMessage,c=a.readStart,l=a.readStop,u=n(9539).debuglog("http");t.debug=u,t.CRLF="\r\n",t.chunkExpression=/chunk/i,t.continueExpression=/100-continue/i,t.methods=i;const d=0|s.kOnHeaders,f=0|s.kOnHeadersComplete,p=0|s.kOnBody,g=0|s.kOnMessageComplete,_=0|s.kOnExecute;function m(e,t){(this.maxHeaderPairs<=0||this._headers.length0&&(d=Math.min(d,u.maxHeaderPairs)),u.incoming._addHeaderLines(n,d),"number"==typeof r?u.incoming.method=i[r]:(u.incoming.statusCode=o,u.incoming.statusMessage=a),!c||null===u.outgoing||void 0!==u.outgoing._headers.upgrade&&/(^|\W)upgrade(\W|$)/i.test(u.outgoing._headers.connection)||(c=!1),u.incoming.upgrade=c;var f=0;return c||(f=u.onIncoming(u.incoming,l)),"number"!=typeof f?f?1:0:f}function b(e,t,n){var r=this.incoming;if(r){var i=r.socket;if(n>0&&!r._dumped){var s=e.slice(t,t+n);r.push(s)||l(i)}}}function w(){var e=this,t=e.incoming;if(t){t.complete=!0;var n=e._headers;n&&(e.incoming._addHeaderLines(n,n.length),e._headers=[],e._url=""),t.push(null)}c(e.socket)}var v=new o("parsers",1e3,(function(){var e=new s(s.REQUEST);return e._headers=[],e._url="",e._consumed=!1,e.socket=null,e.incoming=null,e.outgoing=null,e[d]=m,e[f]=y,e[p]=b,e[g]=w,e[_]=null,e}));function k(){this._httpMessage&&this._httpMessage.emit("drain")}function E(e){return e>=94&&e<=122||(e>=65&&e<=90||(45===e||(e>=48&&e<=57||34!==e&&40!==e&&41!==e&&44!==e&&(e>=33&&e<=46||(124===e||126===e)))))}t.parsers=v,t.freeParser=function(e,t,n){e&&(e._headers=[],e.onIncoming=null,e._consumed&&e.unconsume(),e._consumed=!1,e.socket&&(e.socket.parser=null),e.socket=null,e.incoming=null,e.outgoing=null,e[_]=null,!1===v.free(e)&&e.close(),e=null),t&&(t.parser=null),n&&(n.parser=null)},t.httpSocketSetup=function(e){e.removeListener("drain",k),e.on("drain",k)},t._checkIsHttpToken=function(e){if("string"!=typeof e||0===e.length)return!1;if(!E(e.charCodeAt(0)))return!1;const t=e.length;if(t>1){if(!E(e.charCodeAt(1)))return!1;if(t>2){if(!E(e.charCodeAt(2)))return!1;if(t>3){if(!E(e.charCodeAt(3)))return!1;for(var n=4;n255||127===t)return!0;if(e.length<2)return!1;if((t=e.charCodeAt(1))<=31&&9!==t||t>255||127===t)return!0;if(e.length<3)return!1;if((t=e.charCodeAt(2))<=31&&9!==t||t>255||127===t)return!0;for(var n=3;n255||127===t)return!0;return!1}},7243:(e,t,n)=>{const r=n(9539),i=n(1451);function s(e){e&&!e._paused&&e.readable&&e.resume()}function o(e){i.Readable.call(this),this._readableState.readingMore=!0,this.socket=e,this.connection=e,this.httpVersionMajor=null,this.httpVersionMinor=null,this.httpVersion=null,this.complete=!1,this.headers={},this.rawHeaders=[],this.trailers={},this.rawTrailers=[],this.readable=!0,this.upgrade=null,this.url="",this.method=null,this.statusCode=null,this.statusMessage=null,this.client=e,this._consuming=!1,this._dumped=!1}t.readStart=s,t.readStop=function(e){e&&e.pause()},r.inherits(o,i.Readable),t.IncomingMessage=o,o.prototype.setTimeout=function(e,t){return t&&this.on("timeout",t),this.socket.setTimeout(e),this},o.prototype.read=function(e){return this._consuming||(this._readableState.readingMore=!1),this._consuming=!0,this.read=i.Readable.prototype.read,this.read(e)},o.prototype._read=function(e){this.socket.readable&&s(this.socket)},o.prototype.destroy=function(e){this.socket&&this.socket.destroy(e)},o.prototype._addHeaderLines=function(e,t){if(e&&e.length){var n,r;this.complete?(n=this.rawTrailers,r=this.trailers):(n=this.rawHeaders,r=this.headers);for(var i=0;i{var r=n(8768);const i=n(8583).ok,s=n(1451),o=n(5475),a=n(9539),h=a,c=n(8764).Buffer,l=n(2390),u=l.CRLF,d=l.chunkExpression,f=l.debug,p=/^Connection$/i,g=/^Transfer-Encoding$/i,_=/close/i,m=/^Content-Length$/i,y=/^Date$/i,b=/^Expect$/i,w=/^Trailer$/i,v={connection:!0,"content-length":!0,"transfer-encoding":!0,date:!0};var k;function E(){if(!k){var e=new Date;k=e.toUTCString(),o.enroll(E,1e3-e.getMilliseconds()),o._unrefActive(E)}return k}function x(){s.call(this),this.output=[],this.outputEncodings=[],this.outputCallbacks=[],this.outputSize=0,this.writable=!0,this._last=!1,this.chunkedEncoding=!1,this.shouldKeepAlive=!0,this.useChunkedEncodingByDefault=!0,this.sendDate=!1,this._removedHeader={},this._contentLength=null,this._hasBody=!0,this._trailer="",this.finished=!1,this._headerSent=!1,this.socket=null,this.connection=null,this._header=null,this._headers=null,this._headerNames={},this._onPendingData=null}function S(e,t,n,r){if(!l._checkIsHttpToken(n))throw new TypeError('Header name must be a valid HTTP Token ["'+n+'"]');if(!0===l._checkInvalidHeaderChar(r))throw new TypeError("The header content contains invalid characters");t.messageHeader+=n+": "+C(r)+u,p.test(n)?(t.sentConnectionHeader=!0,_.test(r)?e._last=!0:e.shouldKeepAlive=!0):g.test(n)?(t.sentTransferEncodingHeader=!0,d.test(r)&&(e.chunkedEncoding=!0)):m.test(n)?t.sentContentLengthHeader=!0:y.test(n)?t.sentDateHeader=!0:b.test(n)?t.sentExpect=!0:w.test(n)&&(t.sentTrailer=!0)}function T(e,t,n){e.emit("error",t),n&&n(t)}function A(e){e.uncork()}function C(e){return/[\r\n]/.test(e)?e.replace(/[\r\n]+[ \t]*/g,""):e}E._onTimeout=function(){k=void 0},a.inherits(x,s),t.OutgoingMessage=x,x.prototype.setTimeout=function(e,t){return t&&this.on("timeout",t),this.socket?this.socket.setTimeout(e):this.once("socket",(function(t){t.setTimeout(e)})),this},x.prototype.destroy=function(e){this.socket?this.socket.destroy(e):this.once("socket",(function(t){t.destroy(e)}))},x.prototype._send=function(e,t,n){return this._headerSent||("string"==typeof e&&"hex"!==t&&"base64"!==t?e=this._header+e:(this.output.unshift(this._header),this.outputEncodings.unshift("binary"),this.outputCallbacks.unshift(null),this.outputSize+=this._header.length,"function"==typeof this._onPendingData&&this._onPendingData(this._header.length)),this._headerSent=!0),this._writeRaw(e,t,n)},x.prototype._writeRaw=function(e,t,n){"function"==typeof t&&(n=t,t=null);var i=this.connection;if(i&&i._httpMessage===this&&i.writable&&!i.destroyed){if(this.output.length>0)this._flushOutput(i);else if(0===e.length)return"function"==typeof n&&r.nextTick(n),!0;return i.write(e,t,n)}return(!i||!i.destroyed)&&this._buffer(e,t,n)},x.prototype._buffer=function(e,t,n){return this.output.push(e),this.outputEncodings.push(t),this.outputCallbacks.push(n),this.outputSize+=e.length,"function"==typeof this._onPendingData&&this._onPendingData(e.length),!1},x.prototype._storeHeader=function(e,t){var n={sentConnectionHeader:!1,sentContentLengthHeader:!1,sentTransferEncodingHeader:!1,sentDateHeader:!1,sentExpect:!1,sentTrailer:!1,messageHeader:e};if(t)for(var r,i,s=Object.keys(t),o=Array.isArray(t),a=0,h=s.length;a{this.emit("finish")};return r=this._hasBody&&this.chunkedEncoding?this._send("0\r\n"+this._trailer+"\r\n","binary",i):this._send("","binary",i),this.connection&&e&&this.connection.uncork(),this.finished=!0,f("outgoing message end."),0===this.output.length&&this.connection&&this.connection._httpMessage===this&&this._finish(),r},x.prototype._finish=function(){i(this.connection),this.emit("prefinish")},x.prototype._flush=function(){var e,t=this.socket;t&&t.writable&&(e=this._flushOutput(t),this.finished?this._finish():e&&this.emit("drain"))},x.prototype._flushOutput=function(e){var t,n=this.output.length;if(n<=0)return t;var r=this.output,i=this.outputEncodings,s=this.outputCallbacks;e.cork();for(var o=0;o{const r=n(9539),i=n(7460),s=n(772).HTTPParser,o=n(8583).ok,a=n(2390),h=a.parsers,c=a.freeParser,l=a.debug,u=a.CRLF,d=a.continueExpression,f=a.chunkExpression,p=a.httpSocketSetup,g=n(1088).OutgoingMessage,_=t.STATUS_CODES={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"},m=0|s.kOnExecute;function y(e){g.call(this),"HEAD"===e.method&&(this._hasBody=!1),this.sendDate=!0,(e.httpVersionMajor<1||e.httpVersionMinor<1)&&(this.useChunkedEncodingByDefault=f.test(e.headers.te),this.shouldKeepAlive=!1)}function b(){this._httpMessage&&this._httpMessage.emit("close")}function w(e){if(!(this instanceof w))return new w(e);i.Server.call(this,{allowHalfOpen:!0}),e&&this.addListener("request",e),this.httpAllowHalfOpen=!1,this.addListener("connection",v),this.timeout=12e4,this._pendingResponseData=0}function v(e){var t=this,n=[],r=[],i=0;function a(t){if(i+=t,e._paused&&i=e._writableState.highWaterMark)&&(e._paused=!0,e.pause())}var c=new y(s);c._onPendingData=a,c.shouldKeepAlive=h,e._httpMessage?n.push(c):c.assignSocket(e);c.on("finish",(function(){o(0===r.length||r[0]===s),r.shift(),s._consuming||s._readableState.resumeScheduled||s._dump();if(c.detachSocket(e),c._last)e.destroySoon();else{var t=n.shift();t&&t.assignSocket(e)}})),void 0!==s.headers.expect&&1==s.httpVersionMajor&&1==s.httpVersionMinor?d.test(s.headers.expect)?(c._expect_continue=!0,t.listenerCount("checkContinue")>0?t.emit("checkContinue",s,c):(c.writeContinue(),t.emit("request",s,c))):t.listenerCount("checkExpectation")>0?t.emit("checkExpectation",s,c):(c.writeHead(417),c.end()):t.emit("request",s,c);return!1},e.on("end",T),e.on("data",w),e.on("resume",k),e.on("pause",E),e.on("drain",A),e.on=S;var _=e._handle&&e._handle._externalStream;function b(e){this.removeListener("error",b),this.on("error",(()=>{})),t.emit("clientError",e,this)||this.destroy(e)}function w(t){o(!e._paused),l("SERVER socketOnData %d",t.length),v(g.execute(t),t)}function v(n,r){if(n instanceof Error)l("parse error"),b.call(e,n);else if(g.incoming&&g.incoming.upgrade){var i=n,s=g.incoming;l("SERVER upgrade or connect",s.method),r||(r=g.getCurrentBuffer()),e.removeListener("data",w),e.removeListener("end",T),e.removeListener("close",f),x(g,e),g.finish(),c(g,s,null),g=null;var o="CONNECT"===s.method?"connect":"upgrade";if(t.listenerCount(o)>0){l("SERVER have listener for %s",o);var a=r.slice(i,r.length);e._readableState.flowing=null,t.emit(o,s,e,a)}else e.destroy()}e._paused&&e.parser&&(l("pause parser"),e.parser.pause())}function T(){var e=this,r=g.finish();if(r instanceof Error)return l("parse error"),void b.call(e,r);t.httpAllowHalfOpen?n.length?n[n.length-1]._last=!0:e._httpMessage?e._httpMessage._last=!0:e.writable&&e.end():(u(),e.writable&&e.end())}function A(){var t=i>e._writableState.highWaterMark;e._paused&&!t&&(e._paused=!1,e.parser&&e.parser.resume(),e.resume())}_&&(g._consumed=!0,g.consume(_)),_=null,g[m]=function(t,n){e._unrefTimer(),l("SERVER socketOnParserExecute %d",t),v(t,void 0)},e._paused=!1}function k(){this._paused?this.pause():this._handle&&!this._handle.reading&&(this._handle.reading=!0,this._handle.readStart())}function E(){this._handle&&this._handle.reading&&(this._handle.reading=!1,this._handle.readStop())}function x(e,t){t._handle&&(e._consumed&&e.unconsume(t._handle._externalStream),e._consumed=!1,t.removeListener("pause",E),t.removeListener("resume",k))}function S(e,t){var n=i.Socket.prototype.on.call(this,e,t);return this.parser?("data"!==e&&"readable"!==e||x(this.parser,this),n):(this.on=i.Socket.prototype.on,n)}r.inherits(y,g),y.prototype._finish=function(){g.prototype._finish.call(this)},t.ServerResponse=y,y.prototype.statusCode=200,y.prototype.statusMessage=void 0,y.prototype.assignSocket=function(e){o(!e._httpMessage),e._httpMessage=this,e.on("close",b),this.socket=e,this.connection=e,this.emit("socket",e),this._flush()},y.prototype.detachSocket=function(e){o(e._httpMessage===this),e.removeListener("close",b),e._httpMessage=null,this.socket=this.connection=null},y.prototype.writeContinue=function(e){this._writeRaw("HTTP/1.1 100 Continue"+u+u,"ascii",e),this._sent100=!0},y.prototype._implicitHeader=function(){this.writeHead(this.statusCode)},y.prototype.writeHead=function(e,t,n){var r;if("string"==typeof t?this.statusMessage=t:(this.statusMessage=this.statusMessage||_[e]||"unknown",n=t),this.statusCode=e,this._headers){if(n)for(var i=Object.keys(n),s=0;s999)throw new RangeError(`Invalid status code: ${e}`);var a="HTTP/1.1 "+e.toString()+" "+this.statusMessage+u;(204===e||304===e||100<=e&&e<=199)&&(this._hasBody=!1),this._expect_continue&&!this._sent100&&(this.shouldKeepAlive=!1),this._storeHeader(a,r)},y.prototype.writeHeader=function(){this.writeHead.apply(this,arguments)},r.inherits(w,i.Server),w.prototype.setTimeout=function(e,t){return this.timeout=e,t&&this.on("timeout",t),this},t.Server=w,t._connectionListener=v},8669:(e,t,n)=>{const r=n(9539),i=r,s=n(7187);t.IncomingMessage=n(7243).IncomingMessage;const o=n(2390);t.METHODS=o.methods.slice().sort(),t.OutgoingMessage=n(1088).OutgoingMessage;const a=n(2183);t.ServerResponse=a.ServerResponse,t.STATUS_CODES=a.STATUS_CODES;const h=n(5249),c=t.Agent=h.Agent;t.globalAgent=h.globalAgent;const l=n(8762),u=t.ClientRequest=l.ClientRequest;t.request=function(e,t){return new u(e,t)},t.get=function(e,n){var r=t.request(e,n);return r.end(),r},t._connectionListener=a._connectionListener;const d=t.Server=a.Server;function f(e,t){if(!(this instanceof f))return new f(e,t);s.call(this),t=t||"localhost",e=e||80,this.host=t,this.port=e,this.agent=new c({host:t,port:e,maxSockets:1})}t.createServer=function(e){return new d(e)},r.inherits(f,s),f.prototype.request=function(e,t,n){var r=this,i={};i.host=r.host,i.port=r.port,"/"===e[0]&&(n=t,t=e,e="GET"),i.method=e,i.path=t,i.headers=n,i.agent=r.agent;var s=new u(i);return s.on("error",(function(e){r.emit("error",e)})),s.on("socket",(function(e){e.on("end",(function(){if(r._decoder){var e=r._decoder.end();e&&r.emit("data",e)}r.emit("end")}))})),s},t.Client=i.deprecate(f,"http.Client is deprecated."),t.createClient=i.deprecate((function(e,t){return new f(e,t)}),"http.createClient is deprecated. Use http.request instead.")},8583:(e,t,n)=>{var r=n(7418);function i(e,t){if(e===t)return 0;for(var n=e.length,r=t.length,i=0,s=Math.min(n,r);i=0;c--)if(l[c]!==u[c])return!1;for(c=l.length-1;c>=0;c--)if(!b(e[a=l[c]],t[a],n,r))return!1;return!0}(e,t,n,r))}return n?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function v(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function k(e,t,n,r){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&m(i,n,"Missing expected exception"+r);var s="string"==typeof r,a=!e&&i&&!n;if((!e&&o.isError(i)&&s&&v(i,n)||a)&&m(i,n,"Got unwanted exception"+r),e&&i&&n&&!v(i,n)||!e&&i)throw i}d.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return g(_(e.actual),128)+" "+e.operator+" "+g(_(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,i=p(t),s=r.indexOf("\n"+i);if(s>=0){var o=r.indexOf("\n",s+1);r=r.substring(o+1)}this.stack=r}}},o.inherits(d.AssertionError,Error),d.fail=m,d.ok=y,d.equal=function(e,t,n){e!=t&&m(e,t,n,"==",d.equal)},d.notEqual=function(e,t,n){e==t&&m(e,t,n,"!=",d.notEqual)},d.deepEqual=function(e,t,n){b(e,t,!1)||m(e,t,n,"deepEqual",d.deepEqual)},d.deepStrictEqual=function(e,t,n){b(e,t,!0)||m(e,t,n,"deepStrictEqual",d.deepStrictEqual)},d.notDeepEqual=function(e,t,n){b(e,t,!1)&&m(e,t,n,"notDeepEqual",d.notDeepEqual)},d.notDeepStrictEqual=function e(t,n,r){b(t,n,!0)&&m(t,n,r,"notDeepStrictEqual",e)},d.strictEqual=function(e,t,n){e!==t&&m(e,t,n,"===",d.strictEqual)},d.notStrictEqual=function(e,t,n){e===t&&m(e,t,n,"!==",d.notStrictEqual)},d.throws=function(e,t,n){k(!0,e,t,n)},d.doesNotThrow=function(e,t,n){k(!1,e,t,n)},d.ifError=function(e){if(e)throw e},d.strict=r((function e(t,n){t||m(t,!0,n,"==",e)}),d,{equal:d.strictEqual,deepEqual:d.deepStrictEqual,notEqual:d.notStrictEqual,notDeepEqual:d.notDeepStrictEqual}),d.strict.strict=d.strict;var E=Object.keys||function(e){var t=[];for(var n in e)a.call(e,n)&&t.push(n);return t}},6076:e=>{"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},745:(e,t,n)=>{var r=n(8764).Buffer;e.exports=function(e){return e instanceof r}},69:(e,t,n)=>{var r=n(8768),i=/%[sdj%]/g;t.format=function(e){if(!m(e)){for(var t=[],n=0;n=s)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),h=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),p(n)?r.showHidden=n:n&&t._extend(r,n),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=h),l(r,e,r.depth)}function h(e,t){var n=a.styles[t];return n?"["+a.colors[n][0]+"m"+e+"["+a.colors[n][1]+"m":e}function c(e,t){return e}function l(e,n,r){if(e.customInspect&&n&&E(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,e);return m(i)||(i=l(e,i,r)),i}var s=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(m(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(_(t))return e.stylize(""+t,"number");if(p(t))return e.stylize(""+t,"boolean");if(g(t))return e.stylize("null","null")}(e,n);if(s)return s;var o=Object.keys(n),a=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(n)),k(n)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return u(n);if(0===o.length){if(E(n)){var h=n.name?": "+n.name:"";return e.stylize("[Function"+h+"]","special")}if(b(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(v(n))return e.stylize(Date.prototype.toString.call(n),"date");if(k(n))return u(n)}var c,w="",x=!1,S=["{","}"];(f(n)&&(x=!0,S=["[","]"]),E(n))&&(w=" [Function"+(n.name?": "+n.name:"")+"]");return b(n)&&(w=" "+RegExp.prototype.toString.call(n)),v(n)&&(w=" "+Date.prototype.toUTCString.call(n)),k(n)&&(w=" "+u(n)),0!==o.length||x&&0!=n.length?r<0?b(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),c=x?function(e,t,n,r,i){for(var s=[],o=0,a=t.length;o=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0);if(r>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(c,w,S)):S[0]+w+S[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,i,s){var o,a,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?a=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(a=e.stylize("[Setter]","special")),A(r,i)||(o="["+i+"]"),a||(e.seen.indexOf(h.value)<0?(a=g(n)?l(e,h.value,null):l(e,h.value,n-1)).indexOf("\n")>-1&&(a=s?a.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+a.split("\n").map((function(e){return" "+e})).join("\n")):a=e.stylize("[Circular]","special")),y(o)){if(s&&i.match(/^\d+$/))return a;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+a}function f(e){return Array.isArray(e)}function p(e){return"boolean"==typeof e}function g(e){return null===e}function _(e){return"number"==typeof e}function m(e){return"string"==typeof e}function y(e){return void 0===e}function b(e){return w(e)&&"[object RegExp]"===x(e)}function w(e){return"object"==typeof e&&null!==e}function v(e){return w(e)&&"[object Date]"===x(e)}function k(e){return w(e)&&("[object Error]"===x(e)||e instanceof Error)}function E(e){return"function"==typeof e}function x(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(s)&&(s=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!o[e])if(new RegExp("\\b"+e+"\\b","i").test(s)){var n=r.pid;o[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,n,r)}}else o[e]=function(){};return o[e]},t.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=m,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=w,t.isDate=v,t.isError=k,t.isFunction=E,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(745);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function A(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,n;console.log("%s - %s",(e=new Date,n=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":"),[e.getDate(),T[e.getMonth()],n].join(" ")),t.format.apply(t,arguments))},t.inherits=n(6076),t._extend=function(e,t){if(!t||!w(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}},5792:(e,t,n)=>{var r=n(8764).Buffer;function i(e){return r.isBuffer(e)?e:r.from(e.buffer,e.byteOffset,e.byteLength)}e.exports={isBuffer:function(e){return r.isBuffer(e)||e instanceof Uint8Array},isEncoding:function(e){return r.isEncoding(e)},alloc:function(e,t,n){return r.alloc(e,t,n)},allocUnsafe:function(e){return r.allocUnsafe(e)},allocUnsafeSlow:function(e){return r.allocUnsafeSlow(e)},byteLength:function(e,t){return r.byteLength(e,t)},compare:function(e,t){return r.compare(e,t)},concat:function(e,t){return r.concat(e,t)},copy:function(e,t,n,r,s){return i(e).copy(t,n,r,s)},equals:function(e,t){return i(e).equals(t)},fill:function(e,t,n,r,s){return i(e).fill(t,n,r,s)},from:function(e,t,n){return r.from(e,t,n)},includes:function(e,t,n,r){return i(e).includes(t,n,r)},indexOf:function(e,t,n,r){return i(e).indexOf(t,n,r)},lastIndexOf:function(e,t,n,r){return i(e).lastIndexOf(t,n,r)},swap16:function(e){return i(e).swap16()},swap32:function(e){return i(e).swap32()},swap64:function(e){return i(e).swap64()},toBuffer:i,toString:function(e,t,n,r){return i(e).toString(t,n,r)},write:function(e,t,n,r,s){return i(e).write(t,n,r,s)},writeDoubleLE:function(e,t,n){return i(e).writeDoubleLE(t,n)},writeFloatLE:function(e,t,n){return i(e).writeFloatLE(t,n)},writeUInt32LE:function(e,t,n){return i(e).writeUInt32LE(t,n)},writeInt32LE:function(e,t,n){return i(e).writeInt32LE(t,n)},readDoubleLE:function(e,t){return i(e).readDoubleLE(t)},readFloatLE:function(e,t){return i(e).readFloatLE(t)},readUInt32LE:function(e,t){return i(e).readUInt32LE(t)},readInt32LE:function(e,t){return i(e).readInt32LE(t)}}},9742:(e,t)=>{t.byteLength=function(e){var t=a(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,s=a(e),o=s[0],h=s[1],c=new i(function(e,t,n){return 3*(t+n)/4-n}(0,o,h)),l=0,u=h>0?o-4:o;for(n=0;n>16&255,c[l++]=t>>8&255,c[l++]=255&t;2===h&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[l++]=255&t);1===h&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[l++]=t>>8&255,c[l++]=255&t);return c},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,s=[],o=16383,a=0,c=r-i;ac?c:a+o));1===i?(t=e[r-1],s.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],s.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return s.join("")};for(var n=[],r=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)n[o]=s[o],r[s.charCodeAt(o)]=o;function a(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function h(e,t,r){for(var i,s,o=[],a=t;a>18&63]+n[s>>12&63]+n[s>>6&63]+n[63&s]);return o.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},2090:e=>{function t(e,t){if("string"==typeof e[0])return e.join("");if("number"==typeof e[0])return new Uint8Array(e);const n=new Uint8Array(t);let r=0;for(let t=0,i=e.length;t=n){const e=t(o,a);let r=0;for(;a>=n;)yield e.slice(r,r+n),a-=n,r+=n;o=[e.slice(r,e.length)]}a&&(yield t(o,s?n:a))}},8764:(e,t,n)=>{const r=n(9742),i=n(645),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=h,t.SlowBuffer=function(e){+e!=e&&(e=0);return h.alloc(+e)},t.INSPECT_MAX_BYTES=50;const o=2147483647;function a(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,h.prototype),t}function h(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return c(e,t,n)}function c(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!h.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const n=0|g(e,t);let r=a(n);const i=r.write(e,t);i!==n&&(r=r.slice(0,i));return r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(Z(e,Uint8Array)){const t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return d(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(Z(e,ArrayBuffer)||e&&Z(e.buffer,ArrayBuffer))return f(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(Z(e,SharedArrayBuffer)||e&&Z(e.buffer,SharedArrayBuffer)))return f(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return h.from(r,t,n);const i=function(e){if(h.isBuffer(e)){const t=0|p(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||Y(e.length)?a(0):d(e);if("Buffer"===e.type&&Array.isArray(e.data))return d(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return h.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return l(e),a(e<0?0:0|p(e))}function d(e){const t=e.length<0?0:0|p(e.length),n=a(t);for(let r=0;r=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function g(e,t){if(h.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||Z(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return V(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return G(e).length;default:if(i)return r?-1:V(e).length;t=(""+t).toLowerCase(),i=!0}}function _(e,t,n){let r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,n);case"utf8":case"utf-8":return T(this,t,n);case"ascii":return C(this,t,n);case"latin1":case"binary":return I(this,t,n);case"base64":return S(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function m(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}function y(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),Y(n=+n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=h.from(t,r)),h.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,i){let s,o=1,a=e.length,h=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,h/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){let r=-1;for(s=n;sa&&(n=a-h),s=n;s>=0;s--){let n=!0;for(let r=0;ri&&(r=i):r=i;const s=t.length;let o;for(r>s/2&&(r=s/2),o=0;o>8,i=n%256,s.push(i),s.push(r);return s}(t,e.length-n),e,n,r)}function S(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function T(e,t,n){n=Math.min(e.length,n);const r=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+o<=n){let n,r,a,h;switch(o){case 1:t<128&&(s=t);break;case 2:n=e[i+1],128==(192&n)&&(h=(31&t)<<6|63&n,h>127&&(s=h));break;case 3:n=e[i+1],r=e[i+2],128==(192&n)&&128==(192&r)&&(h=(15&t)<<12|(63&n)<<6|63&r,h>2047&&(h<55296||h>57343)&&(s=h));break;case 4:n=e[i+1],r=e[i+2],a=e[i+3],128==(192&n)&&128==(192&r)&&128==(192&a)&&(h=(15&t)<<18|(63&n)<<12|(63&r)<<6|63&a,h>65535&&h<1114112&&(s=h))}}null===s?(s=65533,o=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=o}return function(e){const t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);let n="",r=0;for(;rr.length?(h.isBuffer(t)||(t=h.from(t)),t.copy(r,i)):Uint8Array.prototype.set.call(r,t,i);else{if(!h.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(r,i)}i+=t.length}return r},h.byteLength=g,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tn&&(e+=" ... "),""},s&&(h.prototype[s]=h.prototype.inspect),h.prototype.compare=function(e,t,n,r,i){if(Z(e,Uint8Array)&&(e=h.from(e,e.offset,e.byteLength)),!h.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;let s=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0);const a=Math.min(s,o),c=this.slice(r,i),l=e.slice(t,n);for(let e=0;e>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}const i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let s=!1;for(;;)switch(r){case"hex":return w(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":case"latin1":case"binary":return k(this,e,t,n);case"base64":return E(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const A=4096;function C(e,t,n){let r="";n=Math.min(e.length,n);for(let i=t;ir)&&(n=r);let i="";for(let r=t;rn)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,n,r,i,s){if(!h.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function N(e,t,n,r,i){F(t,r,i,e,n,7);let s=Number(t&BigInt(4294967295));e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,n}function B(e,t,n,r,i){F(t,r,i,e,n,7);let s=Number(t&BigInt(4294967295));e[n+7]=s,s>>=8,e[n+6]=s,s>>=8,e[n+5]=s,s>>=8,e[n+4]=s;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=o,o>>=8,e[n+2]=o,o>>=8,e[n+1]=o,o>>=8,e[n]=o,n+8}function D(e,t,n,r,i,s){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function U(e,t,n,r,s){return t=+t,n>>>=0,s||D(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function M(e,t,n,r,s){return t=+t,n>>>=0,s||D(e,0,n,8),i.write(e,t,n,r,52,8),n+8}h.prototype.slice=function(e,t){const n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||O(e,t,this.length);let r=this[e],i=1,s=0;for(;++s>>=0,t>>>=0,n||O(e,t,this.length);let r=this[e+--t],i=1;for(;t>0&&(i*=256);)r+=this[e+--t]*i;return r},h.prototype.readUint8=h.prototype.readUInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),this[e]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]|this[e+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]<<8|this[e+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},h.prototype.readBigUInt64LE=Q((function(e){z(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||$(e,this.length-8);const r=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(r)+(BigInt(i)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||$(e,this.length-8);const r=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(r)<>>=0,t>>>=0,n||O(e,t,this.length);let r=this[e],i=1,s=0;for(;++s=i&&(r-=Math.pow(2,8*t)),r},h.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||O(e,t,this.length);let r=t,i=1,s=this[e+--r];for(;r>0&&(i*=256);)s+=this[e+--r]*i;return i*=128,s>=i&&(s-=Math.pow(2,8*t)),s},h.prototype.readInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},h.prototype.readInt16LE=function(e,t){e>>>=0,t||O(e,2,this.length);const n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt16BE=function(e,t){e>>>=0,t||O(e,2,this.length);const n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},h.prototype.readInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},h.prototype.readBigInt64LE=Q((function(e){z(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||$(e,this.length-8);const r=this[e+4]+256*this[e+5]+65536*this[e+6]+(n<<24);return(BigInt(r)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||$(e,this.length-8);const r=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(r)<>>=0,t||O(e,4,this.length),i.read(this,e,!0,23,4)},h.prototype.readFloatBE=function(e,t){return e>>>=0,t||O(e,4,this.length),i.read(this,e,!1,23,4)},h.prototype.readDoubleLE=function(e,t){return e>>>=0,t||O(e,8,this.length),i.read(this,e,!0,52,8)},h.prototype.readDoubleBE=function(e,t){return e>>>=0,t||O(e,8,this.length),i.read(this,e,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){L(this,e,t,n,Math.pow(2,8*n)-1,0)}let i=1,s=0;for(this[t]=255&e;++s>>=0,n>>>=0,!r){L(this,e,t,n,Math.pow(2,8*n)-1,0)}let i=n-1,s=1;for(this[t+i]=255&e;--i>=0&&(s*=256);)this[t+i]=e/s&255;return t+n},h.prototype.writeUint8=h.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,1,255,0),this[t]=255&e,t+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},h.prototype.writeBigUInt64LE=Q((function(e,t=0){return N(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=Q((function(e,t=0){return B(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*n-1);L(this,e,t,n,r-1,-r)}let i=0,s=1,o=0;for(this[t]=255&e;++i>0)-o&255;return t+n},h.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*n-1);L(this,e,t,n,r-1,-r)}let i=n-1,s=1,o=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===o&&0!==this[t+i+1]&&(o=1),this[t+i]=(e/s>>0)-o&255;return t+n},h.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},h.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},h.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},h.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},h.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},h.prototype.writeBigInt64LE=Q((function(e,t=0){return N(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=Q((function(e,t=0){return B(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(e,t,n){return U(this,e,t,!0,n)},h.prototype.writeFloatBE=function(e,t,n){return U(this,e,t,!1,n)},h.prototype.writeDoubleLE=function(e,t,n){return M(this,e,t,!0,n)},h.prototype.writeDoubleBE=function(e,t,n){return M(this,e,t,!1,n)},h.prototype.copy=function(e,t,n,r){if(!h.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i=r+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function F(e,t,n,r,i,s){if(e>n||e3?0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(s+1)}${r}`:`>= -(2${r} ** ${8*(s+1)-1}${r}) and < 2 ** ${8*(s+1)-1}${r}`:`>= ${t}${r} and <= ${n}${r}`,new j.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,n){z(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||$(t,e.length-(n+1))}(r,i,s)}function z(e,t){if("number"!=typeof e)throw new j.ERR_INVALID_ARG_TYPE(t,"number",e)}function $(e,t,n){if(Math.floor(e)!==e)throw z(e,n),new j.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new j.ERR_BUFFER_OUT_OF_BOUNDS;throw new j.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${t}`,e)}H("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),H("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),H("ERR_OUT_OF_RANGE",(function(e,t,n){let r=`The value of "${e}" is out of range.`,i=n;return Number.isInteger(n)&&Math.abs(n)>2**32?i=q(String(n)):"bigint"==typeof n&&(i=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(i=q(i)),i+="n"),r+=` It must be ${t}. Received ${i}`,r}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function V(e,t){let n;t=t||1/0;const r=e.length;let i=null;const s=[];for(let o=0;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&s.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&s.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;s.push(n)}else if(n<2048){if((t-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function G(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,n,r){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function Z(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Y(e){return e!=e}const J=function(){const e="0123456789abcdef",t=new Array(256);for(let n=0;n<16;++n){const r=16*n;for(let i=0;i<16;++i)t[r+i]=e[n]+e[i]}return t}();function Q(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}},9421:(e,t,n)=>{const r=n(7117),i=n(4375);e.exports=class{constructor(e,t){if(this.store=e,this.chunkLength=e.chunkLength,this.inProgressGets=new Map,!this.store||!this.store.get||!this.store.put)throw new Error("First argument must be abstract-chunk-store compliant");this.cache=new r(t)}put(e,t,n=(()=>{})){if(!this.cache)return i((()=>n(new Error("CacheStore closed"))));this.cache.remove(e),this.store.put(e,t,n)}get(e,t,n=(()=>{})){if("function"==typeof t)return this.get(e,null,t);if(!this.cache)return i((()=>n(new Error("CacheStore closed"))));t||(t={});let r=this.cache.get(e);if(r){const e=t.offset||0,s=t.length||r.length-e;return 0===e&&s===r.length||(r=r.slice(e,s+e)),i((()=>n(null,r)))}let s=this.inProgressGets.get(e);const o=!!s;s||(s=[],this.inProgressGets.set(e,s)),s.push({opts:t,cb:n}),o||this.store.get(e,((t,n)=>{t||null==this.cache||this.cache.set(e,n);const r=this.inProgressGets.get(e);this.inProgressGets.delete(e);for(const{opts:e,cb:i}of r)if(t)i(t);else{const t=e.offset||0,r=e.length||n.length-t;let s=n;0===t&&r===n.length||(s=n.slice(t,r+t)),i(null,s)}}))}close(e=(()=>{})){if(!this.cache)return i((()=>e(new Error("CacheStore closed"))));this.cache=null,this.store.close(e)}destroy(e=(()=>{})){if(!this.cache)return i((()=>e(new Error("CacheStore closed"))));this.cache=null,this.store.destroy(e)}}},8025:(e,t,n)=>{var r=n(8764).Buffer;t.Socket=c;var i=n(7187).EventEmitter,s=n(5717),o=n(9059),a=0,h={};function c(e,t){var n=this;if(i.call(n),"string"==typeof e&&(e={type:e}),"udp4"!==e.type)throw new Error("Bad socket type specified. Valid types are: udp4");"function"==typeof t&&n.on("message",t),n._destroyed=!1,n._bindState=a,n._bindTasks=[]}"object"==typeof chrome&&"object"==typeof chrome.runtime&&"string"==typeof chrome.runtime.id&&"object"==typeof chrome.sockets&&"object"==typeof chrome.sockets.udp&&(chrome.sockets.udp.onReceive.addListener((function(e){e.socketId in h?h[e.socketId]._onReceive(e):console.error("Unknown socket id: "+e.socketId)})),chrome.sockets.udp.onReceiveError.addListener((function(e){e.socketId in h?h[e.socketId]._onReceiveError(e.resultCode):console.error("Unknown socket id: "+e.socketId)}))),t.createSocket=function(e,t){return new c(e,t)},s(c,i),c.prototype.bind=function(e,t,n){var r=this;if("function"==typeof t&&(n=t,t=void 0),t||(t="0.0.0.0"),e||(e=0),r._bindState!==a)throw new Error("Socket is already bound");r._bindState=1,"function"==typeof n&&r.once("listening",n),chrome.sockets.udp.create((function(n){r.id=n.socketId,h[r.id]=r;var i=r._bindTasks.map((function(e){return e.fn}));o(i,(function(n){if(n)return r.emit("error",n);chrome.sockets.udp.bind(r.id,t,e,(function(e){e<0?r.emit("error",new Error("Socket "+r.id+" failed to bind. "+chrome.runtime.lastError.message)):chrome.sockets.udp.getInfo(r.id,(function(e){e.localPort&&e.localAddress?(r._port=e.localPort,r._address=e.localAddress,r._bindState=2,r.emit("listening"),r._bindTasks.map((function(e){e.callback()}))):r.emit("error",new Error("Cannot get local port/address for Socket "+r.id))}))}))}))}))},c.prototype._onReceive=function(e){var t=r.from(new Uint8Array(e.data)),n={address:e.remoteAddress,family:"IPv4",port:e.remotePort,size:t.length};this.emit("message",t,n)},c.prototype._onReceiveError=function(e){this.emit("error",new Error("Socket "+this.id+" receive error "+e))},c.prototype.send=function(e,t,n,i,s,o){var h,c=this;if(s||i&&"function"!=typeof i?e=function(e,t,n){if("string"==typeof e)e=r.from(e);else if(!(e instanceof r))throw new TypeError("First argument must be a buffer or string");t>>>=0,n>>>=0;var i=e.buffer;(e.byteOffset||e.byteLength!==i.byteLength)&&(i=i.slice(e.byteOffset,e.byteOffset+e.byteLength));(t||n!==e.length)&&(i=i.slice(t,n));return r.from(i)}(e,t,n):(o=i,i=t,s=n),Array.isArray(e)){if(!(h=function(e){for(var t=new Array(e.length),n=0,i=e.length;n>>=0)||i>65535)throw new RangeError("Port should be > 0 and < 65536");if("function"!=typeof o&&(o=function(){}),c._bindState===a&&c.bind(0),2!==c._bindState)return c._sendQueue||(c._sendQueue=[],c.once("listening",(function(){for(var e=0;e{const{isIPv4:r,isIPv6:i}=n(7460);t.lookup=function e(t,n,s){if("function"==typeof n)return e(t,null,n);chrome.dns.resolve(t,(e=>{if(0!==e.resultCode)return s(new Error("DNS lookup error: "+chrome.runtime.lastError.message));const t=e.address,n=r(t)?4:i(t)?6:0;s(null,t,n)}))}},7460:(e,t,n)=>{var r,i,s=n(8768),o=n(7187),a=n(5717),h=n(1451),c=n(9539).deprecate,l=n(5475),u=n(8764).Buffer,d={},f={};function p(e,t){if(!(this instanceof p))return new p(e,t);if(o.call(this),"function"==typeof e)t=e,e={},this.on("connection",t);else{if(null!=e&&"object"!=typeof e)throw new TypeError("options must be an object");e=e||{},"function"==typeof t&&this.on("connection",t)}this._connections=0,Object.defineProperty(this,"connections",{get:c((()=>this._connections),"Server.connections property is deprecated. Use Server.getConnections method instead."),set:c((e=>this._connections=e),"Server.connections property is deprecated."),configurable:!0,enumerable:!1}),this.id=null,this.connecting=!1,this.allowHalfOpen=e.allowHalfOpen||!1,this.pauseOnConnect=!!e.pauseOnConnect,this._address=null,this._host=null,this._port=null,this._backlog=null}function g(e){e.id||e.connecting||e._connections||e.emit("close")}function _(e){if(!(this instanceof _))return new _(e);if("number"==typeof e?e={fd:e}:void 0===e&&(e={}),e.handle)throw new Error("handle is not supported in Chrome Apps.");if(void 0!==e.fd)throw new Error("fd is not supported in Chrome Apps.");e.decodeStrings=!0,e.objectMode=!1,h.Duplex.call(this,e),this.destroyed=!1,this._hadError=!1,this.id=null,this._parent=null,this._host=null,this._port=null,this._pendingData=null,this.ondata=null,this.onend=null,this._init(),this._reset(),this.allowHalfOpen=e.allowHalfOpen||!1,this.on("finish",this.destroy),e.server&&(this.server=this._server=e.server,this.id=e.id,f[this.id]=this,e.pauseOnCreate&&(this._readableState.flowing=!1),this.connecting=!0,this.writable=!0,this._onConnect())}"object"==typeof chrome&&"object"==typeof chrome.runtime&&"string"==typeof chrome.runtime.id&&"object"==typeof chrome.sockets&&"object"==typeof chrome.sockets.tcpServer&&"object"==typeof chrome.sockets.tcp&&(chrome.sockets.tcpServer.onAccept.addListener((function(e){e.socketId in d?d[e.socketId]._onAccept(e.clientSocketId):console.error("Unknown server socket id: "+e.socketId)})),chrome.sockets.tcpServer.onAcceptError.addListener((function(e){e.socketId in d?d[e.socketId]._onAcceptError(e.resultCode):console.error("Unknown server socket id: "+e.socketId)})),chrome.sockets.tcp.onReceive.addListener((function(e){e.socketId in f?f[e.socketId]._onReceive(e.data):console.error("Unknown socket id: "+e.socketId)})),chrome.sockets.tcp.onReceiveError.addListener((function(e){if(e.socketId in f)f[e.socketId]._onReceiveError(e.resultCode);else{if(-100===e.resultCode)return;console.error("Unknown socket id: "+e.socketId)}}))),t.createServer=function(e,t){return new p(e,t)},t.connect=t.createConnection=function(){const e=arguments.length;for(var t=new Array(e),n=0;n=0)throw new Error("fd is not supported in Chrome Apps.");if(i.backlog&&(r=i.backlog),!("number"==typeof i.port||"string"==typeof i.port||void 0===i.port&&"port"in i))throw i.path&&v(i.path)?new Error("Pipes are not supported in Chrome Apps."):new Error("Invalid listen argument: "+i);t=i.host||null,n=i.port}else{if(v(arguments[0]))throw new Error("Pipes are not supported in Chrome Apps.");t=void 0===arguments[1]||"function"==typeof arguments[1]||"number"==typeof arguments[1]?null:arguments[1]}this.id&&this.close(),function(e){if(void 0!==e&&!k(e))throw new RangeError('"port" argument must be >= 0 and < 65536')}(n),this._port=0|n,this._host=t;var s=!this._host;return s&&(this._host="::"),this._backlog="number"==typeof r?r:void 0,this.connecting=!0,chrome.sockets.tcpServer.create((e=>{if(!this.connecting||this.id)return E(),void chrome.sockets.tcpServer.close(e.socketId);if(chrome.runtime.lastError)this.emit("error",new Error(chrome.runtime.lastError.message));else{var t=this.id=e.socketId;d[this.id]=this;var n=()=>chrome.sockets.tcpServer.listen(this.id,this._host,this._port,this._backlog,(e=>{if(this.id===t)return 0!==e&&s?(E(),this._host="0.0.0.0",s=!1,n()):void this._onListen(e);E()}));n()}})),this},p.prototype._onListen=function(e){if(this.connecting=!1,0===e){var t=this.id;chrome.sockets.tcpServer.getInfo(this.id,(e=>{this.id===t?chrome.runtime.lastError?this._onListen(-2):(this._address={port:e.localPort,family:e.localAddress&&-1!==e.localAddress.indexOf(":")?"IPv6":"IPv4",address:e.localAddress},this.emit("listening")):E()}))}else this.emit("error",C(e,"listen",this._host,this._port)),this.id&&(chrome.sockets.tcpServer.close(this.id),delete d[this.id],this.id=null)},p.prototype._onAccept=function(e){if(this.maxConnections&&this._connections>=this.maxConnections)return chrome.sockets.tcp.close(e),void console.warn("Rejected connection - hit `maxConnections` limit");this._connections+=1;var t=new _({server:this,id:e,allowHalfOpen:this.allowHalfOpen,pauseOnCreate:this.pauseOnConnect});t.on("connect",(()=>this.emit("connection",t)))},p.prototype._onAcceptError=function(e){this.emit("error",A(e,"accept")),this.close()},p.prototype.close=function(e){return"function"==typeof e&&(this.id?this.once("close",e):this.once("close",(()=>e(new Error("Not running"))))),this.id&&(chrome.sockets.tcpServer.close(this.id),delete d[this.id],this.id=null),this._address=null,this.connecting=!1,this._emitCloseIfDrained(),this},p.prototype._emitCloseIfDrained=function(){this.id||this.connecting||this._connections||s.nextTick(g,this)},Object.defineProperty(p.prototype,"listening",{get:function(){return!!this._address},configurable:!0,enumerable:!0}),p.prototype.address=function(){return this._address},p.prototype.unref=p.prototype.ref=function(){return this},p.prototype.getConnections=function(e){s.nextTick(e,null,this._connections)},a(_,h.Duplex),t.Socket=_,_.prototype._init=function(){this.bytesRead=0,this._bytesDispatched=0,this.server=null,this._server=null},_.prototype._reset=function(){this.remoteAddress=this.remotePort=this.localAddress=this.localPort=null,this.remoteFamily="IPv4",this.readable=this.writable=!1,this.connecting=!1},_.prototype.connect=function(){const e=arguments.length;for(var t=new Array(e),n=0;n= 0 and < 65536: '+this._port)}return this._port|=0,this._init(),this._unrefTimer(),"function"==typeof i&&this.once("connect",i),chrome.sockets.tcp.create((e=>{if(!this.connecting||this.id)return E(),void chrome.sockets.tcp.close(e.socketId);chrome.runtime.lastError?this.destroy(new Error(chrome.runtime.lastError.message)):(this.id=e.socketId,f[this.id]=this,chrome.sockets.tcp.setPaused(this.id,!0),chrome.sockets.tcp.connect(this.id,this._host,this._port,(t=>{this.id===e.socketId?0===t?(this._unrefTimer(),this._onConnect()):this.destroy(C(t,"connect",this._host,this._port)):E()})))})),this},_.prototype._onConnect=function(){var e=this.id;chrome.sockets.tcp.getInfo(this.id,(t=>{this.id===e?chrome.runtime.lastError?this.destroy(new Error(chrome.runtime.lastError.message)):(this.remoteAddress=t.peerAddress,this.remoteFamily=t.peerAddress&&-1!==t.peerAddress.indexOf(":")?"IPv6":"IPv4",this.remotePort=t.peerPort,this.localAddress=t.localAddress,this.localPort=t.localPort,this.connecting=!1,this.readable=!0,this.emit("connect"),this.isPaused()||this.read(0)):E()}))},Object.defineProperty(_.prototype,"bufferSize",{get:function(){if(this.id){var e=this._writableState.length;return this._pendingData&&(e+=this._pendingData.length),e}}}),_.prototype.end=function(e,t){h.Duplex.prototype.end.call(this,e,t),this.writable=!1},_.prototype._write=function(e,t,n){if(n||(n=()=>{}),this.connecting)return this._pendingData=e,void this.once("connect",(()=>this._write(e,t,n)));if(this._pendingData=null,this.id){var r=e.buffer;e.byteLength!==r.byteLength&&(r=r.slice(e.byteOffset,e.byteOffset+e.byteLength));var i=this.id;chrome.sockets.tcp.send(this.id,r,(e=>{this.id===i?e.resultCode<0?this._destroy(C(e.resultCode,"write",this.remoteAddress,this.remotePort),n):(this._unrefTimer(),n(null)):E()})),this._bytesDispatched+=e.length}else n(new Error("This socket is closed"))},_.prototype._read=function(e){if(!this.connecting&&this.id){chrome.sockets.tcp.setPaused(this.id,!1);var t=this.id;chrome.sockets.tcp.getInfo(this.id,(e=>{this.id===t?!chrome.runtime.lastError&&e.connected||this._onReceiveError(-15):E()}))}else this.once("connect",(()=>this._read(e)))},_.prototype._onReceive=function(e){var t=u.from(e),n=this.bytesRead;this.bytesRead+=t.length,this._unrefTimer(),this.ondata&&(console.error("socket.ondata = func is non-standard, use socket.on('data', func)"),this.ondata(t,n,this.bytesRead)),this.push(t)||chrome.sockets.tcp.setPaused(this.id,!0)},_.prototype._onReceiveError=function(e){-100===e?(this.onend&&(console.error("socket.onend = func is non-standard, use socket.on('end', func)"),this.once("end",this.onend)),this.push(null),this.destroy()):e<0&&this.destroy(A(e,"read"))},r="bytesWritten",i=function(){if(this.id)return this._bytesDispatched+this.bufferSize},Object.defineProperty(_.prototype,r,{configurable:!1,enumerable:!0,get:i}),_.prototype.destroy=function(e){this._destroy(e)},_.prototype._destroy=function(e,t){var n=()=>{t&&t(e),e&&!this._writableState.errorEmitted&&(s.nextTick(S,this,e),this._writableState.errorEmitted=!0)};if(this.destroyed)n();else{this._server&&(this._server._connections-=1,this._server._emitCloseIfDrained&&this._server._emitCloseIfDrained()),this._reset();for(var r=this;null!==r;r=r._parent)l.unenroll(r);this.destroyed=!0,this.id&&(delete f[this.id],chrome.sockets.tcp.close(this.id,(()=>{this.destroyed&&this.emit("close",!!e)})),this.id=null),n()}},_.prototype.destroySoon=function(){this.writable&&this.end(),this._writableState.finished&&this.destroy()},_.prototype.setTimeout=function(e,t){return 0===e?(l.unenroll(this),t&&this.removeListener("timeout",t)):(l.enroll(this,e),l._unrefActive(this),t&&this.once("timeout",t)),this},_.prototype._onTimeout=function(){this.emit("timeout")},_.prototype._unrefTimer=function(){for(var e=this;null!==e;e=e._parent)l._unrefActive(e)},_.prototype.setNoDelay=function(e,t){return this.id?(e=void 0===e||!!e,chrome.sockets.tcp.setNoDelay(this.id,e,x(t)),this):(this.once("connect",(()=>this.setNoDelay(e,t))),this)},_.prototype.setKeepAlive=function(e,t,n){return this.id?(chrome.sockets.tcp.setKeepAlive(this.id,!!e,~~(t/1e3),x(n)),this):(this.once("connect",(()=>this.setKeepAlive(e,t,n))),this)},_.prototype.address=function(){return{address:this.localAddress,port:this.localPort,family:this.localAddress&&-1!==this.localAddress.indexOf(":")?"IPv6":"IPv4"}},Object.defineProperty(_.prototype,"_connecting",{get:function(){return this.connecting}}),Object.defineProperty(_.prototype,"readyState",{get:function(){return this.connecting?"opening":this.readable&&this.writable?"open":"closed"}}),_.prototype.unref=_.prototype.ref=function(){return this};var m=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,y=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;function b(e){var t={};if(null!==e[0]&&"object"==typeof e[0])t=e[0];else{if(v(e[0]))throw new Error("Pipes are not supported in Chrome Apps.");t.port=e[0],"string"==typeof e[1]&&(t.host=e[1])}var n=e[e.length-1];return"function"==typeof n?[t,n]:[t]}function w(e){return(e=Number(e))>=0&&e}function v(e){return"string"==typeof e&&!1===w(e)}function k(e){return!("number"!=typeof e&&"string"!=typeof e||"string"==typeof e&&0===e.trim().length)&&(+e==+e>>>0&&e<=65535)}function E(){chrome.runtime.lastError}function x(e){return()=>{var t;chrome.runtime.lastError&&(console.error(chrome.runtime.lastError.message),t=new Error(chrome.runtime.lastError.message)),e&&e(t)}}function S(e,t){e.emit("error",t)}t.isIPv4=m.test.bind(m),t.isIPv6=y.test.bind(y),t.isIP=function(e){return t.isIPv4(e)?4:t.isIPv6(e)?6:0};var T={"-10":"EACCES","-22":"EACCES","-138":"EACCES","-147":"EADDRINUSE","-108":"EADDRNOTAVAIL","-103":"ECONNABORTED","-102":"ECONNREFUSED","-101":"ECONNRESET","-16":"EEXIST","-8":"EFBIG","-109":"EHOSTUNREACH","-4":"EINVAL","-23":"EISCONN","-6":"ENOENT","-13":"ENOMEM","-106":"ENONET","-18":"ENOSPC","-11":"ENOSYS","-15":"ENOTCONN","-105":"ENOTFOUND","-118":"ETIMEDOUT","-100":"EOF"};function A(e,t,n){var r=T[e]||"UNKNOWN",i=t+" "+e+" "+n;chrome.runtime.lastError&&(i+=" "+chrome.runtime.lastError.message),i+=" (mapped uv code: "+r+")";var s=new Error(i);return s.code=s.errno=r,s.syscall=t,s}function C(e,t,n,r,i){var s;s=r&&r>0?n+":"+r:n,i&&(s+=" - Local ("+i+")");var o=A(e,t,s);return o.address=n,r&&(o.port=r),o}},6313:(e,t,n)=>{var r=n(8764).Buffer,i=function(){function e(e,t){return null!=t&&e instanceof t}var t,n,i;try{t=Map}catch(e){t=function(){}}try{n=Set}catch(e){n=function(){}}try{i=Promise}catch(e){i=function(){}}function s(o,h,c,l,u){"object"==typeof h&&(c=h.depth,l=h.prototype,u=h.includeNonEnumerable,h=h.circular);var d=[],f=[],p=void 0!==r;return void 0===h&&(h=!0),void 0===c&&(c=1/0),function o(c,g){if(null===c)return null;if(0===g)return c;var _,m;if("object"!=typeof c)return c;if(e(c,t))_=new t;else if(e(c,n))_=new n;else if(e(c,i))_=new i((function(e,t){c.then((function(t){e(o(t,g-1))}),(function(e){t(o(e,g-1))}))}));else if(s.__isArray(c))_=[];else if(s.__isRegExp(c))_=new RegExp(c.source,a(c)),c.lastIndex&&(_.lastIndex=c.lastIndex);else if(s.__isDate(c))_=new Date(c.getTime());else{if(p&&r.isBuffer(c))return _=r.allocUnsafe?r.allocUnsafe(c.length):new r(c.length),c.copy(_),_;e(c,Error)?_=Object.create(c):void 0===l?(m=Object.getPrototypeOf(c),_=Object.create(m)):(_=Object.create(l),m=l)}if(h){var y=d.indexOf(c);if(-1!=y)return f[y];d.push(c),f.push(_)}for(var b in e(c,t)&&c.forEach((function(e,t){var n=o(t,g-1),r=o(e,g-1);_.set(n,r)})),e(c,n)&&c.forEach((function(e){var t=o(e,g-1);_.add(t)})),c){var w;m&&(w=Object.getOwnPropertyDescriptor(m,b)),w&&null==w.set||(_[b]=o(c[b],g-1))}if(Object.getOwnPropertySymbols){var v=Object.getOwnPropertySymbols(c);for(b=0;b{var r=n(6512),i=function(e){switch(e.length){case 6:return e[0]+"."+e[1]+"."+e[2]+"."+e[3]+":"+e.readUInt16BE(4);case 18:for(var t=[],n=0;n<8;n++)t.push(e.readUInt16BE(2*n).toString(16));return"["+r.parse(t.join(":")).toString()+"]:"+e.readUInt16BE(16);default:throw new Error("Invalid Compact IP/PORT, It should contain 6 or 18 bytes")}};i.multi=function(e){if(e.length%6!=0)throw new Error("buf length isn't multiple of compact IP/PORTs (6 bytes)");for(var t=[],n=0;n<=e.length-1;n+=6)t.push(i(e.slice(n,n+6)));return t},i.multi6=function(e){if(e.length%18!=0)throw new Error("buf length isn't multiple of compact IP6/PORTs (18 bytes)");for(var t=[],n=0;n<=e.length-1;n+=18)t.push(i(e.slice(n,n+18)));return t},e.exports=i},9648:e=>{e.exports=function(){for(var e=navigator.hardwareConcurrency||1,t=[],n=0;n{var r=n(8768);t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(i=r))})),t.splice(i,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==r&&"env"in r&&(e=r.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=n(2447)(t);const{formatters:i}=e.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},2447:(e,t,n)=>{e.exports=function(e){function t(e){let n,i,s,o=null;function a(...e){if(!a.enabled)return;const r=a,i=Number(new Date),s=i-(n||i);r.diff=s,r.prev=n,r.curr=i,n=i,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let o=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,i)=>{if("%%"===n)return"%";o++;const s=t.formatters[i];if("function"==typeof s){const t=e[o];n=s.call(r,t),e.splice(o,1),o--}return n})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=r,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==o?o:(i!==t.namespaces&&(i=t.namespaces,s=t.enabled(e)),s),set:e=>{o=e}}),"function"==typeof t.init&&t.init(a),a}function r(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),i=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const{Transform:r,PassThrough:i}=n(1451),s=n(8128),o=n(6344);e.exports=e=>{const t=(e.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(t))return e;const n="br"===t;if(n&&"function"!=typeof s.createBrotliDecompress)return e.destroy(new Error("Brotli is not supported on Node.js < 12")),e;let a=!0;const h=new r({transform(e,t,n){a=!1,n(null,e)},flush(e){e()}}),c=new i({autoDestroy:!1,destroy(t,n){e.destroy(),n(t)}}),l=n?s.createBrotliDecompress():s.createUnzip();return l.once("error",(t=>{!a||e.readable?c.destroy(t):c.end()})),o(e,c),e.pipe(h).pipe(l).pipe(c),c}},2840:(e,t,n)=>{var r=n(8768),i=n(778),s=function(){},o=function(e,t,n){if("function"==typeof t)return o(e,null,t);t||(t={}),n=i(n||s);var a=e._writableState,h=e._readableState,c=t.readable||!1!==t.readable&&e.readable,l=t.writable||!1!==t.writable&&e.writable,u=!1,d=function(){e.writable||f()},f=function(){l=!1,c||n.call(e)},p=function(){c=!1,l||n.call(e)},g=function(t){n.call(e,t?new Error("exited with error code: "+t):null)},_=function(t){n.call(e,t)},m=function(){r.nextTick(y)},y=function(){if(!u)return(!c||h&&h.ended&&!h.destroyed)&&(!l||a&&a.ended&&!a.destroyed)?void 0:n.call(e,new Error("premature close"))},b=function(){e.req.on("finish",f)};return!function(e){return e.setHeader&&"function"==typeof e.abort}(e)?l&&!a&&(e.on("end",d),e.on("close",d)):(e.on("complete",f),e.on("abort",m),e.req?b():e.on("request",b)),function(e){return e.stdio&&Array.isArray(e.stdio)&&3===e.stdio.length}(e)&&e.on("exit",g),e.on("end",p),e.on("finish",f),!1!==t.error&&e.on("error",_),e.on("close",m),function(){u=!0,e.removeListener("complete",f),e.removeListener("abort",m),e.removeListener("request",b),e.req&&e.req.removeListener("finish",f),e.removeListener("end",d),e.removeListener("close",d),e.removeListener("finish",f),e.removeListener("exit",g),e.removeListener("end",p),e.removeListener("error",_),e.removeListener("close",m)}};e.exports=o},2114:e=>{function t(e,t){for(const n in t)Object.defineProperty(e,n,{value:t[n],enumerable:!0,configurable:!0});return e}e.exports=function(e,n,r){if(!e||"string"==typeof e)throw new TypeError("Please pass an Error to err-code");r||(r={}),"object"==typeof n&&(r=n,n=""),n&&(r.code=n);try{return t(e,r)}catch(n){r.message=e.message,r.stack=e.stack;const i=function(){};i.prototype=Object.create(Object.getPrototypeOf(e));return t(new i,r)}}},5573:e=>{var t=/["'&<>]/;e.exports=function(e){var n,r=""+e,i=t.exec(r);if(!i)return r;var s="",o=0,a=0;for(o=i.index;o{var t=Object.create||function(e){var t=function(){};return t.prototype=e,new t},n=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return n},r=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function i(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=t(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}e.exports=i,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._maxListeners=void 0;var s,o=10;try{var a={};Object.defineProperty&&Object.defineProperty(a,"x",{value:0}),s=0===a.x}catch(e){s=!1}function h(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function c(e,n,r,i){var s,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((o=e._events)?(o.newListener&&(e.emit("newListener",n,r.listener?r.listener:r),o=e._events),a=o[n]):(o=e._events=t(null),e._eventsCount=0),a){if("function"==typeof a?a=o[n]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&(s=h(e))&&s>0&&a.length>s){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+' "'+String(n)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');c.name="MaxListenersExceededWarning",c.emitter=e,c.type=n,c.count=a.length,"object"==typeof console&&console.warn&&console.warn("%s: %s",c.name,c.message)}}else a=o[n]=r,++e._eventsCount;return e}function l(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t1&&(t=arguments[1]),t instanceof Error)throw t;var h=new Error('Unhandled "error" event. ('+t+")");throw h.context=t,h}if(!(n=o[e]))return!1;var c="function"==typeof n;switch(r=arguments.length){case 1:!function(e,t,n){if(t)e.call(n);else for(var r=e.length,i=p(e,r),s=0;s=0;o--)if(r[o]===n||r[o].listener===n){a=r[o].listener,s=o;break}if(s<0)return this;0===s?r.shift():function(e,t){for(var n=t,r=n+1,i=e.length;r=0;s--)this.removeListener(e,r[s]);return this},i.prototype.listeners=function(e){return d(this,e,!0)},i.prototype.rawListeners=function(e){return d(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},i.prototype.listenerCount=f,i.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},3975:e=>{e.exports=class{constructor(e){if(!(e>0)||0!=(e-1&e))throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return void 0===this.buffer[this.top]&&(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){const e=this.buffer[this.btm];if(void 0!==e)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}peek(){return this.buffer[this.btm]}isEmpty(){return void 0===this.buffer[this.btm]}}},1607:(e,t,n)=>{const r=n(3975);e.exports=class{constructor(e){this.hwm=e||16,this.head=new r(this.hwm),this.tail=this.head,this.length=0}push(e){if(this.length++,!this.head.push(e)){const t=this.head;this.head=t.next=new r(2*this.head.buffer.length),this.head.push(e)}}shift(){0!==this.length&&this.length--;const e=this.tail.shift();if(void 0===e&&this.tail.next){const e=this.tail.next;return this.tail.next=null,this.tail=e,this.tail.shift()}return e}peek(){return this.tail.peek()}isEmpty(){return this.head.isEmpty()}}},3811:()=>{"undefined"==typeof ReadableStream||ReadableStream.prototype[Symbol.asyncIterator]||(ReadableStream.prototype[Symbol.asyncIterator]=function(){const e=this.getReader();let t=e.read();return{next(){const n=t;return t=e.read(),n},return(){t.then((()=>e.releaseLock()))},throw(e){throw this.return(),e},[Symbol.asyncIterator](){return this}}})},3245:e=>{var t=function(){function e(e,t,n){this.name=e,this.max=t,this.constructor=null!=n?n:function(){},this.list=[]}return e.prototype.alloc=function(){return this.list.length?this.list.shift():this.constructor.apply(this,arguments)},e.prototype.free=function(e){return this.list.length{e.exports=function(){if("undefined"==typeof globalThis)return null;var e={RTCPeerConnection:globalThis.RTCPeerConnection||globalThis.mozRTCPeerConnection||globalThis.webkitRTCPeerConnection,RTCSessionDescription:globalThis.RTCSessionDescription||globalThis.mozRTCSessionDescription||globalThis.webkitRTCSessionDescription,RTCIceCandidate:globalThis.RTCIceCandidate||globalThis.mozRTCIceCandidate||globalThis.webkitRTCIceCandidate};return e.RTCPeerConnection?e:null}},772:(e,t,n)=>{var r=n(8583);function i(e){r.ok(e===i.REQUEST||e===i.RESPONSE),this.type=e,this.state=e+"_LINE",this.info={headers:[],upgrade:!1},this.trailers=[],this.line="",this.isChunked=!1,this.connection="",this.headerSize=0,this.body_bytes=null,this.isUserCall=!1,this.hadError=!1}t.HTTPParser=i,i.encoding="ascii",i.maxHeaderSize=81920,i.REQUEST="REQUEST",i.RESPONSE="RESPONSE";var s=i.kOnHeaders=0,o=i.kOnHeadersComplete=1,a=i.kOnBody=2,h=i.kOnMessageComplete=3;i.prototype[s]=i.prototype[o]=i.prototype[a]=i.prototype[h]=function(){};var c=!0;Object.defineProperty(i,"kOnExecute",{get:function(){return c=!1,4}});var l=t.methods=i.methods=["DELETE","GET","HEAD","POST","PUT","CONNECT","OPTIONS","TRACE","COPY","LOCK","MKCOL","MOVE","PROPFIND","PROPPATCH","SEARCH","UNLOCK","BIND","REBIND","UNBIND","ACL","REPORT","MKACTIVITY","CHECKOUT","MERGE","M-SEARCH","NOTIFY","SUBSCRIBE","UNSUBSCRIBE","PATCH","PURGE","MKCALENDAR","LINK","UNLINK"],u=l.indexOf("CONNECT");i.prototype.reinitialize=i,i.prototype.close=i.prototype.pause=i.prototype.resume=i.prototype.free=function(){},i.prototype._compatMode0_11=!1,i.prototype.getAsyncId=function(){return 0};var d={REQUEST_LINE:!0,RESPONSE_LINE:!0,HEADER:!0};i.prototype.execute=function(e,t,n){if(!(this instanceof i))throw new TypeError("not a HTTPParser");t=t||0,n="number"==typeof n?n:e.length,this.chunk=e,this.offset=t;var r=this.end=t+n;try{for(;this.offseti.maxHeaderSize)?new Error("max header size exceeded"):n};var f={REQUEST_LINE:!0,RESPONSE_LINE:!0,BODY_RAW:!0};i.prototype.finish=function(){if(!this.hadError)return f[this.state]?void("BODY_RAW"===this.state&&this.userCall()(this[h]())):new Error("invalid state for EOF")},i.prototype.consume=i.prototype.unconsume=i.prototype.getCurrentBuffer=function(){},i.prototype.userCall=function(){this.isUserCall=!0;var e=this;return function(t){return e.isUserCall=!1,t}},i.prototype.nextRequest=function(){this.userCall()(this[h]()),this.reinitialize(this.type)},i.prototype.consumeLine=function(){for(var e=this.end,t=this.chunk,n=this.offset;n0&&this.info.versionMinor>0){if(-1!==this.connection.indexOf("close"))return!1}else if(-1===this.connection.indexOf("keep-alive"))return!1;return!(null===this.body_bytes&&!this.isChunked)},i.prototype.HEADER=function(){var e=this.consumeLine();if(void 0!==e){var t=this.info;if(e)this.parseHeader(e,t.headers);else{for(var n,r,s=t.headers,a=!1,h=!1,l=0;l{var r=n(8764).Buffer;const i=n(3029),s=n(7187).EventEmitter,o=n(4375);e.exports=class extends s{constructor(e,t){if(t||(t={}),super(),this.chunkLength=Number(e),!this.chunkLength)throw new Error("First argument must be a chunk length");this.closed=!1,this.destroyed=!1,this.length=Number(t.length)||1/0,this.name=t.name||"idb-chunk-store",this.length!==1/0&&(this.lastChunkLength=this.length%this.chunkLength||this.chunkLength,this.lastChunkIndex=Math.ceil(this.length/this.chunkLength)-1),this.dbPromise=i.openDB(this.name,void 0,{upgrade:e=>{e.createObjectStore("chunks")},blocking:()=>{this.close()},terminated:()=>{this.closed=!0,this.emit("error",new Error("Database unexpectedly closed"))}})}put(e,t,n=(()=>{})){if(this.closed)return o((()=>n(new Error("Storage is closed"))));const r=e===this.lastChunkIndex;return r&&t.length!==this.lastChunkLength?o((()=>n(new Error("Last chunk length must be "+this.lastChunkLength)))):r||t.length===this.chunkLength?(0===(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)).byteOffset&&t.byteLength===t.buffer.byteLength||(t=t.slice()),void(async()=>{try{const n=await this.dbPromise;await n.put("chunks",t,e)}catch(e){return void n(e)}n(null)})()):o((()=>n(new Error("Chunk length must be "+this.chunkLength))))}get(e,t,n=(()=>{})){return"function"==typeof t?this.get(e,{},t):(t||(t={}),this.closed?o((()=>n(new Error("Storage is closed")))):void(async()=>{let i;try{const t=await this.dbPromise;i=await t.get("chunks",e)}catch(e){return void n(e)}if(null==i){const e=new Error("Chunk not found");return e.notFound=!0,void n(e)}let s=r.from(i.buffer,i.byteOffset,i.byteLength);const o=t.offset||0,a=t.length||s.length-o;0===o&&a===s.length||(s=s.slice(o,a+o)),n(null,s)})())}close(e=(()=>{})){if(this.closed)return o((()=>e(new Error("Storage is closed"))));this.closed=!0,(async()=>{try{(await this.dbPromise).close()}catch(t){return void e(t)}e(null)})()}destroy(e=(()=>{})){return this.closed?o((()=>e(new Error("Storage is closed")))):this.destroyed?o((()=>e(new Error("Storage is destroyed")))):(this.destroyed=!0,void this.close((async t=>{if(t)e(t);else{try{await i.deleteDB(this.name)}catch(t){return void e(t)}e(null)}})))}}},3029:(e,t,n)=>{n.r(t),n.d(t,{deleteDB:()=>m,openDB:()=>_,unwrap:()=>g,wrap:()=>p});const r=(e,t)=>t.some((t=>e instanceof t));let i,s;const o=new WeakMap,a=new WeakMap,h=new WeakMap,c=new WeakMap,l=new WeakMap;let u={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return a.get(e);if("objectStoreNames"===t)return e.objectStoreNames||h.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return p(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function d(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(s||(s=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(g(this),t),p(o.get(this))}:function(...t){return p(e.apply(g(this),t))}:function(t,...n){const r=e.call(g(this),t,...n);return h.set(r,t.sort?t.sort():[t]),p(r)}}function f(e){return"function"==typeof e?d(e):(e instanceof IDBTransaction&&function(e){if(a.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",s),e.removeEventListener("abort",s)},i=()=>{t(),r()},s=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",s),e.addEventListener("abort",s)}));a.set(e,t)}(e),r(e,i||(i=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,u):e)}function p(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",s)},i=()=>{t(p(e.result)),r()},s=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",s)}));return t.then((t=>{t instanceof IDBCursor&&o.set(t,e)})).catch((()=>{})),l.set(t,e),t}(e);if(c.has(e))return c.get(e);const t=f(e);return t!==e&&(c.set(e,t),l.set(t,e)),t}const g=e=>l.get(e);function _(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(e,t),a=p(o);return r&&o.addEventListener("upgradeneeded",(e=>{r(p(o.result),e.oldVersion,e.newVersion,p(o.transaction))})),n&&o.addEventListener("blocked",(()=>n())),a.then((e=>{s&&e.addEventListener("close",(()=>s())),i&&e.addEventListener("versionchange",(()=>i()))})).catch((()=>{})),a}function m(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",(()=>t())),p(n).then((()=>{}))}const y=["get","getKey","getAll","getAllKeys","count"],b=["put","add","delete","clear"],w=new Map;function v(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(w.get(t))return w.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=b.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!y.includes(n))return;const s=async function(e,...t){const s=this.transaction(e,i?"readwrite":"readonly");let o=s.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&s.done]))[0]};return w.set(t,s),s}u=(e=>({...e,get:(t,n,r)=>v(t,n)||e.get(t,n,r),has:(t,n)=>!!v(t,n)||e.has(t,n)}))(u)},645:(e,t)=>{t.read=function(e,t,n,r,i){var s,o,a=8*i-r-1,h=(1<>1,l=-7,u=n?i-1:0,d=n?-1:1,f=e[t+u];for(u+=d,s=f&(1<<-l)-1,f>>=-l,l+=a;l>0;s=256*s+e[t+u],u+=d,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=r;l>0;o=256*o+e[t+u],u+=d,l-=8);if(0===s)s=1-c;else{if(s===h)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,r),s-=c}return(f?-1:1)*o*Math.pow(2,s-r)},t.write=function(e,t,n,r,i,s){var o,a,h,c=8*s-i-1,l=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:s-1,p=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(h=Math.pow(2,-o))<1&&(o--,h*=2),(t+=o+u>=1?d/h:d*Math.pow(2,1-u))*h>=2&&(o++,h/=2),o+u>=l?(a=0,o=l):o+u>=1?(a=(t*h-1)*Math.pow(2,i),o+=u):(a=t*Math.pow(2,u-1)*Math.pow(2,i),o=0));i>=8;e[n+f]=255&a,f+=p,a/=256,i-=8);for(o=o<0;e[n+f]=255&o,f+=p,o/=256,c-=8);e[n+f-p]|=128*g}},3700:(e,t,n)=>{const r=n(4375);e.exports=class{constructor(e){if(this.store=e,this.chunkLength=e.chunkLength,!this.store||!this.store.get||!this.store.put)throw new Error("First argument must be abstract-chunk-store compliant");this.mem=[]}put(e,t,n=(()=>{})){this.mem[e]=t,this.store.put(e,t,(t=>{this.mem[e]=null,n(t)}))}get(e,t,n=(()=>{})){if("function"==typeof t)return this.get(e,null,t);let i=this.mem[e];if(!i)return this.store.get(e,t,n);t||(t={});const s=t.offset||0,o=t.length||i.length-s;0===s&&o===i.length||(i=i.slice(s,o+s)),r((()=>n(null,i)))}close(e=(()=>{})){this.store.close(e)}destroy(e=(()=>{})){this.store.destroy(e)}}},5717:e=>{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},6512:function(e){!function(t){const n="(0?\\d+|0x[a-f0-9]+)",r={fourOctet:new RegExp(`^${n}\\.${n}\\.${n}\\.${n}$`,"i"),threeOctet:new RegExp(`^${n}\\.${n}\\.${n}$`,"i"),twoOctet:new RegExp(`^${n}\\.${n}$`,"i"),longValue:new RegExp(`^${n}$`,"i")},i=new RegExp("^0[0-7]+$","i"),s=new RegExp("^0x[a-f0-9]+$","i"),o="%[0-9a-z]{1,}",a="(?:[0-9a-f]+::?)+",h={zoneIndex:new RegExp(o,"i"),native:new RegExp(`^(::)?(${a})?([0-9a-f]+)?(::)?(${o})?$`,"i"),deprecatedTransitional:new RegExp(`^(?:::)(${n}\\.${n}\\.${n}\\.${n}(${o})?)$`,"i"),transitional:new RegExp(`^((?:${a})|(?:::)(?:${a})?)${n}\\.${n}\\.${n}\\.${n}(${o})?$`,"i")};function c(e,t){if(e.indexOf("::")!==e.lastIndexOf("::"))return null;let n,r,i=0,s=-1,o=(e.match(h.zoneIndex)||[])[0];for(o&&(o=o.substring(1),e=e.replace(/%.+$/,""));(s=e.indexOf(":",s+1))>=0;)i++;if("::"===e.substr(0,2)&&i--,"::"===e.substr(-2,2)&&i--,i>t)return null;for(r=t-i,n=":";r--;)n+="0:";return":"===(e=e.replace("::",n))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){const t=e.split(":"),n=[];for(let e=0;e0;){if(i=n-r,i<0&&(i=0),e[s]>>i!=t[s]>>i)return!1;r-=n,s+=1}return!0}function u(e){if(s.test(e))return parseInt(e,16);if("0"===e[0]&&!isNaN(parseInt(e[1],10))){if(i.test(e))return parseInt(e,8);throw new Error(`ipaddr: cannot parse ${e} as octal`)}return parseInt(e,10)}function d(e,t){for(;e.length=0;r-=1){if(i=this.octets[r],!(i in n))return null;if(s=n[i],t&&0!==s)return null;8!==s&&(t=!0),e+=s}return 32-e},e.prototype.range=function(){return f.subnetMatch(this,this.SpecialRanges)},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.toIPv4MappedAddress=function(){return f.IPv6.parse(`::ffff:${this.toString()}`)},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toString=function(){return this.octets.join(".")},e}(),f.IPv4.broadcastAddressFromCIDR=function(e){try{const t=this.parseCIDR(e),n=t[0].toByteArray(),r=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[];let s=0;for(;s<4;)i.push(parseInt(n[s],10)|255^parseInt(r[s],10)),s++;return new this(i)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},f.IPv4.isIPv4=function(e){return null!==this.parser(e)},f.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},f.IPv4.isValidFourPartDecimal=function(e){return!(!f.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},f.IPv4.networkAddressFromCIDR=function(e){let t,n,r,i,s;try{for(t=this.parseCIDR(e),r=t[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[],n=0;n<4;)i.push(parseInt(r[n],10)&parseInt(s[n],10)),n++;return new this(i)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},f.IPv4.parse=function(e){const t=this.parser(e);if(null===t)throw new Error("ipaddr: string is not formatted like an IPv4 Address");return new this(t)},f.IPv4.parseCIDR=function(e){let t;if(t=e.match(/^(.+)\/(\d+)$/)){const e=parseInt(t[2]);if(e>=0&&e<=32){const n=[this.parse(t[1]),e];return Object.defineProperty(n,"toString",{value:function(){return this.join("/")}}),n}}throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},f.IPv4.parser=function(e){let t,n,i;if(t=e.match(r.fourOctet))return function(){const e=t.slice(1,6),r=[];for(let t=0;t4294967295||i<0)throw new Error("ipaddr: address outside defined range");return function(){const e=[];let t;for(t=0;t<=24;t+=8)e.push(i>>t&255);return e}().reverse()}return(t=e.match(r.twoOctet))?function(){const e=t.slice(1,4),n=[];if(i=u(e[1]),i>16777215||i<0)throw new Error("ipaddr: address outside defined range");return n.push(u(e[0])),n.push(i>>16&255),n.push(i>>8&255),n.push(255&i),n}():(t=e.match(r.threeOctet))?function(){const e=t.slice(1,5),n=[];if(i=u(e[2]),i>65535||i<0)throw new Error("ipaddr: address outside defined range");return n.push(u(e[0])),n.push(u(e[1])),n.push(i>>8&255),n.push(255&i),n}():null},f.IPv4.subnetMaskFromPrefixLength=function(e){if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");const t=[0,0,0,0];let n=0;const r=Math.floor(e/8);for(;n=0;s-=1){if(r=this.parts[s],!(r in n))return null;if(i=n[r],t&&0!==i)return null;16!==i&&(t=!0),e+=i}return 128-e},e.prototype.range=function(){return f.subnetMatch(this,this.SpecialRanges)},e.prototype.toByteArray=function(){let e;const t=[],n=this.parts;for(let r=0;r>8),t.push(255&e);return t},e.prototype.toFixedLengthString=function(){const e=function(){const e=[];for(let t=0;t>8,255&t,n>>8,255&n])},e.prototype.toNormalizedString=function(){const e=function(){const e=[];for(let t=0;ti&&(r=n.index,i=n[0].length);return i<0?t:`${t.substring(0,r)}::${t.substring(r+i)}`},e.prototype.toString=function(){return this.toRFC5952String()},e}(),f.IPv6.broadcastAddressFromCIDR=function(e){try{const t=this.parseCIDR(e),n=t[0].toByteArray(),r=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[];let s=0;for(;s<16;)i.push(parseInt(n[s],10)|255^parseInt(r[s],10)),s++;return new this(i)}catch(e){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`)}},f.IPv6.isIPv6=function(e){return null!==this.parser(e)},f.IPv6.isValid=function(e){if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{const t=this.parser(e);return new this(t.parts,t.zoneId),!0}catch(e){return!1}},f.IPv6.networkAddressFromCIDR=function(e){let t,n,r,i,s;try{for(t=this.parseCIDR(e),r=t[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[],n=0;n<16;)i.push(parseInt(r[n],10)&parseInt(s[n],10)),n++;return new this(i)}catch(e){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`)}},f.IPv6.parse=function(e){const t=this.parser(e);if(null===t.parts)throw new Error("ipaddr: string is not formatted like an IPv6 Address");return new this(t.parts,t.zoneId)},f.IPv6.parseCIDR=function(e){let t,n,r;if((n=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(n[2]),t>=0&&t<=128))return r=[this.parse(n[1]),t],Object.defineProperty(r,"toString",{value:function(){return this.join("/")}}),r;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},f.IPv6.parser=function(e){let t,n,r,i,s,o;if(r=e.match(h.deprecatedTransitional))return this.parser(`::ffff:${r[1]}`);if(h.native.test(e))return c(e,8);if((r=e.match(h.transitional))&&(o=r[6]||"",t=c(r[1].slice(0,-1)+o,6),t.parts)){for(s=[parseInt(r[2]),parseInt(r[3]),parseInt(r[4]),parseInt(r[5])],n=0;n128)throw new Error("ipaddr: invalid IPv6 prefix length");const t=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];let n=0;const r=Math.floor(e/8);for(;n{var r=n(8991);function i(e){return r.existsSync(e)&&r.statSync(e).isFile()}e.exports=function(e,t){if(!t)return i(e);r.stat(e,(function(e,n){return e?t(e):t(null,n.isFile())}))},e.exports.sync=i},8225:e=>{e.exports=async function*(e){for(let t of e)"function"==typeof t&&(t=t()),yield*t}},1351:(e,t)=>{t.re=()=>{throw new Error("`junk.re` was renamed to `junk.regex`")},t.regex=new RegExp(["^npm-debug\\.log$","^\\..*\\.swp$","^\\.DS_Store$","^\\.AppleDouble$","^\\.LSOverride$","^Icon\\r$","^\\._.*","^\\.Spotlight-V100(?:$|\\/)","\\.Trashes","^__MACOSX$","~$","^Thumbs\\.db$","^ehthumbs\\.db$","^Desktop\\.ini$","@eaDir$"].join("|")),t.is=e=>t.regex.test(e),t.not=e=>!t.is(e),t.default=e.exports},9507:(e,t,n)=>{const r=n(1798),{EventEmitter:i}=n(7187);function s(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0,r=e.length;nt.vectorClock?e:t}static distance(e,t){let n=0,r=0;const i=Math.min(e.length,t.length),s=Math.max(e.length,t.length);for(;r=0?(this._update(n,r,e),this):n.contacts.length0&&n.length[this.distance(t.id,e),t])).sort(((e,t)=>e[0]-t[0])).slice(0,t).map((e=>e[1]))}count(){let e=0;for(const t=[this.root];t.length>0;){const n=t.pop();null===n.contacts?t.push(n.right,n.left):e+=n.contacts.length}return e}_determineNode(e,t,n){const r=n>>3,i=n%8;if(t.length<=r&&0!==i)return e.left;return t[r]&1<<7-i?e.right:e.left}get(e){o("id",e);let t=0,n=this.root;for(;null===n.contacts;)n=this._determineNode(n,e,t++);const r=this._indexOf(n,e);return r>=0?n.contacts[r]:null}_indexOf(e,t){for(let n=0;n=0){const e=n.contacts.splice(r,1)[0];this.emit("removed",e)}return this}_split(e,t){e.left={contacts:[],dontSplit:!1,left:null,right:null},e.right={contacts:[],dontSplit:!1,left:null,right:null};for(const n of e.contacts)this._determineNode(e,n.id,t).contacts.push(n);e.contacts=null;const n=this._determineNode(e,this.localNodeId,t);(e.left===n?e.right:e.left).dontSplit=!0}toArray(){let e=[];for(const t=[this.root];t.length>0;){const n=t.pop();null===n.contacts?t.push(n.right,n.left):e=e.concat(n.contacts)}return e}*toIterable(){for(const e=[this.root];e.length>0;){const t=e.pop();null===t.contacts?e.push(t.right,t.left):yield*t.contacts}}_update(e,t,n){if(!s(e.contacts[t].id,n.id))throw new Error("wrong index for _update");const r=e.contacts[t],i=this.arbiter(r,n);i===r&&r!==n||(e.contacts.splice(t,1),e.contacts.push(i),this.emit("updated",r,i))}}e.exports=a},4475:(e,t,n)=>{var r=n(8764).Buffer,i=n(8025),s=n(5450),o=n(7460).isIP,a=n(5813),h=n(9539),c=n(7187),l=new Error("Query timed out");l.code="ETIMEDOUT";var u=new Error("Unexpected node id");function d(e){if(!(this instanceof d))return new d(e);e||(e={});var t=this;this.timeout=e.timeout||2e3,this.inflight=0,this.destroyed=!1,this.isIP=e.isIP||o,this.socket=e.socket||i.createSocket("udp4"),this.socket.on("message",(function(e,n){if(t.destroyed)return;if(!n.port)return;try{var i=s.decode(e)}catch(e){return t.emit("warning",e)}var o=i&&i.y&&i.y.toString();if("r"===o||"e"===o){if(!r.isBuffer(i.t))return;try{var a=i.t.readUInt16BE(0)}catch(d){return t.emit("warning",d)}var h=t._ids.indexOf(a);if(-1===h||0===a)return t.emit("response",i,n),void t.emit("warning",new Error("Unexpected transaction id: "+a));var c=t._reqs[h];if(c.peer.host!==n.address)return t.emit("response",i,n),void t.emit("warning",new Error("Out of order response"));if(t._ids[h]=0,t._reqs[h]=null,t.inflight--,"e"===o){var l=Array.isArray(i.e),d=new Error(l?i.e.join(" "):"Unknown error");return d.code=l&&i.e.length&&"number"==typeof i.e[0]?i.e[0]:0,c.callback(d,i,n,c.message),t.emit("update"),void t.emit("postupdate")}var f=i.r&&i.r.id;if(c.peer&&c.peer.id&&f&&!c.peer.id.equals(f))return c.callback(u,null,n),t.emit("update"),void t.emit("postupdate");c.callback(null,i,n,c.message),t.emit("update"),t.emit("postupdate"),t.emit("response",i,n)}else"q"===o?t.emit("query",i,n):t.emit("warning",new Error("Unknown type: "+o))})),this.socket.on("error",(function(e){"EACCES"===e.code||"EADDRINUSE"===e.code?t.emit("error",e):t.emit("warning",e)})),this.socket.on("listening",(function(){t.emit("listening")})),this._tick=0,this._ids=[],this._reqs=[],this._timer=setInterval((function(){var e=t.inflight;if(!e)return;for(var n=0;n-1&&this._cancel(n,t)},d.prototype._cancel=function(e,t){var n=this._reqs[e];this._ids[e]=0,this._reqs[e]=null,n&&(this.inflight--,n.callback(t||new Error("Query was cancelled"),null,n.peer),this.emit("update"),this.emit("postupdate"))},d.prototype._resolveAndQuery=function(e,t,n){var r=this;a.lookup(e.host,(function(i,s){return i?n(i):r.destroyed?n(new Error("k-rpc-socket is destroyed")):void r.query({host:s,port:e.port},t,n)}))}},1167:(e,t,n)=>{var r=n(8764).Buffer;function i(e,t,n){let r=0,i=1;for(let s=t;s=48)r=10*r+(n-48);else if(s!==t||43!==n){if(s!==t||45!==n){if(46===n)break;throw new Error("not a number: buffer["+s+"] = "+n)}i=-1}}return r*i}function s(e,t,n,i){return null==e||0===e.length?null:("number"!=typeof t&&null==i&&(i=t,t=void 0),"number"!=typeof n&&null==i&&(i=n,n=void 0),s.position=0,s.encoding=i||null,s.data=r.isBuffer(e)?e.slice(t,n):r.from(e),s.bytes=s.data.length,s.next())}s.bytes=0,s.position=0,s.data=null,s.encoding=null,s.next=function(){switch(s.data[s.position]){case 100:return s.dictionary();case 108:return s.list();case 105:return s.integer();default:return s.buffer()}},s.find=function(e){let t=s.position;const n=s.data.length,r=s.data;for(;t{var r=n(8764).Buffer;const{getType:i}=n(4697);function s(e,t,n){const i=[];let o=null;return s._encode(i,e),o=r.concat(i),s.bytes=o.length,r.isBuffer(t)?(o.copy(t,n),t):o}s.bytes=-1,s._floatConversionDetected=!1,s._encode=function(e,t){if(null!=t)switch(i(t)){case"buffer":s.buffer(e,t);break;case"object":s.dict(e,t);break;case"map":s.dictMap(e,t);break;case"array":s.list(e,t);break;case"set":s.listSet(e,t);break;case"string":s.string(e,t);break;case"number":case"boolean":s.number(e,t);break;case"arraybufferview":s.buffer(e,r.from(t.buffer,t.byteOffset,t.byteLength));break;case"arraybuffer":s.buffer(e,r.from(t))}};const o=r.from("e"),a=r.from("d"),h=r.from("l");s.buffer=function(e,t){e.push(r.from(t.length+":"),t)},s.string=function(e,t){e.push(r.from(r.byteLength(t)+":"+t))},s.number=function(e,t){const n=2147483648,i=(t/n<<0)*n+(t%n<<0);e.push(r.from("i"+i+"e")),i===t||s._floatConversionDetected||(s._floatConversionDetected=!0,console.warn('WARNING: Possible data corruption detected with value "'+t+'":','Bencoding only defines support for integers, value was converted to "'+i+'"'),console.trace())},s.dict=function(e,t){e.push(a);let n,r=0;const i=Object.keys(t).sort(),h=i.length;for(;r{var r=n(8764).Buffer;const{digitCount:i,getType:s}=n(4697);function o(e){if(null==e)return 0;const t=s(e);switch(t){case"buffer":return i(e.length)+1+e.length;case"arraybufferview":return function(e){const t=e.byteLength-e.byteOffset;return i(t)+1+t}(e);case"string":return function(e){const t=r.byteLength(e);return i(t)+1+t}(e);case"array":case"set":return function(e){let t=2;for(const n of e)t+=o(n);return t}(e);case"number":return 1+i(Math.floor(e))+1;case"bigint":return 1+e.toString().length+1;case"object":return function(e){let t=2;const n=Object.keys(e);for(let s=0;s{const r=e.exports;r.encode=n(2507),r.decode=n(1167),r.byteLength=r.encodingLength=n(1089)},4697:(e,t,n)=>{var r=n(8764).Buffer;const i=e.exports;i.digitCount=function(e){const t=e<0?1:0;return e=Math.abs(Number(e||1)),Math.floor(Math.log10(e))+1+t},i.getType=function(e){return r.isBuffer(e)?"buffer":ArrayBuffer.isView(e)?"arraybufferview":Array.isArray(e)?"array":e instanceof Number?"number":e instanceof Boolean?"boolean":e instanceof Set?"set":e instanceof Map?"map":e instanceof String?"string":e instanceof ArrayBuffer?"arraybuffer":typeof e}},3996:(e,t,n)=>{var r=n(8768),i=n(8764).Buffer,s=n(4475),o=n(9507),a=n(7187),h=n(1798),c=n(9539),l=[{host:"router.bittorrent.com",port:6881},{host:"router.utorrent.com",port:6881},{host:"dht.transmissionbt.com",port:6881}];function u(e){if(!(this instanceof u))return new u(e);e||(e={});var t,n=this;function r(e,t){if(e&&d(e.id,n._idLength)&&!e.id.equals(n.id)){var r=n.nodes.get(e.id);if(r)return void(r.seen=Date.now());n._addNode({id:e.id,host:t.address||t.host,port:t.port,distance:0,seen:Date.now()})}}this._idLength=e.idLength||20,this.id=function(e){if(i.isBuffer(e))return e;if(ArrayBuffer.isView(e))return i.from(e.buffer,e.byteOffset,e.byteLength);if("string"==typeof e)return i.from(e,"hex");throw new Error("Pass a buffer or a string")}(e.id||e.nodeId||h(this._idLength)),this.socket=e.krpcSocket||s(e),this.bootstrap=!1===(t=e.nodes||e.bootstrap)?[]:!0===t?l:[].concat(t||l).map(p),this.concurrency=e.concurrency||16,this.backgroundConcurrency=e.backgroundConcurrency||this.concurrency/4|0,this.k=e.k||20,this.destroyed=!1,this.pending=[],this.nodes=null,this.socket.setMaxListeners(0),this.socket.on("query",(function(e,t){r(e.a,t),n.emit("query",e,t)})),this.socket.on("response",(function(e,t){r(e.r,t)})),this.socket.on("warning",(function(e){n.emit("warning",e)})),this.socket.on("error",(function(e){n.emit("error",e)})),this.socket.on("update",(function(){for(;n.pending.length&&n.socket.inflight=300&&e.code<400&&(a=e):o++,e||i||n&&!1===n(t,h)&&(i=!0),--s||r(o?null:a||new Error("All queries failed"),o)}},u.prototype.query=function(e,t,n){this.socket.inflight>=this.concurrency?this.pending.push([e,t,n]):(t.a||(t.a={}),t.a.id||(t.a.id=this.id),e.token&&(t.a.token=e.token),this.socket.query(e,t,n))},u.prototype.destroy=function(e){this.destroyed=!0,this.socket.destroy(e)},u.prototype.clear=function(){var e=this;this.nodes=new o({localNodeId:this.id,numberOfNodesPerKBucket:this.k,numberOfNodesToPing:this.concurrency}),this.nodes.on("ping",(function(t,n){e.emit("ping",t,(function(t){t&&(t.id&&e.nodes.remove(t.id),e._addNode(n))}))}))},u.prototype.populate=function(e,t,n){this._closest(e,t,!0,null,n)},u.prototype.closest=function(e,t,n,r){this._closest(e,t,!1,n,r)},u.prototype._addNode=function(e){var t=this.nodes.get(e.id);this.nodes.add(e),t||this.emit("node",e)},u.prototype._closest=function(e,t,n,i,s){s||(s=g);var a=this,h=0,c={},l=0,u=!0,p=!1;t.a||(t.a={}),t.a.id||(t.a.id=this.id);var _=new o({localNodeId:e,numberOfNodesPerKBucket:this.k,numberOfNodesToPing:this.concurrency}),m=n?"postupdate":"update";function y(){if(!(a.destroyed||a.socket.inflight>=a.concurrency)){var i=a.pending.length+a.socket.inflight-l;if(!(n&&a.socket.inflight>=a.backgroundConcurrency&&i)){var s=_.closest(e,a.k);(!s.length||s.length=a.concurrency)return;var h=s[o],d=h.host+":"+h.port;c[d]||(c[d]=!0,l++,a.socket.query(h,t,w))}l||(a.socket.removeListener(m,y),r.nextTick(b))}}}function b(){s(null,h)}function w(e,t,n){l--,n&&(c[(n.address||n.host)+":"+n.port]=!0),n&&n.id&&a.nodes.get(n.id)&&(!e||"EUNEXPECTEDNODE"!==e.code&&"ETIMEDOUT"!==e.code||a.nodes.remove(n.id));var r=t&&t.r;if(!r)return y();!e&&d(r.id,a._idLength)&&(h++,v({id:r.id,port:n.port,host:n.host||n.address,distance:0}));for(var s=r.nodes?function(e,t){var n=[];try{for(var r=0;r{function t(e){}e.exports=function(e){var n=null,r=null,i=null,s=null;return function(e,n){s=e,o(n||t)};function o(t){if(r)return n||(n=[]),void n.push(t);var i=s;s=null,r=t,e(i,a)}function a(e){var s=r,a=i;if(i=null,r=null,n&&(i=n,n=null,o(t)),a)for(var h=0;h{t.RateLimiter=n(1114),t.TokenBucket=n(4976)},6188:(e,t,n)=>{var r=n(8768);e.exports=function(){if(void 0!==r&&r.hrtime){var e=r.hrtime(),t=e[0],n=e[1];return 1e3*t+Math.floor(n/1e6)}return(new Date).getTime()}},1114:(e,t,n)=>{var r=n(8768),i=n(4976),s=n(6188),o=function(e,t,n){this.tokenBucket=new i(e,e,t,null),this.tokenBucket.content=e,this.curIntervalStart=s(),this.tokensThisInterval=0,this.fireImmediately=n};o.prototype={tokenBucket:null,curIntervalStart:0,tokensThisInterval:0,fireImmediately:!1,removeTokens:function(e,t){if(e>this.tokenBucket.bucketSize)return r.nextTick(t.bind(null,"Requested tokens "+e+" exceeds maximum tokens per interval "+this.tokenBucket.bucketSize,null)),!1;var n=this,i=s();if((i=this.tokenBucket.interval)&&(this.curIntervalStart=i,this.tokensThisInterval=0),e>this.tokenBucket.tokensPerInterval-this.tokensThisInterval){if(this.fireImmediately)r.nextTick(t.bind(null,null,-1));else{var o=Math.ceil(this.curIntervalStart+this.tokenBucket.interval-i);setTimeout((function(){n.tokenBucket.removeTokens(e,a)}),o)}return!1}return this.tokenBucket.removeTokens(e,a);function a(r,i){if(r)return t(r,null);n.tokensThisInterval+=e,t(null,i)}},tryRemoveTokens:function(e){if(e>this.tokenBucket.bucketSize)return!1;var t=s();if((t=this.tokenBucket.interval)&&(this.curIntervalStart=t,this.tokensThisInterval=0),e>this.tokenBucket.tokensPerInterval-this.tokensThisInterval)return!1;var n=this.tokenBucket.tryRemoveTokens(e);return n&&(this.tokensThisInterval+=e),n},getTokensRemaining:function(){return this.tokenBucket.drip(),this.tokenBucket.content}},e.exports=o},4976:(e,t,n)=>{var r=n(8768),i=function(e,t,n,r){if(this.bucketSize=e,this.tokensPerInterval=t,"string"==typeof n)switch(n){case"sec":case"second":this.interval=1e3;break;case"min":case"minute":this.interval=6e4;break;case"hr":case"hour":this.interval=36e5;break;case"day":this.interval=864e5;break;default:throw new Error("Invaid interval "+n)}else this.interval=n;this.parentBucket=r,this.content=0,this.lastDrip=+new Date};i.prototype={bucketSize:1,tokensPerInterval:1,interval:1e3,parentBucket:null,content:0,lastDrip:0,removeTokens:function(e,t){var n=this;return this.bucketSize?e>this.bucketSize?(r.nextTick(t.bind(null,"Requested tokens "+e+" exceeds bucket size "+this.bucketSize,null)),!1):(this.drip(),e>this.content?i():this.parentBucket?this.parentBucket.removeTokens(e,(function(r,s){return r?t(r,null):e>n.content?i():(n.content-=e,void t(null,Math.min(s,n.content)))})):(this.content-=e,r.nextTick(t.bind(null,null,this.content)),!0)):(r.nextTick(t.bind(null,null,e,Number.POSITIVE_INFINITY)),!0);function i(){var r=Math.ceil((e-n.content)*(n.interval/n.tokensPerInterval));return setTimeout((function(){n.removeTokens(e,t)}),r),!1}},tryRemoveTokens:function(e){return!this.bucketSize||!(e>this.bucketSize)&&(this.drip(),!(e>this.content)&&(!(this.parentBucket&&!this.parentBucket.tryRemoveTokens(e))&&(this.content-=e,!0)))},drip:function(){if(this.tokensPerInterval){var e=+new Date,t=Math.max(e-this.lastDrip,0);this.lastDrip=e;var n=t*(this.tokensPerInterval/this.interval);this.content=Math.min(this.content+n,this.bucketSize)}else this.content=this.bucketSize}},e.exports=i},7117:(e,t,n)=>{var r=n(7187),i=n(5717);function s(e){if(!(this instanceof s))return new s(e);"number"==typeof e&&(e={max:e}),e||(e={}),r.EventEmitter.call(this),this.cache={},this.head=this.tail=null,this.length=0,this.max=e.max||1e3,this.maxAge=e.maxAge||0}e.exports=s,i(s,r.EventEmitter),Object.defineProperty(s.prototype,"keys",{get:function(){return Object.keys(this.cache)}}),s.prototype.clear=function(){this.cache={},this.head=this.tail=null,this.length=0},s.prototype.remove=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];return delete this.cache[e],this._unlink(e,t.prev,t.next),t.value}},s.prototype._unlink=function(e,t,n){this.length--,0===this.length?this.head=this.tail=null:this.head===e?(this.head=t,this.cache[this.head].next=null):this.tail===e?(this.tail=n,this.cache[this.tail].prev=null):(this.cache[t].next=n,this.cache[n].prev=t)},s.prototype.peek=function(e){if(this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return t.value}},s.prototype.set=function(e,t){var n;if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){if((n=this.cache[e]).value=t,this.maxAge&&(n.modified=Date.now()),e===this.head)return t;this._unlink(e,n.prev,n.next)}else n={value:t,modified:0,next:null,prev:null},this.maxAge&&(n.modified=Date.now()),this.cache[e]=n,this.length===this.max&&this.evict();return this.length++,n.next=null,n.prev=this.head,this.head&&(this.cache[this.head].next=e),this.head=e,this.tail||(this.tail=e),t},s.prototype._checkAge=function(e,t){return!(this.maxAge&&Date.now()-t.modified>this.maxAge)||(this.remove(e),this.emit("evict",{key:e,value:t.value}),!1)},s.prototype.get=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return this.head!==e&&(e===this.tail?(this.tail=t.next,this.cache[this.tail].prev=null):this.cache[t.prev].next=t.next,this.cache[t.next].prev=t.prev,this.cache[this.head].next=e,t.prev=this.head,t.next=null,this.head=e),t.value}},s.prototype.evict=function(){if(this.tail){var e=this.tail,t=this.remove(this.tail);this.emit("evict",{key:e,value:t})}}},9417:(e,t,n)=>{var r=n(8764).Buffer;const i=n(6581),{EventEmitter:s}=n(7187),o=n(1227)("lt_donthave");e.exports=()=>{class e extends s{constructor(e){super(),this._peerSupports=!1,this._wire=e}onExtendedHandshake(){this._peerSupports=!0}onMessage(e){let t;try{t=e.readUInt32BE()}catch(e){return}this._wire.peerPieces.get(t)&&(o("got donthave %d",t),this._wire.peerPieces.set(t,!1),this.emit("donthave",t),this._failRequests(t))}donthave(e){if(!this._peerSupports)return;o("donthave %d",e);const t=r.alloc(4);t.writeUInt32BE(e),this._wire.extended("lt_donthave",t)}_failRequests(e){const t=this._wire.requests;for(let n=0;n{e.exports=i;const r=n(4375);function i(e,t){if(!(this instanceof i))return new i(e,t);if(t||(t={}),this.chunkLength=Number(e),!this.chunkLength)throw new Error("First argument must be a chunk length");this.chunks=[],this.closed=!1,this.length=Number(t.length)||1/0,this.length!==1/0&&(this.lastChunkLength=this.length%this.chunkLength||this.chunkLength,this.lastChunkIndex=Math.ceil(this.length/this.chunkLength)-1)}i.prototype.put=function(e,t,n=(()=>{})){if(this.closed)return r((()=>n(new Error("Storage is closed"))));const i=e===this.lastChunkIndex;return i&&t.length!==this.lastChunkLength?r((()=>n(new Error("Last chunk length must be "+this.lastChunkLength)))):i||t.length===this.chunkLength?(this.chunks[e]=t,void r((()=>n(null)))):r((()=>n(new Error("Chunk length must be "+this.chunkLength))))},i.prototype.get=function(e,t,n=(()=>{})){if("function"==typeof t)return this.get(e,null,t);if(this.closed)return r((()=>n(new Error("Storage is closed"))));let i=this.chunks[e];if(!i){const e=new Error("Chunk not found");return e.notFound=!0,r((()=>n(e)))}t||(t={});const s=t.offset||0,o=t.length||i.length-s;0===s&&o===i.length||(i=i.slice(s,o+s)),r((()=>n(null,i)))},i.prototype.close=i.prototype.destroy=function(e=(()=>{})){if(this.closed)return r((()=>e(new Error("Storage is closed"))));this.closed=!0,this.chunks=null,r((()=>e(null)))}},9146:e=>{function t(){this._types=Object.create(null),this._extensions=Object.create(null);for(let e=0;e{let r=n(9146);e.exports=new r(n(4415))},4415:e=>{e.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["es","ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avif":["avif"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/hsj2":["hsj2"],"image/ief":["ief"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]}},6344:e=>{const t=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];e.exports=(e,n)=>{if(n._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");const r=new Set(Object.keys(e).concat(t)),i={};for(const t of r)t in n||(i[t]={get(){const n=e[t];return"function"==typeof n?n.bind(e):n},set(n){e[t]=n},enumerable:!0,configurable:!1});return Object.defineProperties(n,i),e.once("aborted",(()=>{n.destroy(),n.emit("aborted")})),e.once("close",(()=>{e.complete&&n.readable?n.once("end",(()=>{n.emit("close")})):n.emit("close")})),n}},7824:e=>{var t=1e3,n=60*t,r=60*n,i=24*r,s=7*i,o=365.25*i;function a(e,t,n,r){var i=t>=1.5*n;return Math.round(e/n)+" "+r+(i?"s":"")}e.exports=function(e,h){h=h||{};var c=typeof e;if("string"===c&&e.length>0)return function(e){if((e=String(e)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!a)return;var h=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return h*o;case"weeks":case"week":case"w":return h*s;case"days":case"day":case"d":return h*i;case"hours":case"hour":case"hrs":case"hr":case"h":return h*r;case"minutes":case"minute":case"mins":case"min":case"m":return h*n;case"seconds":case"second":case"secs":case"sec":case"s":return h*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return h;default:return}}(e);if("number"===c&&isFinite(e))return h.long?function(e){var s=Math.abs(e);if(s>=i)return a(e,s,i,"day");if(s>=r)return a(e,s,r,"hour");if(s>=n)return a(e,s,n,"minute");if(s>=t)return a(e,s,t,"second");return e+" ms"}(e):function(e){var s=Math.abs(e);if(s>=i)return Math.round(e/i)+"d";if(s>=r)return Math.round(e/r)+"h";if(s>=n)return Math.round(e/n)+"m";if(s>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},7418:e=>{var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,i){for(var s,o,a=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),h=1;h{var r=n(2479);function i(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function s(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},n=e.name||"Function wrapped with `once`";return t.onceError=n+" shouldn't be called more than once",t.called=!1,t}e.exports=r(i),e.exports.strict=r(s),i.proto=i((function(){Object.defineProperty(Function.prototype,"once",{value:function(){return i(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return s(this)},configurable:!0})}))},6470:(e,t,n)=>{var r=n(8768);function i(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function s(e,t){for(var n,r="",i=0,s=-1,o=0,a=0;a<=e.length;++a){if(a2){var h=r.lastIndexOf("/");if(h!==r.length-1){-1===h?(r="",i=0):i=(r=r.slice(0,h)).length-1-r.lastIndexOf("/"),s=a,o=0;continue}}else if(2===r.length||1===r.length){r="",i=0,s=a,o=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(s+1,a):r=e.slice(s+1,a),i=a-s-1;s=a,o=0}else 46===n&&-1!==o?++o:o=-1}return r}var o={resolve:function(){for(var e,t="",n=!1,o=arguments.length-1;o>=-1&&!n;o--){var a;o>=0?a=arguments[o]:(void 0===e&&(e=r.cwd()),a=e),i(a),0!==a.length&&(t=a+"/"+t,n=47===a.charCodeAt(0))}return t=s(t,!n),n?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(e){if(i(e),0===e.length)return".";var t=47===e.charCodeAt(0),n=47===e.charCodeAt(e.length-1);return 0!==(e=s(e,!t)).length||t||(e="."),e.length>0&&n&&(e+="/"),t?"/"+e:e},isAbsolute:function(e){return i(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,t=0;t0&&(void 0===e?e=n:e+="/"+n)}return void 0===e?".":o.normalize(e)},relative:function(e,t){if(i(e),i(t),e===t)return"";if((e=o.resolve(e))===(t=o.resolve(t)))return"";for(var n=1;nc){if(47===t.charCodeAt(a+u))return t.slice(a+u+1);if(0===u)return t.slice(a+u)}else s>c&&(47===e.charCodeAt(n+u)?l=u:0===u&&(l=0));break}var d=e.charCodeAt(n+u);if(d!==t.charCodeAt(a+u))break;47===d&&(l=u)}var f="";for(u=n+l+1;u<=r;++u)u!==r&&47!==e.charCodeAt(u)||(0===f.length?f+="..":f+="/..");return f.length>0?f+t.slice(a+l):(a+=l,47===t.charCodeAt(a)&&++a,t.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(i(e),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,r=-1,s=!0,o=e.length-1;o>=1;--o)if(47===(t=e.charCodeAt(o))){if(!s){r=o;break}}else s=!1;return-1===r?n?"/":".":n&&1===r?"//":e.slice(0,r)},basename:function(e,t){if(void 0!==t&&"string"!=typeof t)throw new TypeError('"ext" argument must be a string');i(e);var n,r=0,s=-1,o=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var a=t.length-1,h=-1;for(n=e.length-1;n>=0;--n){var c=e.charCodeAt(n);if(47===c){if(!o){r=n+1;break}}else-1===h&&(o=!1,h=n+1),a>=0&&(c===t.charCodeAt(a)?-1==--a&&(s=n):(a=-1,s=h))}return r===s?s=h:-1===s&&(s=e.length),e.slice(r,s)}for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!o){r=n+1;break}}else-1===s&&(o=!1,s=n+1);return-1===s?"":e.slice(r,s)},extname:function(e){i(e);for(var t=-1,n=0,r=-1,s=!0,o=0,a=e.length-1;a>=0;--a){var h=e.charCodeAt(a);if(47!==h)-1===r&&(s=!1,r=a+1),46===h?-1===t?t=a:1!==o&&(o=1):-1!==t&&(o=-1);else if(!s){n=a+1;break}}return-1===t||-1===r||0===o||1===o&&t===r-1&&t===n+1?"":e.slice(t,r)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+e+r:r}("/",e)},parse:function(e){i(e);var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n,r=e.charCodeAt(0),s=47===r;s?(t.root="/",n=1):n=0;for(var o=-1,a=0,h=-1,c=!0,l=e.length-1,u=0;l>=n;--l)if(47!==(r=e.charCodeAt(l)))-1===h&&(c=!1,h=l+1),46===r?-1===o?o=l:1!==u&&(u=1):-1!==o&&(u=-1);else if(!c){a=l+1;break}return-1===o||-1===h||0===u||1===u&&o===h-1&&o===a+1?-1!==h&&(t.base=t.name=0===a&&s?e.slice(1,h):e.slice(a,h)):(0===a&&s?(t.name=e.slice(1,o),t.base=e.slice(1,h)):(t.name=e.slice(a,o),t.base=e.slice(a,h)),t.ext=e.slice(o,h)),a>0?t.dir=e.slice(0,a-1):s&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,e.exports=o},3786:e=>{e.exports=function(e){return Math.max(16384,1<{var r=n(8768),i=n(778),s=n(2840),o=n(1156),a=function(){},h=/^v?\.0/.test(r.version),c=function(e){return"function"==typeof e},l=function(e,t,n,r){r=i(r);var l=!1;e.on("close",(function(){l=!0})),s(e,{readable:t,writable:n},(function(e){if(e)return r(e);l=!0,r()}));var u=!1;return function(t){if(!l&&!u)return u=!0,function(e){return!!h&&!!o&&(e instanceof(o.ReadStream||a)||e instanceof(o.WriteStream||a))&&c(e.close)}(e)?e.close(a):function(e){return e.setHeader&&c(e.abort)}(e)?e.abort():c(e.destroy)?e.destroy():void r(t||new Error("stream was destroyed"))}},u=function(e){e()},d=function(e,t){return e.pipe(t)};e.exports=function(){var e,t=Array.prototype.slice.call(arguments),n=c(t[t.length-1]||a)&&t.pop()||a;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r=t.map((function(i,s){var o=s0,(function(t){e||(e=t),t&&r.forEach(u),o||(r.forEach(u),n(e))}))}));return t.reduce(d)}},2587:e=>{function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,n,r,i){n=n||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var o=/\+/g;e=e.split(n);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var h=e.length;a>0&&h>a&&(h=a);for(var c=0;c=0?(l=p.substr(0,g),u=p.substr(g+1)):(l=p,u=""),d=decodeURIComponent(l),f=decodeURIComponent(u),t(s,d)?Array.isArray(s[d])?s[d].push(f):s[d]=[s[d],f]:s[d]=f}return s}},2361:e=>{var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,n,r,i){return n=n||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(i){var s=encodeURIComponent(t(i))+r;return Array.isArray(e[i])?e[i].map((function(e){return s+encodeURIComponent(t(e))})).join(n):s+encodeURIComponent(t(e[i]))})).join(n):i?encodeURIComponent(t(i))+r+encodeURIComponent(t(e)):""}},7673:(e,t,n)=>{t.decode=t.parse=n(2587),t.encode=t.stringify=n(2361)},4375:e=>{let t;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:globalThis):e=>(t||(t=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0)))},3527:e=>{e.exports="function"==typeof queueMicrotask?queueMicrotask:e=>Promise.resolve().then(e)},5960:e=>{e.exports=function(e){var t=0;return function(){if(t===e.length)return null;var n=e.length-t,r=Math.random()*n|0,i=e[t+r],s=e[t];return e[t]=i,e[t+r]=s,t++,i}}},1798:(e,t,n)=>{var r=n(8768),i=65536,s=4294967295;var o=n(9509).Buffer,a=globalThis.crypto||globalThis.msCrypto;a&&a.getRandomValues?e.exports=function(e,t){if(e>s)throw new RangeError("requested too many random bytes");var n=o.allocUnsafe(e);if(e>0)if(e>i)for(var h=0;h{function t(e,t){return{start:e.start,end:e.end,index:t}}function n(e){return{start:e.start,end:e.end}}function r(e,t){return e.index-t.index}function i(e,t){return e.start-t.start}e.exports=function(e,s,o){if("string"!=typeof s)throw new TypeError("argument str must be a string");var a=s.indexOf("=");if(-1===a)return-2;var h=s.slice(a+1).split(","),c=[];c.type=s.slice(0,a);for(var l=0;le-1&&(f=e-1),isNaN(d)||isNaN(f)||d>f||d<0||c.push({start:d,end:f})}if(c.length<1)return-1;return o&&o.combine?function(e){for(var s=e.map(t).sort(i),o=0,a=1;ac.end+1?s[++o]=h:h.end>c.end&&(c.end=h.end,c.index=Math.min(c.index,h.index))}s.length=o+1;var l=s.sort(r).map(n);return l.type=e.type,l}(c):c}},7830:e=>{function t(e){return parseInt(e,10)===e}function n(e){function n(t){if(void 0===t){t=new Array(e);for(var n=0;n{const t={};function n(e,n,r){r||(r=Error);class i extends r{constructor(e,t,r){super(function(e,t,r){return"string"==typeof n?n:n(e,t,r)}(e,t,r))}}i.prototype.name=r.name,i.prototype.code=e,t[e]=i}function r(e,t){if(Array.isArray(e)){const n=e.length;return e=e.map((e=>String(e))),n>2?`one of ${t} ${e.slice(0,n-1).join(", ")}, or `+e[n-1]:2===n?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}return`of ${t} ${String(e)}`}n("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(e,t,n){let i;var s,o;let a;if("string"==typeof t&&(s="not ",t.substr(!o||o<0?0:+o,s.length)===s)?(i="must not be",t=t.replace(/^not /,"")):i="must be",function(e,t,n){return(void 0===n||n>e.length)&&(n=e.length),e.substring(n-t.length,n)===t}(e," argument"))a=`The ${e} ${i} ${r(t,"type")}`;else{const n=function(e,t,n){return"number"!=typeof n&&(n=0),!(n+t.length>e.length)&&-1!==e.indexOf(t,n)}(e,".")?"property":"argument";a=`The "${e}" ${n} ${i} ${r(t,"type")}`}return a+=". Received type "+typeof n,a}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.q=t},6753:(e,t,n)=>{var r=n(8768),i=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=l;var s=n(9481),o=n(4229);n(5717)(l,s);for(var a=i(o.prototype),h=0;h{e.exports=i;var r=n(4605);function i(e){if(!(this instanceof i))return new i(e);r.call(this,e)}n(5717)(i,r),i.prototype._transform=function(e,t,n){n(null,e)}},9481:(e,t,n)=>{var r,i=n(8768);e.exports=S,S.ReadableState=x;n(7187).EventEmitter;var s=function(e,t){return e.listeners(t).length},o=n(9740),a=n(8764).Buffer,h=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var c,l=n(9539);c=l&&l.debuglog?l.debuglog("stream"):function(){};var u,d,f,p=n(7327),g=n(1195),_=n(2457).getHighWaterMark,m=n(4012).q,y=m.ERR_INVALID_ARG_TYPE,b=m.ERR_STREAM_PUSH_AFTER_EOF,w=m.ERR_METHOD_NOT_IMPLEMENTED,v=m.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;n(5717)(S,o);var k=g.errorOrDestroy,E=["error","close","destroy","pause","resume"];function x(e,t,i){r=r||n(6753),e=e||{},"boolean"!=typeof i&&(i=t instanceof r),this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=_(this,e,"readableHighWaterMark",i),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(u||(u=n(2553).s),this.decoder=new u(e.encoding),this.encoding=e.encoding)}function S(e){if(r=r||n(6753),!(this instanceof S))return new S(e);var t=this instanceof r;this._readableState=new x(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),o.call(this)}function T(e,t,n,r,i){c("readableAddChunk",t);var s,o=e._readableState;if(null===t)o.reading=!1,function(e,t){if(c("onEofChunk"),t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,t.sync?P(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,R(e)))}(e,o);else if(i||(s=function(e,t){var n;r=t,a.isBuffer(r)||r instanceof h||"string"==typeof t||void 0===t||e.objectMode||(n=new y("chunk",["string","Buffer","Uint8Array"],t));var r;return n}(o,t)),s)k(e,s);else if(o.objectMode||t&&t.length>0)if("string"==typeof t||o.objectMode||Object.getPrototypeOf(t)===a.prototype||(t=function(e){return a.from(e)}(t)),r)o.endEmitted?k(e,new v):A(e,o,t,!0);else if(o.ended)k(e,new b);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!n?(t=o.decoder.write(t),o.objectMode||0!==t.length?A(e,o,t,!1):O(e,o)):A(e,o,t,!1)}else r||(o.reading=!1,O(e,o));return!o.ended&&(o.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=C?e=C:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function P(e){var t=e._readableState;c("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(c("emitReadable",t.flowing),t.emittedReadable=!0,i.nextTick(R,e))}function R(e){var t=e._readableState;c("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,U(e)}function O(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(L,e,t))}function L(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function B(e){c("readable nexttick read 0"),e.read(0)}function D(e,t){c("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),U(e),t.flowing&&!t.reading&&e.read(0)}function U(e){var t=e._readableState;for(c("flow",t.flowing);t.flowing&&null!==e.read(););}function M(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):n=t.buffer.consume(e,t.decoder),n);var n}function j(e){var t=e._readableState;c("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,i.nextTick(H,t,e))}function H(e,t){if(c("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var n=t._writableState;(!n||n.autoDestroy&&n.finished)&&t.destroy()}}function q(e,t){for(var n=0,r=e.length;n=t.highWaterMark:t.length>0)||t.ended))return c("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?j(this):P(this),null;if(0===(e=I(e,t))&&t.ended)return 0===t.length&&j(this),null;var r,i=t.needReadable;return c("need readable",i),(0===t.length||t.length-e0?M(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&j(this)),null!==r&&this.emit("data",r),r},S.prototype._read=function(e){k(this,new w("_read()"))},S.prototype.pipe=function(e,t){var n=this,r=this._readableState;switch(r.pipesCount){case 0:r.pipes=e;break;case 1:r.pipes=[r.pipes,e];break;default:r.pipes.push(e)}r.pipesCount+=1,c("pipe count=%d opts=%j",r.pipesCount,t);var o=(!t||!1!==t.end)&&e!==i.stdout&&e!==i.stderr?h:_;function a(t,i){c("onunpipe"),t===n&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,c("cleanup"),e.removeListener("close",p),e.removeListener("finish",g),e.removeListener("drain",l),e.removeListener("error",f),e.removeListener("unpipe",a),n.removeListener("end",h),n.removeListener("end",_),n.removeListener("data",d),u=!0,!r.awaitDrain||e._writableState&&!e._writableState.needDrain||l())}function h(){c("onend"),e.end()}r.endEmitted?i.nextTick(o):n.once("end",o),e.on("unpipe",a);var l=function(e){return function(){var t=e._readableState;c("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,U(e))}}(n);e.on("drain",l);var u=!1;function d(t){c("ondata");var i=e.write(t);c("dest.write",i),!1===i&&((1===r.pipesCount&&r.pipes===e||r.pipesCount>1&&-1!==q(r.pipes,e))&&!u&&(c("false write response, pause",r.awaitDrain),r.awaitDrain++),n.pause())}function f(t){c("onerror",t),_(),e.removeListener("error",f),0===s(e,"error")&&k(e,t)}function p(){e.removeListener("finish",g),_()}function g(){c("onfinish"),e.removeListener("close",p),_()}function _(){c("unpipe"),n.unpipe(e)}return n.on("data",d),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",f),e.once("close",p),e.once("finish",g),e.emit("pipe",n),r.flowing||(c("pipe resume"),n.resume()),e},S.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var s=0;s0,!1!==r.flowing&&this.resume()):"readable"===e&&(r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.flowing=!1,r.emittedReadable=!1,c("on readable",r.length,r.reading),r.length?P(this):r.reading||i.nextTick(B,this))),n},S.prototype.addListener=S.prototype.on,S.prototype.removeListener=function(e,t){var n=o.prototype.removeListener.call(this,e,t);return"readable"===e&&i.nextTick(N,this),n},S.prototype.removeAllListeners=function(e){var t=o.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||i.nextTick(N,this),t},S.prototype.resume=function(){var e=this._readableState;return e.flowing||(c("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,i.nextTick(D,e,t))}(this,e)),e.paused=!1,this},S.prototype.pause=function(){return c("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(c("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},S.prototype.wrap=function(e){var t=this,n=this._readableState,r=!1;for(var i in e.on("end",(function(){if(c("wrapped end"),n.decoder&&!n.ended){var e=n.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(c("wrapped data"),n.decoder&&(i=n.decoder.write(i)),n.objectMode&&null==i)||(n.objectMode||i&&i.length)&&(t.push(i)||(r=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var s=0;s{e.exports=l;var r=n(4012).q,i=r.ERR_METHOD_NOT_IMPLEMENTED,s=r.ERR_MULTIPLE_CALLBACK,o=r.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=r.ERR_TRANSFORM_WITH_LENGTH_0,h=n(6753);function c(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(null===r)return this.emit("error",new s);n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{var r,i=n(8768);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree.next=e}(t,e)}}e.exports=S,S.WritableState=x;var o={deprecate:n(4927)},a=n(9740),h=n(8764).Buffer,c=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var l,u=n(1195),d=n(2457).getHighWaterMark,f=n(4012).q,p=f.ERR_INVALID_ARG_TYPE,g=f.ERR_METHOD_NOT_IMPLEMENTED,_=f.ERR_MULTIPLE_CALLBACK,m=f.ERR_STREAM_CANNOT_PIPE,y=f.ERR_STREAM_DESTROYED,b=f.ERR_STREAM_NULL_VALUES,w=f.ERR_STREAM_WRITE_AFTER_END,v=f.ERR_UNKNOWN_ENCODING,k=u.errorOrDestroy;function E(){}function x(e,t,o){r=r||n(6753),e=e||{},"boolean"!=typeof o&&(o=t instanceof r),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=d(this,e,"writableHighWaterMark",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===e.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,s=n.writecb;if("function"!=typeof s)throw new _;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,s){--t.pendingcb,n?(i.nextTick(s,r),i.nextTick(R,e,t),e._writableState.errorEmitted=!0,k(e,r)):(s(r),e._writableState.errorEmitted=!0,k(e,r),R(e,t))}(e,n,r,t,s);else{var o=I(n)||e.destroyed;o||n.corked||n.bufferProcessing||!n.bufferedRequest||C(e,n),r?i.nextTick(A,e,n,o,s):A(e,n,o,s)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function S(e){var t=this instanceof(r=r||n(6753));if(!t&&!l.call(S,this))return new S(e);this._writableState=new x(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),a.call(this)}function T(e,t,n,r,i,s,o){t.writelen=r,t.writecb=o,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new y("write")):n?e._writev(i,t.onwrite):e._write(i,s,t.onwrite),t.sync=!1}function A(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),R(e,t)}function C(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),o=t.corkedRequestsFree;o.entry=n;for(var a=0,h=!0;n;)i[a]=n,n.isBuf||(h=!1),n=n.next,a+=1;i.allBuffers=h,T(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,l=n.encoding,u=n.callback;if(T(e,t,!1,t.objectMode?1:c.length,c,l,u),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function I(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function P(e,t){e._final((function(n){t.pendingcb--,n&&k(e,n),t.prefinished=!0,e.emit("prefinish"),R(e,t)}))}function R(e,t){var n=I(t);if(n&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,i.nextTick(P,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var r=e._readableState;(!r||r.autoDestroy&&r.endEmitted)&&e.destroy()}return n}n(5717)(S,a),x.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(x.prototype,"buffer",{get:o.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(S,Symbol.hasInstance,{value:function(e){return!!l.call(this,e)||this===S&&(e&&e._writableState instanceof x)}})):l=function(e){return e instanceof this},S.prototype.pipe=function(){k(this,new m)},S.prototype.write=function(e,t,n){var r,s=this._writableState,o=!1,a=!s.objectMode&&(r=e,h.isBuffer(r)||r instanceof c);return a&&!h.isBuffer(e)&&(e=function(e){return h.from(e)}(e)),"function"==typeof t&&(n=t,t=null),a?t="buffer":t||(t=s.defaultEncoding),"function"!=typeof n&&(n=E),s.ending?function(e,t){var n=new w;k(e,n),i.nextTick(t,n)}(this,n):(a||function(e,t,n,r){var s;return null===n?s=new b:"string"==typeof n||t.objectMode||(s=new p("chunk",["string","Buffer"],n)),!s||(k(e,s),i.nextTick(r,s),!1)}(this,s,e,n))&&(s.pendingcb++,o=function(e,t,n,r,i,s){if(!n){var o=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=h.from(t,n));return t}(t,r,i);r!==o&&(n=!0,i="buffer",r=o)}var a=t.objectMode?1:r.length;t.length+=a;var c=t.length-1))throw new v(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),S.prototype._write=function(e,t,n){n(new g("_write()"))},S.prototype._writev=null,S.prototype.end=function(e,t,n){var r=this._writableState;return"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||function(e,t,n){t.ending=!0,R(e,t),n&&(t.finished?i.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n),this},Object.defineProperty(S.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),S.prototype.destroy=u.destroy,S.prototype._undestroy=u.undestroy,S.prototype._destroy=function(e,t){t(e)}},5850:(e,t,n)=>{var r,i=n(8768);function s(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=n(8610),a=Symbol("lastResolve"),h=Symbol("lastReject"),c=Symbol("error"),l=Symbol("ended"),u=Symbol("lastPromise"),d=Symbol("handlePromise"),f=Symbol("stream");function p(e,t){return{value:e,done:t}}function g(e){var t=e[a];if(null!==t){var n=e[f].read();null!==n&&(e[u]=null,e[a]=null,e[h]=null,t(p(n,!1)))}}function _(e){i.nextTick(g,e)}var m=Object.getPrototypeOf((function(){})),y=Object.setPrototypeOf((s(r={get stream(){return this[f]},next:function(){var e=this,t=this[c];if(null!==t)return Promise.reject(t);if(this[l])return Promise.resolve(p(void 0,!0));if(this[f].destroyed)return new Promise((function(t,n){i.nextTick((function(){e[c]?n(e[c]):t(p(void 0,!0))}))}));var n,r=this[u];if(r)n=new Promise(function(e,t){return function(n,r){e.then((function(){t[l]?n(p(void 0,!0)):t[d](n,r)}),r)}}(r,this));else{var s=this[f].read();if(null!==s)return Promise.resolve(p(s,!1));n=new Promise(this[d])}return this[u]=n,n}},Symbol.asyncIterator,(function(){return this})),s(r,"return",(function(){var e=this;return new Promise((function(t,n){e[f].destroy(null,(function(e){e?n(e):t(p(void 0,!0))}))}))})),r),m);e.exports=function(e){var t,n=Object.create(y,(s(t={},f,{value:e,writable:!0}),s(t,a,{value:null,writable:!0}),s(t,h,{value:null,writable:!0}),s(t,c,{value:null,writable:!0}),s(t,l,{value:e._readableState.endEmitted,writable:!0}),s(t,d,{value:function(e,t){var r=n[f].read();r?(n[u]=null,n[a]=null,n[h]=null,e(p(r,!1))):(n[a]=e,n[h]=t)},writable:!0}),t));return n[u]=null,o(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=n[h];return null!==t&&(n[u]=null,n[a]=null,n[h]=null,t(e)),void(n[c]=e)}var r=n[a];null!==r&&(n[u]=null,n[a]=null,n[h]=null,r(p(void 0,!0))),n[l]=!0})),e.on("readable",_.bind(null,n)),n}},7327:(e,t,n)=>{function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n}},{key:"concat",value:function(e){if(0===this.length)return h.alloc(0);for(var t,n,r,i=h.allocUnsafe(e>>>0),s=this.head,o=0;s;)t=s.data,n=i,r=o,h.prototype.copy.call(t,n,r),o+=s.data.length,s=s.next;return i}},{key:"consume",value:function(e,t){var n;return ei.length?i.length:e;if(s===i.length?r+=i:r+=i.slice(0,e),0==(e-=s)){s===i.length?(++n,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(s));break}++n}return this.length-=n,r}},{key:"_getBuffer",value:function(e){var t=h.allocUnsafe(e),n=this.head,r=1;for(n.data.copy(t),e-=n.data.length;n=n.next;){var i=n.data,s=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,s),0==(e-=s)){s===i.length?(++r,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=i.slice(s));break}++r}return this.length-=r,t}},{key:l,value:function(e,t){return c(this,i(i({},t),{},{depth:0,customInspect:!1}))}}])&&o(t.prototype,n),r&&o(t,r),Object.defineProperty(t,"prototype",{writable:!1}),e}()},1195:(e,t,n)=>{var r=n(8768);function i(e,t){o(e,t),s(e)}function s(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function o(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,r.nextTick(o,this,e)):r.nextTick(o,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?n._writableState?n._writableState.errorEmitted?r.nextTick(s,n):(n._writableState.errorEmitted=!0,r.nextTick(i,n,e)):r.nextTick(i,n,e):t?(r.nextTick(s,n),t(e)):r.nextTick(s,n)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var n=e._readableState,r=e._writableState;n&&n.autoDestroy||r&&r.autoDestroy?e.destroy(t):e.emit("error",t)}}},8610:(e,t,n)=>{var r=n(4012).q.ERR_STREAM_PREMATURE_CLOSE;function i(){}e.exports=function e(t,n,s){if("function"==typeof n)return e(t,null,n);n||(n={}),s=function(e){var t=!1;return function(){if(!t){t=!0;for(var n=arguments.length,r=new Array(n),i=0;i{function r(e,t,n,r,i,s,o){try{var a=e[s](o),h=a.value}catch(e){return void n(e)}a.done?t(h):Promise.resolve(h).then(r,i)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=n(4012).q.ERR_INVALID_ARG_TYPE;e.exports=function(e,t,n){var a;if(t&&"function"==typeof t.next)a=t;else if(t&&t[Symbol.asyncIterator])a=t[Symbol.asyncIterator]();else{if(!t||!t[Symbol.iterator])throw new o("iterable",["Iterable"],t);a=t[Symbol.iterator]()}var h=new e(function(e){for(var t=1;t{var r;var i=n(4012).q,s=i.ERR_MISSING_ARGS,o=i.ERR_STREAM_DESTROYED;function a(e){if(e)throw e}function h(e){e()}function c(e,t){return e.pipe(t)}e.exports=function(){for(var e=arguments.length,t=new Array(e),i=0;i0,(function(e){l||(l=e),e&&d.forEach(h),s||(d.forEach(h),u(l))}))}));return t.reduce(c)}},2457:(e,t,n)=>{var r=n(4012).q.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,n,i){var s=function(e,t,n){return null!=e.highWaterMark?e.highWaterMark:t?e[n]:null}(t,i,n);if(null!=s){if(!isFinite(s)||Math.floor(s)!==s||s<0)throw new r(i?n:"highWaterMark",s);return Math.floor(s)}return e.objectMode?16:16384}}},9740:(e,t,n)=>{e.exports=n(1451)},1451:(e,t,n)=>{var r=n(8768),i=n(1451);"disable"===r.env.READABLE_STREAM&&i?(e.exports=i.Readable,Object.assign(e.exports,i),e.exports.Stream=i):((t=e.exports=n(9481)).Stream=i||t,t.Readable=t,t.Writable=n(4229),t.Duplex=n(6753),t.Transform=n(4605),t.PassThrough=n(2725),t.finished=n(8610),t.pipeline=n(9946))},4734:(e,t,n)=>{const r=n(5792);var i=[];function s(){this.list=[],this.map=new Map}function o(){this.records=new Map,this.size=0}function a(e){if(!(this instanceof a))return new a(e);if(e||(e={}),this.maxSize=e.maxSize||1/0,this.maxAge=e.maxAge||0,this._onstale=e.onStale||e.onstale||null,this._fresh=new o,this._stale=new o,this._interval=null,this._gced=!1,this.maxAge&&this.maxAge<1/0){var t=Math.ceil(2/3*this.maxAge);this._interval=setInterval(this._gcAuto.bind(this),t),this._interval.unref&&this._interval.unref()}}function h(e){return r.isBuffer(e)?r.toString(e,"hex"):e}function c(e,t,n){var r=e[t];r.index=n,e[n].index=t,e[t]=e[n],e[n]=r}e.exports=a,s.prototype.add=function(e,t){var n=h(e),r=this.map.get(n);return!r&&(r={index:this.list.length,record:t||e},this.list.push(r),this.map.set(n,r),!0)},s.prototype.remove=function(e){var t=h(e),n=this.map.get(t);return!!n&&(c(this.list,n.index,this.list.length-1),this.list.pop(),this.map.delete(t),!0)},o.prototype.add=function(e,t,n){var r=this.records.get(e);return r||(r=new s,this.records.set(e,r)),!!r.add(t,n)&&(this.size++,!0)},o.prototype.remove=function(e,t,n){var r=this.records.get(e);return!!r&&(!!r.remove(t,n)&&(this.size--,r.map.size||this.records.delete(e),!0))},o.prototype.get=function(e){var t=this.records.get(e);return t?t.list:i},Object.defineProperty(a.prototype,"size",{get:function(){return this._fresh.size+this._stale.size}}),a.prototype.add=function(e,t,n){this._stale.remove(e,t,n),this._fresh.add(e,t,n)&&this._fresh.size>this.maxSize&&this._gc()},a.prototype.remove=function(e,t,n){this._fresh.remove(e,t,n),this._stale.remove(e,t,n)},a.prototype.get=function(e,t){var n=this._fresh.get(e),r=this._stale.get(e),i=n.length,s=r.length,o=i+s;(t>o||!t)&&(t=o);for(var a=new Array(t),h=0;h0&&this._onstale(this._stale),this._stale=this._fresh,this._fresh=new o,this._gced=!0},a.prototype.clear=function(){this._gc(),this._gc()},a.prototype.destroy=function(){this.clear(),clearInterval(this._interval),this._interval=null}},9967:(e,t,n)=>{e.exports=function(e,t,n){if("number"!=typeof t)throw new Error("second argument must be a Number");let i,s,o,a,h,c,l=!0;Array.isArray(e)?(i=[],o=s=e.length):(a=Object.keys(e),i={},o=s=a.length);function u(e){function t(){n&&n(e,i),n=null}l?r(t):t()}function d(t,n,r){if(i[t]=r,n&&(h=!0),0==--o||n)u(n);else if(!h&&c{e.exports=function(e,t){let n,i,s,o=!0;Array.isArray(e)?(n=[],i=e.length):(s=Object.keys(e),n={},i=s.length);function a(e){function i(){t&&t(e,n),t=null}o?r(i):i()}function h(e,t,r){n[e]=r,(0==--i||t)&&a(t)}i?s?s.forEach((function(t){e[t]((function(e,n){h(t,e,n)}))})):e.forEach((function(e,t){e((function(e,n){h(t,e,n)}))})):a(null);o=!1};const r=n(4375)},9059:(e,t,n)=>{var r=n(8768);e.exports=function(e,t){var n=0,i=[],s=!0;function o(e){function n(){t&&t(e,i)}s?r.nextTick(n):n()}e.length>0?e[0]((function t(r,s){i.push(s),++n>=e.length||r?o(r):e[n](t)})):o(null);s=!1}},9509:(e,t,n)=>{var r=n(8764),i=r.Buffer;function s(e,t){for(var n in e)t[n]=e[n]}function o(e,t,n){return i(e,t,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=r:(s(r,t),t.Buffer=o),o.prototype=Object.create(i.prototype),s(i,o),o.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,n)},o.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=i(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},4889:function(e,t,n){var r=n(8768);!function(e,t){if(!e.setImmediate){var n,i,s,o,a,h=1,c={},l=!1,u=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?n=function(e){r.nextTick((function(){p(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){s.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(i=u.documentElement,n=function(e){var t=u.createElement("script");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(o="setImmediate$"+Math.random()+"$",a=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener("message",a,!1):e.attachEvent("onmessage",a),n=function(t){e.postMessage(o+t,"*")}),d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r{var r=n(8764).Buffer;e.exports=function(e,t){var n=[];e.on("data",(function(e){n.push(e)})),e.once("end",(function(){t&&t(null,r.concat(n)),t=null})),e.once("error",(function(e){t&&t(e),t=null}))}},6993:(e,t,n)=>{var r=n(8764).Buffer;e.exports=d;const i=n(7485),s=n(346),o=n(8669),a=n(8669),h=n(778),c=n(7673),l=n(8575),u=e=>null!==e&&"object"==typeof e&&"function"==typeof e.pipe;function d(e,t){if(e=Object.assign({maxRedirects:10},"string"==typeof e?{url:e}:e),t=h(t),e.url){const{hostname:t,port:n,protocol:r,auth:i,path:s}=l.parse(e.url);delete e.url,t||n||r||i?Object.assign(e,{hostname:t,port:n,protocol:r,auth:i,path:s}):e.path=s}const n={"accept-encoding":"gzip, deflate"};let i;e.headers&&Object.keys(e.headers).forEach((t=>n[t.toLowerCase()]=e.headers[t])),e.headers=n,e.body?i=e.json&&!u(e.body)?JSON.stringify(e.body):e.body:e.form&&(i="string"==typeof e.form?e.form:c.stringify(e.form),e.headers["content-type"]="application/x-www-form-urlencoded"),i&&(e.method||(e.method="POST"),u(i)||(e.headers["content-length"]=r.byteLength(i)),e.json&&!e.form&&(e.headers["content-type"]="application/json")),delete e.body,delete e.form,e.json&&(e.headers.accept="application/json"),e.method&&(e.method=e.method.toUpperCase());const f=e.hostname,p=("https:"===e.protocol?a:o).request(e,(n=>{if(!1!==e.followRedirects&&n.statusCode>=300&&n.statusCode<400&&n.headers.location){e.url=n.headers.location,delete e.headers.host,n.resume();const r=l.parse(e.url).hostname;return null!==r&&r!==f&&(delete e.headers.cookie,delete e.headers.authorization),"POST"===e.method&&[301,302].includes(n.statusCode)&&(e.method="GET",delete e.headers["content-length"],delete e.headers["content-type"]),0==e.maxRedirects--?t(new Error("too many redirects")):d(e,t)}const r="function"==typeof s&&"HEAD"!==e.method;t(null,r?s(n):n)}));return p.on("timeout",(()=>{p.abort(),t(new Error("Request timed out"))})),p.on("error",t),u(i)?i.on("error",t).pipe(p):p.end(i),p}d.concat=(e,t)=>d(e,((n,r)=>{if(n)return t(n);i(r,((n,i)=>{if(n)return t(n);if(e.json)try{i=JSON.parse(i.toString())}catch(n){return t(n,r,i)}t(null,r,i)}))})),["get","post","put","patch","head","delete"].forEach((e=>{d[e]=(t,n)=>("string"==typeof t&&(t={url:t}),d(Object.assign({method:e.toUpperCase()},t),n))}))},558:(e,t,n)=>{const r=n(7768),i=n(9929);e.exports={Throttle:r,ThrottleGroup:i}},9929:(e,t,n)=>{const{TokenBucket:r}=n(5516),i=n(7768);e.exports=class{constructor(e={}){if("object"!=typeof e)throw new Error("Options must be an object");this.throttles=[],this.setEnabled(e.enabled),this.setRate(e.rate,e.chunksize)}getEnabled(){return this._enabled}getRate(){return this.bucket.tokensPerInterval}getChunksize(){return this.chunksize}setEnabled(e=!0){if("boolean"!=typeof e)throw new Error("Enabled must be a boolean");this._enabled=e;for(const t of this.throttles)t.setEnabled(e)}setRate(e,t=null){if(!Number.isInteger(e)||e<0)throw new Error("Rate must be an integer bigger than zero");if(e=parseInt(e),t&&("number"!=typeof t||t<=0))throw new Error("Chunksize must be bigger than zero");if(t=t||Math.max(parseInt(e/10),1),t=parseInt(t),e>0&&t>e)throw new Error("Chunk size must be smaller than rate");this.bucket||(this.bucket=new r(e,e,"second",null)),this.bucket.bucketSize=e,this.bucket.tokensPerInterval=e,this.chunksize=t}setChunksize(e){if(!Number.isInteger(e)||e<=0)throw new Error("Chunk size must be an integer bigger than zero");const t=this.getRate();if(e=parseInt(e),t>0&&e>t)throw new Error("Chunk size must be smaller than rate");this.chunksize=e}throttle(e={}){if("object"!=typeof e)throw new Error("Options must be an object");return new i({...e,group:this})}destroy(){for(const e of this.throttles)e.destroy();this.throttles=[]}_addThrottle(e){if(!(e instanceof i))throw new Error("Throttle must be an instance of Throttle");this.throttles.push(e)}_removeThrottle(e){const t=this.throttles.indexOf(e);t>-1&&this.throttles.splice(t,1)}}},7768:(e,t,n)=>{const{EventEmitter:r}=n(7187),{Transform:i}=n(1237),{wait:s}=n(5324);e.exports=class extends i{constructor(e={}){if(super(),"object"!=typeof e)throw new Error("Options must be an object");const t=Object.assign({},e);if(t.group&&!(t.group instanceof o))throw new Error("Group must be an instanece of ThrottleGroup");t.group||(t.group=new o(t)),this._setEnabled(t.enabled||t.group.enabled),this._group=t.group,this._emitter=new r,this._destroyed=!1,this._group._addThrottle(this)}getEnabled(){return this._enabled}getGroup(){return this._group}_setEnabled(e=!0){if("boolean"!=typeof e)throw new Error("Enabled must be a boolean");this._enabled=e}setEnabled(e){this._setEnabled(e),this._enabled?this._emitter.emit("enabled"):this._emitter.emit("disabled")}_transform(e,t){this._processChunk(e,t)}async _waitForTokens(e){return new Promise(((t,n)=>{let r=!1;const i=this;function s(e){if(i._emitter.removeListener("disabled",s),i._emitter.removeListener("destroyed",s),!r){if(r=!0,e)return n(e);t()}}this._emitter.once("disabled",s),this._emitter.once("destroyed",s),this._group.bucket.removeTokens(e,s)}))}_areBothEnabled(){return this._enabled&&this._group.getEnabled()}async _processChunk(e,t){if(!this._areBothEnabled())return t(null,e);let n=0,r=this._group.getChunksize(),i=e.slice(n,n+r);for(;i.length>0;){if(this._areBothEnabled())try{for(;0===this._group.getRate()&&!this._destroyed&&this._areBothEnabled();)if(await s(1e3),this._destroyed)return;if(this._areBothEnabled()&&!this._group.bucket.tryRemoveTokens(i.length)&&(await this._waitForTokens(i.length),this._destroyed))return}catch(e){return t(e)}this.push(i),n+=r,r=this._areBothEnabled()?this._group.getChunksize():e.length-n,i=e.slice(n,n+r)}return t()}destroy(...e){this._group._removeThrottle(this),this._destroyed=!0,this._emitter.emit("destroyed"),super.destroy(...e)}};const o=n(9929)},5324:e=>{e.exports={wait:function(e){return new Promise((t=>setTimeout(t,e)))}}},1237:(e,t,n)=>{const{EventEmitter:r}=n(7187),i=new Error("Stream was destroyed"),s=new Error("Premature close"),o=n(3527),a=n(1607),h=67108863,c=1^h,l=16,u=128,d=256,f=1024,p=2048,g=4096,_=8192,m=16384,y=32784,b=768^h,w=1<<17,v=2<<17,k=4<<17,E=8<<17,x=16<<17,S=32<<17,T=64<<17,A=129<<17,C=256<<17,I=66977791,P=66846719,R=131088,O=66977775,L=4210688,N=14,B=15,D=4210702,U=16941072,M=16809999,j=1179648,H=1179663,q=Symbol.asyncIterator||Symbol("asyncIterator");class F{constructor(e,{highWaterMark:t=16384,map:n=null,mapWritable:r,byteLength:i,byteLengthWritable:s}={}){this.stream=e,this.queue=new a,this.highWaterMark=t,this.buffered=0,this.error=null,this.pipeline=null,this.byteLength=s||i||ce,this.map=r||n,this.afterWrite=Z.bind(this),this.afterUpdateNextTick=Q.bind(this)}get ended(){return 0!=(this.stream._duplexState&S)}push(e){return null!==this.map&&(e=this.map(e)),this.buffered+=this.byteLength(e),this.queue.push(e),this.buffered=e._readableState.highWaterMark}static isPaused(e){return 0==(e._duplexState&d)}[q](){const e=this;let t=null,n=null,r=null;return this.on("error",(e=>{t=e})),this.on("readable",(function(){null!==n&&s(e.read())})),this.on("close",(function(){null!==n&&s(null)})),{[q](){return this},next:()=>new Promise((function(t,i){n=t,r=i;const o=e.read();null!==o?s(o):0!=(8&e._duplexState)&&s(null)})),return:()=>o(null),throw:e=>o(e)};function s(s){null!==r&&(t?r(t):null===s&&0==(e._duplexState&m)?r(i):n({value:s,done:null===s}),r=n=null)}function o(t){return e.destroy(t),new Promise(((n,r)=>{if(8&e._duplexState)return n({value:void 0,done:!0});e.once("close",(function(){t?r(t):n({value:void 0,done:!0})}))}))}}}class re extends ne{constructor(e){super(e),this._duplexState=1,this._writableState=new F(this,e),e&&(e.writev&&(this._writev=e.writev),e.write&&(this._write=e.write),e.final&&(this._final=e.final))}_writev(e,t){t(null)}_write(e,t){this._writableState.autoBatch(e,t)}_final(e){e(null)}write(e){return this._writableState.updateNextTick(),this._writableState.push(e)}end(e){return this._writableState.updateNextTick(),this._writableState.end(e),this}}class ie extends re{constructor(e){super(e),this._transformState=new $(this),e&&(e.transform&&(this._transform=e.transform),e.flush&&(this._flush=e.flush))}_write(e,t){this._readableState.buffered>=this._readableState.highWaterMark?this._transformState.data=e:this._transform(e,this._transformState.afterTransform)}_read(e){if(null!==this._transformState.data){const t=this._transformState.data;this._transformState.data=null,e(null),this._transform(t,this._transformState.afterTransform)}else e(null)}_transform(e,t){t(null,e)}_flush(e){e(null)}_final(e){this._transformState.afterFinal=e,this._flush(se.bind(this))}}function se(e,t){const n=this._transformState.afterFinal;if(e)return n(e);null!=t&&this.push(t),this.push(null),n(null)}function oe(e,...t){const n=Array.isArray(e)?[...e,...t]:[e,...t],r=n.length&&"function"==typeof n[n.length-1]?n.pop():null;if(n.length<2)throw new Error("Pipeline requires at least 2 streams");let i=n[0],o=null,a=null;for(let e=1;e1,c),i.pipe(o)),i=o;if(r){let e=!1;o.on("finish",(()=>{e=!0})),o.on("error",(e=>{a=a||e})),o.on("close",(()=>r(a||(e?null:s))))}return o;function h(e,t,n,r){e.on("error",r),e.on("close",(function(){if(t&&e._readableState&&!e._readableState.ended)return r(s);if(n&&e._writableState&&!e._writableState.ended)return r(s)}))}function c(e){if(e&&!a){a=e;for(const t of n)t.destroy(e)}}}function ae(e){return!!e._readableState||!!e._writableState}function he(e){return"number"==typeof e._duplexState&&ae(e)}function ce(e){return function(e){return"object"==typeof e&&null!==e&&"number"==typeof e.byteLength}(e)?e.byteLength:1024}function le(){}function ue(){this.destroy(new Error("Stream aborted."))}e.exports={pipeline:oe,pipelinePromise:function(...e){return new Promise(((t,n)=>oe(...e,(e=>{if(e)return n(e);t()}))))},isStream:ae,isStreamx:he,getStreamError:function(e){return e._readableState&&e._readableState.error||e._writableState&&e._writableState.error},Stream:te,Writable:class extends te{constructor(e){super(e),this._duplexState|=16385,this._writableState=new F(this,e),e&&(e.writev&&(this._writev=e.writev),e.write&&(this._write=e.write),e.final&&(this._final=e.final))}_writev(e,t){t(null)}_write(e,t){this._writableState.autoBatch(e,t)}_final(e){e(null)}static isBackpressured(e){return 0!=(39845902&e._duplexState)}write(e){return this._writableState.updateNextTick(),this._writableState.push(e)}end(e){return this._writableState.updateNextTick(),this._writableState.end(e),this}},Readable:ne,Duplex:re,Transform:ie,PassThrough:class extends ie{}}},2553:(e,t,n)=>{var r=n(9509).Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function s(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=h,this.end=c,t=4;break;case"utf8":this.fillLast=a,t=4;break;case"base64":this.text=l,this.end=u,t=3;break;default:return this.write=d,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function h(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function l(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function f(e){return e&&e.length?this.write(e):""}t.s=s,s.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return i>0&&(e.lastNeed=i-1),i;if(--r=0)return i>0&&(e.lastNeed=i-2),i;if(--r=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},s.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},1463:e=>{function t(e){return(+Date.now()-e)/100&65535}e.exports=function(e){const n=+Date.now(),r=10*(e||5),i=[0];let s=1,o=t(n)-1&65535;return function(e){const a=t(n);let h=a-o&65535;for(h>r&&(h=r),o=a;h--;)s===r&&(s=0),i[s]=i[0===s?r-1:s-1],s++;e&&(i[s-1]+=e);const c=i[s-1],l=i.length=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(4889),t.setImmediate="undefined"!=typeof self&&self.setImmediate||"undefined"!=typeof globalThis&&globalThis.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||"undefined"!=typeof globalThis&&globalThis.clearImmediate||this&&this.clearImmediate},8687:(e,t,n)=>{var r=n(8764).Buffer;const i=16384;class s{constructor(e){this.length=e,this.missing=e,this.sources=null,this._chunks=Math.ceil(e/i),this._remainder=e%i||i,this._buffered=0,this._buffer=null,this._cancellations=null,this._reservations=0,this._flushed=!1}chunkLength(e){return e===this._chunks-1?this._remainder:i}chunkLengthRemaining(e){return this.length-e*i}chunkOffset(e){return e*i}reserve(){return this.init()?this._cancellations.length?this._cancellations.pop():this._reservations{e.exports=function(e,t){if(t>=e.length||t<0)return;var n=e.pop();if(t= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=h-c,v=Math.floor,k=String.fromCharCode;function E(e){throw RangeError(b[e])}function x(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function S(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+x((e=e.replace(y,".")).split("."),t).join(".")}function T(e){for(var t,n,r=[],i=0,s=e.length;i=55296&&t<=56319&&i65535&&(t+=k((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=k(e)})).join("")}function C(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function I(e,t,n){var r=0;for(e=n?v(e/d):e>>1,e+=v(e/t);e>w*l>>1;r+=h)e=v(e/w);return v(r+(w+1)*e/(e+u))}function P(e){var t,n,r,i,s,o,u,d,_,m,y,b=[],w=e.length,k=0,x=p,S=f;for((n=e.lastIndexOf(g))<0&&(n=0),r=0;r=128&&E("not-basic"),b.push(e.charCodeAt(r));for(i=n>0?n+1:0;i=w&&E("invalid-input"),((d=(y=e.charCodeAt(i++))-48<10?y-22:y-65<26?y-65:y-97<26?y-97:h)>=h||d>v((a-k)/o))&&E("overflow"),k+=d*o,!(d<(_=u<=S?c:u>=S+l?l:u-S));u+=h)o>v(a/(m=h-_))&&E("overflow"),o*=m;S=I(k-s,t=b.length+1,0==s),v(k/t)>a-x&&E("overflow"),x+=v(k/t),k%=t,b.splice(k++,0,x)}return A(b)}function R(e){var t,n,r,i,s,o,u,d,_,m,y,b,w,x,S,A=[];for(b=(e=T(e)).length,t=p,n=0,s=f,o=0;o=t&&yv((a-n)/(w=r+1))&&E("overflow"),n+=(u-t)*w,t=u,o=0;oa&&E("overflow"),y==t){for(d=n,_=h;!(d<(m=_<=s?c:_>=s+l?l:_-s));_+=h)S=d-m,x=h-m,A.push(k(C(m+S%x,0))),d=v(S/x);A.push(k(C(d,0))),s=I(n,w,r==i),n=0,++r}++n,++t}return A.join("")}o={version:"1.3.2",ucs2:{decode:T,encode:A},decode:P,encode:R,toASCII:function(e){return S(e,(function(e){return m.test(e)?"xn--"+R(e):e}))},toUnicode:function(e){return S(e,(function(e){return _.test(e)?P(e.slice(4).toLowerCase()):e}))}},void 0===(r=function(){return o}.call(t,n,t,e))||(e.exports=r)}()},8575:(e,t,n)=>{var r=n(2511),i=n(2502);function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=b,t.resolve=function(e,t){return b(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?b(e,!1,!0).resolveObject(t):t},t.format=function(e){i.isString(e)&&(e=b(e));return e instanceof s?e.format():s.prototype.format.call(e)},t.Url=s;var o=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,h=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(c),u=["%","/","?",";","#"].concat(l),d=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=n(7673);function b(e,t,n){if(e&&i.isObject(e)&&e instanceof s)return e;var r=new s;return r.parse(e,t,n),r}s.prototype.parse=function(e,t,n){if(!i.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var s=e.indexOf("?"),a=-1!==s&&s127?L+="x":L+=O[N];if(!L.match(f)){var D=P.slice(0,A),U=P.slice(A+1),M=O.match(p);M&&(D.push(M[1]),U.unshift(M[2])),U.length&&(b="/"+U.join(".")+b),this.hostname=D.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),I||(this.hostname=r.toASCII(this.hostname));var j=this.port?":"+this.port:"",H=this.hostname||"";this.host=H+j,this.href+=this.host,I&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!g[k])for(A=0,R=l.length;A0)&&n.host.split("@"))&&(n.auth=I.shift(),n.host=n.hostname=I.shift());return n.search=e.search,n.query=e.query,i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!E.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var S=E.slice(-1)[0],T=(n.host||e.host||E.length>1)&&("."===S||".."===S)||""===S,A=0,C=E.length;C>=0;C--)"."===(S=E[C])?E.splice(C,1):".."===S?(E.splice(C,1),A++):A&&(E.splice(C,1),A--);if(!v&&!k)for(;A--;A)E.unshift("..");!v||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),T&&"/"!==E.join("/").substr(-1)&&E.push("");var I,P=""===E[0]||E[0]&&"/"===E[0].charAt(0);x&&(n.hostname=n.host=P?"":E.length?E.shift():"",(I=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=I.shift(),n.host=n.hostname=I.shift()));return(v=v||n.host&&E.length)&&!P&&E.unshift(""),E.length?n.pathname=E.join("/"):(n.pathname=null,n.path=null),i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},s.prototype.parseHost=function(){var e=this.host,t=a.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},2502:e=>{e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},4927:e=>{function t(e){try{if(!globalThis.localStorage)return!1}catch(e){return!1}var t=globalThis.localStorage[e];return null!=t&&"true"===String(t).toLowerCase()}e.exports=function(e,n){if(t("noDeprecation"))return e;var r=!1;return function(){if(!r){if(t("throwDeprecation"))throw new Error(n);t("traceDeprecation")?console.trace(n):console.warn(n),r=!0}return e.apply(this,arguments)}}},1496:e=>{"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},4724:(e,t,n)=>{var r=n(8764).Buffer;e.exports=function(e){return e instanceof r}},9539:(e,t,n)=>{var r=n(8768),i=/%[sdj%]/g;t.format=function(e){if(!m(e)){for(var t=[],n=0;n=s)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),h=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),p(n)?r.showHidden=n:n&&t._extend(r,n),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=h),l(r,e,r.depth)}function h(e,t){var n=a.styles[t];return n?"["+a.colors[n][0]+"m"+e+"["+a.colors[n][1]+"m":e}function c(e,t){return e}function l(e,n,r){if(e.customInspect&&n&&E(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,e);return m(i)||(i=l(e,i,r)),i}var s=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(m(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(_(t))return e.stylize(""+t,"number");if(p(t))return e.stylize(""+t,"boolean");if(g(t))return e.stylize("null","null")}(e,n);if(s)return s;var o=Object.keys(n),a=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(n)),k(n)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return u(n);if(0===o.length){if(E(n)){var h=n.name?": "+n.name:"";return e.stylize("[Function"+h+"]","special")}if(b(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(v(n))return e.stylize(Date.prototype.toString.call(n),"date");if(k(n))return u(n)}var c,w="",x=!1,S=["{","}"];(f(n)&&(x=!0,S=["[","]"]),E(n))&&(w=" [Function"+(n.name?": "+n.name:"")+"]");return b(n)&&(w=" "+RegExp.prototype.toString.call(n)),v(n)&&(w=" "+Date.prototype.toUTCString.call(n)),k(n)&&(w=" "+u(n)),0!==o.length||x&&0!=n.length?r<0?b(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),c=x?function(e,t,n,r,i){for(var s=[],o=0,a=t.length;o=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0);if(r>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(c,w,S)):S[0]+w+S[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,i,s){var o,a,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?a=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(a=e.stylize("[Setter]","special")),A(r,i)||(o="["+i+"]"),a||(e.seen.indexOf(h.value)<0?(a=g(n)?l(e,h.value,null):l(e,h.value,n-1)).indexOf("\n")>-1&&(a=s?a.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+a.split("\n").map((function(e){return" "+e})).join("\n")):a=e.stylize("[Circular]","special")),y(o)){if(s&&i.match(/^\d+$/))return a;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+a}function f(e){return Array.isArray(e)}function p(e){return"boolean"==typeof e}function g(e){return null===e}function _(e){return"number"==typeof e}function m(e){return"string"==typeof e}function y(e){return void 0===e}function b(e){return w(e)&&"[object RegExp]"===x(e)}function w(e){return"object"==typeof e&&null!==e}function v(e){return w(e)&&"[object Date]"===x(e)}function k(e){return w(e)&&("[object Error]"===x(e)||e instanceof Error)}function E(e){return"function"==typeof e}function x(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(s)&&(s=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!o[e])if(new RegExp("\\b"+e+"\\b","i").test(s)){var n=r.pid;o[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,n,r)}}else o[e]=function(){};return o[e]},t.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=m,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=w,t.isDate=v,t.isError=k,t.isFunction=E,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(4724);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function A(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,n;console.log("%s - %s",(e=new Date,n=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":"),[e.getDate(),T[e.getMonth()],n].join(" ")),t.format.apply(t,arguments))},t.inherits=n(1496),t._extend=function(e,t){if(!t||!w(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}},2479:e=>{e.exports=function e(t,n){if(t&&n)return e(t)(n);if("function"!=typeof t)throw new TypeError("need wrapper function");return Object.keys(t).forEach((function(e){r[e]=t[e]})),r;function r(){for(var e=new Array(arguments.length),n=0;n{e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}},6475:()=>{},2203:()=>{},5381:()=>{},2927:()=>{},5517:()=>{},9354:()=>{},859:()=>{},7036:()=>{},8991:()=>{},1982:()=>{},1156:()=>{},5843:()=>{},3287:(e,t,n)=>{n.r(t),n.d(t,{default:()=>_,enableSecure:()=>g});var r=n(7187),i=n(1237),s=n(6581),o=n(1227),a=n(814);const h="tcpIncoming",c="tcpOutgoing",l="utpIncoming",u="utpOutgoing",d="webSeed",f=o("webtorrent:peer");let p=!1;const g=()=>{p=!0};class _ extends r{constructor(e,t){super(),this.id=e,this.type=t,f("new %s Peer %s",t,e),this.addr=null,this.conn=null,this.swarm=null,this.wire=null,this.source=null,this.connected=!1,this.destroyed=!1,this.timeout=null,this.retries=0,this.sentPe1=!1,this.sentPe2=!1,this.sentPe3=!1,this.sentPe4=!1,this.sentHandshake=!1}onConnect(){if(this.destroyed)return;this.connected=!0,f("Peer %s connected",this.id),clearTimeout(this.connectTimeout);const e=this.conn;e.once("end",(()=>{this.destroy()})),e.once("close",(()=>{this.destroy()})),e.once("finish",(()=>{this.destroy()})),e.once("error",(e=>{this.destroy(e)}));const t=this.wire=new a.Z(this.type,this.retries,p);t.once("end",(()=>{this.destroy()})),t.once("close",(()=>{this.destroy()})),t.once("finish",(()=>{this.destroy()})),t.once("error",(e=>{this.destroy(e)})),t.once("pe1",(()=>{this.onPe1()})),t.once("pe2",(()=>{this.onPe2()})),t.once("pe3",(()=>{this.onPe3()})),t.once("pe4",(()=>{this.onPe4()})),t.once("handshake",((e,t)=>{this.onHandshake(e,t)})),this.startHandshakeTimeout(),this.setThrottlePipes(),this.swarm&&("tcpOutgoing"===this.type?p&&0===this.retries&&!this.sentPe1?this.sendPe1():this.sentHandshake||this.handshake():"tcpIncoming"===this.type||this.sentHandshake||this.handshake())}sendPe1(){this.wire.sendPe1(),this.sentPe1=!0}onPe1(){this.sendPe2()}sendPe2(){this.wire.sendPe2(),this.sentPe2=!0}onPe2(){this.sendPe3()}sendPe3(){this.wire.sendPe3(this.swarm.infoHash),this.sentPe3=!0}onPe3(e){this.swarm&&(this.swarm.infoHashHash!==e&&this.destroy(new Error("unexpected crypto handshake info hash for this swarm")),this.sendPe4())}sendPe4(){this.wire.sendPe4(this.swarm.infoHash),this.sentPe4=!0}onPe4(){this.sentHandshake||this.handshake()}clearPipes(){this.conn.unpipe(),this.wire.unpipe()}setThrottlePipes(){const e=this;(0,i.pipeline)(this.conn,this.throttleGroups.down.throttle(),new i.Transform({transform(t,n){e.emit("download",t.length),e.destroyed||n(null,t)}}),this.wire,this.throttleGroups.up.throttle(),new i.Transform({transform(t,n){e.emit("upload",t.length),e.destroyed||n(null,t)}}),this.conn)}onHandshake(e,t){if(!this.swarm)return;if(this.destroyed)return;if(this.swarm.destroyed)return this.destroy(new Error("swarm already destroyed"));if(e!==this.swarm.infoHash)return this.destroy(new Error("unexpected handshake info hash for this swarm"));if(t===this.swarm.peerId)return this.destroy(new Error("refusing to connect to ourselves"));f("Peer %s got handshake %s",this.id,e),clearTimeout(this.handshakeTimeout),this.retries=0;let n=this.addr;!n&&this.conn.remoteAddress&&this.conn.remotePort&&(n=`${this.conn.remoteAddress}:${this.conn.remotePort}`),this.swarm._onWire(this.wire,n),this.swarm&&!this.swarm.destroyed&&(this.sentHandshake||this.handshake())}handshake(){const e={dht:!this.swarm.private&&!!this.swarm.client.dht,fast:!0};this.wire.handshake(this.swarm.infoHash,this.swarm.client.peerId,e),this.sentHandshake=!0}startConnectTimeout(){clearTimeout(this.connectTimeout);const e={webrtc:25e3,tcpOutgoing:5e3,utpOutgoing:5e3};this.connectTimeout=setTimeout((()=>{this.destroy(new Error("connect timeout"))}),e[this.type]),this.connectTimeout.unref&&this.connectTimeout.unref()}startHandshakeTimeout(){clearTimeout(this.handshakeTimeout),this.handshakeTimeout=setTimeout((()=>{this.destroy(new Error("handshake timeout"))}),25e3),this.handshakeTimeout.unref&&this.handshakeTimeout.unref()}destroy(e){if(this.destroyed)return;this.destroyed=!0,this.connected=!1,f("destroy %s %s (error: %s)",this.type,this.id,e&&(e.message||e)),clearTimeout(this.connectTimeout),clearTimeout(this.handshakeTimeout);const t=this.swarm,n=this.conn,r=this.wire;this.swarm=null,this.conn=null,this.wire=null,t&&r&&s(t.wires,t.wires.indexOf(r)),n&&(n.on("error",(()=>{})),n.destroy()),r&&r.destroy(),t&&t.removePeer(this.id)}}_.TYPE_TCP_INCOMING=h,_.TYPE_TCP_OUTGOING=c,_.TYPE_UTP_INCOMING=l,_.TYPE_UTP_OUTGOING=u,_.TYPE_WEBRTC="webrtc",_.TYPE_WEBSEED=d,_.SOURCE_MANUAL="manual",_.SOURCE_TRACKER="tracker",_.SOURCE_DHT="dht",_.SOURCE_LSD="lsd",_.SOURCE_UT_PEX="ut_pex",_.createWebRTCPeer=(e,t,n)=>{const r=new _(e.id,"webrtc");if(r.conn=e,r.swarm=t,r.throttleGroups=n,r.conn.connected)r.onConnect();else{const e=()=>{r.conn.removeListener("connect",t),r.conn.removeListener("error",n)},t=()=>{e(),r.onConnect()},n=t=>{e(),r.destroy(t)};r.conn.once("connect",t),r.conn.once("error",n),r.startConnectTimeout()}return r},_.createTCPIncomingPeer=(e,t)=>_._createIncomingPeer(e,h,t),_.createUTPIncomingPeer=(e,t)=>_._createIncomingPeer(e,l,t),_.createTCPOutgoingPeer=(e,t,n)=>_._createOutgoingPeer(e,t,c,n),_.createUTPOutgoingPeer=(e,t,n)=>_._createOutgoingPeer(e,t,u,n),_._createIncomingPeer=(e,t,n)=>{const r=`${e.remoteAddress}:${e.remotePort}`,i=new _(r,t);return i.conn=e,i.addr=r,i.throttleGroups=n,i.onConnect(),i},_._createOutgoingPeer=(e,t,n,r)=>{const i=new _(e,n);return i.addr=e,i.swarm=t,i.throttleGroups=r,i},_.createWebSeedPeer=(e,t,n,r)=>{const i=new _(t,d);return i.swarm=n,i.conn=e,i.throttleGroups=r,i.onConnect(),i}},502:(e,t,n)=>{n.d(t,{Z:()=>p});var r=n(5194);function i(e){const t=e<0?1:0;return e=Math.abs(Number(e||1)),Math.floor(Math.log10(e))+1+t}function s(e){return ArrayBuffer.isView(e)?"arraybufferview":Array.isArray(e)?"array":e instanceof Number?"number":e instanceof Boolean?"boolean":e instanceof Set?"set":e instanceof Map?"map":e instanceof String?"string":e instanceof ArrayBuffer?"arraybuffer":typeof e}function o(e,t,n){const i=[];let s=null;return o._encode(i,e),s=(0,r.zo)(i),o.bytes=s.length,ArrayBuffer.isView(t)?(t.set(s,n),t):s}o.bytes=-1,o._floatConversionDetected=!1,o._encode=function(e,t){if(null!=t)switch(s(t)){case"object":o.dict(e,t);break;case"map":o.dictMap(e,t);break;case"array":o.list(e,t);break;case"set":o.listSet(e,t);break;case"string":o.string(e,t);break;case"number":case"boolean":o.number(e,t);break;case"arraybufferview":o.buffer(e,new Uint8Array(t.buffer,t.byteOffset,t.byteLength));break;case"arraybuffer":o.buffer(e,new Uint8Array(t))}};const a=new Uint8Array([101]),h=new Uint8Array([100]),c=new Uint8Array([108]);o.buffer=function(e,t){e.push((0,r.gR)(t.length+":"),t)},o.string=function(e,t){e.push((0,r.gR)((0,r.gR)(t).byteLength+":"+t))},o.number=function(e,t){const n=2147483648,i=(t/n<<0)*n+(t%n<<0);e.push((0,r.gR)("i"+i+"e")),i===t||o._floatConversionDetected||(o._floatConversionDetected=!0,console.warn('WARNING: Possible data corruption detected with value "'+t+'":','Bencoding only defines support for integers, value was converted to "'+i+'"'),console.trace())},o.dict=function(e,t){e.push(h);let n,r=0;const i=Object.keys(t).sort(),s=i.length;for(;r=48)r=10*r+(n-48);else if(s!==t||43!==n){if(s!==t||45!==n){if(46===n)break;throw new Error("not a number: buffer["+s+"] = "+n)}i=-1}}return r*i}function d(e,t,n,i){return null==e||0===e.length?null:("number"!=typeof t&&null==i&&(i=t,t=void 0),"number"!=typeof n&&null==i&&(i=n,n=void 0),d.position=0,d.encoding=i||null,d.data=ArrayBuffer.isView(e)?new Uint8Array(e.slice(t,n)):(0,r.gR)(e),d.bytes=d.data.length,d.next())}d.bytes=0,d.position=0,d.data=null,d.encoding=null,d.next=function(){switch(d.data[d.position]){case 100:return d.dictionary();case 108:return d.list();case 105:return d.integer();default:return d.buffer()}},d.find=function(e){let t=d.position;const n=d.data.length,r=d.data;for(;t{function r(e){let t=e>>3;return e%8!=0&&t++,t}n.d(t,{Z:()=>i});class i{constructor(e=0,t){const n=null==t?void 0:t.grow;this.grow=n&&isFinite(n)&&r(n)||n||0,this.buffer="number"==typeof e?new Uint8Array(r(e)):e}get(e){const t=e>>3;return t>e%8)}set(e,t=!0){const n=e>>3;if(t){if(this.buffer.length>e%8}else n>e%8))}forEach(e,t=0,n=8*this.buffer.length){for(let r=t,i=r>>3,s=128>>r%8,o=this.buffer[i];r>1}}},814:(e,t,n)=>{n.d(t,{Z:()=>P});var r=n(502),i=n(8205),s=n(5517),o=n(1227),a=n(7830),h=n(1237),c=n(5194),l=n(1463),u=n(6581);const d=o("bittorrent-protocol"),f=(0,c.gR)("BitTorrent protocol"),p=new Uint8Array([0,0,0,0]),g=new Uint8Array([0,0,0,1,0]),_=new Uint8Array([0,0,0,1,1]),m=new Uint8Array([0,0,0,1,2]),y=new Uint8Array([0,0,0,1,3]),b=[0,0,0,0,0,0,0,0],w=[0,0,0,3,9,0,0],v=new Uint8Array([0,0,0,1,14]),k=new Uint8Array([0,0,0,1,15]),E=new Uint8Array([0,0,0,0,0,0,0,0]),x=new Uint8Array([0,0,1,2]),S=new Uint8Array([0,0,0,2]);function T(e,t){for(let n=e.length;n--;)e[n]^=t[n];return e}class A{constructor(e,t,n,r){this.piece=e,this.offset=t,this.length=n,this.callback=r}}class C{constructor(){this.buffer=new Uint8Array}get(e){return!0}set(e){}}class I extends h.Duplex{constructor(e=null,t=0,n=!1){super(),this._debugId=(0,c.oc)((0,c.O6)(4)),this._debug("new wire"),this.peerId=null,this.peerIdBuffer=null,this.type=e,this.amChoking=!0,this.amInterested=!1,this.peerChoking=!0,this.peerInterested=!1,this.peerPieces=new i.Z(0,{grow:4e5}),this.extensions={},this.peerExtensions={},this.requests=[],this.peerRequests=[],this.extendedMapping={},this.peerExtendedMapping={},this.extendedHandshake={},this.peerExtendedHandshake={},this.hasFast=!1,this.allowedFastSet=[],this.peerAllowedFastSet=[],this._ext={},this._nextExt=1,this.uploaded=0,this.downloaded=0,this.uploadSpeed=l(),this.downloadSpeed=l(),this._keepAliveInterval=null,this._timeout=null,this._timeoutMs=0,this._timeoutExpiresAt=null,this._finished=!1,this._parserSize=0,this._parser=null,this._buffer=[],this._bufferSize=0,this._peEnabled=n,n?(this._dh=s.createDiffieHellman("ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a36210000000000090563","hex",2),this._myPubKey=this._dh.generateKeys("hex")):this._myPubKey=null,this._peerPubKey=null,this._sharedSecret=null,this._peerCryptoProvide=[],this._cryptoHandshakeDone=!1,this._cryptoSyncPattern=null,this._waitMaxBytes=null,this._encryptionMethod=null,this._encryptGenerator=null,this._decryptGenerator=null,this._setGenerators=!1,this.once("finish",(()=>this._onFinish())),this.on("finish",this._onFinish),this._debug("type:",this.type),"tcpIncoming"===this.type&&this._peEnabled?this._determineHandshakeType():"tcpOutgoing"===this.type&&this._peEnabled&&0===t?this._parsePe2():this._parseHandshake(null)}setKeepAlive(e){this._debug("setKeepAlive %s",e),clearInterval(this._keepAliveInterval),!1!==e&&(this._keepAliveInterval=setInterval((()=>{this.keepAlive()}),55e3))}setTimeout(e,t){this._debug("setTimeout ms=%d unref=%s",e,t),this._timeoutMs=e,this._timeoutUnref=!!t,this._resetTimeout(!0)}destroy(){if(!this.destroyed)return this._debug("destroy"),this.end(),this}end(e){if(!this.destroyed&&!this.destroying)return this._debug("end"),this._onUninterested(),this._onChoke(),super.end(e)}use(e){const t=e.prototype.name;if(!t)throw new Error('Extension class requires a "name" property on the prototype');this._debug("use extension.name=%s",t);const n=this._nextExt,r=new e(this);function i(){}"function"!=typeof r.onHandshake&&(r.onHandshake=i),"function"!=typeof r.onExtendedHandshake&&(r.onExtendedHandshake=i),"function"!=typeof r.onMessage&&(r.onMessage=i),this.extendedMapping[n]=t,this._ext[t]=r,this[t]=r,this._nextExt+=1}keepAlive(){this._debug("keep-alive"),this._push(p)}sendPe1(){if(this._peEnabled){const e=Math.floor(513*Math.random()),t=(0,c.O6)(e);this._push((0,c.zo)([(0,c._0)(this._myPubKey),t]))}}sendPe2(){const e=Math.floor(513*Math.random()),t=(0,c.O6)(e);this._push((0,c.zo)([(0,c._0)(this._myPubKey),t]))}async sendPe3(e){await this.setEncrypt(this._sharedSecret,e);const t=await(0,c.vp)((0,c._0)(this._utfToHex("req1")+this._sharedSecret)),n=T(await(0,c.vp)((0,c._0)(this._utfToHex("req2")+e)),await(0,c.vp)((0,c._0)(this._utfToHex("req3")+this._sharedSecret))),r=new DataView((0,c.O6)(2).buffer).getUint16(0)%512,i=(0,c.O6)(r);let s=new Uint8Array(14+r+2);s.set(E),s.set(x,8);const o=new DataView(s.buffer);o.setInt16(12,r),i.copy(s,14),o.setInt16(14+r,0),s=this._encryptHandshake(s),this._push((0,c.zo)([t,n,s]))}async sendPe4(e){await this.setEncrypt(this._sharedSecret,e);const t=new DataView((0,c.O6)(2).buffer).getUint16(0)%512,n=(0,c.O6)(t);let r=new Uint8Array(14+t);const i=new DataView(r.buffer);r.set(E),r.set(S,8),i.setInt16(12,t),r.set(n,14),r=this._encryptHandshake(r),this._push(r),this._cryptoHandshakeDone=!0,this._debug("completed crypto handshake")}handshake(e,t,n){let r,i;if("string"==typeof e?(e=e.toLowerCase(),r=(0,c._0)(e)):(r=e,e=(0,c.oc)(r)),"string"==typeof t?i=(0,c._0)(t):(i=t,t=(0,c.oc)(i)),this._infoHash=r,20!==r.length||20!==i.length)throw new Error("infoHash and peerId MUST have length 20");this._debug("handshake i=%s p=%s exts=%o",e,t,n);const s=new Uint8Array(b);this.extensions={extended:!0,dht:!(!n||!n.dht),fast:!(!n||!n.fast)},s[5]|=16,this.extensions.dht&&(s[7]|=1),this.extensions.fast&&(s[7]|=4),this.extensions.fast&&this.peerExtensions.fast&&(this._debug("fast extension is enabled"),this.hasFast=!0),this._push((0,c.zo)([f,s,r,i])),this._handshakeSent=!0,this.peerExtensions.extended&&!this._extendedHandshakeSent&&this._sendExtendedHandshake()}_sendExtendedHandshake(){const e=Object.assign({},this.extendedHandshake);e.m={};for(const t in this.extendedMapping){const n=this.extendedMapping[t];e.m[n]=Number(t)}this.extended(0,r.Z.encode(e)),this._extendedHandshakeSent=!0}choke(){if(!this.amChoking)if(this.amChoking=!0,this._debug("choke"),this._push(g),this.hasFast){let e=0;for(;this.peerRequests.length>e;){const t=this.peerRequests[e];this.allowedFastSet.includes(t.piece)?++e:this.reject(t.piece,t.offset,t.length)}}else for(;this.peerRequests.length;)this.peerRequests.pop()}unchoke(){this.amChoking&&(this.amChoking=!1,this._debug("unchoke"),this._push(_))}interested(){this.amInterested||(this.amInterested=!0,this._debug("interested"),this._push(m))}uninterested(){this.amInterested&&(this.amInterested=!1,this._debug("uninterested"),this._push(y))}have(e){this._debug("have %d",e),this._message(4,[e],null)}bitfield(e){this._debug("bitfield"),ArrayBuffer.isView(e)||(e=e.buffer),this._message(5,[],e)}request(e,t,n,r){return r||(r=()=>{}),this._finished?r(new Error("wire is closed")):!this.peerChoking||this.hasFast&&this.peerAllowedFastSet.includes(e)?(this._debug("request index=%d offset=%d length=%d",e,t,n),this.requests.push(new A(e,t,n,r)),this._timeout||this._resetTimeout(!0),void this._message(6,[e,t,n],null)):r(new Error("peer is choking"))}piece(e,t,n){this._debug("piece index=%d offset=%d",e,t),this._message(7,[e,t],n),this.uploaded+=n.length,this.uploadSpeed(n.length),this.emit("upload",n.length)}cancel(e,t,n){this._debug("cancel index=%d offset=%d length=%d",e,t,n),this._callback(this._pull(this.requests,e,t,n),new Error("request was cancelled"),null),this._message(8,[e,t,n],null)}port(e){this._debug("port %d",e);const t=new Uint8Array(w);new DataView(t.buffer).setUint16(5,e),this._push(t)}suggest(e){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("suggest %d",e),this._message(13,[e],null)}haveAll(){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("have-all"),this._push(v)}haveNone(){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("have-none"),this._push(k)}reject(e,t,n){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("reject index=%d offset=%d length=%d",e,t,n),this._pull(this.peerRequests,e,t,n),this._message(16,[e,t,n],null)}allowedFast(e){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("allowed-fast %d",e),this.allowedFastSet.includes(e)||this.allowedFastSet.push(e),this._message(17,[e],null)}extended(e,t){if(this._debug("extended ext=%s",e),"string"==typeof e&&this.peerExtendedMapping[e]&&(e=this.peerExtendedMapping[e]),"number"!=typeof e)throw new Error(`Unrecognized extension: ${e}`);{const n=new Uint8Array([e]),i=ArrayBuffer.isView(t)?t:r.Z.encode(t);this._message(20,[],(0,c.zo)([n,i]))}}async setEncrypt(e,t){let n,r,i,s;switch(this.type){case"tcpIncoming":n=await(0,c.vp)((0,c._0)(this._utfToHex("keyB")+e+t)),i=await(0,c.vp)((0,c._0)(this._utfToHex("keyA")+e+t)),r=[];for(const e of n.values())r.push(e);s=[];for(const e of i.values())s.push(e);this._encryptGenerator=new a(r),this._decryptGenerator=new a(s);break;case"tcpOutgoing":n=await(0,c.vp)((0,c._0)(this._utfToHex("keyA")+e+t)),i=await(0,c.vp)((0,c._0)(this._utfToHex("keyB")+e+t)),r=[];for(const e of n.values())r.push(e);s=[];for(const e of i.values())s.push(e);this._encryptGenerator=new a(r),this._decryptGenerator=new a(s);break;default:return!1}for(let e=0;e<1024;e++)this._encryptGenerator.randomByte(),this._decryptGenerator.randomByte();return this._setGenerators=!0,!0}_message(e,t,n){const r=n?n.length:0,i=new Uint8Array(5+4*t.length),s=new DataView(i.buffer);s.setUint32(0,i.length+r-4),i[4]=e;for(let e=0;e{if(i===this._pull(this.peerRequests,e,t,n))return r?(this._debug("error satisfying request index=%d offset=%d length=%d (%s)",e,t,n,r.message),void(this.hasFast&&this.reject(e,t,n))):void this.piece(e,t,s)},i=new A(e,t,n,r);this.peerRequests.push(i),this.emit("request",e,t,n,r)}_onPiece(e,t,n){this._debug("got piece index=%d offset=%d",e,t),this._callback(this._pull(this.requests,e,t,n.length),null,n),this.downloaded+=n.length,this.downloadSpeed(n.length),this.emit("download",n.length),this.emit("piece",e,t,n)}_onCancel(e,t,n){this._debug("got cancel index=%d offset=%d length=%d",e,t,n),this._pull(this.peerRequests,e,t,n),this.emit("cancel",e,t,n)}_onPort(e){this._debug("got port %d",e),this.emit("port",e)}_onSuggest(e){if(!this.hasFast)return this._debug("Error: got suggest whereas fast extension is disabled"),void this.destroy();this._debug("got suggest %d",e),this.emit("suggest",e)}_onHaveAll(){if(!this.hasFast)return this._debug("Error: got have-all whereas fast extension is disabled"),void this.destroy();this._debug("got have-all"),this.peerPieces=new C,this.emit("have-all")}_onHaveNone(){if(!this.hasFast)return this._debug("Error: got have-none whereas fast extension is disabled"),void this.destroy();this._debug("got have-none"),this.emit("have-none")}_onReject(e,t,n){if(!this.hasFast)return this._debug("Error: got reject whereas fast extension is disabled"),void this.destroy();this._debug("got reject index=%d offset=%d length=%d",e,t,n),this._callback(this._pull(this.requests,e,t,n),new Error("request was rejected"),null),this.emit("reject",e,t,n)}_onAllowedFast(e){if(!this.hasFast)return this._debug("Error: got allowed-fast whereas fast extension is disabled"),void this.destroy();this._debug("got allowed-fast %d",e),this.peerAllowedFastSet.includes(e)||this.peerAllowedFastSet.push(e),this.peerAllowedFastSet.length>100&&this.peerAllowedFastSet.shift(),this.emit("allowed-fast",e)}_onExtended(e,t){if(0===e){let e;try{e=r.Z.decode(t)}catch(e){this._debug("ignoring invalid extended handshake: %s",e.message||e)}if(!e)return;if(this.peerExtendedHandshake=e,"object"==typeof e.m)for(const t in e.m)this.peerExtendedMapping[t]=Number(e.m[t].toString());for(const e in this._ext)this.peerExtendedMapping[e]&&this._ext[e].onExtendedHandshake(this.peerExtendedHandshake);this._debug("got extended handshake"),this.emit("extended","handshake",this.peerExtendedHandshake)}else this.extendedMapping[e]&&(e=this.extendedMapping[e],this._ext[e]&&this._ext[e].onMessage(t)),this._debug("got extended message ext=%s",e),this.emit("extended",e,t)}_onTimeout(){this._debug("request timed out"),this._callback(this.requests.shift(),new Error("request has timed out"),null),this.emit("timeout")}_write(e,t){if(2===this._encryptionMethod&&this._cryptoHandshakeDone&&(e=this._decrypt(e)),this._bufferSize+=e.length,this._buffer.push(e),this._buffer.length>1&&(this._buffer=[(0,c.zo)(this._buffer,this._bufferSize)]),this._cryptoSyncPattern){const t=this._buffer[0].indexOf(this._cryptoSyncPattern);if(-1!==t)this._buffer[0]=this._buffer[0].slice(t+this._cryptoSyncPattern.length),this._bufferSize-=t+this._cryptoSyncPattern.length,this._cryptoSyncPattern=null;else if(this._bufferSize+e.length>this._waitMaxBytes+this._cryptoSyncPattern.length)return this._debug("Error: could not resynchronize"),void this.destroy()}for(;this._bufferSize>=this._parserSize&&!this._cryptoSyncPattern;)if(0===this._parserSize)this._parser(new Uint8Array);else{const e=this._buffer[0];this._bufferSize-=this._parserSize,this._buffer=this._bufferSize?[e.slice(this._parserSize)]:[],this._parser(e.slice(0,this._parserSize))}t(null)}_callback(e,t,n){e&&(this._resetTimeout(!this.peerChoking&&!this._finished),e.callback(t,n))}_resetTimeout(e){if(!e||!this._timeoutMs||!this.requests.length)return clearTimeout(this._timeout),this._timeout=null,void(this._timeoutExpiresAt=null);const t=Date.now()+this._timeoutMs;if(this._timeout){if(t-this._timeoutExpiresAt<.05*this._timeoutMs)return;clearTimeout(this._timeout)}this._timeoutExpiresAt=t,this._timeout=setTimeout((()=>this._onTimeout()),this._timeoutMs),this._timeoutUnref&&this._timeout.unref&&this._timeout.unref()}_parse(e,t){this._parserSize=e,this._parser=t}_parseUntil(e,t){this._cryptoSyncPattern=e,this._waitMaxBytes=t}_onMessageLength(e){const t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0);t>0?this._parse(t,this._onMessage):(this._onKeepAlive(),this._parse(4,this._onMessageLength))}_onMessage(e){this._parse(4,this._onMessageLength);const t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e[0]){case 0:return this._onChoke();case 1:return this._onUnchoke();case 2:return this._onInterested();case 3:return this._onUninterested();case 4:return this._onHave(t.getUint32(1));case 5:return this._onBitField(e.slice(1));case 6:return this._onRequest(t.getUint32(1),t.getUint32(5),t.getUint32(9));case 7:return this._onPiece(t.getUint32(1),t.getUint32(5),e.slice(9));case 8:return this._onCancel(t.getUint32(1),t.getUint32(5),t.getUint32(9));case 9:return this._onPort(t.getUint16(1));case 13:return this._onSuggest(t.getUint32(1));case 14:return this._onHaveAll();case 15:return this._onHaveNone();case 16:return this._onReject(t.getUint32(1),t.getUint32(5),t.getUint32(9));case 17:return this._onAllowedFast(t.getUint32(1));case 20:return this._onExtended(e[1],e.slice(2));default:return this._debug("got unknown message"),this.emit("unknownmessage",e)}}_determineHandshakeType(){this._parse(1,(e=>{const t=e[0];19===t?this._parse(t+48,this._onHandshakeBuffer):this._parsePe1(e)}))}_parsePe1(e){this._parse(95,(t=>{this._onPe1((0,c.zo)([e,t])),this._parsePe3()}))}_parsePe2(){this._parse(96,(e=>{for(this._onPe2(e);!this._setGenerators;);this._parsePe4()}))}async _parsePe3(){const e=await(0,c.vp)((0,c._0)(this._utfToHex("req1")+this._sharedSecret));this._parseUntil(e,512),this._parse(20,(e=>{for(this._onPe3(e);!this._setGenerators;);this._parsePe3Encrypted()}))}_parsePe3Encrypted(){this._parse(14,(e=>{const t=this._decryptHandshake(e.slice(0,8)),n=this._decryptHandshake(e.slice(8,12)),r=new DataView(this._decryptHandshake(e.slice(12,14)).buffer).getUint16(0);this._parse(r,(e=>{e=this._decryptHandshake(e),this._parse(2,(r=>{const i=new DataView(this._decryptHandshake(r).buffer).getUint16(0);this._parse(i,(r=>{r=this._decryptHandshake(r),this._onPe3Encrypted(t,n,e,r);const s=i?r[0]:null,o=i?r.slice(1,20):null;19===s&&"BitTorrent protocol"===(0,c.vV)(o)?this._onHandshakeBuffer(r.slice(1)):this._parseHandshake()}))}))}))}))}_parsePe4(){const e=this._decryptHandshake(E);this._parseUntil(e,512),this._parse(6,(e=>{const t=this._decryptHandshake(e.slice(0,4)),n=new DataView(this._decryptHandshake(e.slice(4,6)).buffer).getUint16(0);this._parse(n,(e=>{this._decryptHandshake(e),this._onPe4(t),this._parseHandshake(null)}))}))}_parseHandshake(){this._parse(1,(e=>{const t=e[0];if(19!==t)return this._debug("Error: wire not speaking BitTorrent protocol (%s)",t.toString()),void this.end();this._parse(t+48,this._onHandshakeBuffer)}))}_onHandshakeBuffer(e){const t=e.slice(0,19);if("BitTorrent protocol"!==(0,c.vV)(t))return this._debug("Error: wire not speaking BitTorrent protocol (%s)",(0,c.vV)(t)),void this.end();e=e.slice(19),this._onHandshake(e.slice(8,28),e.slice(28,48),{dht:!!(1&e[7]),fast:!!(4&e[7]),extended:!!(16&e[5])}),this._parse(4,this._onMessageLength)}_onFinish(){for(this._finished=!0,this.push(null);this.read(););for(clearInterval(this._keepAliveInterval),this._parse(Number.MAX_VALUE,(()=>{}));this.peerRequests.length;)this.peerRequests.pop();for(;this.requests.length;)this._callback(this.requests.pop(),new Error("wire was closed"),null)}_debug(...e){e[0]=`[${this._debugId}] ${e[0]}`,d(...e)}_pull(e,t,n,r){for(let i=0;i{n.d(t,{te:()=>m,oc:()=>o,vV:()=>p,Ff:()=>y,zo:()=>h,Dg:()=>c,vp:()=>x,_0:()=>a,E:()=>b,O6:()=>S,gR:()=>_});const r="0123456789abcdef",i=[],s=[];for(let e=0;e<256;e++)i[e]=r[e>>4&15]+r[15&e],e<16&&(e<10?s[48+e]=e:s[87+e]=e);const o=e=>{const t=e.length;let n="",r=0;for(;r{const t=e.length>>1,n=t<<1,r=new Uint8Array(t);let i=0,o=0;for(;o{if(!t){t=0;let n=e.length||e.byteLength||0;for(;n--;)t+=e[n].length}const n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.byteLength||t.length;return n},c=(e,t)=>{if(e.byteLength!==t.byteLength)return!1;for(let n=e.length;n>-1;n-=1)if(e[n]!==t[n])return!1;return!0};for(var l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u="undefined"==typeof Uint8Array?[]:new Uint8Array(256),d=0;d<64;d++)u[l.charCodeAt(d)]=d;const f=new TextDecoder,p=(e,t)=>{if(!t)return f.decode(e);return new TextDecoder(t).decode(e)},g=new TextEncoder,_=e=>g.encode(e),m=e=>function(e){var t,n=new Uint8Array(e),r=n.length,i="";for(t=0;t>2],i+=l[(3&n[t])<<4|n[t+1]>>4],i+=l[(15&n[t+1])<<2|n[t+2]>>6],i+=l[63&n[t+2]];return r%3==2?i=i.substring(0,i.length-1)+"=":r%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e),y=e=>{let t,n="",i=0;const s=e.length;for(;i>4],n+=r[15&t];return n},b=e=>{const t=new Array(e.length/2);for(let n=0,r=e.length/2;n{if(!k)throw new Error("no web crypto support");"string"==typeof e&&(e=_(e));const r=new Uint8Array(await k.digest(n,e));return t?E[t](r):r},S=e=>{const t=new Uint8Array(e);return v.getRandomValues(t)}},8128:(e,t,n)=>{n.r(t),n.d(t,{inflateSync:()=>yn});function r(e){let t=e.length;for(;--t>=0;)e[t]=0}const i=256,s=286,o=30,a=15,h=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),c=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),u=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);r(d);const f=new Array(60);r(f);const p=new Array(512);r(p);const g=new Array(256);r(g);const _=new Array(29);r(_);const m=new Array(o);function y(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let b,w,v;function k(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}r(m);const E=e=>e<256?p[e]:p[256+(e>>>7)],x=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},S=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<{S(e,n[2*t],n[2*t+1])},A=(e,t)=>{let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1},C=(e,t,n)=>{const r=new Array(16);let i,s,o=0;for(i=1;i<=a;i++)o=o+n[i-1]<<1,r[i]=o;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=A(r[t]++,t))}},I=e=>{let t;for(t=0;t{e.bi_valid>8?x(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},R=(e,t,n,r)=>{const i=2*t,s=2*n;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,s,o,a,l=0;if(0!==e.sym_next)do{r=255&e.pending_buf[e.sym_buf+l++],r+=(255&e.pending_buf[e.sym_buf+l++])<<8,s=e.pending_buf[e.sym_buf+l++],0===r?T(e,s,t):(o=g[s],T(e,o+i+1,t),a=h[o],0!==a&&(s-=_[o],S(e,s,a)),r--,o=E(r),T(e,o,n),a=c[o],0!==a&&(r-=m[o],S(e,r,a)))}while(l{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,s=t.stat_desc.elems;let o,h,c,l=-1;for(e.heap_len=0,e.heap_max=573,o=0;o>1;o>=1;o--)O(e,n,o);c=s;do{o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],O(e,n,1),h=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=h,n[2*c]=n[2*o]+n[2*h],e.depth[c]=(e.depth[o]>=e.depth[h]?e.depth[o]:e.depth[h])+1,n[2*o+1]=n[2*h+1]=c,e.heap[1]=c++,O(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,h=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,u,d,f,p,g,_=0;for(f=0;f<=a;f++)e.bl_count[f]=0;for(n[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)u=e.heap[l],f=n[2*n[2*u+1]+1]+1,f>c&&(f=c,_++),n[2*u+1]=f,u>r||(e.bl_count[f]++,p=0,u>=h&&(p=o[u-h]),g=n[2*u],e.opt_len+=g*(f+p),s&&(e.static_len+=g*(i[2*u+1]+p)));if(0!==_){do{for(f=c-1;0===e.bl_count[f];)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[c]--,_-=2}while(_>0);for(f=c;0!==f;f--)for(u=e.bl_count[f];0!==u;)d=e.heap[--l],d>r||(n[2*d+1]!==f&&(e.opt_len+=(f-n[2*d+1])*n[2*d],n[2*d+1]=f),u--)}})(e,t),C(n,l,e.bl_count)},B=(e,t,n)=>{let r,i,s=-1,o=t[1],a=0,h=7,c=4;for(0===o&&(h=138,c=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=t[2*(r+1)+1],++a{let r,i,s=-1,o=t[1],a=0,h=7,c=4;for(0===o&&(h=138,c=3),r=0;r<=n;r++)if(i=o,o=t[2*(r+1)+1],!(++a{S(e,0+(r?1:0),3),P(e),x(e,n),x(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n};var j=(e,t,n,r)=>{let s,o,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t{let t;for(B(e,e.dyn_ltree,e.l_desc.max_code),B(e,e.dyn_dtree,e.d_desc.max_code),N(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*u[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),s=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=s&&(s=o)):s=o=n+5,n+4<=s&&-1!==t?M(e,t,n,r):4===e.strategy||o===s?(S(e,2+(r?1:0),3),L(e,d,f)):(S(e,4+(r?1:0),3),((e,t,n,r)=>{let i;for(S(e,t-257,5),S(e,n-1,5),S(e,r-4,4),i=0;i{U||((()=>{let e,t,n,r,i;const u=new Array(16);for(n=0,r=0;r<28;r++)for(_[r]=n,e=0;e<1<>=7;r(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(g[n]+i+1)]++,e.dyn_dtree[2*E(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{S(e,2,3),T(e,256,d),(e=>{16===e.bi_valid?(x(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}};var q=(e,t,n,r)=>{let i=65535&e|0,s=e>>>16&65535|0,o=0;for(;0!==n;){o=n>2e3?2e3:n,n-=o;do{i=i+t[r++]|0,s=s+i|0}while(--o);i%=65521,s%=65521}return i|s<<16|0};const F=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t})());var z=(e,t,n,r)=>{const i=F,s=r+n;e^=-1;for(let n=r;n>>8^i[255&(e^t[n])];return-1^e},$={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},W={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:V,_tr_stored_block:G,_tr_flush_block:K,_tr_tally:Z,_tr_align:Y}=H,{Z_NO_FLUSH:J,Z_PARTIAL_FLUSH:Q,Z_FULL_FLUSH:X,Z_FINISH:ee,Z_BLOCK:te,Z_OK:ne,Z_STREAM_END:re,Z_STREAM_ERROR:ie,Z_DATA_ERROR:se,Z_BUF_ERROR:oe,Z_DEFAULT_COMPRESSION:ae,Z_FILTERED:he,Z_HUFFMAN_ONLY:ce,Z_RLE:le,Z_FIXED:ue,Z_DEFAULT_STRATEGY:de,Z_UNKNOWN:fe,Z_DEFLATED:pe}=W,ge=258,_e=262,me=42,ye=113,be=666,we=(e,t)=>(e.msg=$[t],t),ve=e=>2*e-(e>4?9:0),ke=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Ee=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do{n=e.head[--r],e.head[r]=n>=i?n-i:0}while(--t);t=i,r=t;do{n=e.prev[--r],e.prev[r]=n>=i?n-i:0}while(--t)};let xe=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))},Te=(e,t)=>{K(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Se(e.strm)},Ae=(e,t)=>{e.pending_buf[e.pending++]=t},Ce=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Ie=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),0===i?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),1===e.state.wrap?e.adler=q(e.adler,t,i,n):2===e.state.wrap&&(e.adler=z(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},Pe=(e,t)=>{let n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match;const h=e.strstart>e.w_size-_e?e.strstart-(e.w_size-_e):0,c=e.window,l=e.w_mask,u=e.prev,d=e.strstart+ge;let f=c[s+o-1],p=c[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(n=t,c[n+o]===p&&c[n+o-1]===f&&c[n]===c[s]&&c[++n]===c[s+1]){s+=2,n++;do{}while(c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&so){if(e.match_start=t,o=r,r>=a)break;f=c[s+o-1],p=c[s+o]}}}while((t=u[t&l])>h&&0!=--i);return o<=e.lookahead?o:e.lookahead},Re=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-_e)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Ee(e),r+=t),0===e.strm.avail_in)break;if(n=Ie(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=3)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=xe(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=xe(e,e.ins_h,e.window[i+3-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<_e&&0!==e.strm.avail_in)},Oe=(e,t)=>{let n,r,i,s=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,o=0,a=e.strm.avail_in;do{if(n=65535,i=e.bi_valid+42>>3,e.strm.avail_outr+e.strm.avail_in&&(n=r+e.strm.avail_in),n>i&&(n=i),n>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,Se(e.strm),r&&(r>n&&(r=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,n-=r),n&&(Ie(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(0===o);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_wateri&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,i+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),i>e.strm.avail_in&&(i=e.strm.avail_in),i&&(Ie(e.strm,e.window,e.strstart,i),e.strstart+=i,e.insert+=i>e.w_size-e.insert?e.w_size-e.insert:i),e.high_water>3,i=e.pending_buf_size-i>65535?65535:e.pending_buf_size-i,s=i>e.w_size?e.w_size:i,r=e.strstart-e.block_start,(r>=s||(r||t===ee)&&t!==J&&0===e.strm.avail_in&&r<=i)&&(n=r>i?i:r,o=t===ee&&0===e.strm.avail_in&&n===r?1:0,G(e,e.block_start,n,o),e.block_start+=n,Se(e.strm)),o?3:1)},Le=(e,t)=>{let n,r;for(;;){if(e.lookahead<_e){if(Re(e),e.lookahead<_e&&t===J)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=xe(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-_e&&(e.match_length=Pe(e,n)),e.match_length>=3)if(r=Z(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=xe(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=xe(e,e.ins_h,e.window[e.strstart+1]);else r=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Te(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===ee?(Te(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Te(e,!1),0===e.strm.avail_out)?1:2},Ne=(e,t)=>{let n,r,i;for(;;){if(e.lookahead<_e){if(Re(e),e.lookahead<_e&&t===J)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=xe(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,r=Z(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=xe(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(Te(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(r=Z(e,0,e.window[e.strstart-1]),r&&Te(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=Z(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===ee?(Te(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Te(e,!1),0===e.strm.avail_out)?1:2};function Be(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const De=[new Be(0,0,0,0,Oe),new Be(4,4,8,4,Le),new Be(4,5,16,8,Le),new Be(4,6,32,32,Le),new Be(4,4,16,16,Ne),new Be(8,16,32,32,Ne),new Be(8,16,128,128,Ne),new Be(8,32,128,256,Ne),new Be(32,128,258,1024,Ne),new Be(32,258,258,4096,Ne)];function Ue(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=pe,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),ke(this.dyn_ltree),ke(this.dyn_dtree),ke(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),ke(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),ke(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Me=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==me&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==ye&&t.status!==be?1:0},je=e=>{if(Me(e))return we(e,ie);e.total_in=e.total_out=0,e.data_type=fe;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?me:ye,e.adler=2===t.wrap?0:1,t.last_flush=-2,V(t),ne},He=e=>{const t=je(e);var n;return t===ne&&((n=e.state).window_size=2*n.w_size,ke(n.head),n.max_lazy_match=De[n.level].max_lazy,n.good_match=De[n.level].good_length,n.nice_match=De[n.level].nice_length,n.max_chain_length=De[n.level].max_chain,n.strstart=0,n.block_start=0,n.lookahead=0,n.insert=0,n.match_length=n.prev_length=2,n.match_available=0,n.ins_h=0),t},qe=(e,t,n,r,i,s)=>{if(!e)return ie;let o=1;if(t===ae&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),i<1||i>9||n!==pe||r<8||r>15||t<0||t>9||s<0||s>ue||8===r&&1!==o)return we(e,ie);8===r&&(r=9);const a=new Ue;return e.state=a,a.strm=e,a.status=me,a.wrap=o,a.gzhead=null,a.w_bits=r,a.w_size=1<qe(e,t,pe,15,8,de),deflateInit2:qe,deflateReset:He,deflateResetKeep:je,deflateSetHeader:(e,t)=>Me(e)||2!==e.state.wrap?ie:(e.state.gzhead=t,ne),deflate:(e,t)=>{if(Me(e)||t>te||t<0)return e?we(e,ie):ie;const n=e.state;if(!e.output||0!==e.avail_in&&!e.input||n.status===be&&t!==ee)return we(e,0===e.avail_out?oe:ie);const r=n.last_flush;if(n.last_flush=t,0!==n.pending){if(Se(e),0===e.avail_out)return n.last_flush=-1,ne}else if(0===e.avail_in&&ve(t)<=ve(r)&&t!==ee)return we(e,oe);if(n.status===be&&0!==e.avail_in)return we(e,oe);if(n.status===me&&0===n.wrap&&(n.status=ye),n.status===me){let t=pe+(n.w_bits-8<<4)<<8,r=-1;if(r=n.strategy>=ce||n.level<2?0:n.level<6?1:6===n.level?2:3,t|=r<<6,0!==n.strstart&&(t|=32),t+=31-t%31,Ce(n,t),0!==n.strstart&&(Ce(n,e.adler>>>16),Ce(n,65535&e.adler)),e.adler=1,n.status=ye,Se(e),0!==n.pending)return n.last_flush=-1,ne}if(57===n.status)if(e.adler=0,Ae(n,31),Ae(n,139),Ae(n,8),n.gzhead)Ae(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Ae(n,255&n.gzhead.time),Ae(n,n.gzhead.time>>8&255),Ae(n,n.gzhead.time>>16&255),Ae(n,n.gzhead.time>>24&255),Ae(n,9===n.level?2:n.strategy>=ce||n.level<2?4:0),Ae(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(Ae(n,255&n.gzhead.extra.length),Ae(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=z(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(Ae(n,0),Ae(n,0),Ae(n,0),Ae(n,0),Ae(n,0),Ae(n,9===n.level?2:n.strategy>=ce||n.level<2?4:0),Ae(n,3),n.status=ye,Se(e),0!==n.pending)return n.last_flush=-1,ne;if(69===n.status){if(n.gzhead.extra){let t=n.pending,r=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+r>n.pending_buf_size;){let i=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>t&&(e.adler=z(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex+=i,Se(e),0!==n.pending)return n.last_flush=-1,ne;t=0,r-=i}let i=new Uint8Array(n.gzhead.extra);n.pending_buf.set(i.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending+=r,n.gzhead.hcrc&&n.pending>t&&(e.adler=z(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=73}if(73===n.status){if(n.gzhead.name){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=z(e.adler,n.pending_buf,n.pending-r,r)),Se(e),0!==n.pending)return n.last_flush=-1,ne;r=0}t=n.gzindexr&&(e.adler=z(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=91}if(91===n.status){if(n.gzhead.comment){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=z(e.adler,n.pending_buf,n.pending-r,r)),Se(e),0!==n.pending)return n.last_flush=-1,ne;r=0}t=n.gzindexr&&(e.adler=z(e.adler,n.pending_buf,n.pending-r,r))}n.status=103}if(103===n.status){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Se(e),0!==n.pending))return n.last_flush=-1,ne;Ae(n,255&e.adler),Ae(n,e.adler>>8&255),e.adler=0}if(n.status=ye,Se(e),0!==n.pending)return n.last_flush=-1,ne}if(0!==e.avail_in||0!==n.lookahead||t!==J&&n.status!==be){let r=0===n.level?Oe(n,t):n.strategy===ce?((e,t)=>{let n;for(;;){if(0===e.lookahead&&(Re(e),0===e.lookahead)){if(t===J)return 1;break}if(e.match_length=0,n=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Te(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===ee?(Te(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Te(e,!1),0===e.strm.avail_out)?1:2})(n,t):n.strategy===le?((e,t)=>{let n,r,i,s;const o=e.window;for(;;){if(e.lookahead<=ge){if(Re(e),e.lookahead<=ge&&t===J)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=e.strstart-1,r=o[i],r===o[++i]&&r===o[++i]&&r===o[++i])){s=e.strstart+ge;do{}while(r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=Z(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Te(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===ee?(Te(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Te(e,!1),0===e.strm.avail_out)?1:2})(n,t):De[n.level].func(n,t);if(3!==r&&4!==r||(n.status=be),1===r||3===r)return 0===e.avail_out&&(n.last_flush=-1),ne;if(2===r&&(t===Q?Y(n):t!==te&&(G(n,0,0,!1),t===X&&(ke(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Se(e),0===e.avail_out))return n.last_flush=-1,ne}return t!==ee?ne:n.wrap<=0?re:(2===n.wrap?(Ae(n,255&e.adler),Ae(n,e.adler>>8&255),Ae(n,e.adler>>16&255),Ae(n,e.adler>>24&255),Ae(n,255&e.total_in),Ae(n,e.total_in>>8&255),Ae(n,e.total_in>>16&255),Ae(n,e.total_in>>24&255)):(Ce(n,e.adler>>>16),Ce(n,65535&e.adler)),Se(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?ne:re)},deflateEnd:e=>{if(Me(e))return ie;const t=e.state.status;return e.state=null,t===ye?we(e,se):ne},deflateSetDictionary:(e,t)=>{let n=t.length;if(Me(e))return ie;const r=e.state,i=r.wrap;if(2===i||1===i&&r.status!==me||r.lookahead)return ie;if(1===i&&(e.adler=q(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){0===i&&(ke(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(n-r.w_size,n),0),t=e,n=r.w_size}const s=e.avail_in,o=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,Re(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do{r.ins_h=xe(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++}while(--t);r.strstart=e,r.lookahead=2,Re(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=o,e.input=a,e.avail_in=s,r.wrap=i,ne},deflateInfo:"pako deflate (from Nodeca project)"};const ze=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var $e={assign:function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const t in n)ze(n,t)&&(e[t]=n[t])}}return e},flattenChunks:e=>{let t=0;for(let n=0,r=e.length;n=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ve[254]=Ve[254]=1;var Ge={string2buf:e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,n,r,i,s,o=e.length,a=0;for(i=0;i>>6,t[s++]=128|63&n):n<65536?(t[s++]=224|n>>>12,t[s++]=128|n>>>6&63,t[s++]=128|63&n):(t[s++]=240|n>>>18,t[s++]=128|n>>>12&63,t[s++]=128|n>>>6&63,t[s++]=128|63&n);return t},buf2string:(e,t)=>{const n=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let r,i;const s=new Array(2*n);for(i=0,r=0;r4)s[i++]=65533,r+=o-1;else{for(t&=2===o?31:3===o?15:7;o>1&&r1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&We)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+Ve[e[n]]>t?n:t}};var Ke=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ze=Object.prototype.toString,{Z_NO_FLUSH:Ye,Z_SYNC_FLUSH:Je,Z_FULL_FLUSH:Qe,Z_FINISH:Xe,Z_OK:et,Z_STREAM_END:tt,Z_DEFAULT_COMPRESSION:nt,Z_DEFAULT_STRATEGY:rt,Z_DEFLATED:it}=W;function st(e){this.options=$e.assign({level:nt,method:it,chunkSize:16384,windowBits:15,memLevel:8,strategy:rt},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ke,this.strm.avail_out=0;let n=Fe.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==et)throw new Error($[n]);if(t.header&&Fe.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Ge.string2buf(t.dictionary):"[object ArrayBuffer]"===Ze.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,n=Fe.deflateSetDictionary(this.strm,e),n!==et)throw new Error($[n]);this._dict_set=!0}}function ot(e,t){const n=new st(t);if(n.push(e,!0),n.err)throw n.msg||$[n.err];return n.result}st.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,s;if(this.ended)return!1;for(s=t===~~t?t:!0===t?Xe:Ye,"string"==typeof e?n.input=Ge.string2buf(e):"[object ArrayBuffer]"===Ze.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(s===Je||s===Qe)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if(i=Fe.deflate(n,s),i===tt)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Fe.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===et;if(0!==n.avail_out){if(s>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},st.prototype.onData=function(e){this.chunks.push(e)},st.prototype.onEnd=function(e){e===et&&(this.result=$e.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var at={Deflate:st,deflate:ot,deflateRaw:function(e,t){return(t=t||{}).raw=!0,ot(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,ot(e,t)},constants:W};const ht=16209;var ct=function(e,t){let n,r,i,s,o,a,h,c,l,u,d,f,p,g,_,m,y,b,w,v,k,E,x,S;const T=e.state;n=e.next_in,x=e.input,r=n+(e.avail_in-5),i=e.next_out,S=e.output,s=i-(t-e.avail_out),o=i+(e.avail_out-257),a=T.dmax,h=T.wsize,c=T.whave,l=T.wnext,u=T.window,d=T.hold,f=T.bits,p=T.lencode,g=T.distcode,_=(1<>>24,d>>>=b,f-=b,b=y>>>16&255,0===b)S[i++]=65535&y;else{if(!(16&b)){if(0==(64&b)){y=p[(65535&y)+(d&(1<>>=b,f-=b),f<15&&(d+=x[n++]<>>24,d>>>=b,f-=b,b=y>>>16&255,!(16&b)){if(0==(64&b)){y=g[(65535&y)+(d&(1<a){e.msg="invalid distance too far back",T.mode=ht;break e}if(d>>>=b,f-=b,b=i-s,v>b){if(b=v-b,b>c&&T.sane){e.msg="invalid distance too far back",T.mode=ht;break e}if(k=0,E=u,0===l){if(k+=h-b,b2;)S[i++]=E[k++],S[i++]=E[k++],S[i++]=E[k++],w-=3;w&&(S[i++]=E[k++],w>1&&(S[i++]=E[k++]))}else{k=i-v;do{S[i++]=S[k++],S[i++]=S[k++],S[i++]=S[k++],w-=3}while(w>2);w&&(S[i++]=S[k++],w>1&&(S[i++]=S[k++]))}break}}break}}while(n>3,n-=w,f-=w<<3,d&=(1<{const h=a.bits;let c,l,u,d,f,p,g=0,_=0,m=0,y=0,b=0,w=0,v=0,k=0,E=0,x=0,S=null;const T=new Uint16Array(16),A=new Uint16Array(16);let C,I,P,R=null;for(g=0;g<=lt;g++)T[g]=0;for(_=0;_=1&&0===T[y];y--);if(b>y&&(b=y),0===y)return i[s++]=20971520,i[s++]=20971520,a.bits=1,0;for(m=1;m0&&(0===e||1!==y))return-1;for(A[1]=0,g=1;g852||2===e&&E>592)return 1;for(;;){C=g-v,o[_]+1=p?(I=R[o[_]-p],P=S[o[_]-p]):(I=96,P=0),c=1<>v)+l]=C<<24|I<<16|P|0}while(0!==l);for(c=1<>=1;if(0!==c?(x&=c-1,x+=c):x=0,_++,0==--T[g]){if(g===y)break;g=t[n+o[_]]}if(g>b&&(x&d)!==u){for(0===v&&(v=b),f+=m,w=g-v,k=1<852||2===e&&E>592)return 1;u=x&d,i[u]=b<<24|w<<16|f-s|0}}return 0!==x&&(i[f+x]=g-v<<24|64<<16|0),a.bits=b,0};const{Z_FINISH:_t,Z_BLOCK:mt,Z_TREES:yt,Z_OK:bt,Z_STREAM_END:wt,Z_NEED_DICT:vt,Z_STREAM_ERROR:kt,Z_DATA_ERROR:Et,Z_MEM_ERROR:xt,Z_BUF_ERROR:St,Z_DEFLATED:Tt}=W,At=16180,Ct=16190,It=16191,Pt=16192,Rt=16194,Ot=16199,Lt=16200,Nt=16206,Bt=16209,Dt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Ut(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Mt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},jt=e=>{if(Mt(e))return kt;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=At,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,bt},Ht=e=>{if(Mt(e))return kt;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,jt(e)},qt=(e,t)=>{let n;if(Mt(e))return kt;const r=e.state;return t<0?(n=0,t=-t):(n=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?kt:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,Ht(e))},Ft=(e,t)=>{if(!e)return kt;const n=new Ut;e.state=n,n.strm=e,n.window=null,n.mode=At;const r=qt(e,t);return r!==bt&&(e.state=null),r};let zt,$t,Wt=!0;const Vt=e=>{if(Wt){zt=new Int32Array(512),$t=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(gt(1,e.lens,0,288,zt,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;gt(2,e.lens,0,32,$t,0,e.work,{bits:5}),Wt=!1}e.lencode=zt,e.lenbits=9,e.distcode=$t,e.distbits=5},Gt=(e,t,n,r)=>{let i;const s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(t.subarray(n-s.wsize,n),0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),s.window.set(t.subarray(n-r,n-r+i),s.wnext),(r-=i)?(s.window.set(t.subarray(n-r,n),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whaveFt(e,15),inflateInit2:Ft,inflate:(e,t)=>{let n,r,i,s,o,a,h,c,l,u,d,f,p,g,_,m,y,b,w,v,k,E,x=0;const S=new Uint8Array(4);let T,A;const C=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Mt(e)||!e.output||!e.input&&0!==e.avail_in)return kt;n=e.state,n.mode===It&&(n.mode=Pt),o=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,c=n.hold,l=n.bits,u=a,d=h,E=bt;e:for(;;)switch(n.mode){case At:if(0===n.wrap){n.mode=Pt;break}for(;l<16;){if(0===a)break e;a--,c+=r[s++]<>>8&255,n.check=z(n.check,S,2,0),c=0,l=0,n.mode=16181;break}if(n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&c)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=Bt;break}if((15&c)!==Tt){e.msg="unknown compression method",n.mode=Bt;break}if(c>>>=4,l-=4,k=8+(15&c),0===n.wbits&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=Bt;break}n.dmax=1<>8&1),512&n.flags&&4&n.wrap&&(S[0]=255&c,S[1]=c>>>8&255,n.check=z(n.check,S,2,0)),c=0,l=0,n.mode=16182;case 16182:for(;l<32;){if(0===a)break e;a--,c+=r[s++]<>>8&255,S[2]=c>>>16&255,S[3]=c>>>24&255,n.check=z(n.check,S,4,0)),c=0,l=0,n.mode=16183;case 16183:for(;l<16;){if(0===a)break e;a--,c+=r[s++]<>8),512&n.flags&&4&n.wrap&&(S[0]=255&c,S[1]=c>>>8&255,n.check=z(n.check,S,2,0)),c=0,l=0,n.mode=16184;case 16184:if(1024&n.flags){for(;l<16;){if(0===a)break e;a--,c+=r[s++]<>>8&255,n.check=z(n.check,S,2,0)),c=0,l=0}else n.head&&(n.head.extra=null);n.mode=16185;case 16185:if(1024&n.flags&&(f=n.length,f>a&&(f=a),f&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(s,s+f),k)),512&n.flags&&4&n.wrap&&(n.check=z(n.check,r,f,s)),a-=f,s+=f,n.length-=f),n.length))break e;n.length=0,n.mode=16186;case 16186:if(2048&n.flags){if(0===a)break e;f=0;do{k=r[s+f++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k))}while(k&&f>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=It;break;case 16189:for(;l<32;){if(0===a)break e;a--,c+=r[s++]<>>=7&l,l-=7&l,n.mode=Nt;break}for(;l<3;){if(0===a)break e;a--,c+=r[s++]<>>=1,l-=1,3&c){case 0:n.mode=16193;break;case 1:if(Vt(n),n.mode=Ot,t===yt){c>>>=2,l-=2;break e}break;case 2:n.mode=16196;break;case 3:e.msg="invalid block type",n.mode=Bt}c>>>=2,l-=2;break;case 16193:for(c>>>=7&l,l-=7&l;l<32;){if(0===a)break e;a--,c+=r[s++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Bt;break}if(n.length=65535&c,c=0,l=0,n.mode=Rt,t===yt)break e;case Rt:n.mode=16195;case 16195:if(f=n.length,f){if(f>a&&(f=a),f>h&&(f=h),0===f)break e;i.set(r.subarray(s,s+f),o),a-=f,s+=f,h-=f,o+=f,n.length-=f;break}n.mode=It;break;case 16196:for(;l<14;){if(0===a)break e;a--,c+=r[s++]<>>=5,l-=5,n.ndist=1+(31&c),c>>>=5,l-=5,n.ncode=4+(15&c),c>>>=4,l-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Bt;break}n.have=0,n.mode=16197;case 16197:for(;n.have>>=3,l-=3}for(;n.have<19;)n.lens[C[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,T={bits:n.lenbits},E=gt(0,n.lens,0,19,n.lencode,0,n.work,T),n.lenbits=T.bits,E){e.msg="invalid code lengths set",n.mode=Bt;break}n.have=0,n.mode=16198;case 16198:for(;n.have>>24,m=x>>>16&255,y=65535&x,!(_<=l);){if(0===a)break e;a--,c+=r[s++]<>>=_,l-=_,n.lens[n.have++]=y;else{if(16===y){for(A=_+2;l>>=_,l-=_,0===n.have){e.msg="invalid bit length repeat",n.mode=Bt;break}k=n.lens[n.have-1],f=3+(3&c),c>>>=2,l-=2}else if(17===y){for(A=_+3;l>>=_,l-=_,k=0,f=3+(7&c),c>>>=3,l-=3}else{for(A=_+7;l>>=_,l-=_,k=0,f=11+(127&c),c>>>=7,l-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Bt;break}for(;f--;)n.lens[n.have++]=k}}if(n.mode===Bt)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=Bt;break}if(n.lenbits=9,T={bits:n.lenbits},E=gt(1,n.lens,0,n.nlen,n.lencode,0,n.work,T),n.lenbits=T.bits,E){e.msg="invalid literal/lengths set",n.mode=Bt;break}if(n.distbits=6,n.distcode=n.distdyn,T={bits:n.distbits},E=gt(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,T),n.distbits=T.bits,E){e.msg="invalid distances set",n.mode=Bt;break}if(n.mode=Ot,t===yt)break e;case Ot:n.mode=Lt;case Lt:if(a>=6&&h>=258){e.next_out=o,e.avail_out=h,e.next_in=s,e.avail_in=a,n.hold=c,n.bits=l,ct(e,d),o=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,c=n.hold,l=n.bits,n.mode===It&&(n.back=-1);break}for(n.back=0;x=n.lencode[c&(1<>>24,m=x>>>16&255,y=65535&x,!(_<=l);){if(0===a)break e;a--,c+=r[s++]<>b)],_=x>>>24,m=x>>>16&255,y=65535&x,!(b+_<=l);){if(0===a)break e;a--,c+=r[s++]<>>=b,l-=b,n.back+=b}if(c>>>=_,l-=_,n.back+=_,n.length=y,0===m){n.mode=16205;break}if(32&m){n.back=-1,n.mode=It;break}if(64&m){e.msg="invalid literal/length code",n.mode=Bt;break}n.extra=15&m,n.mode=16201;case 16201:if(n.extra){for(A=n.extra;l>>=n.extra,l-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=16202;case 16202:for(;x=n.distcode[c&(1<>>24,m=x>>>16&255,y=65535&x,!(_<=l);){if(0===a)break e;a--,c+=r[s++]<>b)],_=x>>>24,m=x>>>16&255,y=65535&x,!(b+_<=l);){if(0===a)break e;a--,c+=r[s++]<>>=b,l-=b,n.back+=b}if(c>>>=_,l-=_,n.back+=_,64&m){e.msg="invalid distance code",n.mode=Bt;break}n.offset=y,n.extra=15&m,n.mode=16203;case 16203:if(n.extra){for(A=n.extra;l>>=n.extra,l-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Bt;break}n.mode=16204;case 16204:if(0===h)break e;if(f=d-h,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Bt;break}f>n.wnext?(f-=n.wnext,p=n.wsize-f):p=n.wnext-f,f>n.length&&(f=n.length),g=n.window}else g=i,p=o-n.offset,f=n.length;f>h&&(f=h),h-=f,n.length-=f;do{i[o++]=g[p++]}while(--f);0===n.length&&(n.mode=Lt);break;case 16205:if(0===h)break e;i[o++]=n.length,h--,n.mode=Lt;break;case Nt:if(n.wrap){for(;l<32;){if(0===a)break e;a--,c|=r[s++]<{if(Mt(e))return kt;let t=e.state;return t.window&&(t.window=null),e.state=null,bt},inflateGetHeader:(e,t)=>{if(Mt(e))return kt;const n=e.state;return 0==(2&n.wrap)?kt:(n.head=t,t.done=!1,bt)},inflateSetDictionary:(e,t)=>{const n=t.length;let r,i,s;return Mt(e)?kt:(r=e.state,0!==r.wrap&&r.mode!==Ct?kt:r.mode===Ct&&(i=1,i=q(i,t,n,0),i!==r.check)?Et:(s=Gt(e,t,n,n),s?(r.mode=16210,xt):(r.havedict=1,bt)))},inflateInfo:"pako inflate (from Nodeca project)"};var Zt=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Yt=Object.prototype.toString,{Z_NO_FLUSH:Jt,Z_FINISH:Qt,Z_OK:Xt,Z_STREAM_END:en,Z_NEED_DICT:tn,Z_STREAM_ERROR:nn,Z_DATA_ERROR:rn,Z_MEM_ERROR:sn}=W;function on(e){this.options=$e.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ke,this.strm.avail_out=0;let n=Kt.inflateInit2(this.strm,t.windowBits);if(n!==Xt)throw new Error($[n]);if(this.header=new Zt,Kt.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Ge.string2buf(t.dictionary):"[object ArrayBuffer]"===Yt.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=Kt.inflateSetDictionary(this.strm,t.dictionary),n!==Xt)))throw new Error($[n])}function an(e,t){const n=new on(t);if(n.push(e),n.err)throw n.msg||$[n.err];return n.result}on.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let s,o,a;if(this.ended)return!1;for(o=t===~~t?t:!0===t?Qt:Jt,"[object ArrayBuffer]"===Yt.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),s=Kt.inflate(n,o),s===tn&&i&&(s=Kt.inflateSetDictionary(n,i),s===Xt?s=Kt.inflate(n,o):s===rn&&(s=tn));n.avail_in>0&&s===en&&n.state.wrap>0&&0!==e[n.next_in];)Kt.inflateReset(n),s=Kt.inflate(n,o);switch(s){case nn:case rn:case tn:case sn:return this.onEnd(s),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(0===n.avail_out||s===en))if("string"===this.options.to){let e=Ge.utf8border(n.output,n.next_out),t=n.next_out-e,i=Ge.buf2string(n.output,e);n.next_out=t,n.avail_out=r-t,t&&n.output.set(n.output.subarray(e,e+t),0),this.onData(i)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(s!==Xt||0!==a){if(s===en)return s=Kt.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},on.prototype.onData=function(e){this.chunks.push(e)},on.prototype.onEnd=function(e){e===Xt&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=$e.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var hn={Inflate:on,inflate:an,inflateRaw:function(e,t){return(t=t||{}).raw=!0,an(e,t)},ungzip:an,constants:W};const{Deflate:cn,deflate:ln,deflateRaw:un,gzip:dn}=at,{Inflate:fn,inflate:pn,inflateRaw:gn,ungzip:_n}=hn;var mn=pn;const yn=e=>mn(e,{to:"string"})},8768:(e,t,n)=>{n.r(t),n.d(t,{addListener:()=>d,argv:()=>a,binding:()=>x,browser:()=>s,chdir:()=>S,cwd:()=>k,emit:()=>m,env:()=>o,listeners:()=>v,nextTick:()=>w,off:()=>p,on:()=>u,once:()=>f,prependListener:()=>y,prependOnceListener:()=>b,removeAllListeners:()=>_,removeListener:()=>g,title:()=>i,umask:()=>E,version:()=>h,versions:()=>c});var r=n(4375);const i="browser",s=!0,o={},a=[],h="",c={};function l(){}const u=l,d=l,f=l,p=l,g=l,_=l,m=l,y=l,b=l,w=(e,...t)=>r((()=>e(...t))),v=e=>[],k=()=>"/",E=()=>0,x=e=>{throw new Error("process.binding is not supported")},S=e=>{throw new Error("process.chdir is not supported")}}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var s=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.loaded=!0,s.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var r={};(()=>{n.d(r,{Z:()=>qn});var e={};n.r(e),n.d(e,{ACTIONS:()=>je,CONNECTION_ID:()=>Me,DESTROY_TIMEOUT:()=>$e,EVENTS:()=>He,EVENT_IDS:()=>qe,EVENT_NAMES:()=>Fe,IPV4_RE:()=>Be,IPV6_RE:()=>De,REMOVE_IPV4_MAPPED_IPV6_RE:()=>Ue,REQUEST_TIMEOUT:()=>ze,querystringParse:()=>Ve,querystringStringify:()=>Ge,toUInt32:()=>We});var t=n(7187),i=n(6470),s=n(502),o=n(2090),a=n(3786),h=n(9503),c=n(1351),l=n(8225),u=n(4595),d=n(4375),f=n(5194),p=(n(3811),n(7036)),g=n(778);function _(e){return"."!==e[0]}function m(e,t,n){p.stat(e,((r,s)=>{if(r)return n(r);s.isDirectory()?p.readdir(e,((r,s)=>{if(r)return n(r);u(s.filter(_).filter(c.not).map((n=>r=>{m(i.join(e,n),t,r)})),n)})):s.isFile()&&t(e,n)}))}function y(e,t,n){m(e,b,((r,s)=>{if(r)return n(r);s=Array.isArray(s)?s.flat(1/0):[s],e=i.normalize(e),t&&(e=e.slice(0,e.lastIndexOf(i.sep)+1)),e[e.length-1]!==i.sep&&(e+=i.sep),s.forEach((t=>{t.getStream=function(e){return()=>p.createReadStream(e)}(t.path),t.path=t.path.replace(e,"").split(i.sep)})),n(null,s)}))}function b(e,t){t=g(t),p.stat(e,((n,r)=>{if(n)return t(n);const i={length:r.size,path:e};t(null,i)}))}const w=[["udp://tracker.leechers-paradise.org:6969"],["udp://tracker.coppersurfer.tk:6969"],["udp://tracker.opentrackr.org:1337"],["udp://explodie.org:6969"],["udp://tracker.empire-js.us:1337"],["wss://tracker.btorrent.xyz"],["wss://tracker.openwebtorrent.com"]];const v=Symbol("itemPath");function k(e,t,n){var r;if(r=e,"undefined"!=typeof FileList&&r instanceof FileList&&(e=Array.from(e)),Array.isArray(e)||(e=[e]),0===e.length)throw new Error("invalid input type");e.forEach((e=>{if(null==e)throw new Error(`invalid input type: ${e}`)})),1!==(e=e.map((e=>S(e)&&"string"==typeof e.path?e.path:e))).length||"string"==typeof e[0]||e[0].name||(e[0].name=t.name);let s=null;e.forEach(((t,n)=>{if("string"==typeof t)return;let r=t.fullPath||t.name;r||(r=`Unknown File ${n+1}`,t.unknownName=!0),t[v]=r.split("/"),t[v][0]||t[v].shift(),t[v].length<2?s=null:0===n&&e.length>1?s=t[v][0]:t[v][0]!==s&&(s=null)}));(void 0===t.filterJunkFiles||t.filterJunkFiles)&&(e=e.filter((e=>"string"==typeof e||!function(e){const t=e[e.length-1];return"."===t[0]&&c.is(t)}(e[v])))),s&&e.forEach((e=>{const t=(ArrayBuffer.isView(e)||T(e))&&!e[v];"string"==typeof e||t||e[v].shift()})),!t.name&&s&&(t.name=s),t.name||e.some((e=>"string"==typeof e?(t.name=i.basename(e),!0):!e.unknownName&&(t.name=e[v][e[v].length-1],!0))),t.name||(t.name=`Unnamed Torrent ${Date.now()}`);const o=e.reduce(((e,t)=>e+Number("string"==typeof t)),0);let a=1===e.length;function l(){u(e.map((e=>t=>{const n={};if(S(e))n.getStream=e.stream(),n.length=e.size;else if(ArrayBuffer.isView(e))n.getStream=[e],n.length=e.length;else{if(!T(e)){if("string"==typeof e){0;return void y(e,o>1||a,t)}throw new Error("invalid input type")}n.getStream=async function*(e,t){for await(const n of e)t.length+=n.length,yield n}(e,n),n.length=0}n.path=e[v],t(null,n)})),((e,t)=>{if(e)return n(e);t=t.flat(),n(null,t,a)}))}1===e.length&&"string"==typeof e[0]?h(e[0],((e,t)=>{if(e)return n(e);a=t,l()})):d(l)}const E=5;function x(e,t){return e+t.length}function S(e){return"undefined"!=typeof Blob&&e instanceof Blob}function T(e){return"object"==typeof e&&null!=e&&"function"==typeof e.pipe}const A=function(e,t,n){"function"==typeof t&&([t,n]=[n,t]),k(e,t=t?Object.assign({},t):{},((e,r,i)=>{if(e)return n(e);t.singleFileTorrent=i,function(e,t,n){let r=t.announceList;r||("string"==typeof t.announce?r=[[t.announce]]:Array.isArray(t.announce)&&(r=t.announce.map((e=>[e]))));r||(r=[]);globalThis.WEBTORRENT_ANNOUNCE&&("string"==typeof globalThis.WEBTORRENT_ANNOUNCE?r.push([[globalThis.WEBTORRENT_ANNOUNCE]]):Array.isArray(globalThis.WEBTORRENT_ANNOUNCE)&&(r=r.concat(globalThis.WEBTORRENT_ANNOUNCE.map((e=>[e])))));void 0===t.announce&&void 0===t.announceList&&(r=r.concat(w));"string"==typeof t.urlList&&(t.urlList=[t.urlList]);const i={info:{name:t.name},"creation date":Math.ceil((Number(t.creationDate)||Date.now())/1e3),encoding:"UTF-8"};0!==r.length&&(i.announce=r[0][0],i["announce-list"]=r);void 0!==t.comment&&(i.comment=t.comment);void 0!==t.createdBy&&(i["created by"]=t.createdBy);void 0!==t.private&&(i.info.private=Number(t.private));void 0!==t.info&&Object.assign(i.info,t.info);void 0!==t.sslCert&&(i.info["ssl-cert"]=t.sslCert);void 0!==t.urlList&&(i["url-list"]=t.urlList);const h=e.reduce(x,0),c=t.pieceLength||a(h);i.info["piece length"]=c,async function(e,t,n,r,i){const s=[];let a=0,h=0;const c=e.map((e=>e.getStream)),u=r.onProgress;let d=0,p=0,g=!1;const _=o(l(c),t,{zeroPadding:!1});try{for await(const e of _)await new Promise((t=>{a+=e.length;const r=p;++p,++d{s[r]=o,--d,h+=e.length,u&&u(h,n),t(),g&&0===d&&i(null,(0,f._0)(s.join("")),a)}))}));if(0===d)return i(null,(0,f._0)(s.join("")),a);g=!0}catch(e){i(e)}}(e,c,h,t,((r,o,a)=>{if(r)return n(r);i.info.pieces=o,e.forEach((e=>{delete e.getStream})),t.singleFileTorrent?i.info.length=a:i.info.files=e,n(null,s.Z.encode(i))}))}(r,t,n)}))};var C=n(1227),I=n(9507),P=n(3996),R=n(5777),O=n(7117),L=n(1798),N=n(4734),B=n(2927),D=n(8764).Buffer,U=n(8768);const M=C("bittorrent-dht"),j=3e5;class H extends t.EventEmitter{constructor(e={}){super(),this._tables=new O({maxAge:j,max:e.maxTables||1e3}),this._values=new O(e.maxValues||1e3),this._peers=N({maxAge:e.maxAge||0,maxSize:e.maxPeers||1e4}),this._secrets=null,this._hash=e.hash||F,this._hashLength=this._hash(D.from("")).length,this._rpc=e.krpc||P(Object.assign({idLength:this._hashLength},e)),this._rpc.on("query",(function(e,t){n._onquery(e,t)})),this._rpc.on("node",(function(e){n.emit("node",e)})),this._rpc.on("warning",(function(e){n.emit("warning",e)})),this._rpc.on("error",(function(e){n.emit("error",e)})),this._rpc.on("listening",(function(){n.listening=!0,n._debug("listening %d",n.address().port),n.updateBucketTimestamp(),n._setBucketCheckInterval(),n.emit("listening")})),this._rotateSecrets(),this._verify=e.verify||null,this._host=e.host||null,this._interval=setInterval((function(){n._rotateSecrets()}),j),this._runningBucketCheck=!1,this._bucketCheckTimeout=null,this._bucketOutdatedTimeSpan=e.timeBucketOutdated||9e5,this.listening=!1,this.destroyed=!1,this.nodeId=this._rpc.id,this.nodes=this._rpc.nodes;const t=R((function(e,t){const r=e.older,i=e.swap;n._debug("received ping",r),n._checkNodes(r,!1,((e,r)=>{if(r)return n._debug("swaping dead node with newer",r),i(r),t();n._debug("no node added, all other nodes ok"),t()}))}));this._rpc.on("ping",((e,n)=>{t({older:e,swap:n})})),U.nextTick((function(){n.destroyed||n._bootstrap(!1!==e.bootstrap)})),this._debug("new DHT %s",this.nodeId);const n=this}_setBucketCheckInterval(){const e=this;function t(){if(Date.now()-e._rpc.nodes.metadata.lastChange{e.destroyed||(e.nodes.toArray().length<1&&e._bootstrap(!0),n())}))}function n(){if(!e._runningBucketCheck||e.destroyed)return;const n=Math.floor(6e4*Math.random()+3e4);e._bucketCheckTimeout=setTimeout(t,n)}this._runningBucketCheck=!0,n()}_pingAll(e){this._checkAndRemoveNodes(this.nodes.toArray(),e)}removeBucketCheckInterval(){this._runningBucketCheck=!1,clearTimeout(this._bucketCheckTimeout)}updateBucketTimestamp(){this._rpc.nodes.metadata.lastChange=Date.now()}_checkAndRemoveNodes(e,t){const n=this;this._checkNodes(e,!0,((e,r)=>{r&&n.removeNode(r.id),t(null,r)}))}_checkNodes(e,t,n){const r=this;!function e(i){let s=null;for(;i.length&&(s=i.pop(),s.id&&!t)&&!(Date.now()-(s.seen||0)>1e4);)s=null;if(!s)return n(null);r._sendPing(s,(t=>{if(!t)return r.updateBucketTimestamp(),e(i);n(null,s)}))}(e)}addNode(e){const t=this;if(e.id){e.id=G(e.id);const t=!!this._rpc.nodes.get(e.id);return this._rpc.nodes.add(e),void(t||(this.emit("node",e),this.updateBucketTimestamp()))}this._sendPing(e,((e,n)=>{n&&t.addNode(n)}))}removeNode(e){this._rpc.nodes.remove(G(e))}_sendPing(e,t){const n=this,r=e.id;this._rpc.query(e,{q:"ping"},((e,i,s)=>e?t(e):i.r&&i.r.id&&D.isBuffer(i.r.id)&&i.r.id.length===n._hashLength?D.isBuffer(r)&&!r.equals(i.r.id)?t(new Error("Unexpected node id")):(n.updateBucketTimestamp(),void t(null,{id:i.r.id,host:s.host||s.address,port:s.port})):t(new Error("Bad reply"))))}toJSON(){const e=this,t={};return Object.keys(this._values.cache).forEach((n=>{const r=e._values.cache[n].value;t[n]={v:r.v.toString("hex"),id:r.id.toString("hex")},null!=r.seq&&(t[n].seq=r.seq),null!=r.sig&&(t[n].sig=r.sig.toString("hex")),null!=r.k&&(t[n].k=r.k.toString("hex"))})),{nodes:this._rpc.nodes.toArray().map(V),values:t}}put(e,t){(D.isBuffer(e)||"string"==typeof e)&&(e={v:e});const n=!!e.k;if(void 0===e.v)throw new Error("opts.v not given");if(e.v.length>=1e3)throw new Error("v must be less than 1000 bytes in put()");if(n&&void 0!==e.cas&&"number"!=typeof e.cas)throw new Error("opts.cas must be an integer if provided");if(n&&32!==e.k.length)throw new Error("opts.k ed25519 public key must be 32 bytes");if(n&&"function"!=typeof e.sign&&!D.isBuffer(e.sig))throw new Error("opts.sign function or options.sig signature is required for mutable put");if(n&&e.salt&&e.salt.length>64)throw new Error("opts.salt is > 64 bytes long");if(n&&void 0===e.seq)throw new Error("opts.seq not provided for a mutable update");if(n&&"number"!=typeof e.seq)throw new Error("opts.seq not an integer");return this._put(e,t)}_put(e,t){t||(t=q);const n=!!e.k,r="string"==typeof e.v?D.from(e.v):e.v,i=n?this._hash(e.salt?D.concat([e.k,e.salt]):e.k):this._hash(s.Z.encode(r)),o=this._tables.get(i.toString("hex"));if(!o)return this._preput(i,e,t);const a={q:"put",a:{id:this._rpc.id,token:null,v:r}};return n?("number"==typeof e.cas&&(a.a.cas=e.cas),e.salt&&(a.a.salt=e.salt),a.a.k=e.k,a.a.seq=e.seq,"function"==typeof e.sign?a.a.sig=e.sign(W(a.a)):D.isBuffer(e.sig)&&(a.a.sig=e.sig)):this._values.set(i.toString("hex"),a.a),this._rpc.queryAll(o.closest(i),a,null,((e,n)=>{if(e)return t(e,i,n);t(null,i,n)})),i}_preput(e,t,n){const r=this;return this._closest(e,{q:"get",a:{id:this._rpc.id,target:e}},null,((e,i)=>{if(e)return n(e);r.put(t,n)})),e}get(e,t,n){e=G(e),"function"==typeof t&&(n=t,t=null),t||(t={});const r=t.verify||this._verify,i=this._hash;let o=this._values.get(e.toString("hex"))||null;if(o&&!1!==t.cache)return o=z(this._rpc.id,null,o),U.nextTick(a);function a(e){if(e)return n(e);n(null,o)}this._closest(e,{q:"get",a:{id:this._rpc.id,target:e}},(function(n){const a=n.r;if(!a||!a.v)return!0;const h=a.k||a.sig;t.salt&&(a.salt=D.from(t.salt));if(h){if(!r||!a.sig||!a.k)return!0;if(!r(a.sig,W(a),a.k))return!0;i(a.salt?D.concat([a.k,a.salt]):a.k).equals(e)&&(!o||a.seq>o.seq)&&(o=a)}else if(i(s.Z.encode(a.v)).equals(e))return o=a,!1;return!0}),a)}announce(e,t,n){if("function"==typeof t)return this.announce(e,0,t);e=G(e),n||(n=q);const r=this._tables.get(e.toString("hex"));if(!r)return this._preannounce(e,t,n);if(this._host){const n=this.listening?this.address().port:0;this._addPeer({host:this._host,port:t||n},e,{host:this._host,port:n})}const i={q:"announce_peer",a:{id:this._rpc.id,token:null,info_hash:e,port:t,implied_port:t?0:1}};this._debug("announce %s %d",e,t),this._rpc.queryAll(r.closest(e),i,null,n)}_preannounce(e,t,n){const r=this;this.lookup(e,(i=>r.destroyed?n(new Error("dht is destroyed")):i?n(i):void r.announce(e,t,n)))}lookup(e,t){e=G(e),t||(t=q);const n=this;let r=!1;function i(t,r){t||(t=n._peers.get(e.toString("hex"),100));const i=function(e){const t=[];try{for(let n=0;n{t.emit("close"),e&&e()}))}_onquery(e,t){if(void 0===e.q||null===e.q)return;const n=e.q.toString();if(this._debug("received %s query from %s:%d",n,t.address,t.port),e.a)switch(n){case"ping":return this._rpc.response(t,e,{id:this._rpc.id});case"find_node":return this._onfindnode(e,t);case"get_peers":return this._ongetpeers(e,t);case"announce_peer":return this._onannouncepeer(e,t);case"get":return this._onget(e,t);case"put":return this._onput(e,t)}}_onfindnode(e,t){const n=e.a.target;if(!n)return this._rpc.error(t,e,[203,"`find_node` missing required `a.target` field"]);this.emit("find_node",n);const r=this._rpc.nodes.closest(n);this._rpc.response(t,e,{id:this._rpc.id},r)}_ongetpeers(e,t){const n=t.address||t.host,r=e.a.info_hash;if(!r)return this._rpc.error(t,e,[203,"`get_peers` missing required `a.info_hash` field"]);this.emit("get_peers",r);const i={id:this._rpc.id,token:this._generateToken(n)},s=this._peers.get(r.toString("hex"));s.length?(i.values=s,this._rpc.response(t,e,i)):this._rpc.response(t,e,i,this._rpc.nodes.closest(r))}_onannouncepeer(e,t){const n=t.address||t.host,r=e.a.implied_port?t.port:e.a.port;if(!r||"number"!=typeof r||r<=0||r>65535)return;const i=e.a.info_hash,s=e.a.token;if(i&&s){if(!this._validateToken(n,s))return this._rpc.error(t,e,[203,"cannot `announce_peer` with bad token"]);this.emit("announce_peer",i,{host:n,port:t.port}),this._addPeer({host:n,port:r},i,{host:n,port:t.port}),this._rpc.response(t,e,{id:this._rpc.id})}}_addPeer(e,t,n){this._peers.add(t.toString("hex"),function(e,t){const n=D.allocUnsafe(6),r=e.split(".");for(let e=0;e<4;e++)n[e]=parseInt(r[e]||0,10);return n.writeUInt16BE(t,4),n}(e.host,e.port)),this.emit("announce",e,t,n)}_onget(e,t){const n=t.address||t.host,r=e.a.target;if(!r)return;const i=this._generateToken(n),s=this._values.get(r.toString("hex"));if(this.emit("get",r,s),s)this._rpc.response(t,e,z(this._rpc.id,i,s));else{const n=this._rpc.nodes.closest(r);this._rpc.response(t,e,{id:this._rpc.id,token:i},n)}}_onput(e,t){const n=t.address||t.host,r=e.a;if(!r)return;const i=e.a.v;if(!i)return;const o=e.a.id;if(!o)return;const a=r.token;if(!a)return;if(!this._validateToken(n,a))return this._rpc.error(t,e,[203,"cannot `put` with bad token"]);if(i.length>1e3)return this._rpc.error(t,e,[205,"data payload too large"]);const h=!(!r.k&&!r.sig);if(h&&!r.k&&!r.sig)return;const c=h?this._hash(r.salt?D.concat([r.k,r.salt]):r.k):this._hash(s.Z.encode(i)),l=c.toString("hex");if(this.emit("put",c,i),h){if(!this._verify)return this._rpc.error(t,e,[400,"verification not supported"]);if(!this._verify(r.sig,W(r),r.k))return;const n=this._values.get(l);if(n&&"number"==typeof r.cas&&n.seq!==r.cas)return this._rpc.error(t,e,[301,"CAS mismatch, re-read and try again"]);if(n&&"number"==typeof n.seq&&!(r.seq>n.seq))return this._rpc.error(t,e,[302,"sequence number less than current"]);this._values.set(l,{v:i,k:r.k,salt:r.salt,sig:r.sig,seq:r.seq,id:o})}else this._values.set(l,{v:i,id:o});this._rpc.response(t,e,{id:this._rpc.id})}_bootstrap(e){const t=this;if(!e)return U.nextTick(n);function n(){t.ready||(t._debug("emit ready"),t.ready=!0,t.emit("ready"))}this._rpc.populate(t._rpc.id,{q:"find_node",a:{id:t._rpc.id,target:t._rpc.id}},n)}_closest(e,t,n,r){const i=this,s=new I({localNodeId:e,numberOfNodesPerKBucket:this._rpc.k});this._rpc.closest(e,t,(function(t,r){if(!t.r)return!0;t.r.token&&t.r.id&&D.isBuffer(t.r.id)&&t.r.id.length===i._hashLength&&(i._debug("found node %s (target: %s)",t.r.id,e),s.add({id:t.r.id,host:r.host||r.address,port:r.port,token:t.r.token}));return!n||n(t,r)}),(function(t,n){if(t)return r(t);i._tables.set(e.toString("hex"),s),i._debug("visited %d nodes",n),r(null,n)}))}_debug(){if(!M.enabled)return;const e=[].slice.call(arguments);e[0]=`[${this.nodeId.toString("hex").substring(0,7)}] ${e[0]}`;for(let t=1;t{throw new Error("global fetch is not available!")}),Q=[255,255,26,27,28,29,30,31,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255];const X=function(e){if(!ArrayBuffer.isView(e)&&"string"!=typeof e)throw new TypeError("base32.decode only takes Buffer or string as parameter");let t,n=0,r=0,i=0;ArrayBuffer.isView(e)||(e=(0,f.gR)(e));const s=new Uint8Array(Math.ceil(5*e.length/8));for(let o=0;o>>n,s[i]=t,i++,t=255&r<<8-n)}return s.subarray(0,i)};function ee(e){return e.reduce(((e,t,n,r)=>{const i=t.split("-").map((e=>parseInt(e)));return e.concat(((e,t=e)=>Array.from({length:t-e+1},((t,n)=>n+e)))(...i))}),[])}const te=function(e){const t={},n=e.split("magnet:?")[1];let r;if((n&&n.length>=0?n.split("&"):[]).forEach((e=>{const n=e.split("=");if(2!==n.length)return;const r=n[0];let i=n[1];"dn"===r&&(i=decodeURIComponent(i).replace(/\+/g," ")),"tr"!==r&&"xs"!==r&&"as"!==r&&"ws"!==r||(i=decodeURIComponent(i)),"kt"===r&&(i=decodeURIComponent(i).split("+")),"ix"===r&&(i=Number(i)),"so"===r&&(i=ee(decodeURIComponent(i).split(","))),t[r]?(Array.isArray(t[r])||(t[r]=[t[r]]),t[r].push(i)):t[r]=i})),t.xt){(Array.isArray(t.xt)?t.xt:[t.xt]).forEach((e=>{(r=e.match(/^urn:btih:(.{40})/))?t.infoHash=r[1].toLowerCase():(r=e.match(/^urn:btih:(.{32})/))?t.infoHash=(0,f.oc)(X(r[1])):(r=e.match(/^urn:btmh:1220(.{64})/))&&(t.infoHashV2=r[1].toLowerCase())}))}if(t.xs){(Array.isArray(t.xs)?t.xs:[t.xs]).forEach((e=>{(r=e.match(/^urn:btpk:(.{64})/))&&(t.publicKey=r[1].toLowerCase())}))}return t.infoHash&&(t.infoHashBuffer=(0,f._0)(t.infoHash)),t.infoHashV2&&(t.infoHashV2Buffer=(0,f._0)(t.infoHashV2)),t.publicKey&&(t.publicKeyBuffer=(0,f._0)(t.publicKey)),t.dn&&(t.name=t.dn),t.kt&&(t.keywords=t.kt),t.announce=[],("string"==typeof t.tr||Array.isArray(t.tr))&&(t.announce=t.announce.concat(t.tr)),t.urlList=[],("string"==typeof t.as||Array.isArray(t.as))&&(t.urlList=t.urlList.concat(t.as)),("string"==typeof t.ws||Array.isArray(t.ws))&&(t.urlList=t.urlList.concat(t.ws)),t.peerAddresses=[],("string"==typeof t["x.pe"]||Array.isArray(t["x.pe"]))&&(t.peerAddresses=t.peerAddresses.concat(t["x.pe"])),t.announce=Array.from(new Set(t.announce)),t.urlList=Array.from(new Set(t.urlList)),t.peerAddresses=Array.from(new Set(t.peerAddresses)),t};async function ne(e){if("string"==typeof e&&/^(stream-)?magnet:/.test(e)){const t=te(e);if(!t.infoHash)throw new Error("Invalid torrent identifier");return t}if("string"==typeof e&&(/^[a-f0-9]{40}$/i.test(e)||/^[a-z2-7]{32}$/i.test(e)))return te(`magnet:?xt=urn:btih:${e}`);if(ArrayBuffer.isView(e)&&20===e.length)return te(`magnet:?xt=urn:btih:${(0,f.oc)(e)}`);if(ArrayBuffer.isView(e))return await async function(e){ArrayBuffer.isView(e)&&(e=s.Z.decode(e));se(e.info,"info"),se(e.info["name.utf-8"]||e.info.name,"info.name"),se(e.info["piece length"],"info['piece length']"),se(e.info.pieces,"info.pieces"),e.info.files?e.info.files.forEach((e=>{se("number"==typeof e.length,"info.files[0].length"),se(e["path.utf-8"]||e.path,"info.files[0].path")})):se("number"==typeof e.info.length,"info.length");const t={info:e.info,infoBuffer:s.Z.encode(e.info),name:(0,f.vV)(e.info["name.utf-8"]||e.info.name),announce:[]};t.infoHashBuffer=await(0,f.vp)(t.infoBuffer),t.infoHash=(0,f.oc)(t.infoHashBuffer),void 0!==e.info.private&&(t.private=!!e.info.private);e["creation date"]&&(t.created=new Date(1e3*e["creation date"]));e["created by"]&&(t.createdBy=(0,f.vV)(e["created by"]));ArrayBuffer.isView(e.comment)&&(t.comment=(0,f.vV)(e.comment));Array.isArray(e["announce-list"])&&e["announce-list"].length>0?e["announce-list"].forEach((e=>{e.forEach((e=>{t.announce.push((0,f.vV)(e))}))})):e.announce&&t.announce.push((0,f.vV)(e.announce));ArrayBuffer.isView(e["url-list"])&&(e["url-list"]=e["url-list"].length>0?[e["url-list"]]:[]);t.urlList=(e["url-list"]||[]).map((e=>(0,f.vV)(e))),t.announce=Array.from(new Set(t.announce)),t.urlList=Array.from(new Set(t.urlList));const n=e.info.files||[e.info];t.files=n.map(((e,r)=>{const s=[].concat(t.name,e["path.utf-8"]||e.path||[]).map((e=>ArrayBuffer.isView(e)?(0,f.vV)(e):e));return{path:i.join.apply(null,[i.sep].concat(s)).slice(1),name:s[s.length-1],length:e.length,offset:n.slice(0,r).reduce(ie,0)}})),t.length=n.reduce(ie,0);const r=t.files[t.files.length-1];return t.pieceLength=e.info["piece length"],t.lastPieceLength=(r.offset+r.length)%t.pieceLength||t.pieceLength,t.pieces=function(e){const t=[];for(let n=0;n{n(null,r)}));else if(i=e,"undefined"!=typeof Blob&&i instanceof Blob)try{s(new Uint8Array(await e.arrayBuffer()))}catch(e){return n(new Error(`Error converting Blob: ${e.message}`))}else if(/^https?:/.test(e))try{const n=await J(e,{headers:{"user-agent":"WebTorrent (https://webtorrent.io)"},signal:AbortSignal.timeout(3e4),...t});s(new Uint8Array(await n.arrayBuffer()))}catch(e){return n(new Error(`Error downloading torrent: ${e.message}`))}else"function"==typeof Y.readFile&&"string"==typeof e?Y.readFile(e,((e,t)=>{if(e)return n(new Error("Invalid torrent identifier"));s(t)})):d((()=>{n(new Error("Invalid torrent identifier"))}));var i;async function s(e){try{r=await ne(e)}catch(e){return n(e)}r&&r.infoHash?n(null,r):n(new Error("Invalid torrent identifier"))}}function ie(e,t){return e+t.length}function se(e,t){if(!e)throw new Error(`Torrent is missing required field: ${t}`)}const oe=ne,ae=function(e){e=Object.assign({},e);let t=new Set;e.xt&&"string"==typeof e.xt&&t.add(e.xt),e.xt&&Array.isArray(e.xt)&&(t=new Set(e.xt)),e.infoHashBuffer&&t.add(`urn:btih:${(0,f.oc)(e.infoHashBuffer)}`),e.infoHash&&t.add(`urn:btih:${e.infoHash}`),e.infoHashV2Buffer&&t.add(e.xt=`urn:btmh:1220${(0,f.oc)(e.infoHashV2Buffer)}`),e.infoHashV2&&t.add(`urn:btmh:1220${e.infoHashV2}`);const n=Array.from(t);1===n.length&&(e.xt=n[0]),n.length>1&&(e.xt=n),e.publicKeyBuffer&&(e.xs=`urn:btpk:${(0,f.oc)(e.publicKeyBuffer)}`),e.publicKey&&(e.xs=`urn:btpk:${e.publicKey}`),e.name&&(e.dn=e.name),e.keywords&&(e.kt=e.keywords),e.announce&&(e.tr=e.announce),e.urlList&&(e.ws=e.urlList,delete e.as),e.peerAddresses&&(e["x.pe"]=e.peerAddresses);let r="magnet:?";return Object.keys(e).filter((e=>2===e.length||"x.pe"===e)).forEach(((t,n)=>{const i=Array.isArray(e[t])?e[t]:[e[t]];var s;i.forEach(((e,i)=>{(n>0||i>0)&&("kt"!==t&&"so"!==t||0===i)&&(r+="&"),"dn"===t&&(e=encodeURIComponent(e).replace(/%20/g,"+")),"tr"!==t&&"as"!==t&&"ws"!==t||(e=encodeURIComponent(e)),"xs"!==t||e.startsWith("urn:btpk:")||(e=encodeURIComponent(e)),"kt"===t&&(e=encodeURIComponent(e)),"so"!==t&&(r+="kt"===t&&i>0?`+${e}`:`${t}=${e}`)})),"so"===t&&(r+=`${t}=${s=i,s.reduce(((e,t,n,r)=>(0!==n&&t===r[n-1]+1||e.push([]),e[e.length-1].push(t),e)),[]).map((e=>e.length>1?`${e[0]}-${e[e.length-1]}`:`${e[0]}`))}`)})),r};var he=n(5177),ce=n(1237),le=n(2114);const ue=C("simple-peer"),de=65536;function fe(e){return e.replace(/a=ice-options:trickle\s\n/g,"")}class pe extends ce.Duplex{constructor(e){if(super(e=Object.assign({allowHalfOpen:!1},e)),this.__objectMode=!!e.objectMode,this._id=(0,f.oc)((0,f.O6)(4)).slice(0,7),this._debug("new peer %o",e),this.channelName=e.initiator?e.channelName||(0,f.oc)((0,f.O6)(20)):null,this.initiator=e.initiator||!1,this.channelConfig=e.channelConfig||pe.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},pe.config,e.config),this.offerOptions=e.offerOptions||{},this.answerOptions=e.answerOptions||{},this.sdpTransform=e.sdpTransform||(e=>e),this.streams=e.streams||(e.stream?[e.stream]:[]),this.trickle=void 0===e.trickle||e.trickle,this.allowHalfTrickle=void 0!==e.allowHalfTrickle&&e.allowHalfTrickle,this.iceCompleteTimeout=e.iceCompleteTimeout||5e3,this._destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=e.wrtc&&"object"==typeof e.wrtc?e.wrtc:he(),!this._wrtc)throw"undefined"==typeof window?le(new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"),"ERR_WEBRTC_SUPPORT"):le(new Error("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(e){return void this.__destroy(le(e,"ERR_PC_CONSTRUCTOR"))}this._isReactNativeWebrtc="number"==typeof this._pc._peerConnectionId,this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=e=>{this._onIceCandidate(e)},"object"==typeof this._pc.peerIdentity&&this._pc.peerIdentity.catch((e=>{this.__destroy(le(e,"ERR_PC_PEER_IDENTITY"))})),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=e=>{this._setupData(e)},this.streams&&this.streams.forEach((e=>{this.addStream(e)})),this._pc.ontrack=e=>{this._onTrack(e)},this._debug("initial negotiation"),this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&"open"===this._channel.readyState}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(e){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e={}}this._debug("signal()"),e.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),e.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(e.transceiverRequest.kind,e.transceiverRequest.init)),e.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(e.candidate):this._pendingCandidates.push(e.candidate)),e.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(e)).then((()=>{this.destroyed||(this._pendingCandidates.forEach((e=>{this._addIceCandidate(e)})),this._pendingCandidates=[],"offer"===this._pc.remoteDescription.type&&this._createAnswer())})).catch((e=>{this.__destroy(le(e,"ERR_SET_REMOTE_DESCRIPTION"))})),e.sdp||e.candidate||e.renegotiate||e.transceiverRequest||this.__destroy(le(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(e){const t=new this._wrtc.RTCIceCandidate(e);this._pc.addIceCandidate(t).catch((e=>{var n;!t.address||t.address.endsWith(".local")?(n="Ignoring unsupported ICE candidate.",console.warn(n)):this.__destroy(le(e,"ERR_ADD_ICE_CANDIDATE"))}))}send(e){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(e)}}addTransceiver(e,t){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(e,t),this._needsNegotiation()}catch(e){this.__destroy(le(e,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind:e,init:t}})}}addStream(e){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()"),e.getTracks().forEach((t=>{this.addTrack(t,e)}))}}addTrack(e,t){if(this._destroying)return;if(this.destroyed)throw le(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");const n=this._senderMap.get(e)||new Map;let r=n.get(t);if(r)throw r.removed?le(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):le(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED");r=this._pc.addTrack(e,t),n.set(t,r),this._senderMap.set(e,n),this._needsNegotiation()}replaceTrack(e,t,n){if(this._destroying)return;if(this.destroyed)throw le(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");const r=this._senderMap.get(e),i=r?r.get(n):null;if(!i)throw le(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");t&&this._senderMap.set(t,r),null!=i.replaceTrack?i.replaceTrack(t):this.__destroy(le(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK"))}removeTrack(e,t){if(this._destroying)return;if(this.destroyed)throw le(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");const n=this._senderMap.get(e),r=n?n.get(t):null;if(!r)throw le(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{r.removed=!0,this._pc.removeTrack(r)}catch(e){"NS_ERROR_UNEXPECTED"===e.name?this._sendersAwaitingStable.push(r):this.__destroy(le(e,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(e){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()"),e.getTracks().forEach((t=>{this.removeTrack(t,e)}))}}_needsNegotiation(){this._debug("_needsNegotiation"),this._batchedNegotiation||(this._batchedNegotiation=!0,d((()=>{this._batchedNegotiation=!1,this.initiator||!this._firstNegotiation?(this._debug("starting batched negotiation"),this.negotiate()):this._debug("non-initiator initial negotiation request discarded"),this._firstNegotiation=!1})))}negotiate(){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot negotiate after peer is destroyed"),"ERR_DESTROYED");this.initiator?this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("start negotiation"),setTimeout((()=>{this._createOffer()}),0)):this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("requesting negotiation from initiator"),this.emit("signal",{type:"renegotiate",renegotiate:!0})),this._isNegotiating=!0}}_final(e){this._readableState.ended||this.push(null),e(null)}__destroy(e){this.end(),this._destroy((()=>{}),e)}_destroy(e,t){this.destroyed||this._destroying||(this._destroying=!0,this._debug("destroying (error: %s)",t&&(t.message||t)),setTimeout((()=>{if(this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._remoteTracks=null,this._remoteStreams=null,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._onFinishBound&&this.removeListener("finish",this._onFinishBound),this._onFinishBound=null,this._channel){try{this._channel.close()}catch(e){}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch(e){}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ontrack=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,t&&this.emit("error",t),e()}),0))}_setupData(e){if(!e.channel)return this.__destroy(le(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=e.channel,this._channel.binaryType="arraybuffer","number"==typeof this._channel.bufferedAmountLowThreshold&&(this._channel.bufferedAmountLowThreshold=de),this.channelName=this._channel.label,this._channel.onmessage=e=>{this._onChannelMessage(e)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=e=>{const t=e.error instanceof Error?e.error:new Error(`Datachannel error: ${e.message} ${e.filename}:${e.lineno}:${e.colno}`);this.__destroy(le(t,"ERR_DATA_CHANNEL"))};let t=!1;this._closingInterval=setInterval((()=>{this._channel&&"closing"===this._channel.readyState?(t&&this._onChannelClose(),t=!0):t=!1}),5e3)}_write(e,t){if(this.destroyed)return t(le(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(e)}catch(e){return this.__destroy(le(e,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>de?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=t):t(null)}else this._debug("write before connect"),this._chunk=e,this._cb=t}_onFinish(){if(this.destroyed)return;const e=()=>{setTimeout((()=>this.__destroy()),1e3)};this._connected?e():this.once("connect",e)}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._debug("started iceComplete timeout"),this._iceCompleteTimer=setTimeout((()=>{this._iceComplete||(this._iceComplete=!0,this._debug("iceComplete timeout completed"),this.emit("iceTimeout"),this.emit("_iceComplete"))}),this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then((e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=fe(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(this.destroyed)return;const t=this._pc.localDescription||e;this._debug("signal"),this.emit("signal",{type:t.type,sdp:t.sdp})};this._pc.setLocalDescription(e).then((()=>{this._debug("createOffer success"),this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))})).catch((e=>{this.__destroy(le(e,"ERR_SET_LOCAL_DESCRIPTION"))}))})).catch((e=>{this.__destroy(le(e,"ERR_CREATE_OFFER"))}))}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach((e=>{e.mid||!e.sender.track||e.requested||(e.requested=!0,this.addTransceiver(e.sender.track.kind))}))}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then((e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=fe(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(this.destroyed)return;const t=this._pc.localDescription||e;this._debug("signal"),this.emit("signal",{type:t.type,sdp:t.sdp}),this.initiator||this._requestMissingTransceivers()};this._pc.setLocalDescription(e).then((()=>{this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))})).catch((e=>{this.__destroy(le(e,"ERR_SET_LOCAL_DESCRIPTION"))}))})).catch((e=>{this.__destroy(le(e,"ERR_CREATE_ANSWER"))}))}_onConnectionStateChange(){this.destroyed||this._destroying||"failed"===this._pc.connectionState&&this.__destroy(le(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;const e=this._pc.iceConnectionState,t=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",e,t),this.emit("iceStateChange",e,t),"connected"!==e&&"completed"!==e||(this._pcReady=!0,this._maybeReady()),"failed"===e&&this.__destroy(le(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE")),"closed"===e&&this.__destroy(le(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(e){const t=e=>("[object Array]"===Object.prototype.toString.call(e.values)&&e.values.forEach((t=>{Object.assign(e,t)})),e);0===this._pc.getStats.length||this._isReactNativeWebrtc?this._pc.getStats().then((n=>{const r=[];n.forEach((e=>{r.push(t(e))})),e(null,r)}),(t=>e(t))):this._pc.getStats.length>0?this._pc.getStats((n=>{if(this.destroyed)return;const r=[];n.result().forEach((e=>{const n={};e.names().forEach((t=>{n[t]=e.stat(t)})),n.id=e.id,n.type=e.type,n.timestamp=e.timestamp,r.push(t(n))})),e(null,r)}),(t=>e(t))):e(null,[])}_maybeReady(){if(this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady),this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;const e=()=>{this.destroyed||this._destroying||this.getStats(((t,n)=>{if(this.destroyed||this._destroying)return;t&&(n=[]);const r={},i={},s={};let o=!1;n.forEach((e=>{"remotecandidate"!==e.type&&"remote-candidate"!==e.type||(r[e.id]=e),"localcandidate"!==e.type&&"local-candidate"!==e.type||(i[e.id]=e),"candidatepair"!==e.type&&"candidate-pair"!==e.type||(s[e.id]=e)}));const a=e=>{o=!0;let t=i[e.localCandidateId];t&&(t.ip||t.address)?(this.localAddress=t.ip||t.address,this.localPort=Number(t.port)):t&&t.ipAddress?(this.localAddress=t.ipAddress,this.localPort=Number(t.portNumber)):"string"==typeof e.googLocalAddress&&(t=e.googLocalAddress.split(":"),this.localAddress=t[0],this.localPort=Number(t[1])),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let n=r[e.remoteCandidateId];n&&(n.ip||n.address)?(this.remoteAddress=n.ip||n.address,this.remotePort=Number(n.port)):n&&n.ipAddress?(this.remoteAddress=n.ipAddress,this.remotePort=Number(n.portNumber)):"string"==typeof e.googRemoteAddress&&(n=e.googRemoteAddress.split(":"),this.remoteAddress=n[0],this.remotePort=Number(n[1])),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4"),this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPort,this.remoteAddress,this.remotePort)};if(n.forEach((e=>{"transport"===e.type&&e.selectedCandidatePairId&&a(s[e.selectedCandidatePairId]),("googCandidatePair"===e.type&&"true"===e.googActiveConnection||("candidatepair"===e.type||"candidate-pair"===e.type)&&e.selected)&&a(e)})),o||Object.keys(s).length&&!Object.keys(i).length){if(this._connecting=!1,this._connected=!0,this._chunk){try{this.send(this._chunk)}catch(t){return this.__destroy(le(t,"ERR_DATA_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');const e=this._cb;this._cb=null,e(null)}"number"!=typeof this._channel.bufferedAmountLowThreshold&&(this._interval=setInterval((()=>this._onInterval()),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")}else setTimeout(e,100)}))};e()}_onInterval(){!this._cb||!this._channel||this._channel.bufferedAmount>de||this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||("stable"===this._pc.signalingState&&(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach((e=>{this._pc.removeTrack(e),this._queuedNegotiation=!0})),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._debug("flushing negotiation queue"),this._queuedNegotiation=!1,this._needsNegotiation()):(this._debug("negotiated"),this.emit("negotiated"))),this._debug("signalingStateChange %s",this._pc.signalingState),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(e){this.destroyed||(e.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex,sdpMid:e.candidate.sdpMid}}):e.candidate||this._iceComplete||(this._iceComplete=!0,this.emit("_iceComplete")),e.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(e){if(this.destroyed)return;let t=e.data;t instanceof ArrayBuffer?t=new Uint8Array(t):!1===this.__objectMode&&(t=(0,f.gR)(t)),this.push(t)}_onChannelBufferedAmountLow(){if(this.destroyed||!this._cb)return;this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);const e=this._cb;this._cb=null,e(null)}_onChannelOpen(){this._connected||this.destroyed||(this._debug("on channel open"),this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||(this._debug("on channel close"),this.__destroy())}_onTrack(e){this.destroyed||e.streams.forEach((t=>{this._debug("on track"),this.emit("track",e.track,t),this._remoteTracks.push({track:e.track,stream:t}),this._remoteStreams.some((e=>e.id===t.id))||(this._remoteStreams.push(t),d((()=>{this._debug("on stream"),this.emit("stream",t)})))}))}_debug(){const e=[].slice.call(arguments);e[0]="["+this._id+"] "+e[0],ue.apply(null,e)}}pe.WEBRTC_SUPPORT=!!he(),pe.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},pe.channelConfig={};const ge=pe;var _e=n(1463),me=n(558),ye=n(7460),be=n(3287),we=n(6475);const ve=C("webtorrent:conn-pool");class ke{constructor(e){ve("create pool (port %s)",e.torrentPort),this._client=e,this._pendingConns=new Set,this._onTCPConnectionBound=e=>{this._onConnection(e,"tcp")},this._onUTPConnectionBound=e=>{this._onConnection(e,"utp")},this._onListening=()=>{this._client._onListening()},this._onTCPError=e=>{this._client._destroy(e)},this._onUTPError=()=>{this._client.utp=!1},this.tcpServer=ye.createServer(),this.tcpServer.on("connection",this._onTCPConnectionBound),this.tcpServer.on("error",this._onTCPError),this.tcpServer.listen(e.torrentPort,(async()=>{ve("creating tcpServer in port %s",this.tcpServer.address().port),this._client.utp?(this.utpServer=(await we).createServer(),this.utpServer.on("connection",this._onUTPConnectionBound),this.utpServer.on("listening",this._onListening),this.utpServer.on("error",this._onUTPError),ve("creating utpServer in port %s",this.tcpServer.address().port),this.utpServer.listen(this.tcpServer.address().port)):this._onListening()}))}destroy(e){if(ve("destroy conn pool"),this.utpServer&&(this.utpServer.removeListener("connection",this._onUTPConnectionBound),this.utpServer.removeListener("listening",this._onListening),this.utpServer.removeListener("error",this._onUTPError)),this.tcpServer.removeListener("connection",this._onTCPConnectionBound),this.tcpServer.removeListener("error",this._onTCPError),this._pendingConns.forEach((e=>{e.on("error",Ee),e.destroy()})),this.utpServer)try{this.utpServer.close(e)}catch(t){e&&d(e)}try{this.tcpServer.close(e)}catch(t){e&&d(e)}this.tcpServer=null,this.utpServer=null,this._client=null,this._pendingConns=null}_onConnection(e,t){const n=this;if(!e.remoteAddress)return e.on("error",Ee),void e.destroy();n._pendingConns.add(e),e.once("close",o);const r="utp"===t?be.default.createUTPIncomingPeer(e,this._client.throttleGroups):be.default.createTCPIncomingPeer(e,this._client.throttleGroups),i=r.wire;async function s(e,t){o();const i=await n._client.get(e);if(i)r.swarm||(r.swarm=i,i._addIncomingPeer(r)),r.onHandshake(e,t);else{const t=new Error(`Unexpected info hash ${e} from incoming peer ${r.id}`);r.destroy(t)}}function o(){e.removeListener("close",o),i.removeListener("handshake",s),n._pendingConns&&n._pendingConns.delete(e)}i.once("pe3",(async function(e){const t=await n._client._getByHash(e);t?(r.swarm=t,t._addIncomingPeer(r),r.onPe3(e)):r.destroy(new Error(`Unexpected info hash hash ${e} from incoming peer ${r.id}`))})),i.once("handshake",s)}}function Ee(){}ke.UTP_SUPPORT=Object.keys(we).length>0;var xe=n(2203),Se=n(5381);const Te=/^\[?([^\]]+)]?:(\d+)$/;let Ae=new Map;function Ce(e){if(1e5===Ae.size&&Ae.clear(),!Ae.has(e)){const t=Te.exec(e);if(!t)throw new Error(`invalid addr: ${e}`);Ae.set(e,[t[1],Number(t[2])])}return Ae.get(e)}var Ie=n(8205),Pe=n(9421);async function*Re(e,t={}){if(e?.[Symbol.asyncIterator])return void(yield*e[Symbol.asyncIterator](t.offset));if(!e?.get)throw new Error("First argument must be an abstract-chunk-store compliant store");const n=t.chunkLength||e.chunkLength;if(!n)throw new Error("missing required `chunkLength` property");let r=t.length||e.length;if(!Number.isFinite(r))throw new Error("missing required `length` property");const i=t.offset||0,s=(t,n,r)=>new Promise(((i,s)=>{e.get(t,{offset:r,length:n},((e,t)=>{e&&s(e),i(t)}))}));let o=Math.floor(i/n);const a=i%n;if(i){const e=Math.min(r,n-a);r-=e,yield s(o++,e,a)}for(let e=r;e>0;++o,e-=n)yield s(o,Math.min(e,n))}async function Oe(e,t,n={}){if(!e?.put)throw new Error("First argument must be an abstract-chunk-store compliant store");const r=n.chunkLength||e.chunkLength;if(!r)throw new Error("missing required `chunkLength` property");const i=n.storeMaxOutstandingPuts||16;let s=0,a=0,h=()=>{},c=!1;for await(const l of o(t,r,{zeroPadding:n.zeroPadding||!1}))await new Promise((t=>{s++<=i&&t(),e.put(a++,l,(e=>{if(e)throw e;--s,t(),c&&0===s&&h()}))}));0!==s&&(c=new Promise((e=>{h=e})),await c)}var Le=n(9648),Ne=n(7673);const Be=/^[\d.]+$/,De=/^[\da-fA-F:]+$/,Ue=/^::ffff:/,Me=(0,f.zo)([We(1047),We(655366528)]),je={CONNECT:0,ANNOUNCE:1,SCRAPE:2,ERROR:3},He={update:0,completed:1,started:2,stopped:3,paused:4},qe={0:"update",1:"completed",2:"started",3:"stopped",4:"paused"},Fe={update:"update",completed:"complete",started:"start",stopped:"stop",paused:"pause"},ze=15e3,$e=1e3;function We(e){const t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e),t}const Ve=e=>Ne.parse(e,null,null,{decodeURIComponent:unescape}),Ge=e=>{let t=Ne.stringify(e,null,null,{encodeURIComponent:escape});return t=t.replace(/[@*/+]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)),t},Ke={DEFAULT_ANNOUNCE_PEERS:50,MAX_ANNOUNCE_PEERS:82,parseUrl:e=>{const t=new URL(e.replace(/^udp:/,"http:"));return e.match(/^udp:/)&&Object.defineProperties(t,{href:{value:t.href.replace(/^http/,"udp")},protocol:{value:t.protocol.replace(/^http/,"udp")},origin:{value:t.origin.replace(/^http/,"udp")}}),t},...e};var Ze=n(6581),Ye=n(6313),Je=n(6993),Qe=n(9354);const Xe=class extends t{constructor(e,t){super(),this.client=e,this.announceUrl=t,this.interval=null,this.destroyed=!1}setInterval(e){null==e&&(e=this.DEFAULT_ANNOUNCE_INTERVAL),clearInterval(this.interval),e&&(this.interval=setInterval((()=>{this.announce(this.client._defaultAnnounceOpts())}),e),this.interval.unref&&this.interval.unref())}};var et=n(229),tt=n(8764).Buffer;const nt=C("bittorrent-tracker:http-tracker"),rt=/\/(announce)[^/]*$/;class it extends Xe{constructor(e,t){super(e,t),nt("new http tracker %s",t),this.scrapeUrl=null;const n=this.announceUrl.match(rt);if(n){const e=this.announceUrl.slice(0,n.index),t=this.announceUrl.slice(n.index+9);this.scrapeUrl=`${e}/scrape${t}`}this.cleanupFns=[],this.maybeDestroyCleanup=null}announce(e){if(this.destroyed)return;const t=Object.assign({},e,{compact:null==e.compact?1:e.compact,info_hash:this.client._infoHashBinary,peer_id:this.client._peerIdBinary,port:this.client._port});this._trackerId&&(t.trackerid=this._trackerId),this._request(this.announceUrl,t,((e,t)=>{if(e)return this.client.emit("warning",e);this._onAnnounceResponse(t)}))}scrape(e){if(this.destroyed)return;if(!this.scrapeUrl)return void this.client.emit("error",new Error(`scrape not supported ${this.announceUrl}`));const t={info_hash:Array.isArray(e.infoHash)&&e.infoHash.length>0?e.infoHash.map((e=>(0,f.E)(e))):e.infoHash&&(0,f.E)(e.infoHash)||this.client._infoHashBinary};this._request(this.scrapeUrl,t,((e,t)=>{if(e)return this.client.emit("warning",e);this._onScrapeResponse(t)}))}destroy(e){const t=this;if(this.destroyed)return e(null);let n;if(this.destroyed=!0,clearInterval(this.interval),0===this.cleanupFns.length)return r();function r(){n&&(clearTimeout(n),n=null),t.maybeDestroyCleanup=null,t.cleanupFns.slice(0).forEach((e=>{e()})),t.cleanupFns=[],e(null)}n=setTimeout(r,Ke.DESTROY_TIMEOUT),this.maybeDestroyCleanup=()=>{0===this.cleanupFns.length&&r()}}_request(e,t,n){const r=this,i=new URL(e+(-1===e.indexOf("?")?"?":"&")+Ke.querystringStringify(t));let o;this.client._proxyOpts&&(o="https:"===i.protocol?this.client._proxyOpts.httpsAgent:this.client._proxyOpts.httpAgent,!o&&this.client._proxyOpts.socksProxy&&(o=new Qe.Agent(Ye(this.client._proxyOpts.socksProxy),"https:"===i.protocol))),this.cleanupFns.push(h);let a=Je.concat({url:i.toString(),agent:o,timeout:Ke.REQUEST_TIMEOUT,headers:{"user-agent":this.client._userAgent||""}},(function(t,i,o){if(h(),r.destroyed)return;if(t)return n(t);if(200!==i.statusCode)return n(new Error(`Non-200 response code ${i.statusCode} from ${r.announceUrl}`));if(!o||0===o.length)return n(new Error(`Invalid tracker response from${r.announceUrl}`));try{o=s.Z.decode(o)}catch(t){return n(new Error(`Error decoding tracker response: ${t.message}`))}const a=o["failure reason"]&&(0,f.vV)(o["failure reason"]);if(a)return nt(`failure from ${e} (${a})`),n(new Error(a));const c=o["warning message"]&&(0,f.vV)(o["warning message"]);c&&(nt(`warning from ${e} (${c})`),r.client.emit("warning",new Error(c)));nt(`response from ${e}`),n(null,o)}));function h(){a&&(Ze(r.cleanupFns,r.cleanupFns.indexOf(h)),a.abort(),a=null),r.maybeDestroyCleanup&&r.maybeDestroyCleanup()}}_onAnnounceResponse(e){const t=e.interval||e["min interval"];t&&this.setInterval(1e3*t);const n=e["tracker id"];n&&(this._trackerId=n);const r=Object.assign({},e,{announce:this.announceUrl,infoHash:(0,f.Ff)(e.info_hash||String(e.info_hash))});let i;if(this.client.emit("update",r),ArrayBuffer.isView(e.peers)){try{i=et.multi(tt.from(e.peers))}catch(e){return this.client.emit("warning",e)}i.forEach((e=>{this.client.emit("peer",e)}))}else Array.isArray(e.peers)&&e.peers.forEach((e=>{this.client.emit("peer",`${e.ip}:${e.port}`)}));if(ArrayBuffer.isView(e.peers6)){try{i=et.multi6(tt.from(e.peers6))}catch(e){return this.client.emit("warning",e)}i.forEach((e=>{this.client.emit("peer",e)}))}else Array.isArray(e.peers6)&&e.peers6.forEach((e=>{const t=/^\[/.test(e.ip)||!/:/.test(e.ip)?e.ip:`[${e.ip}]`;this.client.emit("peer",`${t}:${e.port}`)}))}_onScrapeResponse(e){e=e.files||e.host||{};const t=Object.keys(e);0!==t.length?t.forEach((t=>{const n=Object.assign(e[t],{announce:this.announceUrl,infoHash:(0,f.Ff)(t)});this.client.emit("scrape",n)})):this.client.emit("warning",new Error("invalid scrape response"))}}it.prototype.DEFAULT_ANNOUNCE_INTERVAL=18e5;const st=it;var ot=n(8025);const at=C("bittorrent-tracker:udp-tracker");class ht extends Xe{constructor(e,t){super(e,t),at("new udp tracker %s",t),this.cleanupFns=[],this.maybeDestroyCleanup=null}announce(e){this.destroyed||this._request(e)}scrape(e){this.destroyed||(e._scrape=!0,this._request(e))}destroy(e){const t=this;if(this.destroyed)return e(null);let n;if(this.destroyed=!0,clearInterval(this.interval),0===this.cleanupFns.length)return r();function r(){n&&(clearTimeout(n),n=null),t.maybeDestroyCleanup=null,t.cleanupFns.slice(0).forEach((e=>{e()})),t.cleanupFns=[],e(null)}n=setTimeout(r,Ke.DESTROY_TIMEOUT),this.maybeDestroyCleanup=()=>{0===this.cleanupFns.length&&r()}}_request(e){const t=this;e||(e={});let n,r,i,s,{hostname:o,port:a}=Ke.parseUrl(this.announceUrl);""===a&&(a=80);let h=ct();const c=this.client._proxyOpts&&Ye(this.client._proxyOpts.socksProxy);function l(t,o,a){if(t)return d(t);r=o,i=ot.createSocket("udp4"),s=a,n=setTimeout((()=>{"stopped"===e.event?u():d(new Error(`tracker request timed out (${e.event})`)),n=null}),Ke.REQUEST_TIMEOUT),n.unref&&n.unref(),g((0,f.zo)([Ke.CONNECTION_ID,Ke.toUInt32(Ke.ACTIONS.CONNECT),h]),s),i.once("error",d),i.on("message",p)}function u(){if(n&&(clearTimeout(n),n=null),i){Ze(t.cleanupFns,t.cleanupFns.indexOf(u)),i.removeListener("error",d),i.removeListener("message",p),i.on("error",ft);try{i.close()}catch(e){}if(i=null,r){try{r.close()}catch(e){}r=null}}t.maybeDestroyCleanup&&t.maybeDestroyCleanup()}function d(e){if(u(),!t.destroyed){try{e.message&&(e.message+=` (${t.announceUrl})`)}catch(e){}t.client.emit("warning",e)}}function p(n){r&&(n=n.slice(10));const i=new DataView(h.buffer);if(n.length<8||n.readUInt32BE(4)!==i.getUint32(0))return d(new Error("tracker sent invalid transaction id"));const o=n.readUInt32BE(0);switch(at("UDP response %s, action %s",t.announceUrl,o),o){case 0:if(n.length<16)return d(new Error("invalid udp handshake"));e._scrape?function(n){h=ct();const r=Array.isArray(e.infoHash)&&e.infoHash.length>0?(0,f.zo)(e.infoHash):e.infoHash||t.client._infoHashBuffer;g((0,f.zo)([n,Ke.toUInt32(Ke.ACTIONS.SCRAPE),h,r]),s)}(n.slice(8,16)):function(e,n){h=ct(),g((0,f.zo)([e,Ke.toUInt32(Ke.ACTIONS.ANNOUNCE),h,t.client._infoHashBuffer,t.client._peerIdBuffer,dt(n.downloaded),null!=n.left?dt(n.left):(0,f._0)("ffffffffffffffff"),dt(n.uploaded),Ke.toUInt32(Ke.EVENTS[n.event]||0),Ke.toUInt32(0),Ke.toUInt32(0),Ke.toUInt32(n.numwant),lt(t.client._port)]),s)}(n.slice(8,16),e);break;case 1:{if(u(),t.destroyed)return;if(n.length<20)return d(new Error("invalid announce message"));const e=n.readUInt32BE(8);let r;e&&t.setInterval(1e3*e),t.client.emit("update",{announce:t.announceUrl,complete:n.readUInt32BE(16),incomplete:n.readUInt32BE(12)});try{r=et.multi(n.slice(20))}catch(e){return t.client.emit("warning",e)}r.forEach((e=>{t.client.emit("peer",e)}));break}case 2:{if(u(),t.destroyed)return;if(n.length<20||(n.length-8)%12!=0)return d(new Error("invalid scrape message"));const r=Array.isArray(e.infoHash)&&e.infoHash.length>0?e.infoHash.map((e=>e.toString("hex"))):[e.infoHash&&e.infoHash.toString("hex")||t.client.infoHash];for(let e=0,i=(n.length-8)/12;eut||"string"==typeof e){const t=new Uint8Array(8);return new DataView(t.buffer).setBigUint64(0,e),t}return(0,f.zo)([new Uint8Array(4),Ke.toUInt32(e)])}function ft(){}const pt=ht;var gt=n(7026);const _t=C("simple-websocket"),mt="function"!=typeof gt?WebSocket:gt;class yt extends ce.Duplex{constructor(e={}){if("string"==typeof e&&(e={url:e}),super(e=Object.assign({allowHalfOpen:!1},e)),this.__objectMode=!!e.objectMode,null!=e.objectMode&&delete e.objectMode,null==e.url&&null==e.socket)throw new Error("Missing required `url` or `socket` option");if(null!=e.url&&null!=e.socket)throw new Error("Must specify either `url` or `socket` option, not both");if(this._id=(0,f.oc)((0,f.O6)(4)).slice(0,7),this._debug("new websocket: %o",e),this.connected=!1,this._chunk=null,this._cb=null,this._interval=null,e.socket)this.url=e.socket.url,this._ws=e.socket,this.connected=e.socket.readyState===mt.OPEN;else{this.url=e.url;try{this._ws="function"==typeof gt?new mt(e.url,{...e,encoding:void 0}):new mt(e.url)}catch(e){return void d((()=>this.destroy(e)))}}this._ws.binaryType="arraybuffer",e.socket&&this.connected?d((()=>this._handleOpen())):this._ws.onopen=()=>this._handleOpen(),this._ws.onmessage=e=>this._handleMessage(e),this._ws.onclose=()=>this._handleClose(),this._ws.onerror=e=>this._handleError(e),this._handleFinishBound=()=>this._handleFinish(),this.once("finish",this._handleFinishBound)}send(e){this._ws.send(e)}_final(e){this._readableState.ended||this.push(null),e(null)}_destroy(e){if(!this.destroyed){if(this._writableState.ended||this.end(),this.connected=!1,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._handleFinishBound&&this.removeListener("finish",this._handleFinishBound),this._handleFinishBound=null,this._ws){const e=this._ws,t=()=>{e.onclose=null};if(e.readyState===mt.CLOSED)t();else try{e.onclose=t,e.close()}catch(e){t()}e.onopen=null,e.onmessage=null,e.onerror=()=>{}}this._ws=null,e()}}_write(e,t){if(this.destroyed)return t(new Error("cannot write after socket is destroyed"));if(this.connected){try{this.send(e)}catch(e){return this.destroy(e)}"function"!=typeof gt&&this._ws.bufferedAmount>65536?(this._debug("start backpressure: bufferedAmount %d",this._ws.bufferedAmount),this._cb=t):t(null)}else this._debug("write before connect"),this._chunk=e,this._cb=t}_handleOpen(){if(!this.connected&&!this.destroyed){if(this.connected=!0,this._chunk){try{this.send(this._chunk)}catch(e){return this.destroy(e)}this._chunk=null,this._debug('sent chunk from "write before connect"');const e=this._cb;this._cb=null,e(null)}"function"!=typeof gt&&(this._interval=setInterval((()=>this._onInterval()),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")}}_handleMessage(e){if(this.destroyed)return;let t=e.data;t instanceof ArrayBuffer&&(t=new Uint8Array(t)),!1===this.__objectMode&&(t=(0,f.gR)(t)),this.push(t)}_handleClose(){this.destroyed||(this._debug("on close"),this.destroy())}_handleError(e){this.destroy(new Error(`Error connecting to ${this.url}`))}_handleFinish(){if(this.destroyed)return;const e=()=>{setTimeout((()=>this.destroy()),1e3)};this.connected?e():this.once("connect",e)}_onInterval(){if(!this._cb||!this._ws||this._ws.bufferedAmount>65536)return;this._debug("ending backpressure: bufferedAmount %d",this._ws.bufferedAmount);const e=this._cb;this._cb=null,e(null)}_debug(){const e=[].slice.call(arguments);e[0]="["+this._id+"] "+e[0],_t.apply(null,e)}}yt.WEBSOCKET_SUPPORT=!!mt;const bt=C("bittorrent-tracker:websocket-tracker"),wt={};class vt extends Xe{constructor(e,t){super(e,t),bt("new websocket tracker %s",t),this.peers={},this.socket=null,this.reconnecting=!1,this.retries=0,this.reconnectTimer=null,this.expectingResponse=!1,this._openSocket()}announce(e){if(this.destroyed||this.reconnecting)return;if(!this.socket.connected)return void this.socket.once("connect",(()=>{this.announce(e)}));const t=Object.assign({},e,{action:"announce",info_hash:this.client._infoHashBinary,peer_id:this.client._peerIdBinary});if(this._trackerId&&(t.trackerid=this._trackerId),"stopped"===e.event||"completed"===e.event)this._send(t);else{const n=Math.min(e.numwant,5);this._generateOffers(n,(e=>{t.numwant=n,t.offers=e,this._send(t)}))}}scrape(e){if(this.destroyed||this.reconnecting)return;if(!this.socket.connected)return void this.socket.once("connect",(()=>{this.scrape(e)}));const t={action:"scrape",info_hash:Array.isArray(e.infoHash)&&e.infoHash.length>0?e.infoHash.map((e=>(0,f.E)(e))):e.infoHash&&(0,f.E)(e.infoHash)||this.client._infoHashBinary};this._send(t)}destroy(e=kt){if(this.destroyed)return e(null);this.destroyed=!0,clearInterval(this.interval),clearTimeout(this.reconnectTimer);for(const e in this.peers){const t=this.peers[e];clearTimeout(t.trackerTimeout),t.destroy()}if(this.peers=null,this.socket&&(this.socket.removeListener("connect",this._onSocketConnectBound),this.socket.removeListener("data",this._onSocketDataBound),this.socket.removeListener("close",this._onSocketCloseBound),this.socket.removeListener("error",this._onSocketErrorBound),this.socket=null),this._onSocketConnectBound=null,this._onSocketErrorBound=null,this._onSocketDataBound=null,this._onSocketCloseBound=null,wt[this.announceUrl]&&(wt[this.announceUrl].consumers-=1),wt[this.announceUrl].consumers>0)return e();let t,n=wt[this.announceUrl];if(delete wt[this.announceUrl],n.on("error",kt),n.once("close",e),!this.expectingResponse)return r();function r(){t&&(clearTimeout(t),t=null),n.removeListener("data",r),n.destroy(),n=null}t=setTimeout(r,$e),n.once("data",r)}_openSocket(){if(this.destroyed=!1,this.peers||(this.peers={}),this._onSocketConnectBound=()=>{this._onSocketConnect()},this._onSocketErrorBound=e=>{this._onSocketError(e)},this._onSocketDataBound=e=>{this._onSocketData(e)},this._onSocketCloseBound=()=>{this._onSocketClose()},this.socket=wt[this.announceUrl],this.socket)wt[this.announceUrl].consumers+=1,this.socket.connected&&this._onSocketConnectBound();else{const e=new URL(this.announceUrl);let t;this.client._proxyOpts&&(t="wss:"===e.protocol?this.client._proxyOpts.httpsAgent:this.client._proxyOpts.httpAgent,!t&&this.client._proxyOpts.socksProxy&&(t=new Qe.Agent(Ye(this.client._proxyOpts.socksProxy),"wss:"===e.protocol))),this.socket=wt[this.announceUrl]=new yt({url:this.announceUrl,agent:t}),this.socket.consumers=1,this.socket.once("connect",this._onSocketConnectBound)}this.socket.on("data",this._onSocketDataBound),this.socket.once("close",this._onSocketCloseBound),this.socket.once("error",this._onSocketErrorBound)}_onSocketConnect(){this.destroyed||this.reconnecting&&(this.reconnecting=!1,this.retries=0,this.announce(this.client._defaultAnnounceOpts()))}_onSocketData(e){if(!this.destroyed){this.expectingResponse=!1;try{e=JSON.parse((0,f.vV)(e))}catch(e){return void this.client.emit("warning",new Error("Invalid tracker response"))}"announce"===e.action?this._onAnnounceResponse(e):"scrape"===e.action?this._onScrapeResponse(e):this._onSocketError(new Error(`invalid action in WS response: ${e.action}`))}}_onAnnounceResponse(e){if(e.info_hash!==this.client._infoHashBinary)return void bt("ignoring websocket data from %s for %s (looking for %s: reused socket)",this.announceUrl,(0,f.Ff)(e.info_hash),this.client.infoHash);if(e.peer_id&&e.peer_id===this.client._peerIdBinary)return;bt("received %s from %s for %s",JSON.stringify(e),this.announceUrl,this.client.infoHash);const t=e["failure reason"];if(t)return this.client.emit("warning",new Error(t));const n=e["warning message"];n&&this.client.emit("warning",new Error(n));const r=e.interval||e["min interval"];r&&this.setInterval(1e3*r);const i=e["tracker id"];if(i&&(this._trackerId=i),null!=e.complete){const t=Object.assign({},e,{announce:this.announceUrl,infoHash:(0,f.Ff)(e.info_hash)});this.client.emit("update",t)}let s;if(e.offer&&e.peer_id&&(bt("creating peer (from remote offer)"),s=this._createPeer(),s.id=(0,f.Ff)(e.peer_id),s.once("signal",(t=>{const n={action:"announce",info_hash:this.client._infoHashBinary,peer_id:this.client._peerIdBinary,to_peer_id:e.peer_id,answer:t,offer_id:e.offer_id};this._trackerId&&(n.trackerid=this._trackerId),this._send(n)})),this.client.emit("peer",s),s.signal(e.offer)),e.answer&&e.peer_id){const t=(0,f.Ff)(e.offer_id);s=this.peers[t],s?(s.id=(0,f.Ff)(e.peer_id),this.client.emit("peer",s),s.signal(e.answer),clearTimeout(s.trackerTimeout),s.trackerTimeout=null,delete this.peers[t]):bt(`got unexpected answer: ${JSON.stringify(e.answer)}`)}}_onScrapeResponse(e){e=e.files||{};const t=Object.keys(e);0!==t.length?t.forEach((t=>{const n=Object.assign(e[t],{announce:this.announceUrl,infoHash:(0,f.Ff)(t)});this.client.emit("scrape",n)})):this.client.emit("warning",new Error("invalid scrape response"))}_onSocketClose(){this.destroyed||(this.destroy(),this._startReconnectTimer())}_onSocketError(e){this.destroyed||(this.destroy(),this.client.emit("warning",e),this._startReconnectTimer())}_startReconnectTimer(){const e=Math.floor(3e5*Math.random())+Math.min(1e4*Math.pow(2,this.retries),36e5);this.reconnecting=!0,clearTimeout(this.reconnectTimer),this.reconnectTimer=setTimeout((()=>{this.retries++,this._openSocket()}),e),this.reconnectTimer.unref&&this.reconnectTimer.unref(),bt("reconnecting socket in %s ms",e)}_send(e){if(this.destroyed)return;this.expectingResponse=!0;const t=JSON.stringify(e);bt("send %s",t),this.socket.send(t)}_generateOffers(e,t){const n=this,r=[];bt("generating %s offers",e);for(let t=0;t{r.push({offer:t,offer_id:(0,f.E)(e)}),s()})),t.trackerTimeout=setTimeout((()=>{bt("tracker timeout: destroying peer"),t.trackerTimeout=null,delete n.peers[e],t.destroy()}),5e4),t.trackerTimeout.unref&&t.trackerTimeout.unref()}function s(){r.length===e&&(bt("generated %s offers",e),t(r))}s()}_createPeer(e){const t=this;e=Object.assign({trickle:!1,config:t.client._rtcConfig,wrtc:t.client._wrtc},e);const n=new ge(e);return n.once("error",r),n.once("connect",(function e(){n.removeListener("error",r),n.removeListener("connect",e)})),n;function r(e){t.client.emit("warning",new Error(`Connection error: ${e.message}`)),n.destroy()}}}function kt(){}vt.prototype.DEFAULT_ANNOUNCE_INTERVAL=3e4,vt._socketPool=wt;const Et=vt;var xt=n(8768);const St=C("bittorrent-tracker:client");class Tt extends t{constructor(e={}){if(super(),!e.peerId)throw new Error("Option `peerId` is required");if(!e.infoHash)throw new Error("Option `infoHash` is required");if(!e.announce)throw new Error("Option `announce` is required");if(!xt.browser&&!e.port)throw new Error("Option `port` is required");this.peerId="string"==typeof e.peerId?e.peerId:(0,f.oc)(e.peerId),this._peerIdBuffer=(0,f._0)(this.peerId),this._peerIdBinary=(0,f.E)(this.peerId),this.infoHash="string"==typeof e.infoHash?e.infoHash.toLowerCase():(0,f.oc)(e.infoHash),this._infoHashBuffer=(0,f._0)(this.infoHash),this._infoHashBinary=(0,f.E)(this.infoHash),St("new client %s",this.infoHash),this.destroyed=!1,this._port=e.port,this._getAnnounceOpts=e.getAnnounceOpts,this._rtcConfig=e.rtcConfig,this._userAgent=e.userAgent,this._proxyOpts=e.proxyOpts,this._wrtc="function"==typeof e.wrtc?e.wrtc():e.wrtc;let t="string"==typeof e.announce?[e.announce]:null==e.announce?[]:e.announce;t=t.map((e=>(ArrayBuffer.isView(e)&&(e=(0,f.vV)(e)),"/"===e[e.length-1]&&(e=e.substring(0,e.length-1)),e))),t=Array.from(new Set(t));const n=!1!==this._wrtc&&(!!this._wrtc||ge.WEBRTC_SUPPORT),r=e=>{d((()=>{this.emit("warning",e)}))};this._trackers=t.map((e=>{let t;try{t=Ke.parseUrl(e)}catch(t){return r(new Error(`Invalid tracker URL: ${e}`)),null}const i=t.port;if(i<0||i>65535)return r(new Error(`Invalid tracker port: ${e}`)),null;const s=t.protocol;return"http:"!==s&&"https:"!==s||"function"!=typeof st?"udp:"===s&&"function"==typeof pt?new pt(this,e):"ws:"!==s&&"wss:"!==s||!n||"ws:"===s&&"undefined"!=typeof window&&"https:"===window.location.protocol?(r(new Error(`Unsupported tracker protocol: ${e}`)),null):new Et(this,e):new st(this,e)})).filter(Boolean)}start(e){(e=this._defaultAnnounceOpts(e)).event="started",St("send `start` %o",e),this._announce(e),this._trackers.forEach((e=>{e.setInterval()}))}stop(e){(e=this._defaultAnnounceOpts(e)).event="stopped",St("send `stop` %o",e),this._announce(e)}complete(e){e||(e={}),(e=this._defaultAnnounceOpts(e)).event="completed",St("send `complete` %o",e),this._announce(e)}update(e){(e=this._defaultAnnounceOpts(e)).event&&delete e.event,St("send `update` %o",e),this._announce(e)}_announce(e){this._trackers.forEach((t=>{t.announce(e)}))}scrape(e){St("send `scrape`"),e||(e={}),this._trackers.forEach((t=>{t.scrape(e)}))}setInterval(e){St("setInterval %d",e),this._trackers.forEach((t=>{t.setInterval(e)}))}destroy(e){if(this.destroyed)return;this.destroyed=!0,St("destroy");const t=this._trackers.map((e=>t=>{e.destroy(t)}));u(t,e),this._trackers=[],this._getAnnounceOpts=null}_defaultAnnounceOpts(e={}){return null==e.numwant&&(e.numwant=Ke.DEFAULT_ANNOUNCE_PEERS),null==e.uploaded&&(e.uploaded=0),null==e.downloaded&&(e.downloaded=0),this._getAnnounceOpts&&(e=Object.assign({},e,this._getAnnounceOpts())),e}}Tt.scrape=(e,t)=>{if(t=g(t),!e.infoHash)throw new Error("Option `infoHash` is required");if(!e.announce)throw new Error("Option `announce` is required");const n=Object.assign({},e,{infoHash:Array.isArray(e.infoHash)?e.infoHash[0]:e.infoHash,peerId:(0,f.gR)("01234567890123456789"),port:6881}),r=new Tt(n);r.once("error",t),r.once("warning",t);let i=Array.isArray(e.infoHash)?e.infoHash.length:1;const s={};return r.on("scrape",(e=>{if(i-=1,s[e.infoHash]=e,0===i){r.destroy();const e=Object.keys(s);1===e.length?t(null,s[e[0]]):t(null,s)}})),r.scrape({infoHash:e.infoHash}),r};const At=Tt;n(859);const Ct=C("bittorrent-lsd"),It="239.192.152.143",Pt=6771;class Rt extends t.EventEmitter{constructor(e={}){if(super(),!e.peerId)throw new Error("Option `peerId` is required");if(!e.infoHash)throw new Error("Option `infoHash` is required");if(!e.port)throw new Error("Option `port` is required");this.peerId="string"==typeof e.peerId?e.peerId:e.peerId.toString("hex"),this.infoHash="string"==typeof e.infoHash?e.infoHash.toLowerCase():e.infoHash.toString("hex"),this.port="string"==typeof e.port?e.port:e.port.toString(),this.cookie=`bittorrent-lsd-${this.peerId}`,this.destroyed=!1,this.annouceIntervalId=null,this.server=ot.createSocket({type:"udp4",reuseAddr:!0});this.server.on("listening",(()=>{Ct("listening");try{this.server.addMembership(It)}catch(e){this.emit("warning",e)}})),this.server.on("message",((e,t)=>{Ct("message",e.toString(),`${t.address}:${t.port}`);const n=this._parseAnnounce(e.toString());null!==n&&n.cookie!==this.cookie&&n.infoHash.forEach((e=>{this.emit("peer",`${t.address}:${n.port}`,e)}))})),this.server.on("error",(e=>{this.emit("error",e)}))}_parseAnnounce(e){Ct("parse announce",e);const t=e.split("\r\n");if("BT-SEARCH * HTTP/1.1"!==t[0])return this.emit("warning","Invalid LSD announce (header)"),null;const n=t[1].split("Host: ")[1];if(!(e=>/^(239.192.152.143|\[ff15::efc0:988f]):6771$/.test(e))(n))return this.emit("warning","Invalid LSD announce (host)"),null;const r=t[2].split("Port: ")[1];if(!(e=>/^\d+$/.test(e))(r))return this.emit("warning","Invalid LSD announce (port)"),null;const i=t.filter((e=>e.includes("Infohash: "))).map((e=>e.split("Infohash: ")[1])).filter((e=>(e=>/^[0-9a-fA-F]{40}$/.test(e))(e)));if(0===i.length)return this.emit("warning","Invalid LSD announce (infoHash)"),null;return{host:n,port:r,infoHash:i,cookie:t.filter((e=>e.includes("cookie: "))).map((e=>e.split("cookie: ")[1])).reduce(((e,t)=>t),null)}}destroy(e){this.destroyed||(this.destroyed=!0,Ct("destroy"),clearInterval(this.annouceIntervalId),this.server.close(e))}start(){Ct("start"),this.server.bind(Pt),this._announce(),this.annouceIntervalId=setInterval((()=>{this._announce()}),3e5)}_announce(){Ct("send announce");const e=`BT-SEARCH * HTTP/1.1\r\nHost: ${`${It}:6771`}\r\nPort: ${this.port}\r\nInfohash: ${this.infoHash}\r\ncookie: ${this.cookie}\r\n\r\n\r\n`;this.server.send(e,Pt,It)}}const Ot=Rt;var Lt=n(8768);const Nt=C("torrent-discovery");class Bt extends t.EventEmitter{constructor(e){if(super(),!e.peerId)throw new Error("Option `peerId` is required");if(!e.infoHash)throw new Error("Option `infoHash` is required");if(!Lt.browser&&!e.port)throw new Error("Option `port` is required");this.peerId="string"==typeof e.peerId?e.peerId:e.peerId.toString("hex"),this.infoHash="string"==typeof e.infoHash?e.infoHash.toLowerCase():e.infoHash.toString("hex"),this._port=e.port,this._userAgent=e.userAgent,this.destroyed=!1,this._announce=e.announce||[],this._intervalMs=e.intervalMs||9e5,this._trackerOpts=null,this._dhtAnnouncing=!1,this._dhtTimeout=!1,this._internalDHT=!1,this._onWarning=e=>{this.emit("warning",e)},this._onError=e=>{this.emit("error",e)},this._onDHTPeer=(e,t)=>{t.toString("hex")===this.infoHash&&this.emit("peer",`${e.host}:${e.port}`,"dht")},this._onTrackerPeer=e=>{this.emit("peer",e,"tracker")},this._onTrackerAnnounce=()=>{this.emit("trackerAnnounce")},this._onLSDPeer=(e,t)=>{this.emit("peer",e,"lsd")};const t=(e,t)=>{const n=new K(t);return n.on("warning",this._onWarning),n.on("error",this._onError),n.listen(e),this._internalDHT=!0,n};!1===e.tracker?this.tracker=null:e.tracker&&"object"==typeof e.tracker?(this._trackerOpts=Object.assign({},e.tracker),this.tracker=this._createTracker()):this.tracker=this._createTracker(),!1===e.dht||"function"!=typeof K?this.dht=null:e.dht&&"function"==typeof e.dht.addNode?this.dht=e.dht:e.dht&&"object"==typeof e.dht?this.dht=t(e.dhtPort,e.dht):this.dht=t(e.dhtPort),this.dht&&(this.dht.on("peer",this._onDHTPeer),this._dhtAnnounce()),!1===e.lsd||"function"!=typeof Ot?this.lsd=null:this.lsd=this._createLSD()}updatePort(e){e!==this._port&&(this._port=e,this.dht&&this._dhtAnnounce(),this.tracker&&(this.tracker.stop(),this.tracker.destroy((()=>{this.tracker=this._createTracker()}))))}complete(e){this.tracker&&this.tracker.complete(e)}destroy(e){if(this.destroyed)return;this.destroyed=!0,clearTimeout(this._dhtTimeout);const t=[];this.tracker&&(this.tracker.stop(),this.tracker.removeListener("warning",this._onWarning),this.tracker.removeListener("error",this._onError),this.tracker.removeListener("peer",this._onTrackerPeer),this.tracker.removeListener("update",this._onTrackerAnnounce),t.push((e=>{this.tracker.destroy(e)}))),this.dht&&this.dht.removeListener("peer",this._onDHTPeer),this._internalDHT&&(this.dht.removeListener("warning",this._onWarning),this.dht.removeListener("error",this._onError),t.push((e=>{this.dht.destroy(e)}))),this.lsd&&(this.lsd.removeListener("warning",this._onWarning),this.lsd.removeListener("error",this._onError),this.lsd.removeListener("peer",this._onLSDPeer),t.push((e=>{this.lsd.destroy(e)}))),u(t,e),this.dht=null,this.tracker=null,this.lsd=null,this._announce=null}_createTracker(){const e=Object.assign({},this._trackerOpts,{infoHash:this.infoHash,announce:this._announce,peerId:this.peerId,port:this._port,userAgent:this._userAgent}),t=new At(e);return t.on("warning",this._onWarning),t.on("error",this._onError),t.on("peer",this._onTrackerPeer),t.on("update",this._onTrackerAnnounce),t.setInterval(this._intervalMs),t.start(),t}_dhtAnnounce(){this._dhtAnnouncing||(Nt("dht announce"),this._dhtAnnouncing=!0,clearTimeout(this._dhtTimeout),this.dht.announce(this.infoHash,this._port,(e=>{this._dhtAnnouncing=!1,Nt("dht announce complete"),e&&this.emit("warning",e),this.emit("dhtAnnounce"),this.destroyed||(this._dhtTimeout=setTimeout((()=>{this._dhtAnnounce()}),this._intervalMs+Math.floor(Math.random()*this._intervalMs/5)),this._dhtTimeout.unref&&this._dhtTimeout.unref())})))}_createLSD(){const e=Object.assign({},{infoHash:this.infoHash,peerId:this.peerId,port:this._port}),t=new Ot(e);return t.on("warning",this._onWarning),t.on("error",this._onError),t.on("peer",this._onLSDPeer),t.start(),t}}const Dt=Bt;var Ut=n(1191),Mt=n(3700),jt=n(9417);"undefined"!=typeof navigator&&navigator.storage?.getDirectory&&navigator.storage.getDirectory().then((e=>{e.removeEntry("chunks",{recursive:!0})}));const Ht=()=>{};class qt{constructor(e,t={}){if(this.chunkLength=Number(e),!this.chunkLength)throw new Error("First argument must be a chunk length");if("undefined"==typeof navigator||!navigator.storage?.getDirectory)throw new Error("FSA API is not supported");if(this.closed=!1,this.name=t.name||crypto.randomUUID(),this.chunks=[],this.rootDirPromise=t.rootDir||navigator.storage.getDirectory(),this.storageDirPromise=(async()=>(await this.rootDirPromise).getDirectoryHandle(this.name,{create:!0}))(),this.chunksDirPromise=this.storageDirPromise,t.files&&t.rootDir){if(this.chunkMap=[],this.directoryMap={},this.chunksDirPromise=this._getChunksDirHandle(),this.files=t.files.map(((e,t,n)=>{if(null==e.path)throw new Error("File is missing `path` property");if(null==e.length)throw new Error("File is missing `length` property");if(null==e.offset)if(0===t)e.offset=0;else{const r=n[t-1];e.offset=r.offset+r.length}null==e.handle&&(e.handle=this._createFileHandle({path:e.path})),e.blob=this._createBlobReference(e.handle);const r=e.offset,i=e.offset+e.length,s=Math.floor(r/this.chunkLength),o=Math.floor((i-1)/this.chunkLength);for(let t=s;t<=o;++t){const n=t*this.chunkLength,s=rn+this.chunkLength?this.chunkLength:i-n,a=r>n?0:n-r;this.chunkMap[t]||(this.chunkMap[t]=[]),this.chunkMap[t].push({from:s,to:o,offset:a,file:e})}return e})),window.addEventListener("pagehide",(()=>this.cleanup())),this.length=this.files.reduce(((e,t)=>e+t.length),0),null!=t.length&&t.length!==this.length)throw new Error("total `files` length is not equal to explicit `length` option")}else this.length=Number(t.length)||1/0;this.length!==1/0&&(this.lastChunkLength=this.length%this.chunkLength||this.chunkLength,this.lastChunkIndex=Math.ceil(this.length/this.chunkLength)-1)}async _getChunkHandle(e){let t=this.chunks[e];if(!t){const n=await this.chunksDirPromise;this.chunks[e]=t=await n.getFileHandle(e,{create:!0})}return t}async _createFileHandle(e){const t=e.path.slice(e.path.lastIndexOf("/")+1);return(await this._getDirectoryHandle(e)).getFileHandle(t,{create:!0})}async _createBlobReference(e){return(await e).getFile()}async _getDirectoryHandle(e){const t=e.path.lastIndexOf("/");if(-1===t||0===t)return this.storageDirPromise;const n=e.path=e.path.slice(0,t);return this.directoryMap[n]||(this.directoryMap[n]=(async()=>(await this._getDirectoryHandle(e)).getDirectoryHandle(n.slice(n.lastIndexOf("/")+1),{create:!0}))()),this.directoryMap[n]}async _getChunksDirHandle(){const e=await navigator.storage.getDirectory();return(await e.getDirectoryHandle("chunks",{create:!0})).getDirectoryHandle(this.name,{create:!0})}async put(e,t,n=Ht){try{return await this._put(e,t),n(null),null}catch(e){return queueMicrotask((()=>n(e))),e}}async _put(e,t){if(this.closed)throw new Error("Storage is closed");const n=e===this.lastChunkIndex;if(n&&t.length!==this.lastChunkLength)throw new Error(`Last chunk length must be ${this.lastChunkLength}`);if(!n&&t.length!==this.chunkLength)throw new Error(`Chunk length must be ${this.chunkLength}`);const r=(async()=>{const n=await this._getChunkHandle(e),r=await n.createWritable({keepExistingData:!1});await r.write(t),await r.close()})();if(!this.files)return r;const i=this.chunkMap[e];if(!i)throw new Error("No files matching the request range");const s=i.map((async({file:e,offset:n,from:r,to:i})=>{e.stream||(e.stream=await(await e.handle).createWritable({keepExistingData:!0})),await e.stream.write({type:"write",position:n,data:t.slice(r,i)})}));s.push(r),await Promise.all(s)}async get(e,t,n=Ht){null==t&&(t={});try{const r=await this._get(e,t);return n(null,r),r}catch(e){return n(e),e}}async _get(e,t){if("function"==typeof t)return this.get(e,void 0,t);if(this.closed)throw new Error("Storage is closed");const n=e===this.lastChunkIndex?this.lastChunkLength:this.chunkLength,r=t.offset||0,i=t.length?r+t.length:n,s=t.length||n-r;if(r<0||r<0||i>n)throw new Error("Invalid offset and/or length");if(r===i)return new Uint8Array(0);if(!this.files||this.chunks[e]){const t=await this._getChunkHandle(e);let i=await t.getFile();0===r&&s===n||(i=i.slice(r,s+r));const o=await i.arrayBuffer();if(0===o.byteLength)throw new Error(`Index ${e} does not exist`);return new Uint8Array(o)}let o=this.chunkMap[e];if(!o)throw new Error("No files matching the request range");if(t&&(o=o.filter((({from:e,to:t})=>t>r&&e{t&&(n>i&&(n=i),equeueMicrotask((()=>e(new Error(t)))))(e,"Storage is closed");this.closed=!0,this.chunkMap=null,this.directoryMap=null,this.files&&await this.cleanup(),queueMicrotask((()=>e(null)))}async cleanup(){const e=[];for(const t of this.files)t.stream&&(e.push(t.stream.close()),t.stream=null);const t=(async()=>{const e=await this.chunksDirPromise;this.chunks=[];for await(const t of e.keys())await e.removeEntry(t,{recursive:!0});this.chunksDirPromise=await this._getChunksDirHandle()})();await Promise.all(e);for(const e of this.files)e.blob=this._createBlobReference(e.handle);await t}async destroy(e=Ht){this.close((async t=>{if(t)e(t);else{try{const e=await this.rootDirPromise;await e.removeEntry(this.name,{recursive:!0})}catch(t){return void e(t)}e(null)}}))}}var Ft=n(4137);const zt=!!("undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof globalThis&&globalThis).chrome?1/0:2130706432,$t="undefined"!=typeof navigator&&navigator.storage?.getDirectory&&FileSystemFileHandle?.prototype?.createWritable,Wt=()=>{};class Vt{constructor(e,t={}){if(this.chunkLength=Number(e),!this.chunkLength)throw new Error("First argument must be a chunk length");this.length=Number(t.length)||1/0,this.limit=t.limit||zt,this.fallbackStore=null,this.dataStore=null,this.chunkCount=0,this.stores=[],this._init(t),this.dataStore&&(t.max>0&&(this.dataStore=new Pe(this.dataStore,{max:t.max})),this.stores.push(this.dataStore)),this.stores.push(this.fallbackStore)}_init(e){if(e.onlyMem||this.limit=this.length)return void(this.fallbackStore=new t(this.chunkLength,e));this.chunkCount=Math.floor(Math.min(this.length,this.limit)/this.chunkLength);const n=this.chunkCount*this.chunkLength,r=this.length-n;this.dataStore=new t(this.chunkLength,{...e,length:n}),this.fallbackStore=new Ut(this.chunkLength,{...e,length:r})}get(e,t,n){e>=this.chunkCount?this.fallbackStore.get(e-this.chunkCount,t,n):this.dataStore.get(e,t,n)}put(e,t,n){e>=this.chunkCount?this.fallbackStore.put(e-this.chunkCount,t,n):this.dataStore.put(e,t,n)}close(e=Wt){Promise.all(this.stores.map((e=>new Promise((t=>e.close(t)))))).then((t=>{const n=t.find((e=>e));e(n)}))}destroy(e=Wt){Promise.all(this.stores.map((e=>new Promise((t=>e.destroy(t)))))).then((t=>{const n=t.find((e=>e));e(n)}))}}var Gt=n(9967),Kt=n(8687),Zt=n(5960);const Yt=C("ut_metadata"),Jt=16384,Qt=e=>{class n extends t.EventEmitter{constructor(t){super(),this._wire=t,this._fetching=!1,this._metadataComplete=!1,this._metadataSize=null,this._remainingRejects=null,this._bitfield=new Ie.Z(0,{grow:1e3}),ArrayBuffer.isView(e)&&this.setMetadata(e)}onHandshake(e,t,n){this._infoHash=e}onExtendedHandshake(e){return e.m&&e.m.ut_metadata?e.metadata_size?"number"!=typeof e.metadata_size||1e7this._metadataSize&&(n=this._metadataSize);const r=this.metadata.slice(t,n);this._data(e,r,this._metadataSize)}_onData(e,t,n){t.length>Jt||!this._fetching||(this.metadata.set(t,e*Jt),this._bitfield.set(e),this._checkDone())}_onReject(e){this._remainingRejects>0&&this._fetching?(this._request(e),this._remainingRejects-=1):this.emit("warning",new Error('Peer sent "reject" too much'))}_requestPieces(){if(this._fetching){this.metadata=new Uint8Array(this._metadataSize);for(let e=0;e0?this._requestPieces():this.emit("warning",new Error("Peer sent invalid metadata"))}}return n.prototype.name="ut_metadata",n};var Xt=n(6512),en=n(8764).Buffer;const tn=e=>("string"==typeof e&&(e=[e]),en.concat(e.map((e=>{const t=Ce(e);if(2!==t.length)throw new Error("invalid address format, expecting: 10.10.10.5:128");const n=Xt.parse(t[0]),r=en.from(n.toByteArray()),i=t[1],s=en.allocUnsafe(2);return s.writeUInt16BE(i,0),en.concat([r,s])}))));var nn=n(8764).Buffer;const rn={prefersEncryption:1,isSender:2,supportsUtp:4,supportsUtHolepunch:8,isReachable:16},sn=()=>{class e extends t.EventEmitter{constructor(e){super(),this._wire=e,this._intervalId=null,this._lastMessageTimestamp=0,this.reset()}start(){clearInterval(this._intervalId),this._intervalId=setInterval((()=>this._sendMessage()),65e3),this._intervalId.unref&&this._intervalId.unref()}stop(){clearInterval(this._intervalId),this._intervalId=null}reset(){this._remoteAddedPeers={},this._remoteDroppedPeers={},this._localAddedPeers={},this._localDroppedPeers={},this.stop()}addPeer(e,t={}){this._addPeer(e,this._encodeFlags(t),4)}addPeer6(e,t={}){this._addPeer(e,this._encodeFlags(t),6)}_addPeer(e,t,n){e.includes(":")&&(e in this._remoteAddedPeers||(e in this._localDroppedPeers&&delete this._localDroppedPeers[e],this._localAddedPeers[e]={ip:n,flags:t}))}dropPeer(e){this._dropPeer(e,4)}dropPeer6(e){this._dropPeer(e,6)}_dropPeer(e,t){e.includes(":")&&(e in this._remoteDroppedPeers||(e in this._localAddedPeers&&delete this._localAddedPeers[e],this._localDroppedPeers[e]={ip:t}))}onExtendedHandshake(e){if(!e.m||!e.m.ut_pex)return this.emit("warning",new Error("Peer does not support ut_pex"))}onMessage(e){const t=Date.now();if(t-this._lastMessageTimestamp<6e4)return this.reset(),this._wire.destroy(),this.emit("warning",new Error("Peer disconnected for sending PEX messages too frequently"));let n;this._lastMessageTimestamp=t;try{n=s.Z.decode(e),n.added&&et.multi(n.added).forEach(((e,t)=>{if(delete this._remoteDroppedPeers[e],!(e in this._remoteAddedPeers)){const r=n["added.f"][t];this._remoteAddedPeers[e]={ip:4,flags:r},this.emit("peer",e,this._decodeFlags(r))}})),n.added6&&et.multi6(n.added6).forEach(((e,t)=>{if(delete this._remoteDroppedPeers[e],!(e in this._remoteAddedPeers)){const r=n["added6.f"][t];this._remoteAddedPeers[e]={ip:6,flags:r},this.emit("peer",e,this._decodeFlags(r))}})),n.dropped&&et.multi(n.dropped).forEach((e=>{delete this._remoteAddedPeers[e],e in this._remoteDroppedPeers||(this._remoteDroppedPeers[e]={ip:4},this.emit("dropped",e))})),n.dropped6&&et.multi6(n.dropped6).forEach((e=>{delete this._remoteAddedPeers[e],e in this._remoteDroppedPeers||(this._remoteDroppedPeers[e]={ip:6},this.emit("dropped",e))}))}catch(e){}}_decodeFlags(e){return{prefersEncryption:!!(e&rn.prefersEncryption),isSender:!!(e&rn.isSender),supportsUtp:!!(e&rn.supportsUtp),supportsUtHolepunch:!!(e&rn.supportsUtHolepunch),isReachable:!!(e&rn.isReachable)}}_encodeFlags(e){return Object.keys(e).reduce(((t,n)=>!0===e[n]?t|rn[n]:t),0)}_sendMessage(){const e=Object.keys(this._localAddedPeers).slice(0,50),t=Object.keys(this._localDroppedPeers).slice(0,50),n=(e,t)=>4===e[t].ip,r=(e,t)=>6===e[t].ip,i=(e,t)=>e[t].flags,s=tn(e.filter((e=>n(this._localAddedPeers,e)))),o=tn(e.filter((e=>r(this._localAddedPeers,e)))),a=tn(t.filter((e=>n(this._localDroppedPeers,e)))),h=tn(t.filter((e=>r(this._localDroppedPeers,e)))),c=nn.from(e.filter((e=>n(this._localAddedPeers,e))).map((e=>i(this._localAddedPeers,e)))),l=nn.from(e.filter((e=>r(this._localAddedPeers,e))).map((e=>i(this._localAddedPeers,e))));e.forEach((e=>delete this._localAddedPeers[e])),t.forEach((e=>delete this._localDroppedPeers[e])),this._wire.extended("ut_pex",{added:s,"added.f":c,dropped:a,added6:o,"added6.f":l,dropped6:h})}}return e.prototype.name="ut_pex",e};var on=n(2109);const an=C("webtorrent:file-iterator");class hn extends t{constructor(e,{start:t,end:n}){super(),this._torrent=e._torrent,this._pieceLength=e._torrent.pieceLength,this._startPiece=(t+e.offset)/this._pieceLength|0,this._endPiece=(n+e.offset)/this._pieceLength|0,this._piece=this._startPiece,this._offset=t+e.offset-this._startPiece*this._pieceLength,this._missing=n-t+1,this._criticalLength=Math.min(1048576/this._pieceLength|0,2),this._torrent.select(this._startPiece,this._endPiece,!0,(()=>{this.emit("_notify")})),this.destroyed=!1}[Symbol.asyncIterator](){return this}next(){return new Promise(((e,t)=>{if(0===this._missing||this.destroyed)return e({done:!0}),this.destroy();const n=(r,i)=>{if(!this._torrent.bitfield.get(r)){this._torrent.critical(r,r+this._criticalLength);const e=()=>{this._torrent.bitfield.get(r)&&(this.removeListener("_notify",e),n(r,i))};return this.on("_notify",e)}if(this._torrent.destroyed)return t(new Error("Torrent removed"));this._torrent.store.get(r,i,((n,i)=>this.destroyed?e({done:!0}):(an("read %s and yielding (length %s) (err %s)",r,i?.length,n?.message),n?t(n):void e({value:i,done:!1}))))},r=Math.min(this._missing,this._pieceLength-this._offset);n(this._piece++,{length:r,offset:this._offset}),this._missing-=r,this._offset=0}))}async return(){this.destroy();const{value:e}=await this.next();return{done:!0,value:e}}async throw(e){throw e}destroy(e=(()=>{}),t){this.destroyed||(this.destroyed=!0,this._torrent.destroyed||this._torrent.deselect(this._startPiece,this._endPiece,!0),this.emit("return"),e(t))}}class cn extends t{constructor(e,t){super(),this._torrent=e,this._destroyed=!1,this._fileStreams=new Set,this._iterators=new Set,this.name=t.name,this.path=t.path,this.length=t.length,this.size=t.length,this.type=on.getType(this.name)||"application/octet-stream",this.offset=t.offset,this.done=!1;const n=t.offset,r=n+t.length-1;this._startPiece=n/this._torrent.pieceLength|0,this._endPiece=r/this._torrent.pieceLength|0,0===this.length&&(this.done=!0,this.emit("done")),this._client=e.client}get downloaded(){if(this._destroyed||!this._torrent.bitfield)return 0;const{pieces:e,bitfield:t,pieceLength:n,lastPieceLength:r}=this._torrent,{_startPiece:i,_endPiece:s}=this,o=i=>{const s=i===e.length-1?r:n;return t.get(i)?s:s-e[i].missing};let a=0;for(let t=i;t<=s;t+=1){const h=o(t);if(a+=h,t===i){const e=this.offset%n;a-=Math.min(e,h)}if(t===s){const t=(s===e.length-1?r:n)-(this.offset+this.length)%n;a-=Math.min(t,h)}}return a}get progress(){return this.length?this.downloaded/this.length:0}select(e){0!==this.length&&this._torrent.select(this._startPiece,this._endPiece,e)}deselect(){0!==this.length&&this._torrent.deselect(this._startPiece,this._endPiece,!1)}[Symbol.asyncIterator](e={}){if(0===this.length)return async function*(){}();const{start:t=0}=e??{},n=e?.end&&e.end{this._iterators.delete(r)})),r}createReadStream(e){const t=this[Symbol.asyncIterator](e),n=ce.Readable.from(t);return this._fileStreams.add(n),n.once("close",(()=>{this._fileStreams.delete(n)})),n}async arrayBuffer(e){const t=new Uint8Array(this.length);let n=0;for await(const r of this[Symbol.asyncIterator](e))t.set(r,n),n+=r.length;return t.buffer}async blob(e){return new Blob([await this.arrayBuffer(e)],{type:this.type})}stream(e){let t;return new ReadableStream({start(){t=this[Symbol.asyncIterator](e)},async pull({close:e,enqueue:n}){const{value:r,done:i}=await t.next();i?e():n(r)},cancel(){t.return()}})}get streamURL(){if(!this._client._server)throw new Error("No server created");return`${this._client._server.pathname}/${this._torrent.infoHash}/${encodeURI(this.path)}`}streamTo(e){return e.src=this.streamURL,e}includes(e){return this._startPiece<=e&&this._endPiece>=e}_destroy(){this._destroyed=!0,this._torrent=null;for(const e of this._fileStreams)e.destroy();this._fileStreams.clear();for(const e of this._iterators)e.destroy();this._iterators.clear()}}class ln{constructor(e){this._torrent=e,this._numPieces=e.pieces.length,this._pieces=new Array(this._numPieces),this._onWire=e=>{this.recalculate(),this._initWire(e)},this._onWireHave=e=>{this._pieces[e]+=1},this._onWireBitfield=()=>{this.recalculate()},this._torrent.wires.forEach((e=>{this._initWire(e)})),this._torrent.on("wire",this._onWire),this.recalculate()}getRarestPiece(e){let t=[],n=1/0;for(let r=0;r{this._cleanupWireEvents(e)})),this._torrent=null,this._pieces=null,this._onWire=null,this._onWireHave=null,this._onWireBitfield=null}_initWire(e){e._onClose=()=>{this._cleanupWireEvents(e);for(let t=0;t{const r=await(0,f.vp)(e,"hex");if(this.destroyed)return;this.handshake(t,r);const i=this._torrent.pieces.length,s=new Ie.Z(i);for(let e=0;e<=i;e++)s.set(e,!0);this.bitfield(s)})),this.once("interested",(()=>{fn("interested"),this.unchoke()})),this.on("uninterested",(()=>{fn("uninterested")})),this.on("choke",(()=>{fn("choke")})),this.on("unchoke",(()=>{fn("unchoke")})),this.on("bitfield",(()=>{fn("bitfield")})),this.lt_donthave.on("donthave",(()=>{fn("donthave")})),this.on("request",((e,t,n,r)=>{fn("request pieceIndex=%d offset=%d length=%d",e,t,n),this.httpRequest(e,t,n,((t,n)=>{if(t){this.lt_donthave.donthave(e);const t=setTimeout((()=>{this.destroyed||this.have(e)}),1e4);t.unref&&t.unref()}r(t,n)}))}))}async httpRequest(e,t,n,r){r=g(r);const i=e*this._torrent.pieceLength+t,s=i+n-1,o=this._torrent.files;let a,h;if(o.length<=1)a=[{url:this.url,start:i,end:s}];else{const e=o.filter((e=>e.offset<=s&&e.offset+e.length>i));if(e.length<1)return r(new Error("Could not find file corresponding to web seed range request"));a=e.map((e=>{const t=e.offset+e.length-1;return{url:this.url+("/"===this.url[this.url.length-1]?"":"/")+e.path.replace(this._torrent.path,""),fileOffsetInRange:Math.max(e.offset-i,0),start:Math.max(i-e.offset,0),end:Math.min(t,s-e.offset)}}))}try{h=await Promise.all(a.map((async({start:r,end:i,url:s})=>{fn("Requesting url=%s pieceIndex=%d offset=%d length=%d start=%d end=%d",s,e,t,n,r,i);const o=await J(s,{cache:"no-store",method:"GET",headers:{"Cache-Control":"no-store","user-agent":`WebTorrent/${pn} (https://webtorrent.io)`,range:`bytes=${r}-${i}`},signal:AbortSignal.timeout(6e4)});if(!o.ok)throw new Error(`Unexpected HTTP status code ${o.status}`);const a=new Uint8Array(await o.arrayBuffer());return fn("Got data of length %d",a.length),a})))}catch(e){return r(e)}r(null,(0,f.zo)(h))}destroy(){super.destroy(),this._torrent=null}}var _n=n(8768);const mn=C("webtorrent:torrent"),yn=5e3,bn=3*Kt.BLOCK_LENGTH,wn=_n.browser?Le().length:2,vn=[1e3,5e3,15e3],kn=`WebTorrent/${dn} (https://webtorrent.io)`;let En;try{En=i.join(xe.statSync("/tmp")&&"/tmp","webtorrent")}catch(e){En=i.join("function"==typeof Se.tmpdir?Se.tmpdir():"/","webtorrent")}const xn="undefined"!=typeof window&&"function"==typeof window.requestIdleCallback&&window.requestIdleCallback;class Sn extends t{constructor(e,t,n){super(),this._debugId="unknown infohash",this.client=t,this.announce=n.announce,this.urlList=n.urlList,this.path=n.path||En,this.addUID=n.addUID||!1,this.rootDir=n.rootDir||null,this.skipVerify=!!n.skipVerify,this._store=n.store||Ut,this._preloadedStore=n.preloadedStore||null,this._storeCacheSlots=void 0!==n.storeCacheSlots?n.storeCacheSlots:20,this._destroyStoreOnDestroy=n.destroyStoreOnDestroy||!1,this.store=null,this.storeOpts=n.storeOpts,this._getAnnounceOpts=n.getAnnounceOpts,"boolean"==typeof n.private&&(this.private=n.private),this.strategy=n.strategy||"sequential",this.maxWebConns=n.maxWebConns||4,this._rechokeNumSlots=!1===n.uploads||0===n.uploads?0:+n.uploads||10,this._rechokeOptimisticWire=null,this._rechokeOptimisticTime=0,this._rechokeIntervalId=null,this._noPeersIntervalId=null,this._noPeersIntervalTime=n.noPeersIntervalTime?1e3*n.noPeersIntervalTime:3e4,this.ready=!1,this.destroyed=!1,this.paused=n.paused||!1,this.done=!1,this.metadata=null,this.files=[],this.pieces=[],this._amInterested=!1,this._selections=[],this._critical=[],this.wires=[],this._queue=[],this._peers={},this._peersLength=0,this.received=0,this.uploaded=0,this._downloadSpeed=_e(),this._uploadSpeed=_e(),this._servers=[],this._xsRequests=[],this._fileModtimes=n.fileModtimes,null!==e&&this._onTorrentId(e),this._debug("new torrent")}get timeRemaining(){return this.done?0:0===this.downloadSpeed?1/0:(this.length-this.downloaded)/this.downloadSpeed*1e3}get downloaded(){if(!this.bitfield)return 0;let e=0;for(let t=0,n=this.pieces.length;t{this.destroyed||this._onParsedTorrent(t)}))):re(e,((e,t)=>{if(!this.destroyed)return e?this._destroy(e):void this._onParsedTorrent(t)}))}_onParsedTorrent(e){if(!this.destroyed){if(this._processParsedTorrent(e),!this.infoHash)return this._destroy(new Error("Malformed torrent data: No info hash"));this._rechokeIntervalId=setInterval((()=>{this._rechoke()}),1e4),this._rechokeIntervalId.unref&&this._rechokeIntervalId.unref(),this.emit("_infoHash",this.infoHash),this.destroyed||(this.emit("infoHash",this.infoHash),this.destroyed||(this.client.listening?this._onListening():this.client.once("listening",(()=>{this._onListening()}))))}}_processParsedTorrent(e){this._debugId=(0,f.oc)(e.infoHash).substring(0,7),void 0!==this.private&&(e.private=this.private),this.announce&&(e.announce=e.announce.concat(this.announce)),this.client.tracker&&globalThis.WEBTORRENT_ANNOUNCE&&!e.private&&(e.announce=e.announce.concat(globalThis.WEBTORRENT_ANNOUNCE)),this.urlList&&(e.urlList=e.urlList.concat(this.urlList)),e.announce=Array.from(new Set(e.announce)),e.urlList=Array.from(new Set(e.urlList)),Object.assign(this,e),this.magnetURI=ae(e),this.torrentFile=function(e){const t={info:e.info};return t["announce-list"]=(e.announce||[]).map((e=>(t.announce||(t.announce=e),[e=(0,f.gR)(e)]))),t["url-list"]=e.urlList||[],void 0!==e.private&&(t.private=Number(e.private)),e.created&&(t["creation date"]=e.created.getTime()/1e3|0),e.createdBy&&(t["created by"]=e.createdBy),e.comment&&(t.comment=e.comment),s.Z.encode(t)}(e)}_onListening(){this.destroyed||(this.info?this._onMetadata(this):(this.xs&&this._getMetadataFromServer(),this._startDiscovery()))}_startDiscovery(){if(this.discovery||this.destroyed)return;let e=this.client.tracker;e&&(e=Object.assign({},this.client.tracker,{getAnnounceOpts:()=>{if(this.destroyed)return;const e={uploaded:this.uploaded,downloaded:this.downloaded,left:Math.max(this.length-this.downloaded,0)};return this.client.tracker.getAnnounceOpts&&Object.assign(e,this.client.tracker.getAnnounceOpts()),this._getAnnounceOpts&&Object.assign(e,this._getAnnounceOpts()),e}})),this.peerAddresses&&this.peerAddresses.forEach((e=>this.addPeer(e,be.default.SOURCE_MANUAL))),this.discovery=new Dt({infoHash:this.infoHash,announce:this.announce,peerId:this.client.peerId,dht:!this.private&&this.client.dht,tracker:e,port:this.client.torrentPort,userAgent:kn,lsd:this.client.lsd}),this.discovery.on("error",(e=>{this._destroy(e)})),this.discovery.on("peer",((e,t)=>{this._debug("peer %s discovered via %s",e,t),"string"==typeof e&&this.done||this.addPeer(e,t)})),this.discovery.on("trackerAnnounce",(()=>{this.emit("trackerAnnounce")})),this.discovery.on("dhtAnnounce",(()=>{this.emit("dhtAnnounce")})),this.discovery.on("warning",(e=>{this.emit("warning",e)})),this._noPeersIntervalId=setInterval((()=>{if(this.destroyed)return;const e={[be.default.SOURCE_TRACKER]:{enabled:!!this.client.tracker,numPeers:0},[be.default.SOURCE_DHT]:{enabled:!!this.client.dht,numPeers:0},[be.default.SOURCE_LSD]:{enabled:!!this.client.lsd,numPeers:0},[be.default.SOURCE_UT_PEX]:{enabled:this.client.utPex&&!0,numPeers:0}};for(const t of Object.values(this._peers)){const n=e[t.source];void 0!==n&&n.numPeers++}for(const t of Object.keys(e)){const n=e[t];n.enabled&&0===n.numPeers&&this.emit("noPeers",t)}}),this._noPeersIntervalTime),this._noPeersIntervalId.unref&&this._noPeersIntervalId.unref()}_getMetadataFromServer(){const e=this,t=Array.isArray(this.xs)?this.xs:[this.xs];e._xsRequestsController=new AbortController;const n=e._xsRequestsController.signal,r=t.map((t=>r=>{!async function(t,r){if(0!==t.indexOf("http://")&&0!==t.indexOf("https://"))return e.emit("warning",new Error(`skipping non-http xs param: ${t}`)),r(null);const i={method:"GET",headers:{"user-agent":kn},signal:n};let s,o,a;try{s=await J(t,i)}catch(n){return e.emit("warning",new Error(`http error from xs param: ${t}`)),r(null)}if(e.destroyed)return r(null);if(e.metadata)return r(null);if(200!==s.status)return e.emit("warning",new Error(`non-200 status code ${s.status} from xs param: ${t}`)),r(null);try{o=new Uint8Array(await s.arrayBuffer())}catch(t){return e.emit("warning",t),r(null)}try{a=await oe(o)}catch(e){}if(!a)return e.emit("warning",new Error(`got invalid torrent file from xs param: ${t}`)),r(null);if(a.infoHash!==e.infoHash)return e.emit("warning",new Error(`got torrent file with incorrect info hash from xs param: ${t}`)),r(null);e._onMetadata(a),r(null)}(t,r)}));u(r)}async _onMetadata(e){if(this.metadata||this.destroyed)return;let t;if(this._debug("got metadata"),this._xsRequestsController?.abort(),this._xsRequestsController=null,e&&e.infoHash)t=e;else try{t=await oe(e)}catch(e){return this._destroy(e)}this._processParsedTorrent(t),this.metadata=this.torrentFile,this.client.enableWebSeeds&&this.urlList.forEach((e=>{this.addWebSeed(e)})),this._rarityMap=new ln(this),this.files=this.files.map((e=>new cn(this,e)));let n=this._preloadedStore;if(n||(n=new this._store(this.pieceLength,{...this.storeOpts,torrent:this,path:this.path,files:this.files,length:this.length,name:this.name+" - "+this.infoHash.slice(0,8),addUID:this.addUID,rootDir:this.rootDir,max:this._storeCacheSlots})),this._storeCacheSlots>0&&!(n instanceof Ut||n instanceof Vt)&&(n=new Pe(n,{max:this._storeCacheSlots})),this.store=new Mt(n),this.so?this.files.forEach(((e,t)=>{this.so.includes(t)?this.files[t].select():this.files[t].deselect()})):0!==this.pieces.length&&this.select(0,this.pieces.length-1,!1),this._hashes=this.pieces,this.pieces=this.pieces.map(((e,t)=>{const n=t===this.pieces.length-1?this.lastPieceLength:this.pieceLength;return new Kt(n)})),this._reservations=this.pieces.map((()=>[])),this.bitfield=new Ie.Z(this.pieces.length),this.emit("metadata"),!this.destroyed)if(this.skipVerify)this._markAllVerified(),this._onStore();else{const e=e=>{if(e)return this._destroy(e);this._debug("done verifying"),this._onStore()};this._debug("verifying existing torrent data"),this._fileModtimes&&this._store===Ut?this.getFileModtimes(((t,n)=>{if(t)return this._destroy(t);this.files.map(((e,t)=>n[t]===this._fileModtimes[t])).every((e=>e))?(this._markAllVerified(),this._onStore()):this._verifyPieces(e)})):this._verifyPieces(e)}}getFileModtimes(e){const t=[];Gt(this.files.map(((e,n)=>r=>{const s=this.addUID?i.join(this.name+" - "+this.infoHash.slice(0,8)):i.join(this.path,e.path);xe.stat(s,((e,i)=>{if(e&&"ENOENT"!==e.code)return r(e);t[n]=i&&i.mtime.getTime(),r(null)}))})),wn,(n=>{this._debug("done getting file modtimes"),e(n,t)}))}_verifyPieces(e){Gt(this.pieces.map(((e,t)=>e=>{if(this.destroyed)return e(new Error("torrent is destroyed"));const n={};t===this.pieces.length-1&&(n.length=this.lastPieceLength),this.store.get(t,n,(async(n,r)=>{if(this.destroyed)return e(new Error("torrent is destroyed"));if(n)return d((()=>e(null)));const i=await(0,f.vp)(r,"hex");if(this.destroyed)return e(new Error("torrent is destroyed"));i===this._hashes[t]?(this._debug("piece verified %s",t),this._markVerified(t)):(this._markUnverified(t),this._debug("piece invalid %s",t)),e(null)}))})),wn,e)}rescanFiles(e){if(this.destroyed)throw new Error("torrent is destroyed");e||(e=An),this._verifyPieces((t=>{if(t)return this._destroy(t),e(t);this._checkDone(),e(null)}))}_markAllVerified(){for(let e=0;e{t.done&&t.includes(e)&&(t.done=!1)}))}_hasAllPieces(){for(let e=0;ee))return!0;return!1}_onStore(){this.destroyed||(this._debug("on store"),this._startDiscovery(),this.ready=!0,this.emit("ready"),this._checkDone(),this._updateSelections(),this.wires.forEach((e=>{e.ut_metadata&&e.ut_metadata.setMetadata(this.metadata),this._onWireWithMetadata(e)})))}destroy(e,t){if("function"==typeof e)return this.destroy(null,e);this._destroy(null,e,t)}_destroy(e,t,n){if("function"==typeof t)return this._destroy(e,null,t);if(this.destroyed)return;this.destroyed=!0,this._debug("destroy"),this.client._remove(this),clearInterval(this._rechokeIntervalId),clearInterval(this._noPeersIntervalId),this._xsRequestsController?.abort(),this._rarityMap&&this._rarityMap.destroy();for(const e in this._peers)this.removePeer(e);this.files.forEach((e=>{e instanceof cn&&e._destroy()}));const r=this._servers.map((e=>t=>{e.destroy(t)}));if(this.discovery&&r.push((e=>{this.discovery.destroy(e)})),this.store){let e=this._destroyStoreOnDestroy;t&&void 0!==t.destroyStore&&(e=t.destroyStore),r.push((t=>{e?this.store.destroy(t):this.store.close(t)}))}u(r,n),e&&(0===this.listenerCount("error")?this.client.emit("error",e):this.emit("error",e)),this.emit("close"),this.client=null,this.files=[],this.discovery=null,this.store=null,this._rarityMap=null,this._peers=null,this._servers=null,this._xsRequests=null}addPeer(e,t){if(this.destroyed)throw new Error("torrent is destroyed");if(!this.infoHash)throw new Error("addPeer() must not be called before the `infoHash` event");let n;if(this.client.blocked){if("string"==typeof e){let t;try{t=Ce(e)}catch(t){return this._debug("ignoring peer: invalid %s",e),this.emit("invalidPeer",e),!1}n=t[0]}else"string"==typeof e.remoteAddress&&(n=e.remoteAddress);if(n&&this.client.blocked.contains(n))return this._debug("ignoring peer: blocked %s",e),"string"!=typeof e&&e.destroy(),this.emit("blockedPeer",e),!1}const r=this.client.utp&&this._isIPv4(n)?"utp":"tcp",i=!!this._addPeer(e,r,t);return i?this.emit("peer",e):this.emit("invalidPeer",e),i}_addPeer(e,t,n){if(this.destroyed)return"string"!=typeof e&&e.destroy(),null;if("string"==typeof e&&!this._validAddr(e))return this._debug("ignoring peer: invalid %s",e),null;const r=e&&e.id||e;if(this._peers[r])return this._debug("ignoring peer: duplicate (%s)",r),"string"!=typeof e&&e.destroy(),null;if(this.paused)return this._debug("ignoring peer: torrent is paused"),"string"!=typeof e&&e.destroy(),null;let i;return this._debug("add peer %s",r),i="string"==typeof e?"utp"===t?be.default.createUTPOutgoingPeer(e,this,this.client.throttleGroups):be.default.createTCPOutgoingPeer(e,this,this.client.throttleGroups):be.default.createWebRTCPeer(e,this,this.client.throttleGroups),this._registerPeer(i),"string"==typeof e&&(this._queue.push(i),this._drain()),i}addWebSeed(e){if(this.destroyed)throw new Error("torrent is destroyed");let t,n;if("string"==typeof e){if(t=e,!/^https?:\/\/.+/.test(t))return this.emit("warning",new Error(`ignoring invalid web seed: ${t}`)),void this.emit("invalidPeer",t);if(this._peers[t])return this.emit("warning",new Error(`ignoring duplicate web seed: ${t}`)),void this.emit("invalidPeer",t);n=new gn(t,this)}else{if(!e||"string"!=typeof e.connId)return void this.emit("warning",new Error("addWebSeed must be passed a string or connection object with id property"));if(n=e,t=n.connId,this._peers[t])return this.emit("warning",new Error(`ignoring duplicate web seed: ${t}`)),void this.emit("invalidPeer",t)}this._debug("add web seed %s",t);const r=be.default.createWebSeedPeer(n,t,this,this.client.throttleGroups);this._registerPeer(r),this.emit("peer",t)}_addIncomingPeer(e){return this.destroyed?e.destroy(new Error("torrent is destroyed")):this.paused?e.destroy(new Error("torrent is paused")):(this._debug("add incoming peer %s",e.id),void this._registerPeer(e))}_registerPeer(e){e.on("download",(e=>{this.destroyed||(this.received+=e,this._downloadSpeed(e),this.client._downloadSpeed(e),this.emit("download",e),this.destroyed||this.client.emit("download",e))})),e.on("upload",(e=>{this.destroyed||(this.uploaded+=e,this._uploadSpeed(e),this.client._uploadSpeed(e),this.emit("upload",e),this.destroyed||this.client.emit("upload",e))})),this._peers[e.id]=e,this._peersLength+=1}removePeer(e){const t=e?.id||e;e&&!e.id&&(e=this._peers?.[t]),e&&(e.destroy(),this.destroyed||(this._debug("removePeer %s",t),delete this._peers[t],this._peersLength-=1,this._drain()))}select(e,t,n,r){if(this.destroyed)throw new Error("torrent is destroyed");if(e<0||tt.priority-e.priority)),this._updateSelections()}deselect(e,t,n){if(this.destroyed)throw new Error("torrent is destroyed");n=Number(n)||0,this._debug("deselect %s-%s (priority %s)",e,t,n);for(let r=0;r{if(!this.destroyed&&!this.client.dht.destroyed){if(!e.remoteAddress)return this._debug("ignoring PORT from peer with no address");if(0===n||n>65536)return this._debug("ignoring invalid PORT from peer");this._debug("port: %s (from %s)",n,t),this.client.dht.addNode({host:e.remoteAddress,port:n})}})),e.on("timeout",(()=>{this._debug("wire timeout (%s)",t),e.destroy()})),"webSeed"!==e.type&&e.setTimeout(3e4,!0),e.setKeepAlive(!0),e.use(Qt(this.metadata)),e.ut_metadata.on("warning",(e=>{this._debug("ut_metadata warning: %s",e.message)})),this.metadata||(e.ut_metadata.on("metadata",(e=>{this._debug("got metadata via ut_metadata"),this._onMetadata(e)})),e.ut_metadata.fetch()),this.client.utPex&&!this.private&&(e.use(sn()),e.ut_pex.on("peer",(e=>{this.done||(this._debug("ut_pex: got peer: %s (from %s)",e,t),this.addPeer(e,be.default.SOURCE_UT_PEX))})),e.ut_pex.on("dropped",(e=>{const n=this._peers[e];n&&!n.connected&&(this._debug("ut_pex: dropped peer: %s (from %s)",e,t),this.removePeer(e))})),e.once("close",(()=>{e.ut_pex.reset()}))),e.use(jt()),this.emit("wire",e,t),this.ready&&d((()=>{this._onWireWithMetadata(e)}))}_onWireWithMetadata(e){let t=null;const n=()=>{this.destroyed||e.destroyed||(this._numQueued>2*(this._numConns-this.numPeers)&&e.amInterested?e.destroy():(t=setTimeout(n,yn),t.unref&&t.unref()))};let r;const i=()=>{if(e.peerPieces.buffer.length===this.bitfield.buffer.length){for(r=0;r{i(),this._update(),this._updateWireInterest(e)})),e.on("have",(()=>{i(),this._update(),this._updateWireInterest(e)})),e.lt_donthave.on("donthave",(()=>{i(),this._update(),this._updateWireInterest(e)})),e.on("have-all",(()=>{e.isSeeder=!0,e.choke(),this._update(),this._updateWireInterest(e)})),e.on("have-none",(()=>{e.isSeeder=!1,this._update(),this._updateWireInterest(e)})),e.on("allowed-fast",(e=>{this._update()})),e.once("interested",(()=>{e.unchoke()})),e.once("close",(()=>{clearTimeout(t)})),e.on("choke",(()=>{clearTimeout(t),t=setTimeout(n,yn),t.unref&&t.unref()})),e.on("unchoke",(()=>{clearTimeout(t),this._update()})),e.on("request",((t,n,r,i)=>{if(r>131072)return e.destroy();this.pieces[t]||this.store.get(t,{offset:n,length:r},i)})),e.hasFast&&this._hasAllPieces()?e.haveAll():e.hasFast&&this._hasNoPieces()?e.haveNone():e.bitfield(this.bitfield),this._updateWireInterest(e),e.peerExtensions.dht&&this.client.dht&&this.client.dht.listening&&e.port(this.client.dht.address().port),"webSeed"!==e.type&&(t=setTimeout(n,yn),t.unref&&t.unref()),e.isSeeder=!1,i()}_updateSelections(){this.ready&&!this.destroyed&&(d((()=>{this._gcSelections()})),this._updateInterest(),this._update())}_gcSelections(){for(let e=0;ethis._updateWireInterest(e))),e!==this._amInterested&&(this._amInterested?this.emit("interested"):this.emit("uninterested"))}_updateWireInterest(e){let t=!1;for(let n=0;nthis._updateWireWrapper()),{timeout:250}):this._updateWireWrapper()}_updateWireWrapper(){if(this.destroyed)return;const e=Zt(this.wires);let t;for(;t=e();)this._updateWire(t)}_updateWire(e){if(e.destroyed)return!1;const t=this,n=Tn(e,.5);if(e.requests.length>=n)return;const r=Tn(e,1);if(e.peerChoking)e.hasFast&&e.peerAllowedFastSet.length>0&&!this._hasMorePieces(e.peerAllowedFastSet.length-1)&&function(){if(e.requests.length>=r)return!1;for(const n of e.peerAllowedFastSet){if(e.peerPieces.get(n)&&!t.bitfield.get(n))for(;t._request(e,n,!1)&&e.requests.length=r.from+r.offset;--s)if(e.peerPieces.get(s)&&t._request(e,s,!1))return}}();o(!1)||o(!0)}function i(t,n,r,i){return s=>s>=t&&s<=n&&!(s in r)&&e.peerPieces.get(s)&&(!i||i(s))}function s(e){let n=e;for(let r=e;r=r)return!0;const o=function(){const n=e.downloadSpeed()||1;if(n>bn)return()=>!0;const r=Math.max(1,e.requests.length)*Kt.BLOCK_LENGTH/n;let i=10,s=0;return e=>{if(!i||t.bitfield.get(e))return!0;let o=t.pieces[e].missing;for(;s0))return i--,!1}return!0}}();for(let a=0;a({wire:e,random:Math.random()}))).sort(((e,t)=>{const n=e.wire,r=t.wire;return n.downloadSpeed()!==r.downloadSpeed()?n.downloadSpeed()-r.downloadSpeed():n.uploadSpeed()!==r.uploadSpeed()?n.uploadSpeed()-r.uploadSpeed():n.amChoking!==r.amChoking?n.amChoking?-1:1:e.random-t.random})).map((e=>e.wire));this._rechokeOptimisticTime<=0?this._rechokeOptimisticWire=null:this._rechokeOptimisticTime-=1;let t=0;for(;e.length>0&&t0){const t=e.filter((e=>e.peerInterested));if(t.length>0){const e=t[(n=t.length,Math.random()*n|0)];e.unchoke(),this._rechokeOptimisticWire=e,this._rechokeOptimisticTime=2}}var n;e.filter((e=>e!==this._rechokeOptimisticWire)).forEach((e=>e.choke()))}_hotswap(e,t){const n=e.downloadSpeed();if(n=bn||(2*a>n||a>o||(i=t,o=a))}if(!i)return!1;for(s=0;s=o)return!1;const a=r.pieces[t];let h=s?a.reserveRemaining():a.reserve();if(-1===h&&n&&r._hotswap(e,t)&&(h=s?a.reserveRemaining():a.reserve()),-1===h)return!1;let c=r._reservations[t];c||(c=r._reservations[t]=[]);let l=c.indexOf(null);-1===l&&(l=c.length),c[l]=e;const u=a.chunkOffset(h),p=s?a.chunkLengthRemaining(h):a.chunkLength(h);function g(){d((()=>{r._update()}))}return e.request(t,u,p,(async function n(i,o){if(r.destroyed)return;if(!r.ready)return r.once("ready",(()=>{n(i,o)}));if(c[l]===e&&(c[l]=null),a!==r.pieces[t])return g();if(i)return r._debug("error getting piece %s (offset: %s length: %s) from %s: %s",t,u,p,`${e.remoteAddress}:${e.remotePort}`,i.message),s?a.cancelRemaining(h):a.cancel(h),void g();if(r._debug("got piece %s (offset: %s length: %s) from %s",t,u,p,`${e.remoteAddress}:${e.remotePort}`),!a.set(h,o,e))return g();const d=a.flush(),_=await(0,f.vp)(d,"hex");r.destroyed||(_===r._hashes[t]?(r._debug("piece verified %s",t),r.store.put(t,d,(e=>{e?r._destroy(e):(r.pieces[t]=null,r._markVerified(t),r.wires.forEach((e=>{e.have(t)})),r._checkDone()&&!r.destroyed&&r.discovery.complete(),g())}))):(r.pieces[t]=new Kt(a.length),r.emit("warning",new Error(`Piece ${t} failed verification`)),g()))})),!0}_checkDone(){if(this.destroyed)return;this.files.forEach((e=>{if(!e.done){for(let t=e._startPiece;t<=e._endPiece;++t)if(!this.bitfield.get(t))return;e.done=!0,e.emit("done"),this._debug(`file done: ${e.name}`)}}));let e=!0;for(const t of this._selections){for(let n=t.from;n<=t.to;n++)if(!this.bitfield.get(n)){e=!1;break}if(!e)break}return!this.done&&e?(this.done=!0,this._debug(`torrent done: ${this.infoHash}`),this.emit("done")):this.done=!1,this._gcSelections(),e}async load(e,t){if(this.destroyed)throw new Error("torrent is destroyed");if(!this.ready)return this.once("ready",(()=>{this.load(e,t)}));Array.isArray(e)||(e=[e]),t||(t=An);try{await Oe(this.store,l(e),{chunkLength:this.pieceLength}),this._markAllVerified(),this._checkDone(),t(null)}catch(e){return t(e),e}}pause(){this.destroyed||(this._debug("pause"),this.paused=!0)}resume(){this.destroyed||(this._debug("resume"),this.paused=!1,this._drain())}_debug(){const e=[].slice.call(arguments);e[0]=`[${this.client?this.client._debugId:"No Client"}] [${this._debugId}] ${e[0]}`,mn(...e)}_drain(){if(this._debug("_drain numConns %s maxConns %s",this._numConns,this.client.maxConns),"function"!=typeof ye.connect||this.destroyed||this.paused||this._numConns>=this.client.maxConns)return;this._debug("drain (%s queued, %s/%s peers)",this._numQueued,this.numPeers,this.client.maxConns);const e=this._queue.shift();if(!e)return;this._debug("%s connect attempt to %s",e.type,e.addr);const t=Ce(e.addr),n={host:t[0],port:t[1]};this.client.utp&&e.type===be.default.TYPE_UTP_OUTGOING?e.conn=we.connect(n.port,n.host):e.conn=ye.connect(n);const r=e.conn;r.once("connect",(()=>{this.destroyed||e.onConnect()})),r.once("error",(t=>{e.destroy(t)})),e.startConnectTimeout(),r.on("close",(()=>{if(this.destroyed)return;if(e.retries>=vn.length){if(this.client.utp){const t=this._addPeer(e.addr,"tcp",e.source);t&&(t.retries=0)}else this._debug("conn %s closed: will not re-add (max %s attempts)",e.addr,vn.length);return}const t=vn[e.retries];this._debug("conn %s closed: will re-add to queue in %sms (attempt %s)",e.addr,t,e.retries+1);const n=setTimeout((()=>{if(this.destroyed)return;const t=Ce(e.addr)[0],n=this.client.utp&&this._isIPv4(t)?"utp":"tcp",r=this._addPeer(e.addr,n,e.source);r&&(r.retries=e.retries+1)}),t);n.unref&&n.unref()}))}_validAddr(e){let t;try{t=Ce(e)}catch(e){return!1}const n=t[0],r=t[1];return r>0&&r<65535&&!("127.0.0.1"===n&&r===this.client.torrentPort)}_isIPv4(e){return/^((?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/.test(e)}}function Tn(e,t){let n=2+Math.ceil(t*e.downloadSpeed()/Kt.BLOCK_LENGTH);if(e.peerExtendedHandshake){const t=e.peerExtendedHandshake.reqq;"number"==typeof t&&t>0&&(n=Math.min(n,t))}return n}function An(){}var Cn=n(8669),In=n(5573),Pn=n(4286),Rn=n(4622);class On{constructor(e,t={}){this.client=e,t.origin||(t.origin="*"),this.opts=t,this.pendingReady=new Set}static serveIndexPage(e,t,n){const r=t.map((e=>`
  • \n \n ${In(e.name)}\n \n (${In(e.length)} bytes)\n
  • `)).join("
    ");return e.status=200,e.headers["Content-Type"]="text/html",e.body=Bn("WebTorrent",`

    WebTorrent

    \n
      ${r}
    `),e}isOriginAllowed(e){return!1!==this.opts.origin&&("*"===this.opts.origin||e.headers.origin===this.opts.origin)}static serveMethodNotAllowed(e){return e.status=405,e.headers["Content-Type"]="text/html",e.body=Bn("405 - Method Not Allowed","

    405 - Method Not Allowed

    "),e}static serve404Page(e){return e.status=404,e.headers["Content-Type"]="text/html",e.body=Bn("404 - Not Found","

    404 - Not Found

    "),e}static serveTorrentPage(e,t,n){const r=e.files.map((t=>`
  • \n \n ${In(t.path)}\n \n (${In(t.length)} bytes)\n
  • `)).join("
    ");return t.status=200,t.headers["Content-Type"]="text/html",t.body=Bn(`${In(e.name)} - WebTorrent`,`

    ${In(e.name)}

    \n
      ${r}
    `),t}static serveOptionsRequest(e,t){return t.status=204,t.headers["Access-Control-Max-Age"]="600",t.headers["Access-Control-Allow-Methods"]="GET,HEAD",e.headers["access-control-request-headers"]&&(t.headers["Access-Control-Allow-Headers"]=e.headers["access-control-request-headers"]),t}static serveFile(e,t,n){n.status=200,n.headers.Expires="0",n.headers["Cache-Control"]="no-cache, no-store, must-revalidate, max-age=0",n.headers["Accept-Ranges"]="bytes",n.headers["Content-Type"]=e.type,n.headers["transferMode.dlna.org"]="Streaming",n.headers["contentFeatures.dlna.org"]="DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000","document"===t.destination?(n.headers["Content-Type"]="application/octet-stream",n.headers["Content-Disposition"]=`attachment; filename*=UTF-8''${Dn(e.name)}`,n.body="DOWNLOAD"):n.headers["Content-Disposition"]=`inline; filename*=UTF-8''${Dn(e.name)}`;let r=Rn(e.length,t.headers.range||"");if(Array.isArray(r)?(n.status=206,r=r[0],n.headers["Content-Range"]=`bytes ${r.start}-${r.end}/${e.length}`,n.headers["Content-Length"]=r.end-r.start+1):(n.statusCode=200,r=null,n.headers["Content-Length"]=e.length),"GET"===t.method){const i=e[Symbol.asyncIterator](r);let s=null;e.emit("iterator",{iterator:i,req:t,file:e},(e=>{s=e}));const o=ce.Readable.from(s||i);let a=null;e.emit("stream",{stream:o,req:t,file:e},(e=>{a=Pn(o,e)})),n.body=a||o}else n.body=!1;return n}async onRequest(e,t){let n=new URL(e.url,"http://example.com").pathname;n=n.slice(n.indexOf(this.pathname)+this.pathname.length+1);const r={headers:{"X-Content-Type-Options":"nosniff","Content-Security-Policy":"base-uri 'none'; frame-ancestors 'none'; form-action 'none';"}};if(this.isOriginAllowed(e)&&(r.headers["Access-Control-Allow-Origin"]="*"===this.opts.origin?"*":e.headers.origin),"favicon.ico"===n)return t(On.serve404Page(r));if("OPTIONS"===e.method)return this.isOriginAllowed(e)?t(On.serveOptionsRequest(e,r)):t(On.serveMethodNotAllowed(r));const i=async()=>{this.pendingReady.delete(i);const e=await s();t(e)},s=async()=>{if(""===n)return On.serveIndexPage(r,this.client.torrents,this.pathname);let[t,...i]=n.split("/");i=decodeURI(i.join("/"));const s=await this.client.get(t);if(!t||!s)return On.serve404Page(r);if(!i)return On.serveTorrentPage(s,r,this.pathname);const o=s.files.find((e=>e.path.replace(/\\/g,"/")===i));return o?On.serveFile(o,e,r):On.serve404Page(r)};if("GET"===e.method||"HEAD"===e.method){if(this.client.ready){const e=await s();return t(e)}return this.pendingReady.add(i),void this.client.once("ready",i)}return On.serveMethodNotAllowed(r)}close(e=(()=>{})){this.closed=!0,this.pendingReady.forEach((e=>{this.client.removeListener("ready",e)})),this.pendingReady.clear(),d(e)}destroy(e=(()=>{})){this.closed?d(e):this.close(e),this.client=null}}class Ln extends On{constructor(e,t){super(e,t),this.server=Cn.createServer(),this._listen=this.server.listen,this.server.listen=this.listen.bind(this),this._close=this.server.close,this.server.close=this.close.bind(this),this.sockets=new Set,this.closed=!1,this.pathname=t?.pathname||"/webtorrent"}wrapRequest(e,t){return this.opts.hostname&&e.headers.host!==`${this.opts.hostname}:${this.server.address().port}`?e.destroy():new URL(e.url,"http://example.com").pathname.startsWith(this.pathname)?void this.onRequest(e,(({status:e,headers:n,body:r})=>{t.writeHead(e,n),r instanceof ce.Readable?Pn(r,t):t.end(r)})):e.destroy()}onConnection(e){e.setTimeout(36e6),this.sockets.add(e),e.once("close",(()=>{this.sockets.delete(e)}))}address(){return this.server.address()}listen(...e){return this.closed=!1,this.server.on("connection",this.onConnection.bind(this)),this.server.on("request",this.wrapRequest.bind(this)),this._listen.apply(this.server,e)}close(e=(()=>{})){this.server.removeAllListeners("connection"),this.server.removeAllListeners("request"),super.close(),this._close.call(this.server,e)}destroy(e){this.sockets.forEach((e=>{e.destroy()})),super.destroy(e)}}class Nn extends On{constructor(e,t){super(e,t),this.registration=t.controller,this.workerKeepAliveInterval=null,this.workerPortCount=0;const n=new URL(t.controller.scope);this.pathname=n.pathname+"webtorrent",this._address={port:n.port,family:"IPv4",address:n.hostname},this.boundHandler=this.wrapRequest.bind(this),navigator.serviceWorker.addEventListener("message",this.boundHandler),fetch(`${this.pathname}/cancel/`).then((e=>{e.body.cancel()}))}wrapRequest(e){const t=e.data;if("webtorrent"===!t?.type||!t.url)return null;const[n]=e.ports;this.onRequest(t,(({status:e,headers:t,body:r})=>{const i=r instanceof ce.Readable&&r[Symbol.asyncIterator](),s=()=>{n.onmessage=null,r?.destroy&&r.destroy(),this.workerPortCount--,this.workerPortCount||(clearInterval(this.workerKeepAliveInterval),this.workerKeepAliveInterval=null)};n.onmessage=async e=>{if(e.data){let e;try{e=(await i.next()).value}catch(e){}n.postMessage(e),e||s(),this.workerKeepAliveInterval||(this.workerKeepAliveInterval=setInterval((()=>fetch(`${this.pathname}/keepalive/`)),2e4))}else s()},this.workerPortCount++,n.postMessage({status:e,headers:t,body:i?"STREAM":r})}))}listen(e,t){t()}address(){return this._address}close(e){navigator.serviceWorker.removeEventListener("message",this.boundHandler),super.close(e)}destroy(e){super.destroy(e)}}function Bn(e,t){return`\n \n \n \n \n ${e}\n \n \n ${t}\n \n \n `}function Dn(e){return encodeURIComponent(e).replace(/['()]/g,escape).replace(/\*/g,"%2A").replace(/%(?:7C|60|5E)/g,unescape)}const Un=dn,Mn=C("webtorrent"),jn=Un.replace(/\d*./g,(e=>("0"+e%100).slice(-2))).slice(0,4),Hn=`-WW${jn}-`;class qn extends t{constructor(e={}){super(),"string"==typeof e.peerId?this.peerId=e.peerId:ArrayBuffer.isView(e.peerId)?this.peerId=(0,f.oc)(e.peerId):this.peerId=(0,f.oc)((0,f.gR)(Hn+(0,f.te)((0,f.O6)(9)))),this.peerIdBuffer=(0,f._0)(this.peerId),"string"==typeof e.nodeId?this.nodeId=e.nodeId:ArrayBuffer.isView(e.nodeId)?this.nodeId=(0,f.oc)(e.nodeId):this.nodeId=(0,f.oc)((0,f.O6)(20)),this.nodeIdBuffer=(0,f._0)(this.nodeId),this._debugId=(0,f.oc)(this.peerId).substring(0,7),this.destroyed=!1,this.listening=!1,this.torrentPort=e.torrentPort||0,this.dhtPort=e.dhtPort||0,this.tracker=void 0!==e.tracker?e.tracker:{},this.lsd=!1!==e.lsd,this.utPex=!1!==e.utPex,this.torrents=[],this.maxConns=Number(e.maxConns)||55,this.utp=qn.UTP_SUPPORT&&!1!==e.utp,this._downloadLimit=Math.max("number"==typeof e.downloadLimit?e.downloadLimit:-1,-1),this._uploadLimit=Math.max("number"==typeof e.uploadLimit?e.uploadLimit:-1,-1),!0===e.secure&&Promise.resolve().then(n.bind(n,3287)).then((({enableSecure:e})=>e())),this._debug("new webtorrent (peerId %s, nodeId %s, port %s)",this.peerId,this.nodeId,this.torrentPort),this.throttleGroups={down:new me.ThrottleGroup({rate:Math.max(this._downloadLimit,0),enabled:this._downloadLimit>=0}),up:new me.ThrottleGroup({rate:Math.max(this._uploadLimit,0),enabled:this._uploadLimit>=0})},this.tracker&&("object"!=typeof this.tracker&&(this.tracker={}),globalThis.WRTC&&!this.tracker.wrtc&&(this.tracker.wrtc=globalThis.WRTC)),"function"==typeof ke?this._connPool=new ke(this):d((()=>{this._onListening()})),this._downloadSpeed=_e(),this._uploadSpeed=_e(),!1!==e.dht&&"function"==typeof K?(this.dht=new K(Object.assign({},{nodeId:this.nodeId},e.dht)),this.dht.once("error",(e=>{this._destroy(e)})),this.dht.once("listening",(()=>{const e=this.dht.address();e&&(this.dhtPort=e.port)})),this.dht.setMaxListeners(0),this.dht.listen(this.dhtPort)):this.dht=!1,this.enableWebSeeds=!1!==e.webSeeds;const t=()=>{this.destroyed||(this.ready=!0,this.emit("ready"))};"function"==typeof Z&&null!=e.blocklist?Z(e.blocklist,{headers:{"user-agent":`WebTorrent/${Un} (https://webtorrent.io)`}},((e,n)=>{if(e)return console.error(`Failed to load blocklist: ${e.message}`);this.blocked=n,t()})):d(t)}createServer(e,t){if(this.destroyed)throw new Error("torrent is destroyed");if(this._server)throw new Error("server already created");if("undefined"!=typeof window&&"node"!==t||"browser"===t){if(!(e?.controller instanceof ServiceWorkerRegistration))throw new Error("Invalid worker registration");if("activated"!==e.controller.active.state)throw new Error("Worker isn't activated");return this._server=new Nn(this,e),this._server}return this._server=new Ln(this,e),this._server}get downloadSpeed(){return this._downloadSpeed()}get uploadSpeed(){return this._uploadSpeed()}get progress(){const e=this.torrents.filter((e=>1!==e.progress));return e.reduce(((e,t)=>e+t.downloaded),0)/(e.reduce(((e,t)=>e+(t.length||0)),0)||1)}get ratio(){return this.torrents.reduce(((e,t)=>e+t.uploaded),0)/(this.torrents.reduce(((e,t)=>e+t.received),0)||1)}async get(e){if(e instanceof Sn){if(this.torrents.includes(e))return e}else{const t=this.torrents;let n;try{n=await oe(e)}catch(e){}if(!n)return null;if(!n.infoHash)throw new Error("Invalid torrent identifier");for(const e of t)if(e.infoHash===n.infoHash)return e}return null}add(e,t={},n=(()=>{})){if(this.destroyed)throw new Error("client is destroyed");"function"==typeof t&&([t,n]=[{},t]);const r=()=>{if(!this.destroyed)for(const e of this.torrents)if(e.infoHash===s.infoHash&&e!==s)return s._destroy(new Error(`Cannot add duplicate torrent ${s.infoHash}`)),void n(e)},i=()=>{this.destroyed||(n(s),this.emit("torrent",s))};this._debug("add"),t=t?Object.assign({},t):{};const s=new Sn(e,this,t);return this.torrents.push(s),s.once("_infoHash",r),s.once("ready",i),s.once("close",(function e(){s.removeListener("_infoHash",r),s.removeListener("ready",i),s.removeListener("close",e)})),s}seed(e,t,n){if(this.destroyed)throw new Error("client is destroyed");"function"==typeof t&&([t,n]=[{},t]),this._debug("seed"),(t=t?Object.assign({},t):{}).skipVerify=!0;const r="string"==typeof e;r&&(t.path=i.dirname(e)),t.createdBy||(t.createdBy=`WebTorrent/${jn}`);const s=e=>{this._debug("on seed"),"function"==typeof n&&n(e),e.emit("seed"),this.emit("seed",e)},o=this.add(null,t,(e=>{const n=[n=>{if(r||t.preloadedStore)return n();e.load(a,n)}];this.dht&&n.push((t=>{e.once("dhtAnnounce",t)})),u(n,(t=>{if(!this.destroyed)return t?e._destroy(t):void s(e)}))}));let a;var h;return h=e,"undefined"!=typeof FileList&&h instanceof FileList?e=Array.from(e):Array.isArray(e)||(e=[e]),u(e.map((e=>async n=>{if(!t.preloadedStore&&function(e){return"object"==typeof e&&null!=e&&"function"==typeof e.pipe}(e)){const t=[];try{for await(const n of e)t.push(n)}catch(e){return n(e)}const r=(0,f.zo)(t);r.name=e.name,n(null,r)}else n(null,e)})),((e,r)=>{if(!this.destroyed)return e?o._destroy(e):void function(e,t,n){"function"==typeof t&&([t,n]=[n,t]),k(e,t=t?Object.assign({},t):{},n)}(r,t,((e,i)=>{if(!this.destroyed){if(e)return o._destroy(e);a=i.map((e=>e.getStream)),A(r,t,(async(e,t)=>{if(this.destroyed)return;if(e)return o._destroy(e);const r=await this.get(t);r?(console.warn("A torrent with the same id is already being seeded"),o._destroy(),"function"==typeof n&&n(r)):o._onTorrentId(t)}))}}))})),o}async remove(e,t,n){if("function"==typeof t)return this.remove(e,null,t);this._debug("remove");const r=await this.get(e);if(!r)throw new Error(`No torrent with id ${e}`);this._remove(r,t,n)}_remove(e,t,n){if(e){if("function"==typeof t)return this._remove(e,null,t);this.torrents.splice(this.torrents.indexOf(e),1),e.destroy(t,n),this.dht&&this.dht._tables.remove(e.infoHash)}}address(){return this.listening?this._connPool?this._connPool.tcpServer.address():{address:"0.0.0.0",family:"IPv4",port:0}:null}throttleDownload(e){return e=Number(e),!(isNaN(e)||!isFinite(e)||e<-1)&&(this._downloadLimit=e,this._downloadLimit<0?this.throttleGroups.down.setEnabled(!1):(this.throttleGroups.down.setEnabled(!0),void this.throttleGroups.down.setRate(this._downloadLimit)))}throttleUpload(e){return e=Number(e),!(isNaN(e)||!isFinite(e)||e<-1)&&(this._uploadLimit=e,this._uploadLimit<0?this.throttleGroups.up.setEnabled(!1):(this.throttleGroups.up.setEnabled(!0),void this.throttleGroups.up.setRate(this._uploadLimit)))}destroy(e){if(this.destroyed)throw new Error("client already destroyed");this._destroy(null,e)}_destroy(e,t){this._debug("client destroy"),this.destroyed=!0;const n=this.torrents.map((e=>t=>{e.destroy(t)}));this._connPool&&n.push((e=>{this._connPool.destroy(e)})),this.dht&&n.push((e=>{this.dht.destroy(e)})),this._server&&n.push((e=>{this._server.destroy(e)})),u(n,t),e&&this.emit("error",e),this.torrents=[],this._connPool=null,this.dht=null,this.throttleGroups.down.destroy(),this.throttleGroups.up.destroy()}_onListening(){if(this._debug("listening"),this.listening=!0,this._connPool){const e=this._connPool.tcpServer.address();e&&(this.torrentPort=e.port)}this.emit("listening")}_debug(){const e=[].slice.call(arguments);e[0]=`[${this._debugId}] ${e[0]}`,Mn(...e)}async _getByHash(e){for(const t of this.torrents)if(t.infoHashHash||(t.infoHashHash=await(0,f.vp)((0,f._0)("72657132"+t.infoHash),"hex")),e===t.infoHashHash)return t;return null}}qn.WEBRTC_SUPPORT=ge.WEBRTC_SUPPORT,qn.UTP_SUPPORT=ke.UTP_SUPPORT,qn.VERSION=Un})();var i=r.Z;export{i as default}; +var e={5249:(e,t,n)=>{var r=n(8768);const i=n(7460),s=n(9539),o=n(7187),a=s.debuglog("http");function h(e){if(!(this instanceof h))return new h(e);o.call(this);var t=this;t.defaultPort=80,t.protocol="http:",t.options=s._extend({},e),t.options.path=null,t.requests={},t.sockets={},t.freeSockets={},t.keepAliveMsecs=t.options.keepAliveMsecs||1e3,t.keepAlive=t.options.keepAlive||!1,t.maxSockets=t.options.maxSockets||h.defaultMaxSockets,t.maxFreeSockets=t.options.maxFreeSockets||256,t.on("free",(function(e,n){var r=t.getName(n);if(a("agent.on(free)",r),e.writable&&t.requests[r]&&t.requests[r].length)t.requests[r].shift().onSocket(e),0===t.requests[r].length&&delete t.requests[r];else{var i=e._httpMessage;if(i&&i.shouldKeepAlive&&e.writable&&t.keepAlive){var s=t.freeSockets[r],o=s?s.length:0,h=o;t.sockets[r]&&(h+=t.sockets[r].length),h>t.maxSockets||o>=t.maxFreeSockets?e.destroy():(s=s||[],t.freeSockets[r]=s,e.setKeepAlive(!0,t.keepAliveMsecs),e.unref(),e._httpMessage=null,t.removeSocket(e,n),s.push(e))}else e.destroy()}}))}s.inherits(h,o),t.Agent=h,h.defaultMaxSockets=1/0,h.prototype.createConnection=i.createConnection,h.prototype.getName=function(e){var t=e.host||"localhost";return t+=":",e.port&&(t+=e.port),t+=":",e.localAddress&&(t+=e.localAddress),4!==e.family&&6!==e.family||(t+=":"+e.family),t},h.prototype.addRequest=function(e,t){"string"==typeof t&&(t={host:t,port:arguments[2],localAddress:arguments[3]}),t=s._extend({},t),t=s._extend(t,this.options);var n=this.getName(t);this.sockets[n]||(this.sockets[n]=[]);var i=this.freeSockets[n]?this.freeSockets[n].length:0,o=i+this.sockets[n].length;if(i){var h=this.freeSockets[n].shift();a("have free socket"),this.freeSockets[n].length||delete this.freeSockets[n],h.ref(),e.onSocket(h),this.sockets[n].push(h)}else o{var r=n(8768);const i=n(9539),s=n(7460),o=n(8575),a=n(772).HTTPParser,h=n(8583).ok,c=n(2390),l=c.httpSocketSetup,u=c.parsers,d=c.freeParser,f=c.debug,p=n(1088).OutgoingMessage,g=n(5249),_=n(8764).Buffer;function m(e,t){var n=this;if(p.call(n),"string"==typeof e){if(!(e=o.parse(e)).hostname)throw new Error("Unable to determine the domain name")}else e=i._extend({},e);var a=e.agent,h=e._defaultAgent||g.globalAgent;!1===a?a=new h.constructor:null==a&&"function"!=typeof e.createConnection&&(a=h),n.agent=a;var l=e.protocol||h.protocol,u=h.protocol;if(n.agent&&n.agent.protocol&&(u=n.agent.protocol),e.path&&/ /.test(e.path))throw new TypeError("Request path contains unescaped characters");if(l!==u)throw new Error('Protocol "'+l+'" not supported. Expected "'+u+'"');const d=e.defaultPort||n.agent&&n.agent.defaultPort;var m=e.port=e.port||d||80,y=e.host=e.hostname||e.host||"localhost";if(void 0===e.setHost)var b=!0;n.socketPath=e.socketPath;var w=n.method=(e.method||"GET").toUpperCase();if(!c._checkIsHttpToken(w))throw new TypeError("Method must be a valid HTTP token");if(n.path=e.path||"/",t&&n.once("response",t),!Array.isArray(e.headers)){if(e.headers)for(var v=Object.keys(e.headers),k=0,E=v.length;k0?(n.upgradeOrConnect=!0,t.emit("agentRemove"),t.removeListener("close",w),t.removeListener("error",v),t._readableState.flowing=null,n.emit(c,o,t,a),n.emit("close")):t.destroy(),d(r,n,t)}else r.incoming&&r.incoming.complete&&100!==r.incoming.statusCode&&(t.removeListener("data",x),t.removeListener("end",E),d(r,n,t))}function S(e,t){var n=this.socket,r=n._httpMessage;if(r.domain&&!e.domain&&(f('setting "res.domain"'),e.domain=r.domain),f("AGENT incoming response!"),!r.res){if(r.res=e,"CONNECT"===r.method)return e.upgrade=!0,2;var i="HEAD"===r.method;return f("AGENT isHeadResponse",i),100===e.statusCode?(delete r.res,r.emit("continue"),!0):(!r.shouldKeepAlive||t||r.upgradeOrConnect||(r.shouldKeepAlive=!1),r.res=e,e.req=r,e.on("end",A),r.on("prefinish",C),r.emit("response",e)||e._dump(),i)}n.destroy()}function T(e,t){var n=t.socket;t.shouldKeepAlive?(f("AGENT socket keep-alive"),t.timeoutCb&&(n.setTimeout(0,t.timeoutCb),t.timeoutCb=null),n.removeListener("close",w),n.removeListener("error",v),n.once("error",k),r.nextTick(I,n)):(n.writable&&(f("AGENT socket.destroySoon()"),n.destroySoon()),h(!n.writable))}function A(){const e=this.req;e._ended=!0,e.shouldKeepAlive&&!e.finished||T(0,e)}function C(){const e=this;this.res;e.shouldKeepAlive&&e._ended&&T(0,e)}function I(e){e.emit("free")}function P(e,t){e.aborted?t.emit("free"):function(e,t){var n=u.alloc();e.socket=t,e.connection=t,n.reinitialize(a.RESPONSE),n.socket=t,n.incoming=null,n.outgoing=e,e.parser=n,t.parser=n,t._httpMessage=e,l(t),"number"==typeof e.maxHeadersCount?n.maxHeaderPairs=e.maxHeadersCount<<1:n.maxHeaderPairs=2e3,n.onIncoming=S,t.removeListener("error",k),t.on("error",v),t.on("data",x),t.on("end",E),t.on("close",w),e.emit("socket",t)}(e,t)}i.inherits(m,p),t.ClientRequest=m,m.prototype.aborted=void 0,m.prototype._finish=function(){p.prototype._finish.call(this)},m.prototype._implicitHeader=function(){this._storeHeader(this.method+" "+this.path+" HTTP/1.1\r\n",this._renderHeaders())},m.prototype.abort=function(){void 0===this.aborted&&r.nextTick(y,this),this.aborted=Date.now(),this.res?this.res._dump():this.once("response",(function(e){e._dump()})),this.socket&&this.socket.destroy()},m.prototype.onSocket=function(e){r.nextTick(P,this,e)},m.prototype._deferToConnect=function(e,t,n){var r=this;function i(){e&&r.socket[e].apply(r.socket,t),"function"==typeof n&&n()}var s=function(){r.socket.writable?i():r.socket.once("connect",i)};r.socket?s():r.once("socket",s)},m.prototype.setTimeout=function(e,t){t&&this.once("timeout",t);var n=this;function r(){n.emit("timeout")}if(this.socket&&this.socket.writable)return this.timeoutCb&&this.socket.setTimeout(0,this.timeoutCb),this.timeoutCb=r,this.socket.setTimeout(e,r),this;if(this.timeoutCb=r,this.socket){var i=this.socket;return this.socket.once("connect",(function(){i.setTimeout(e,r)})),this}return this.once("socket",(function(t){t.setTimeout(e,r)})),this},m.prototype.setNoDelay=function(){const e=arguments.length,t=new Array(e);for(var n=0;n{const r=n(772),i=r.methods,s=r.HTTPParser,o=n(3245).FreeList,a=n(7243),h=a.IncomingMessage,c=a.readStart,l=a.readStop,u=n(9539).debuglog("http");t.debug=u,t.CRLF="\r\n",t.chunkExpression=/chunk/i,t.continueExpression=/100-continue/i,t.methods=i;const d=0|s.kOnHeaders,f=0|s.kOnHeadersComplete,p=0|s.kOnBody,g=0|s.kOnMessageComplete,_=0|s.kOnExecute;function m(e,t){(this.maxHeaderPairs<=0||this._headers.length0&&(d=Math.min(d,u.maxHeaderPairs)),u.incoming._addHeaderLines(n,d),"number"==typeof r?u.incoming.method=i[r]:(u.incoming.statusCode=o,u.incoming.statusMessage=a),!c||null===u.outgoing||void 0!==u.outgoing._headers.upgrade&&/(^|\W)upgrade(\W|$)/i.test(u.outgoing._headers.connection)||(c=!1),u.incoming.upgrade=c;var f=0;return c||(f=u.onIncoming(u.incoming,l)),"number"!=typeof f?f?1:0:f}function b(e,t,n){var r=this.incoming;if(r){var i=r.socket;if(n>0&&!r._dumped){var s=e.slice(t,t+n);r.push(s)||l(i)}}}function w(){var e=this,t=e.incoming;if(t){t.complete=!0;var n=e._headers;n&&(e.incoming._addHeaderLines(n,n.length),e._headers=[],e._url=""),t.push(null)}c(e.socket)}var v=new o("parsers",1e3,(function(){var e=new s(s.REQUEST);return e._headers=[],e._url="",e._consumed=!1,e.socket=null,e.incoming=null,e.outgoing=null,e[d]=m,e[f]=y,e[p]=b,e[g]=w,e[_]=null,e}));function k(){this._httpMessage&&this._httpMessage.emit("drain")}function E(e){return e>=94&&e<=122||(e>=65&&e<=90||(45===e||(e>=48&&e<=57||34!==e&&40!==e&&41!==e&&44!==e&&(e>=33&&e<=46||(124===e||126===e)))))}t.parsers=v,t.freeParser=function(e,t,n){e&&(e._headers=[],e.onIncoming=null,e._consumed&&e.unconsume(),e._consumed=!1,e.socket&&(e.socket.parser=null),e.socket=null,e.incoming=null,e.outgoing=null,e[_]=null,!1===v.free(e)&&e.close(),e=null),t&&(t.parser=null),n&&(n.parser=null)},t.httpSocketSetup=function(e){e.removeListener("drain",k),e.on("drain",k)},t._checkIsHttpToken=function(e){if("string"!=typeof e||0===e.length)return!1;if(!E(e.charCodeAt(0)))return!1;const t=e.length;if(t>1){if(!E(e.charCodeAt(1)))return!1;if(t>2){if(!E(e.charCodeAt(2)))return!1;if(t>3){if(!E(e.charCodeAt(3)))return!1;for(var n=4;n255||127===t)return!0;if(e.length<2)return!1;if((t=e.charCodeAt(1))<=31&&9!==t||t>255||127===t)return!0;if(e.length<3)return!1;if((t=e.charCodeAt(2))<=31&&9!==t||t>255||127===t)return!0;for(var n=3;n255||127===t)return!0;return!1}},7243:(e,t,n)=>{const r=n(9539),i=n(1451);function s(e){e&&!e._paused&&e.readable&&e.resume()}function o(e){i.Readable.call(this),this._readableState.readingMore=!0,this.socket=e,this.connection=e,this.httpVersionMajor=null,this.httpVersionMinor=null,this.httpVersion=null,this.complete=!1,this.headers={},this.rawHeaders=[],this.trailers={},this.rawTrailers=[],this.readable=!0,this.upgrade=null,this.url="",this.method=null,this.statusCode=null,this.statusMessage=null,this.client=e,this._consuming=!1,this._dumped=!1}t.readStart=s,t.readStop=function(e){e&&e.pause()},r.inherits(o,i.Readable),t.IncomingMessage=o,o.prototype.setTimeout=function(e,t){return t&&this.on("timeout",t),this.socket.setTimeout(e),this},o.prototype.read=function(e){return this._consuming||(this._readableState.readingMore=!1),this._consuming=!0,this.read=i.Readable.prototype.read,this.read(e)},o.prototype._read=function(e){this.socket.readable&&s(this.socket)},o.prototype.destroy=function(e){this.socket&&this.socket.destroy(e)},o.prototype._addHeaderLines=function(e,t){if(e&&e.length){var n,r;this.complete?(n=this.rawTrailers,r=this.trailers):(n=this.rawHeaders,r=this.headers);for(var i=0;i{var r=n(8768);const i=n(8583).ok,s=n(1451),o=n(5475),a=n(9539),h=a,c=n(8764).Buffer,l=n(2390),u=l.CRLF,d=l.chunkExpression,f=l.debug,p=/^Connection$/i,g=/^Transfer-Encoding$/i,_=/close/i,m=/^Content-Length$/i,y=/^Date$/i,b=/^Expect$/i,w=/^Trailer$/i,v={connection:!0,"content-length":!0,"transfer-encoding":!0,date:!0};var k;function E(){if(!k){var e=new Date;k=e.toUTCString(),o.enroll(E,1e3-e.getMilliseconds()),o._unrefActive(E)}return k}function x(){s.call(this),this.output=[],this.outputEncodings=[],this.outputCallbacks=[],this.outputSize=0,this.writable=!0,this._last=!1,this.chunkedEncoding=!1,this.shouldKeepAlive=!0,this.useChunkedEncodingByDefault=!0,this.sendDate=!1,this._removedHeader={},this._contentLength=null,this._hasBody=!0,this._trailer="",this.finished=!1,this._headerSent=!1,this.socket=null,this.connection=null,this._header=null,this._headers=null,this._headerNames={},this._onPendingData=null}function S(e,t,n,r){if(!l._checkIsHttpToken(n))throw new TypeError('Header name must be a valid HTTP Token ["'+n+'"]');if(!0===l._checkInvalidHeaderChar(r))throw new TypeError("The header content contains invalid characters");t.messageHeader+=n+": "+C(r)+u,p.test(n)?(t.sentConnectionHeader=!0,_.test(r)?e._last=!0:e.shouldKeepAlive=!0):g.test(n)?(t.sentTransferEncodingHeader=!0,d.test(r)&&(e.chunkedEncoding=!0)):m.test(n)?t.sentContentLengthHeader=!0:y.test(n)?t.sentDateHeader=!0:b.test(n)?t.sentExpect=!0:w.test(n)&&(t.sentTrailer=!0)}function T(e,t,n){e.emit("error",t),n&&n(t)}function A(e){e.uncork()}function C(e){return/[\r\n]/.test(e)?e.replace(/[\r\n]+[ \t]*/g,""):e}E._onTimeout=function(){k=void 0},a.inherits(x,s),t.OutgoingMessage=x,x.prototype.setTimeout=function(e,t){return t&&this.on("timeout",t),this.socket?this.socket.setTimeout(e):this.once("socket",(function(t){t.setTimeout(e)})),this},x.prototype.destroy=function(e){this.socket?this.socket.destroy(e):this.once("socket",(function(t){t.destroy(e)}))},x.prototype._send=function(e,t,n){return this._headerSent||("string"==typeof e&&"hex"!==t&&"base64"!==t?e=this._header+e:(this.output.unshift(this._header),this.outputEncodings.unshift("binary"),this.outputCallbacks.unshift(null),this.outputSize+=this._header.length,"function"==typeof this._onPendingData&&this._onPendingData(this._header.length)),this._headerSent=!0),this._writeRaw(e,t,n)},x.prototype._writeRaw=function(e,t,n){"function"==typeof t&&(n=t,t=null);var i=this.connection;if(i&&i._httpMessage===this&&i.writable&&!i.destroyed){if(this.output.length>0)this._flushOutput(i);else if(0===e.length)return"function"==typeof n&&r.nextTick(n),!0;return i.write(e,t,n)}return(!i||!i.destroyed)&&this._buffer(e,t,n)},x.prototype._buffer=function(e,t,n){return this.output.push(e),this.outputEncodings.push(t),this.outputCallbacks.push(n),this.outputSize+=e.length,"function"==typeof this._onPendingData&&this._onPendingData(e.length),!1},x.prototype._storeHeader=function(e,t){var n={sentConnectionHeader:!1,sentContentLengthHeader:!1,sentTransferEncodingHeader:!1,sentDateHeader:!1,sentExpect:!1,sentTrailer:!1,messageHeader:e};if(t)for(var r,i,s=Object.keys(t),o=Array.isArray(t),a=0,h=s.length;a{this.emit("finish")};return r=this._hasBody&&this.chunkedEncoding?this._send("0\r\n"+this._trailer+"\r\n","binary",i):this._send("","binary",i),this.connection&&e&&this.connection.uncork(),this.finished=!0,f("outgoing message end."),0===this.output.length&&this.connection&&this.connection._httpMessage===this&&this._finish(),r},x.prototype._finish=function(){i(this.connection),this.emit("prefinish")},x.prototype._flush=function(){var e,t=this.socket;t&&t.writable&&(e=this._flushOutput(t),this.finished?this._finish():e&&this.emit("drain"))},x.prototype._flushOutput=function(e){var t,n=this.output.length;if(n<=0)return t;var r=this.output,i=this.outputEncodings,s=this.outputCallbacks;e.cork();for(var o=0;o{const r=n(9539),i=n(7460),s=n(772).HTTPParser,o=n(8583).ok,a=n(2390),h=a.parsers,c=a.freeParser,l=a.debug,u=a.CRLF,d=a.continueExpression,f=a.chunkExpression,p=a.httpSocketSetup,g=n(1088).OutgoingMessage,_=t.STATUS_CODES={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"},m=0|s.kOnExecute;function y(e){g.call(this),"HEAD"===e.method&&(this._hasBody=!1),this.sendDate=!0,(e.httpVersionMajor<1||e.httpVersionMinor<1)&&(this.useChunkedEncodingByDefault=f.test(e.headers.te),this.shouldKeepAlive=!1)}function b(){this._httpMessage&&this._httpMessage.emit("close")}function w(e){if(!(this instanceof w))return new w(e);i.Server.call(this,{allowHalfOpen:!0}),e&&this.addListener("request",e),this.httpAllowHalfOpen=!1,this.addListener("connection",v),this.timeout=12e4,this._pendingResponseData=0}function v(e){var t=this,n=[],r=[],i=0;function a(t){if(i+=t,e._paused&&i=e._writableState.highWaterMark)&&(e._paused=!0,e.pause())}var c=new y(s);c._onPendingData=a,c.shouldKeepAlive=h,e._httpMessage?n.push(c):c.assignSocket(e);c.on("finish",(function(){o(0===r.length||r[0]===s),r.shift(),s._consuming||s._readableState.resumeScheduled||s._dump();if(c.detachSocket(e),c._last)e.destroySoon();else{var t=n.shift();t&&t.assignSocket(e)}})),void 0!==s.headers.expect&&1==s.httpVersionMajor&&1==s.httpVersionMinor?d.test(s.headers.expect)?(c._expect_continue=!0,t.listenerCount("checkContinue")>0?t.emit("checkContinue",s,c):(c.writeContinue(),t.emit("request",s,c))):t.listenerCount("checkExpectation")>0?t.emit("checkExpectation",s,c):(c.writeHead(417),c.end()):t.emit("request",s,c);return!1},e.on("end",T),e.on("data",w),e.on("resume",k),e.on("pause",E),e.on("drain",A),e.on=S;var _=e._handle&&e._handle._externalStream;function b(e){this.removeListener("error",b),this.on("error",(()=>{})),t.emit("clientError",e,this)||this.destroy(e)}function w(t){o(!e._paused),l("SERVER socketOnData %d",t.length),v(g.execute(t),t)}function v(n,r){if(n instanceof Error)l("parse error"),b.call(e,n);else if(g.incoming&&g.incoming.upgrade){var i=n,s=g.incoming;l("SERVER upgrade or connect",s.method),r||(r=g.getCurrentBuffer()),e.removeListener("data",w),e.removeListener("end",T),e.removeListener("close",f),x(g,e),g.finish(),c(g,s,null),g=null;var o="CONNECT"===s.method?"connect":"upgrade";if(t.listenerCount(o)>0){l("SERVER have listener for %s",o);var a=r.slice(i,r.length);e._readableState.flowing=null,t.emit(o,s,e,a)}else e.destroy()}e._paused&&e.parser&&(l("pause parser"),e.parser.pause())}function T(){var e=this,r=g.finish();if(r instanceof Error)return l("parse error"),void b.call(e,r);t.httpAllowHalfOpen?n.length?n[n.length-1]._last=!0:e._httpMessage?e._httpMessage._last=!0:e.writable&&e.end():(u(),e.writable&&e.end())}function A(){var t=i>e._writableState.highWaterMark;e._paused&&!t&&(e._paused=!1,e.parser&&e.parser.resume(),e.resume())}_&&(g._consumed=!0,g.consume(_)),_=null,g[m]=function(t,n){e._unrefTimer(),l("SERVER socketOnParserExecute %d",t),v(t,void 0)},e._paused=!1}function k(){this._paused?this.pause():this._handle&&!this._handle.reading&&(this._handle.reading=!0,this._handle.readStart())}function E(){this._handle&&this._handle.reading&&(this._handle.reading=!1,this._handle.readStop())}function x(e,t){t._handle&&(e._consumed&&e.unconsume(t._handle._externalStream),e._consumed=!1,t.removeListener("pause",E),t.removeListener("resume",k))}function S(e,t){var n=i.Socket.prototype.on.call(this,e,t);return this.parser?("data"!==e&&"readable"!==e||x(this.parser,this),n):(this.on=i.Socket.prototype.on,n)}r.inherits(y,g),y.prototype._finish=function(){g.prototype._finish.call(this)},t.ServerResponse=y,y.prototype.statusCode=200,y.prototype.statusMessage=void 0,y.prototype.assignSocket=function(e){o(!e._httpMessage),e._httpMessage=this,e.on("close",b),this.socket=e,this.connection=e,this.emit("socket",e),this._flush()},y.prototype.detachSocket=function(e){o(e._httpMessage===this),e.removeListener("close",b),e._httpMessage=null,this.socket=this.connection=null},y.prototype.writeContinue=function(e){this._writeRaw("HTTP/1.1 100 Continue"+u+u,"ascii",e),this._sent100=!0},y.prototype._implicitHeader=function(){this.writeHead(this.statusCode)},y.prototype.writeHead=function(e,t,n){var r;if("string"==typeof t?this.statusMessage=t:(this.statusMessage=this.statusMessage||_[e]||"unknown",n=t),this.statusCode=e,this._headers){if(n)for(var i=Object.keys(n),s=0;s999)throw new RangeError(`Invalid status code: ${e}`);var a="HTTP/1.1 "+e.toString()+" "+this.statusMessage+u;(204===e||304===e||100<=e&&e<=199)&&(this._hasBody=!1),this._expect_continue&&!this._sent100&&(this.shouldKeepAlive=!1),this._storeHeader(a,r)},y.prototype.writeHeader=function(){this.writeHead.apply(this,arguments)},r.inherits(w,i.Server),w.prototype.setTimeout=function(e,t){return this.timeout=e,t&&this.on("timeout",t),this},t.Server=w,t._connectionListener=v},8669:(e,t,n)=>{const r=n(9539),i=r,s=n(7187);t.IncomingMessage=n(7243).IncomingMessage;const o=n(2390);t.METHODS=o.methods.slice().sort(),t.OutgoingMessage=n(1088).OutgoingMessage;const a=n(2183);t.ServerResponse=a.ServerResponse,t.STATUS_CODES=a.STATUS_CODES;const h=n(5249),c=t.Agent=h.Agent;t.globalAgent=h.globalAgent;const l=n(8762),u=t.ClientRequest=l.ClientRequest;t.request=function(e,t){return new u(e,t)},t.get=function(e,n){var r=t.request(e,n);return r.end(),r},t._connectionListener=a._connectionListener;const d=t.Server=a.Server;function f(e,t){if(!(this instanceof f))return new f(e,t);s.call(this),t=t||"localhost",e=e||80,this.host=t,this.port=e,this.agent=new c({host:t,port:e,maxSockets:1})}t.createServer=function(e){return new d(e)},r.inherits(f,s),f.prototype.request=function(e,t,n){var r=this,i={};i.host=r.host,i.port=r.port,"/"===e[0]&&(n=t,t=e,e="GET"),i.method=e,i.path=t,i.headers=n,i.agent=r.agent;var s=new u(i);return s.on("error",(function(e){r.emit("error",e)})),s.on("socket",(function(e){e.on("end",(function(){if(r._decoder){var e=r._decoder.end();e&&r.emit("data",e)}r.emit("end")}))})),s},t.Client=i.deprecate(f,"http.Client is deprecated."),t.createClient=i.deprecate((function(e,t){return new f(e,t)}),"http.createClient is deprecated. Use http.request instead.")},8583:(e,t,n)=>{var r=n(7418);function i(e,t){if(e===t)return 0;for(var n=e.length,r=t.length,i=0,s=Math.min(n,r);i=0;c--)if(l[c]!==u[c])return!1;for(c=l.length-1;c>=0;c--)if(!b(e[a=l[c]],t[a],n,r))return!1;return!0}(e,t,n,r))}return n?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function v(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function k(e,t,n,r){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&m(i,n,"Missing expected exception"+r);var s="string"==typeof r,a=!e&&i&&!n;if((!e&&o.isError(i)&&s&&v(i,n)||a)&&m(i,n,"Got unwanted exception"+r),e&&i&&n&&!v(i,n)||!e&&i)throw i}d.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return g(_(e.actual),128)+" "+e.operator+" "+g(_(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,i=p(t),s=r.indexOf("\n"+i);if(s>=0){var o=r.indexOf("\n",s+1);r=r.substring(o+1)}this.stack=r}}},o.inherits(d.AssertionError,Error),d.fail=m,d.ok=y,d.equal=function(e,t,n){e!=t&&m(e,t,n,"==",d.equal)},d.notEqual=function(e,t,n){e==t&&m(e,t,n,"!=",d.notEqual)},d.deepEqual=function(e,t,n){b(e,t,!1)||m(e,t,n,"deepEqual",d.deepEqual)},d.deepStrictEqual=function(e,t,n){b(e,t,!0)||m(e,t,n,"deepStrictEqual",d.deepStrictEqual)},d.notDeepEqual=function(e,t,n){b(e,t,!1)&&m(e,t,n,"notDeepEqual",d.notDeepEqual)},d.notDeepStrictEqual=function e(t,n,r){b(t,n,!0)&&m(t,n,r,"notDeepStrictEqual",e)},d.strictEqual=function(e,t,n){e!==t&&m(e,t,n,"===",d.strictEqual)},d.notStrictEqual=function(e,t,n){e===t&&m(e,t,n,"!==",d.notStrictEqual)},d.throws=function(e,t,n){k(!0,e,t,n)},d.doesNotThrow=function(e,t,n){k(!1,e,t,n)},d.ifError=function(e){if(e)throw e},d.strict=r((function e(t,n){t||m(t,!0,n,"==",e)}),d,{equal:d.strictEqual,deepEqual:d.deepStrictEqual,notEqual:d.notStrictEqual,notDeepEqual:d.notDeepStrictEqual}),d.strict.strict=d.strict;var E=Object.keys||function(e){var t=[];for(var n in e)a.call(e,n)&&t.push(n);return t}},6076:e=>{"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},745:(e,t,n)=>{var r=n(8764).Buffer;e.exports=function(e){return e instanceof r}},69:(e,t,n)=>{var r=n(8768),i=/%[sdj%]/g;t.format=function(e){if(!m(e)){for(var t=[],n=0;n=s)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),h=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),p(n)?r.showHidden=n:n&&t._extend(r,n),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=h),l(r,e,r.depth)}function h(e,t){var n=a.styles[t];return n?"["+a.colors[n][0]+"m"+e+"["+a.colors[n][1]+"m":e}function c(e,t){return e}function l(e,n,r){if(e.customInspect&&n&&E(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,e);return m(i)||(i=l(e,i,r)),i}var s=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(m(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(_(t))return e.stylize(""+t,"number");if(p(t))return e.stylize(""+t,"boolean");if(g(t))return e.stylize("null","null")}(e,n);if(s)return s;var o=Object.keys(n),a=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(n)),k(n)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return u(n);if(0===o.length){if(E(n)){var h=n.name?": "+n.name:"";return e.stylize("[Function"+h+"]","special")}if(b(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(v(n))return e.stylize(Date.prototype.toString.call(n),"date");if(k(n))return u(n)}var c,w="",x=!1,S=["{","}"];(f(n)&&(x=!0,S=["[","]"]),E(n))&&(w=" [Function"+(n.name?": "+n.name:"")+"]");return b(n)&&(w=" "+RegExp.prototype.toString.call(n)),v(n)&&(w=" "+Date.prototype.toUTCString.call(n)),k(n)&&(w=" "+u(n)),0!==o.length||x&&0!=n.length?r<0?b(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),c=x?function(e,t,n,r,i){for(var s=[],o=0,a=t.length;o=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0);if(r>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(c,w,S)):S[0]+w+S[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,i,s){var o,a,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?a=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(a=e.stylize("[Setter]","special")),A(r,i)||(o="["+i+"]"),a||(e.seen.indexOf(h.value)<0?(a=g(n)?l(e,h.value,null):l(e,h.value,n-1)).indexOf("\n")>-1&&(a=s?a.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+a.split("\n").map((function(e){return" "+e})).join("\n")):a=e.stylize("[Circular]","special")),y(o)){if(s&&i.match(/^\d+$/))return a;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+a}function f(e){return Array.isArray(e)}function p(e){return"boolean"==typeof e}function g(e){return null===e}function _(e){return"number"==typeof e}function m(e){return"string"==typeof e}function y(e){return void 0===e}function b(e){return w(e)&&"[object RegExp]"===x(e)}function w(e){return"object"==typeof e&&null!==e}function v(e){return w(e)&&"[object Date]"===x(e)}function k(e){return w(e)&&("[object Error]"===x(e)||e instanceof Error)}function E(e){return"function"==typeof e}function x(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(s)&&(s=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!o[e])if(new RegExp("\\b"+e+"\\b","i").test(s)){var n=r.pid;o[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,n,r)}}else o[e]=function(){};return o[e]},t.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=m,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=w,t.isDate=v,t.isError=k,t.isFunction=E,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(745);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function A(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,n;console.log("%s - %s",(e=new Date,n=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":"),[e.getDate(),T[e.getMonth()],n].join(" ")),t.format.apply(t,arguments))},t.inherits=n(6076),t._extend=function(e,t){if(!t||!w(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}},5792:(e,t,n)=>{var r=n(8764).Buffer;function i(e){return r.isBuffer(e)?e:r.from(e.buffer,e.byteOffset,e.byteLength)}e.exports={isBuffer:function(e){return r.isBuffer(e)||e instanceof Uint8Array},isEncoding:function(e){return r.isEncoding(e)},alloc:function(e,t,n){return r.alloc(e,t,n)},allocUnsafe:function(e){return r.allocUnsafe(e)},allocUnsafeSlow:function(e){return r.allocUnsafeSlow(e)},byteLength:function(e,t){return r.byteLength(e,t)},compare:function(e,t){return r.compare(e,t)},concat:function(e,t){return r.concat(e,t)},copy:function(e,t,n,r,s){return i(e).copy(t,n,r,s)},equals:function(e,t){return i(e).equals(t)},fill:function(e,t,n,r,s){return i(e).fill(t,n,r,s)},from:function(e,t,n){return r.from(e,t,n)},includes:function(e,t,n,r){return i(e).includes(t,n,r)},indexOf:function(e,t,n,r){return i(e).indexOf(t,n,r)},lastIndexOf:function(e,t,n,r){return i(e).lastIndexOf(t,n,r)},swap16:function(e){return i(e).swap16()},swap32:function(e){return i(e).swap32()},swap64:function(e){return i(e).swap64()},toBuffer:i,toString:function(e,t,n,r){return i(e).toString(t,n,r)},write:function(e,t,n,r,s){return i(e).write(t,n,r,s)},writeDoubleLE:function(e,t,n){return i(e).writeDoubleLE(t,n)},writeFloatLE:function(e,t,n){return i(e).writeFloatLE(t,n)},writeUInt32LE:function(e,t,n){return i(e).writeUInt32LE(t,n)},writeInt32LE:function(e,t,n){return i(e).writeInt32LE(t,n)},readDoubleLE:function(e,t){return i(e).readDoubleLE(t)},readFloatLE:function(e,t){return i(e).readFloatLE(t)},readUInt32LE:function(e,t){return i(e).readUInt32LE(t)},readInt32LE:function(e,t){return i(e).readInt32LE(t)}}},9742:(e,t)=>{t.byteLength=function(e){var t=a(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,s=a(e),o=s[0],h=s[1],c=new i(function(e,t,n){return 3*(t+n)/4-n}(0,o,h)),l=0,u=h>0?o-4:o;for(n=0;n>16&255,c[l++]=t>>8&255,c[l++]=255&t;2===h&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[l++]=255&t);1===h&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[l++]=t>>8&255,c[l++]=255&t);return c},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,s=[],o=16383,a=0,c=r-i;ac?c:a+o));1===i?(t=e[r-1],s.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],s.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return s.join("")};for(var n=[],r=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)n[o]=s[o],r[s.charCodeAt(o)]=o;function a(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function h(e,t,r){for(var i,s,o=[],a=t;a>18&63]+n[s>>12&63]+n[s>>6&63]+n[63&s]);return o.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},2090:e=>{function t(e,t){if("string"==typeof e[0])return e.join("");if("number"==typeof e[0])return new Uint8Array(e);const n=new Uint8Array(t);let r=0;for(let t=0,i=e.length;t=n){const e=t(o,a);let r=0;for(;a>=n;)yield e.slice(r,r+n),a-=n,r+=n;o=[e.slice(r,e.length)]}a&&(yield t(o,s?n:a))}},8764:(e,t,n)=>{const r=n(9742),i=n(645),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=h,t.SlowBuffer=function(e){+e!=e&&(e=0);return h.alloc(+e)},t.INSPECT_MAX_BYTES=50;const o=2147483647;function a(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,h.prototype),t}function h(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return c(e,t,n)}function c(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!h.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const n=0|g(e,t);let r=a(n);const i=r.write(e,t);i!==n&&(r=r.slice(0,i));return r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(Z(e,Uint8Array)){const t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return d(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(Z(e,ArrayBuffer)||e&&Z(e.buffer,ArrayBuffer))return f(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(Z(e,SharedArrayBuffer)||e&&Z(e.buffer,SharedArrayBuffer)))return f(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return h.from(r,t,n);const i=function(e){if(h.isBuffer(e)){const t=0|p(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||Y(e.length)?a(0):d(e);if("Buffer"===e.type&&Array.isArray(e.data))return d(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return h.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return l(e),a(e<0?0:0|p(e))}function d(e){const t=e.length<0?0:0|p(e.length),n=a(t);for(let r=0;r=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function g(e,t){if(h.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||Z(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return V(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return G(e).length;default:if(i)return r?-1:V(e).length;t=(""+t).toLowerCase(),i=!0}}function _(e,t,n){let r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,n);case"utf8":case"utf-8":return T(this,t,n);case"ascii":return C(this,t,n);case"latin1":case"binary":return I(this,t,n);case"base64":return S(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function m(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}function y(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),Y(n=+n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=h.from(t,r)),h.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,i){let s,o=1,a=e.length,h=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,h/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){let r=-1;for(s=n;sa&&(n=a-h),s=n;s>=0;s--){let n=!0;for(let r=0;ri&&(r=i):r=i;const s=t.length;let o;for(r>s/2&&(r=s/2),o=0;o>8,i=n%256,s.push(i),s.push(r);return s}(t,e.length-n),e,n,r)}function S(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function T(e,t,n){n=Math.min(e.length,n);const r=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+o<=n){let n,r,a,h;switch(o){case 1:t<128&&(s=t);break;case 2:n=e[i+1],128==(192&n)&&(h=(31&t)<<6|63&n,h>127&&(s=h));break;case 3:n=e[i+1],r=e[i+2],128==(192&n)&&128==(192&r)&&(h=(15&t)<<12|(63&n)<<6|63&r,h>2047&&(h<55296||h>57343)&&(s=h));break;case 4:n=e[i+1],r=e[i+2],a=e[i+3],128==(192&n)&&128==(192&r)&&128==(192&a)&&(h=(15&t)<<18|(63&n)<<12|(63&r)<<6|63&a,h>65535&&h<1114112&&(s=h))}}null===s?(s=65533,o=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=o}return function(e){const t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);let n="",r=0;for(;rr.length?(h.isBuffer(t)||(t=h.from(t)),t.copy(r,i)):Uint8Array.prototype.set.call(r,t,i);else{if(!h.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(r,i)}i+=t.length}return r},h.byteLength=g,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tn&&(e+=" ... "),""},s&&(h.prototype[s]=h.prototype.inspect),h.prototype.compare=function(e,t,n,r,i){if(Z(e,Uint8Array)&&(e=h.from(e,e.offset,e.byteLength)),!h.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;let s=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0);const a=Math.min(s,o),c=this.slice(r,i),l=e.slice(t,n);for(let e=0;e>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}const i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let s=!1;for(;;)switch(r){case"hex":return w(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":case"latin1":case"binary":return k(this,e,t,n);case"base64":return E(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const A=4096;function C(e,t,n){let r="";n=Math.min(e.length,n);for(let i=t;ir)&&(n=r);let i="";for(let r=t;rn)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,n,r,i,s){if(!h.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function N(e,t,n,r,i){F(t,r,i,e,n,7);let s=Number(t&BigInt(4294967295));e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,n}function B(e,t,n,r,i){F(t,r,i,e,n,7);let s=Number(t&BigInt(4294967295));e[n+7]=s,s>>=8,e[n+6]=s,s>>=8,e[n+5]=s,s>>=8,e[n+4]=s;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=o,o>>=8,e[n+2]=o,o>>=8,e[n+1]=o,o>>=8,e[n]=o,n+8}function D(e,t,n,r,i,s){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function U(e,t,n,r,s){return t=+t,n>>>=0,s||D(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function M(e,t,n,r,s){return t=+t,n>>>=0,s||D(e,0,n,8),i.write(e,t,n,r,52,8),n+8}h.prototype.slice=function(e,t){const n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||O(e,t,this.length);let r=this[e],i=1,s=0;for(;++s>>=0,t>>>=0,n||O(e,t,this.length);let r=this[e+--t],i=1;for(;t>0&&(i*=256);)r+=this[e+--t]*i;return r},h.prototype.readUint8=h.prototype.readUInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),this[e]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]|this[e+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]<<8|this[e+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},h.prototype.readBigUInt64LE=Q((function(e){z(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||$(e,this.length-8);const r=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(r)+(BigInt(i)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||$(e,this.length-8);const r=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(r)<>>=0,t>>>=0,n||O(e,t,this.length);let r=this[e],i=1,s=0;for(;++s=i&&(r-=Math.pow(2,8*t)),r},h.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||O(e,t,this.length);let r=t,i=1,s=this[e+--r];for(;r>0&&(i*=256);)s+=this[e+--r]*i;return i*=128,s>=i&&(s-=Math.pow(2,8*t)),s},h.prototype.readInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},h.prototype.readInt16LE=function(e,t){e>>>=0,t||O(e,2,this.length);const n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt16BE=function(e,t){e>>>=0,t||O(e,2,this.length);const n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},h.prototype.readInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},h.prototype.readBigInt64LE=Q((function(e){z(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||$(e,this.length-8);const r=this[e+4]+256*this[e+5]+65536*this[e+6]+(n<<24);return(BigInt(r)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||$(e,this.length-8);const r=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(r)<>>=0,t||O(e,4,this.length),i.read(this,e,!0,23,4)},h.prototype.readFloatBE=function(e,t){return e>>>=0,t||O(e,4,this.length),i.read(this,e,!1,23,4)},h.prototype.readDoubleLE=function(e,t){return e>>>=0,t||O(e,8,this.length),i.read(this,e,!0,52,8)},h.prototype.readDoubleBE=function(e,t){return e>>>=0,t||O(e,8,this.length),i.read(this,e,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){L(this,e,t,n,Math.pow(2,8*n)-1,0)}let i=1,s=0;for(this[t]=255&e;++s>>=0,n>>>=0,!r){L(this,e,t,n,Math.pow(2,8*n)-1,0)}let i=n-1,s=1;for(this[t+i]=255&e;--i>=0&&(s*=256);)this[t+i]=e/s&255;return t+n},h.prototype.writeUint8=h.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,1,255,0),this[t]=255&e,t+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},h.prototype.writeBigUInt64LE=Q((function(e,t=0){return N(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=Q((function(e,t=0){return B(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*n-1);L(this,e,t,n,r-1,-r)}let i=0,s=1,o=0;for(this[t]=255&e;++i>0)-o&255;return t+n},h.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*n-1);L(this,e,t,n,r-1,-r)}let i=n-1,s=1,o=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===o&&0!==this[t+i+1]&&(o=1),this[t+i]=(e/s>>0)-o&255;return t+n},h.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},h.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},h.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},h.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},h.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||L(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},h.prototype.writeBigInt64LE=Q((function(e,t=0){return N(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=Q((function(e,t=0){return B(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(e,t,n){return U(this,e,t,!0,n)},h.prototype.writeFloatBE=function(e,t,n){return U(this,e,t,!1,n)},h.prototype.writeDoubleLE=function(e,t,n){return M(this,e,t,!0,n)},h.prototype.writeDoubleBE=function(e,t,n){return M(this,e,t,!1,n)},h.prototype.copy=function(e,t,n,r){if(!h.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i=r+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function F(e,t,n,r,i,s){if(e>n||e3?0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(s+1)}${r}`:`>= -(2${r} ** ${8*(s+1)-1}${r}) and < 2 ** ${8*(s+1)-1}${r}`:`>= ${t}${r} and <= ${n}${r}`,new j.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,n){z(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||$(t,e.length-(n+1))}(r,i,s)}function z(e,t){if("number"!=typeof e)throw new j.ERR_INVALID_ARG_TYPE(t,"number",e)}function $(e,t,n){if(Math.floor(e)!==e)throw z(e,n),new j.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new j.ERR_BUFFER_OUT_OF_BOUNDS;throw new j.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${t}`,e)}H("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),H("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),H("ERR_OUT_OF_RANGE",(function(e,t,n){let r=`The value of "${e}" is out of range.`,i=n;return Number.isInteger(n)&&Math.abs(n)>2**32?i=q(String(n)):"bigint"==typeof n&&(i=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(i=q(i)),i+="n"),r+=` It must be ${t}. Received ${i}`,r}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function V(e,t){let n;t=t||1/0;const r=e.length;let i=null;const s=[];for(let o=0;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&s.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&s.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;s.push(n)}else if(n<2048){if((t-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function G(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,n,r){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function Z(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Y(e){return e!=e}const J=function(){const e="0123456789abcdef",t=new Array(256);for(let n=0;n<16;++n){const r=16*n;for(let i=0;i<16;++i)t[r+i]=e[n]+e[i]}return t}();function Q(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}},9421:(e,t,n)=>{const r=n(7117),i=n(4375);e.exports=class{constructor(e,t){if(this.store=e,this.chunkLength=e.chunkLength,this.inProgressGets=new Map,!this.store||!this.store.get||!this.store.put)throw new Error("First argument must be abstract-chunk-store compliant");this.cache=new r(t)}put(e,t,n=(()=>{})){if(!this.cache)return i((()=>n(new Error("CacheStore closed"))));this.cache.remove(e),this.store.put(e,t,n)}get(e,t,n=(()=>{})){if("function"==typeof t)return this.get(e,null,t);if(!this.cache)return i((()=>n(new Error("CacheStore closed"))));t||(t={});let r=this.cache.get(e);if(r){const e=t.offset||0,s=t.length||r.length-e;return 0===e&&s===r.length||(r=r.slice(e,s+e)),i((()=>n(null,r)))}let s=this.inProgressGets.get(e);const o=!!s;s||(s=[],this.inProgressGets.set(e,s)),s.push({opts:t,cb:n}),o||this.store.get(e,((t,n)=>{t||null==this.cache||this.cache.set(e,n);const r=this.inProgressGets.get(e);this.inProgressGets.delete(e);for(const{opts:e,cb:i}of r)if(t)i(t);else{const t=e.offset||0,r=e.length||n.length-t;let s=n;0===t&&r===n.length||(s=n.slice(t,r+t)),i(null,s)}}))}close(e=(()=>{})){if(!this.cache)return i((()=>e(new Error("CacheStore closed"))));this.cache=null,this.store.close(e)}destroy(e=(()=>{})){if(!this.cache)return i((()=>e(new Error("CacheStore closed"))));this.cache=null,this.store.destroy(e)}}},8025:(e,t,n)=>{var r=n(8764).Buffer;t.Socket=c;var i=n(7187).EventEmitter,s=n(5717),o=n(9059),a=0,h={};function c(e,t){var n=this;if(i.call(n),"string"==typeof e&&(e={type:e}),"udp4"!==e.type)throw new Error("Bad socket type specified. Valid types are: udp4");"function"==typeof t&&n.on("message",t),n._destroyed=!1,n._bindState=a,n._bindTasks=[]}"object"==typeof chrome&&"object"==typeof chrome.runtime&&"string"==typeof chrome.runtime.id&&"object"==typeof chrome.sockets&&"object"==typeof chrome.sockets.udp&&(chrome.sockets.udp.onReceive.addListener((function(e){e.socketId in h?h[e.socketId]._onReceive(e):console.error("Unknown socket id: "+e.socketId)})),chrome.sockets.udp.onReceiveError.addListener((function(e){e.socketId in h?h[e.socketId]._onReceiveError(e.resultCode):console.error("Unknown socket id: "+e.socketId)}))),t.createSocket=function(e,t){return new c(e,t)},s(c,i),c.prototype.bind=function(e,t,n){var r=this;if("function"==typeof t&&(n=t,t=void 0),t||(t="0.0.0.0"),e||(e=0),r._bindState!==a)throw new Error("Socket is already bound");r._bindState=1,"function"==typeof n&&r.once("listening",n),chrome.sockets.udp.create((function(n){r.id=n.socketId,h[r.id]=r;var i=r._bindTasks.map((function(e){return e.fn}));o(i,(function(n){if(n)return r.emit("error",n);chrome.sockets.udp.bind(r.id,t,e,(function(e){e<0?r.emit("error",new Error("Socket "+r.id+" failed to bind. "+chrome.runtime.lastError.message)):chrome.sockets.udp.getInfo(r.id,(function(e){e.localPort&&e.localAddress?(r._port=e.localPort,r._address=e.localAddress,r._bindState=2,r.emit("listening"),r._bindTasks.map((function(e){e.callback()}))):r.emit("error",new Error("Cannot get local port/address for Socket "+r.id))}))}))}))}))},c.prototype._onReceive=function(e){var t=r.from(new Uint8Array(e.data)),n={address:e.remoteAddress,family:"IPv4",port:e.remotePort,size:t.length};this.emit("message",t,n)},c.prototype._onReceiveError=function(e){this.emit("error",new Error("Socket "+this.id+" receive error "+e))},c.prototype.send=function(e,t,n,i,s,o){var h,c=this;if(s||i&&"function"!=typeof i?e=function(e,t,n){if("string"==typeof e)e=r.from(e);else if(!(e instanceof r))throw new TypeError("First argument must be a buffer or string");t>>>=0,n>>>=0;var i=e.buffer;(e.byteOffset||e.byteLength!==i.byteLength)&&(i=i.slice(e.byteOffset,e.byteOffset+e.byteLength));(t||n!==e.length)&&(i=i.slice(t,n));return r.from(i)}(e,t,n):(o=i,i=t,s=n),Array.isArray(e)){if(!(h=function(e){for(var t=new Array(e.length),n=0,i=e.length;n>>=0)||i>65535)throw new RangeError("Port should be > 0 and < 65536");if("function"!=typeof o&&(o=function(){}),c._bindState===a&&c.bind(0),2!==c._bindState)return c._sendQueue||(c._sendQueue=[],c.once("listening",(function(){for(var e=0;e{const{isIPv4:r,isIPv6:i}=n(7460);t.lookup=function e(t,n,s){if("function"==typeof n)return e(t,null,n);chrome.dns.resolve(t,(e=>{if(0!==e.resultCode)return s(new Error("DNS lookup error: "+chrome.runtime.lastError.message));const t=e.address,n=r(t)?4:i(t)?6:0;s(null,t,n)}))}},7460:(e,t,n)=>{var r,i,s=n(8768),o=n(7187),a=n(5717),h=n(1451),c=n(9539).deprecate,l=n(5475),u=n(8764).Buffer,d={},f={};function p(e,t){if(!(this instanceof p))return new p(e,t);if(o.call(this),"function"==typeof e)t=e,e={},this.on("connection",t);else{if(null!=e&&"object"!=typeof e)throw new TypeError("options must be an object");e=e||{},"function"==typeof t&&this.on("connection",t)}this._connections=0,Object.defineProperty(this,"connections",{get:c((()=>this._connections),"Server.connections property is deprecated. Use Server.getConnections method instead."),set:c((e=>this._connections=e),"Server.connections property is deprecated."),configurable:!0,enumerable:!1}),this.id=null,this.connecting=!1,this.allowHalfOpen=e.allowHalfOpen||!1,this.pauseOnConnect=!!e.pauseOnConnect,this._address=null,this._host=null,this._port=null,this._backlog=null}function g(e){e.id||e.connecting||e._connections||e.emit("close")}function _(e){if(!(this instanceof _))return new _(e);if("number"==typeof e?e={fd:e}:void 0===e&&(e={}),e.handle)throw new Error("handle is not supported in Chrome Apps.");if(void 0!==e.fd)throw new Error("fd is not supported in Chrome Apps.");e.decodeStrings=!0,e.objectMode=!1,h.Duplex.call(this,e),this.destroyed=!1,this._hadError=!1,this.id=null,this._parent=null,this._host=null,this._port=null,this._pendingData=null,this.ondata=null,this.onend=null,this._init(),this._reset(),this.allowHalfOpen=e.allowHalfOpen||!1,this.on("finish",this.destroy),e.server&&(this.server=this._server=e.server,this.id=e.id,f[this.id]=this,e.pauseOnCreate&&(this._readableState.flowing=!1),this.connecting=!0,this.writable=!0,this._onConnect())}"object"==typeof chrome&&"object"==typeof chrome.runtime&&"string"==typeof chrome.runtime.id&&"object"==typeof chrome.sockets&&"object"==typeof chrome.sockets.tcpServer&&"object"==typeof chrome.sockets.tcp&&(chrome.sockets.tcpServer.onAccept.addListener((function(e){e.socketId in d?d[e.socketId]._onAccept(e.clientSocketId):console.error("Unknown server socket id: "+e.socketId)})),chrome.sockets.tcpServer.onAcceptError.addListener((function(e){e.socketId in d?d[e.socketId]._onAcceptError(e.resultCode):console.error("Unknown server socket id: "+e.socketId)})),chrome.sockets.tcp.onReceive.addListener((function(e){e.socketId in f?f[e.socketId]._onReceive(e.data):console.error("Unknown socket id: "+e.socketId)})),chrome.sockets.tcp.onReceiveError.addListener((function(e){if(e.socketId in f)f[e.socketId]._onReceiveError(e.resultCode);else{if(-100===e.resultCode)return;console.error("Unknown socket id: "+e.socketId)}}))),t.createServer=function(e,t){return new p(e,t)},t.connect=t.createConnection=function(){const e=arguments.length;for(var t=new Array(e),n=0;n=0)throw new Error("fd is not supported in Chrome Apps.");if(i.backlog&&(r=i.backlog),!("number"==typeof i.port||"string"==typeof i.port||void 0===i.port&&"port"in i))throw i.path&&v(i.path)?new Error("Pipes are not supported in Chrome Apps."):new Error("Invalid listen argument: "+i);t=i.host||null,n=i.port}else{if(v(arguments[0]))throw new Error("Pipes are not supported in Chrome Apps.");t=void 0===arguments[1]||"function"==typeof arguments[1]||"number"==typeof arguments[1]?null:arguments[1]}this.id&&this.close(),function(e){if(void 0!==e&&!k(e))throw new RangeError('"port" argument must be >= 0 and < 65536')}(n),this._port=0|n,this._host=t;var s=!this._host;return s&&(this._host="::"),this._backlog="number"==typeof r?r:void 0,this.connecting=!0,chrome.sockets.tcpServer.create((e=>{if(!this.connecting||this.id)return E(),void chrome.sockets.tcpServer.close(e.socketId);if(chrome.runtime.lastError)this.emit("error",new Error(chrome.runtime.lastError.message));else{var t=this.id=e.socketId;d[this.id]=this;var n=()=>chrome.sockets.tcpServer.listen(this.id,this._host,this._port,this._backlog,(e=>{if(this.id===t)return 0!==e&&s?(E(),this._host="0.0.0.0",s=!1,n()):void this._onListen(e);E()}));n()}})),this},p.prototype._onListen=function(e){if(this.connecting=!1,0===e){var t=this.id;chrome.sockets.tcpServer.getInfo(this.id,(e=>{this.id===t?chrome.runtime.lastError?this._onListen(-2):(this._address={port:e.localPort,family:e.localAddress&&-1!==e.localAddress.indexOf(":")?"IPv6":"IPv4",address:e.localAddress},this.emit("listening")):E()}))}else this.emit("error",C(e,"listen",this._host,this._port)),this.id&&(chrome.sockets.tcpServer.close(this.id),delete d[this.id],this.id=null)},p.prototype._onAccept=function(e){if(this.maxConnections&&this._connections>=this.maxConnections)return chrome.sockets.tcp.close(e),void console.warn("Rejected connection - hit `maxConnections` limit");this._connections+=1;var t=new _({server:this,id:e,allowHalfOpen:this.allowHalfOpen,pauseOnCreate:this.pauseOnConnect});t.on("connect",(()=>this.emit("connection",t)))},p.prototype._onAcceptError=function(e){this.emit("error",A(e,"accept")),this.close()},p.prototype.close=function(e){return"function"==typeof e&&(this.id?this.once("close",e):this.once("close",(()=>e(new Error("Not running"))))),this.id&&(chrome.sockets.tcpServer.close(this.id),delete d[this.id],this.id=null),this._address=null,this.connecting=!1,this._emitCloseIfDrained(),this},p.prototype._emitCloseIfDrained=function(){this.id||this.connecting||this._connections||s.nextTick(g,this)},Object.defineProperty(p.prototype,"listening",{get:function(){return!!this._address},configurable:!0,enumerable:!0}),p.prototype.address=function(){return this._address},p.prototype.unref=p.prototype.ref=function(){return this},p.prototype.getConnections=function(e){s.nextTick(e,null,this._connections)},a(_,h.Duplex),t.Socket=_,_.prototype._init=function(){this.bytesRead=0,this._bytesDispatched=0,this.server=null,this._server=null},_.prototype._reset=function(){this.remoteAddress=this.remotePort=this.localAddress=this.localPort=null,this.remoteFamily="IPv4",this.readable=this.writable=!1,this.connecting=!1},_.prototype.connect=function(){const e=arguments.length;for(var t=new Array(e),n=0;n= 0 and < 65536: '+this._port)}return this._port|=0,this._init(),this._unrefTimer(),"function"==typeof i&&this.once("connect",i),chrome.sockets.tcp.create((e=>{if(!this.connecting||this.id)return E(),void chrome.sockets.tcp.close(e.socketId);chrome.runtime.lastError?this.destroy(new Error(chrome.runtime.lastError.message)):(this.id=e.socketId,f[this.id]=this,chrome.sockets.tcp.setPaused(this.id,!0),chrome.sockets.tcp.connect(this.id,this._host,this._port,(t=>{this.id===e.socketId?0===t?(this._unrefTimer(),this._onConnect()):this.destroy(C(t,"connect",this._host,this._port)):E()})))})),this},_.prototype._onConnect=function(){var e=this.id;chrome.sockets.tcp.getInfo(this.id,(t=>{this.id===e?chrome.runtime.lastError?this.destroy(new Error(chrome.runtime.lastError.message)):(this.remoteAddress=t.peerAddress,this.remoteFamily=t.peerAddress&&-1!==t.peerAddress.indexOf(":")?"IPv6":"IPv4",this.remotePort=t.peerPort,this.localAddress=t.localAddress,this.localPort=t.localPort,this.connecting=!1,this.readable=!0,this.emit("connect"),this.isPaused()||this.read(0)):E()}))},Object.defineProperty(_.prototype,"bufferSize",{get:function(){if(this.id){var e=this._writableState.length;return this._pendingData&&(e+=this._pendingData.length),e}}}),_.prototype.end=function(e,t){h.Duplex.prototype.end.call(this,e,t),this.writable=!1},_.prototype._write=function(e,t,n){if(n||(n=()=>{}),this.connecting)return this._pendingData=e,void this.once("connect",(()=>this._write(e,t,n)));if(this._pendingData=null,this.id){var r=e.buffer;e.byteLength!==r.byteLength&&(r=r.slice(e.byteOffset,e.byteOffset+e.byteLength));var i=this.id;chrome.sockets.tcp.send(this.id,r,(e=>{this.id===i?e.resultCode<0?this._destroy(C(e.resultCode,"write",this.remoteAddress,this.remotePort),n):(this._unrefTimer(),n(null)):E()})),this._bytesDispatched+=e.length}else n(new Error("This socket is closed"))},_.prototype._read=function(e){if(!this.connecting&&this.id){chrome.sockets.tcp.setPaused(this.id,!1);var t=this.id;chrome.sockets.tcp.getInfo(this.id,(e=>{this.id===t?!chrome.runtime.lastError&&e.connected||this._onReceiveError(-15):E()}))}else this.once("connect",(()=>this._read(e)))},_.prototype._onReceive=function(e){var t=u.from(e),n=this.bytesRead;this.bytesRead+=t.length,this._unrefTimer(),this.ondata&&(console.error("socket.ondata = func is non-standard, use socket.on('data', func)"),this.ondata(t,n,this.bytesRead)),this.push(t)||chrome.sockets.tcp.setPaused(this.id,!0)},_.prototype._onReceiveError=function(e){-100===e?(this.onend&&(console.error("socket.onend = func is non-standard, use socket.on('end', func)"),this.once("end",this.onend)),this.push(null),this.destroy()):e<0&&this.destroy(A(e,"read"))},r="bytesWritten",i=function(){if(this.id)return this._bytesDispatched+this.bufferSize},Object.defineProperty(_.prototype,r,{configurable:!1,enumerable:!0,get:i}),_.prototype.destroy=function(e){this._destroy(e)},_.prototype._destroy=function(e,t){var n=()=>{t&&t(e),e&&!this._writableState.errorEmitted&&(s.nextTick(S,this,e),this._writableState.errorEmitted=!0)};if(this.destroyed)n();else{this._server&&(this._server._connections-=1,this._server._emitCloseIfDrained&&this._server._emitCloseIfDrained()),this._reset();for(var r=this;null!==r;r=r._parent)l.unenroll(r);this.destroyed=!0,this.id&&(delete f[this.id],chrome.sockets.tcp.close(this.id,(()=>{this.destroyed&&this.emit("close",!!e)})),this.id=null),n()}},_.prototype.destroySoon=function(){this.writable&&this.end(),this._writableState.finished&&this.destroy()},_.prototype.setTimeout=function(e,t){return 0===e?(l.unenroll(this),t&&this.removeListener("timeout",t)):(l.enroll(this,e),l._unrefActive(this),t&&this.once("timeout",t)),this},_.prototype._onTimeout=function(){this.emit("timeout")},_.prototype._unrefTimer=function(){for(var e=this;null!==e;e=e._parent)l._unrefActive(e)},_.prototype.setNoDelay=function(e,t){return this.id?(e=void 0===e||!!e,chrome.sockets.tcp.setNoDelay(this.id,e,x(t)),this):(this.once("connect",(()=>this.setNoDelay(e,t))),this)},_.prototype.setKeepAlive=function(e,t,n){return this.id?(chrome.sockets.tcp.setKeepAlive(this.id,!!e,~~(t/1e3),x(n)),this):(this.once("connect",(()=>this.setKeepAlive(e,t,n))),this)},_.prototype.address=function(){return{address:this.localAddress,port:this.localPort,family:this.localAddress&&-1!==this.localAddress.indexOf(":")?"IPv6":"IPv4"}},Object.defineProperty(_.prototype,"_connecting",{get:function(){return this.connecting}}),Object.defineProperty(_.prototype,"readyState",{get:function(){return this.connecting?"opening":this.readable&&this.writable?"open":"closed"}}),_.prototype.unref=_.prototype.ref=function(){return this};var m=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,y=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;function b(e){var t={};if(null!==e[0]&&"object"==typeof e[0])t=e[0];else{if(v(e[0]))throw new Error("Pipes are not supported in Chrome Apps.");t.port=e[0],"string"==typeof e[1]&&(t.host=e[1])}var n=e[e.length-1];return"function"==typeof n?[t,n]:[t]}function w(e){return(e=Number(e))>=0&&e}function v(e){return"string"==typeof e&&!1===w(e)}function k(e){return!("number"!=typeof e&&"string"!=typeof e||"string"==typeof e&&0===e.trim().length)&&(+e==+e>>>0&&e<=65535)}function E(){chrome.runtime.lastError}function x(e){return()=>{var t;chrome.runtime.lastError&&(console.error(chrome.runtime.lastError.message),t=new Error(chrome.runtime.lastError.message)),e&&e(t)}}function S(e,t){e.emit("error",t)}t.isIPv4=m.test.bind(m),t.isIPv6=y.test.bind(y),t.isIP=function(e){return t.isIPv4(e)?4:t.isIPv6(e)?6:0};var T={"-10":"EACCES","-22":"EACCES","-138":"EACCES","-147":"EADDRINUSE","-108":"EADDRNOTAVAIL","-103":"ECONNABORTED","-102":"ECONNREFUSED","-101":"ECONNRESET","-16":"EEXIST","-8":"EFBIG","-109":"EHOSTUNREACH","-4":"EINVAL","-23":"EISCONN","-6":"ENOENT","-13":"ENOMEM","-106":"ENONET","-18":"ENOSPC","-11":"ENOSYS","-15":"ENOTCONN","-105":"ENOTFOUND","-118":"ETIMEDOUT","-100":"EOF"};function A(e,t,n){var r=T[e]||"UNKNOWN",i=t+" "+e+" "+n;chrome.runtime.lastError&&(i+=" "+chrome.runtime.lastError.message),i+=" (mapped uv code: "+r+")";var s=new Error(i);return s.code=s.errno=r,s.syscall=t,s}function C(e,t,n,r,i){var s;s=r&&r>0?n+":"+r:n,i&&(s+=" - Local ("+i+")");var o=A(e,t,s);return o.address=n,r&&(o.port=r),o}},6313:(e,t,n)=>{var r=n(8764).Buffer,i=function(){function e(e,t){return null!=t&&e instanceof t}var t,n,i;try{t=Map}catch(e){t=function(){}}try{n=Set}catch(e){n=function(){}}try{i=Promise}catch(e){i=function(){}}function s(o,h,c,l,u){"object"==typeof h&&(c=h.depth,l=h.prototype,u=h.includeNonEnumerable,h=h.circular);var d=[],f=[],p=void 0!==r;return void 0===h&&(h=!0),void 0===c&&(c=1/0),function o(c,g){if(null===c)return null;if(0===g)return c;var _,m;if("object"!=typeof c)return c;if(e(c,t))_=new t;else if(e(c,n))_=new n;else if(e(c,i))_=new i((function(e,t){c.then((function(t){e(o(t,g-1))}),(function(e){t(o(e,g-1))}))}));else if(s.__isArray(c))_=[];else if(s.__isRegExp(c))_=new RegExp(c.source,a(c)),c.lastIndex&&(_.lastIndex=c.lastIndex);else if(s.__isDate(c))_=new Date(c.getTime());else{if(p&&r.isBuffer(c))return _=r.allocUnsafe?r.allocUnsafe(c.length):new r(c.length),c.copy(_),_;e(c,Error)?_=Object.create(c):void 0===l?(m=Object.getPrototypeOf(c),_=Object.create(m)):(_=Object.create(l),m=l)}if(h){var y=d.indexOf(c);if(-1!=y)return f[y];d.push(c),f.push(_)}for(var b in e(c,t)&&c.forEach((function(e,t){var n=o(t,g-1),r=o(e,g-1);_.set(n,r)})),e(c,n)&&c.forEach((function(e){var t=o(e,g-1);_.add(t)})),c){var w;m&&(w=Object.getOwnPropertyDescriptor(m,b)),w&&null==w.set||(_[b]=o(c[b],g-1))}if(Object.getOwnPropertySymbols){var v=Object.getOwnPropertySymbols(c);for(b=0;b{var r=n(6512),i=function(e){switch(e.length){case 6:return e[0]+"."+e[1]+"."+e[2]+"."+e[3]+":"+e.readUInt16BE(4);case 18:for(var t=[],n=0;n<8;n++)t.push(e.readUInt16BE(2*n).toString(16));return"["+r.parse(t.join(":")).toString()+"]:"+e.readUInt16BE(16);default:throw new Error("Invalid Compact IP/PORT, It should contain 6 or 18 bytes")}};i.multi=function(e){if(e.length%6!=0)throw new Error("buf length isn't multiple of compact IP/PORTs (6 bytes)");for(var t=[],n=0;n<=e.length-1;n+=6)t.push(i(e.slice(n,n+6)));return t},i.multi6=function(e){if(e.length%18!=0)throw new Error("buf length isn't multiple of compact IP6/PORTs (18 bytes)");for(var t=[],n=0;n<=e.length-1;n+=18)t.push(i(e.slice(n,n+18)));return t},e.exports=i},9648:e=>{e.exports=function(){for(var e=navigator.hardwareConcurrency||1,t=[],n=0;n{var r=n(8768);t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(i=r))})),t.splice(i,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==r&&"env"in r&&(e=r.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=n(2447)(t);const{formatters:i}=e.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},2447:(e,t,n)=>{e.exports=function(e){function t(e){let n,i,s,o=null;function a(...e){if(!a.enabled)return;const r=a,i=Number(new Date),s=i-(n||i);r.diff=s,r.prev=n,r.curr=i,n=i,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let o=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,i)=>{if("%%"===n)return"%";o++;const s=t.formatters[i];if("function"==typeof s){const t=e[o];n=s.call(r,t),e.splice(o,1),o--}return n})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=r,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==o?o:(i!==t.namespaces&&(i=t.namespaces,s=t.enabled(e)),s),set:e=>{o=e}}),"function"==typeof t.init&&t.init(a),a}function r(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),i=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const{Transform:r,PassThrough:i}=n(1451),s=n(8128),o=n(6344);e.exports=e=>{const t=(e.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(t))return e;const n="br"===t;if(n&&"function"!=typeof s.createBrotliDecompress)return e.destroy(new Error("Brotli is not supported on Node.js < 12")),e;let a=!0;const h=new r({transform(e,t,n){a=!1,n(null,e)},flush(e){e()}}),c=new i({autoDestroy:!1,destroy(t,n){e.destroy(),n(t)}}),l=n?s.createBrotliDecompress():s.createUnzip();return l.once("error",(t=>{!a||e.readable?c.destroy(t):c.end()})),o(e,c),e.pipe(h).pipe(l).pipe(c),c}},2840:(e,t,n)=>{var r=n(8768),i=n(778),s=function(){},o=function(e,t,n){if("function"==typeof t)return o(e,null,t);t||(t={}),n=i(n||s);var a=e._writableState,h=e._readableState,c=t.readable||!1!==t.readable&&e.readable,l=t.writable||!1!==t.writable&&e.writable,u=!1,d=function(){e.writable||f()},f=function(){l=!1,c||n.call(e)},p=function(){c=!1,l||n.call(e)},g=function(t){n.call(e,t?new Error("exited with error code: "+t):null)},_=function(t){n.call(e,t)},m=function(){r.nextTick(y)},y=function(){if(!u)return(!c||h&&h.ended&&!h.destroyed)&&(!l||a&&a.ended&&!a.destroyed)?void 0:n.call(e,new Error("premature close"))},b=function(){e.req.on("finish",f)};return!function(e){return e.setHeader&&"function"==typeof e.abort}(e)?l&&!a&&(e.on("end",d),e.on("close",d)):(e.on("complete",f),e.on("abort",m),e.req?b():e.on("request",b)),function(e){return e.stdio&&Array.isArray(e.stdio)&&3===e.stdio.length}(e)&&e.on("exit",g),e.on("end",p),e.on("finish",f),!1!==t.error&&e.on("error",_),e.on("close",m),function(){u=!0,e.removeListener("complete",f),e.removeListener("abort",m),e.removeListener("request",b),e.req&&e.req.removeListener("finish",f),e.removeListener("end",d),e.removeListener("close",d),e.removeListener("finish",f),e.removeListener("exit",g),e.removeListener("end",p),e.removeListener("error",_),e.removeListener("close",m)}};e.exports=o},2114:e=>{function t(e,t){for(const n in t)Object.defineProperty(e,n,{value:t[n],enumerable:!0,configurable:!0});return e}e.exports=function(e,n,r){if(!e||"string"==typeof e)throw new TypeError("Please pass an Error to err-code");r||(r={}),"object"==typeof n&&(r=n,n=""),n&&(r.code=n);try{return t(e,r)}catch(n){r.message=e.message,r.stack=e.stack;const i=function(){};i.prototype=Object.create(Object.getPrototypeOf(e));return t(new i,r)}}},5573:e=>{var t=/["'&<>]/;e.exports=function(e){var n,r=""+e,i=t.exec(r);if(!i)return r;var s="",o=0,a=0;for(o=i.index;o{var t=Object.create||function(e){var t=function(){};return t.prototype=e,new t},n=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return n},r=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function i(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=t(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}e.exports=i,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._maxListeners=void 0;var s,o=10;try{var a={};Object.defineProperty&&Object.defineProperty(a,"x",{value:0}),s=0===a.x}catch(e){s=!1}function h(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function c(e,n,r,i){var s,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((o=e._events)?(o.newListener&&(e.emit("newListener",n,r.listener?r.listener:r),o=e._events),a=o[n]):(o=e._events=t(null),e._eventsCount=0),a){if("function"==typeof a?a=o[n]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&(s=h(e))&&s>0&&a.length>s){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+' "'+String(n)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');c.name="MaxListenersExceededWarning",c.emitter=e,c.type=n,c.count=a.length,"object"==typeof console&&console.warn&&console.warn("%s: %s",c.name,c.message)}}else a=o[n]=r,++e._eventsCount;return e}function l(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t1&&(t=arguments[1]),t instanceof Error)throw t;var h=new Error('Unhandled "error" event. ('+t+")");throw h.context=t,h}if(!(n=o[e]))return!1;var c="function"==typeof n;switch(r=arguments.length){case 1:!function(e,t,n){if(t)e.call(n);else for(var r=e.length,i=p(e,r),s=0;s=0;o--)if(r[o]===n||r[o].listener===n){a=r[o].listener,s=o;break}if(s<0)return this;0===s?r.shift():function(e,t){for(var n=t,r=n+1,i=e.length;r=0;s--)this.removeListener(e,r[s]);return this},i.prototype.listeners=function(e){return d(this,e,!0)},i.prototype.rawListeners=function(e){return d(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},i.prototype.listenerCount=f,i.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},3975:e=>{e.exports=class{constructor(e){if(!(e>0)||0!=(e-1&e))throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return void 0===this.buffer[this.top]&&(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){const e=this.buffer[this.btm];if(void 0!==e)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}peek(){return this.buffer[this.btm]}isEmpty(){return void 0===this.buffer[this.btm]}}},1607:(e,t,n)=>{const r=n(3975);e.exports=class{constructor(e){this.hwm=e||16,this.head=new r(this.hwm),this.tail=this.head,this.length=0}push(e){if(this.length++,!this.head.push(e)){const t=this.head;this.head=t.next=new r(2*this.head.buffer.length),this.head.push(e)}}shift(){0!==this.length&&this.length--;const e=this.tail.shift();if(void 0===e&&this.tail.next){const e=this.tail.next;return this.tail.next=null,this.tail=e,this.tail.shift()}return e}peek(){return this.tail.peek()}isEmpty(){return this.head.isEmpty()}}},3811:()=>{"undefined"==typeof ReadableStream||ReadableStream.prototype[Symbol.asyncIterator]||(ReadableStream.prototype[Symbol.asyncIterator]=function(){const e=this.getReader();let t=e.read();return{next(){const n=t;return t=e.read(),n},return(){t.then((()=>e.releaseLock()))},throw(e){throw this.return(),e},[Symbol.asyncIterator](){return this}}})},3245:e=>{var t=function(){function e(e,t,n){this.name=e,this.max=t,this.constructor=null!=n?n:function(){},this.list=[]}return e.prototype.alloc=function(){return this.list.length?this.list.shift():this.constructor.apply(this,arguments)},e.prototype.free=function(e){return this.list.length{e.exports=function(){if("undefined"==typeof globalThis)return null;var e={RTCPeerConnection:globalThis.RTCPeerConnection||globalThis.mozRTCPeerConnection||globalThis.webkitRTCPeerConnection,RTCSessionDescription:globalThis.RTCSessionDescription||globalThis.mozRTCSessionDescription||globalThis.webkitRTCSessionDescription,RTCIceCandidate:globalThis.RTCIceCandidate||globalThis.mozRTCIceCandidate||globalThis.webkitRTCIceCandidate};return e.RTCPeerConnection?e:null}},772:(e,t,n)=>{var r=n(8583);function i(e){r.ok(e===i.REQUEST||e===i.RESPONSE),this.type=e,this.state=e+"_LINE",this.info={headers:[],upgrade:!1},this.trailers=[],this.line="",this.isChunked=!1,this.connection="",this.headerSize=0,this.body_bytes=null,this.isUserCall=!1,this.hadError=!1}t.HTTPParser=i,i.encoding="ascii",i.maxHeaderSize=81920,i.REQUEST="REQUEST",i.RESPONSE="RESPONSE";var s=i.kOnHeaders=0,o=i.kOnHeadersComplete=1,a=i.kOnBody=2,h=i.kOnMessageComplete=3;i.prototype[s]=i.prototype[o]=i.prototype[a]=i.prototype[h]=function(){};var c=!0;Object.defineProperty(i,"kOnExecute",{get:function(){return c=!1,4}});var l=t.methods=i.methods=["DELETE","GET","HEAD","POST","PUT","CONNECT","OPTIONS","TRACE","COPY","LOCK","MKCOL","MOVE","PROPFIND","PROPPATCH","SEARCH","UNLOCK","BIND","REBIND","UNBIND","ACL","REPORT","MKACTIVITY","CHECKOUT","MERGE","M-SEARCH","NOTIFY","SUBSCRIBE","UNSUBSCRIBE","PATCH","PURGE","MKCALENDAR","LINK","UNLINK"],u=l.indexOf("CONNECT");i.prototype.reinitialize=i,i.prototype.close=i.prototype.pause=i.prototype.resume=i.prototype.free=function(){},i.prototype._compatMode0_11=!1,i.prototype.getAsyncId=function(){return 0};var d={REQUEST_LINE:!0,RESPONSE_LINE:!0,HEADER:!0};i.prototype.execute=function(e,t,n){if(!(this instanceof i))throw new TypeError("not a HTTPParser");t=t||0,n="number"==typeof n?n:e.length,this.chunk=e,this.offset=t;var r=this.end=t+n;try{for(;this.offseti.maxHeaderSize)?new Error("max header size exceeded"):n};var f={REQUEST_LINE:!0,RESPONSE_LINE:!0,BODY_RAW:!0};i.prototype.finish=function(){if(!this.hadError)return f[this.state]?void("BODY_RAW"===this.state&&this.userCall()(this[h]())):new Error("invalid state for EOF")},i.prototype.consume=i.prototype.unconsume=i.prototype.getCurrentBuffer=function(){},i.prototype.userCall=function(){this.isUserCall=!0;var e=this;return function(t){return e.isUserCall=!1,t}},i.prototype.nextRequest=function(){this.userCall()(this[h]()),this.reinitialize(this.type)},i.prototype.consumeLine=function(){for(var e=this.end,t=this.chunk,n=this.offset;n0&&this.info.versionMinor>0){if(-1!==this.connection.indexOf("close"))return!1}else if(-1===this.connection.indexOf("keep-alive"))return!1;return!(null===this.body_bytes&&!this.isChunked)},i.prototype.HEADER=function(){var e=this.consumeLine();if(void 0!==e){var t=this.info;if(e)this.parseHeader(e,t.headers);else{for(var n,r,s=t.headers,a=!1,h=!1,l=0;l{var r=n(8764).Buffer;const i=n(3029),s=n(7187).EventEmitter,o=n(4375);e.exports=class extends s{constructor(e,t){if(t||(t={}),super(),this.chunkLength=Number(e),!this.chunkLength)throw new Error("First argument must be a chunk length");this.closed=!1,this.destroyed=!1,this.length=Number(t.length)||1/0,this.name=t.name||"idb-chunk-store",this.length!==1/0&&(this.lastChunkLength=this.length%this.chunkLength||this.chunkLength,this.lastChunkIndex=Math.ceil(this.length/this.chunkLength)-1),this.dbPromise=i.openDB(this.name,void 0,{upgrade:e=>{e.createObjectStore("chunks")},blocking:()=>{this.close()},terminated:()=>{this.closed=!0,this.emit("error",new Error("Database unexpectedly closed"))}})}put(e,t,n=(()=>{})){if(this.closed)return o((()=>n(new Error("Storage is closed"))));const r=e===this.lastChunkIndex;return r&&t.length!==this.lastChunkLength?o((()=>n(new Error("Last chunk length must be "+this.lastChunkLength)))):r||t.length===this.chunkLength?(0===(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)).byteOffset&&t.byteLength===t.buffer.byteLength||(t=t.slice()),void(async()=>{try{const n=await this.dbPromise;await n.put("chunks",t,e)}catch(e){return void n(e)}n(null)})()):o((()=>n(new Error("Chunk length must be "+this.chunkLength))))}get(e,t,n=(()=>{})){return"function"==typeof t?this.get(e,{},t):(t||(t={}),this.closed?o((()=>n(new Error("Storage is closed")))):void(async()=>{let i;try{const t=await this.dbPromise;i=await t.get("chunks",e)}catch(e){return void n(e)}if(null==i){const e=new Error("Chunk not found");return e.notFound=!0,void n(e)}let s=r.from(i.buffer,i.byteOffset,i.byteLength);const o=t.offset||0,a=t.length||s.length-o;0===o&&a===s.length||(s=s.slice(o,a+o)),n(null,s)})())}close(e=(()=>{})){if(this.closed)return o((()=>e(new Error("Storage is closed"))));this.closed=!0,(async()=>{try{(await this.dbPromise).close()}catch(t){return void e(t)}e(null)})()}destroy(e=(()=>{})){return this.closed?o((()=>e(new Error("Storage is closed")))):this.destroyed?o((()=>e(new Error("Storage is destroyed")))):(this.destroyed=!0,void this.close((async t=>{if(t)e(t);else{try{await i.deleteDB(this.name)}catch(t){return void e(t)}e(null)}})))}}},3029:(e,t,n)=>{n.r(t),n.d(t,{deleteDB:()=>m,openDB:()=>_,unwrap:()=>g,wrap:()=>p});const r=(e,t)=>t.some((t=>e instanceof t));let i,s;const o=new WeakMap,a=new WeakMap,h=new WeakMap,c=new WeakMap,l=new WeakMap;let u={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return a.get(e);if("objectStoreNames"===t)return e.objectStoreNames||h.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return p(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function d(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(s||(s=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(g(this),t),p(o.get(this))}:function(...t){return p(e.apply(g(this),t))}:function(t,...n){const r=e.call(g(this),t,...n);return h.set(r,t.sort?t.sort():[t]),p(r)}}function f(e){return"function"==typeof e?d(e):(e instanceof IDBTransaction&&function(e){if(a.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",s),e.removeEventListener("abort",s)},i=()=>{t(),r()},s=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",s),e.addEventListener("abort",s)}));a.set(e,t)}(e),r(e,i||(i=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,u):e)}function p(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",s)},i=()=>{t(p(e.result)),r()},s=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",s)}));return t.then((t=>{t instanceof IDBCursor&&o.set(t,e)})).catch((()=>{})),l.set(t,e),t}(e);if(c.has(e))return c.get(e);const t=f(e);return t!==e&&(c.set(e,t),l.set(t,e)),t}const g=e=>l.get(e);function _(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(e,t),a=p(o);return r&&o.addEventListener("upgradeneeded",(e=>{r(p(o.result),e.oldVersion,e.newVersion,p(o.transaction))})),n&&o.addEventListener("blocked",(()=>n())),a.then((e=>{s&&e.addEventListener("close",(()=>s())),i&&e.addEventListener("versionchange",(()=>i()))})).catch((()=>{})),a}function m(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",(()=>t())),p(n).then((()=>{}))}const y=["get","getKey","getAll","getAllKeys","count"],b=["put","add","delete","clear"],w=new Map;function v(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(w.get(t))return w.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=b.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!y.includes(n))return;const s=async function(e,...t){const s=this.transaction(e,i?"readwrite":"readonly");let o=s.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&s.done]))[0]};return w.set(t,s),s}u=(e=>({...e,get:(t,n,r)=>v(t,n)||e.get(t,n,r),has:(t,n)=>!!v(t,n)||e.has(t,n)}))(u)},645:(e,t)=>{t.read=function(e,t,n,r,i){var s,o,a=8*i-r-1,h=(1<>1,l=-7,u=n?i-1:0,d=n?-1:1,f=e[t+u];for(u+=d,s=f&(1<<-l)-1,f>>=-l,l+=a;l>0;s=256*s+e[t+u],u+=d,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=r;l>0;o=256*o+e[t+u],u+=d,l-=8);if(0===s)s=1-c;else{if(s===h)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,r),s-=c}return(f?-1:1)*o*Math.pow(2,s-r)},t.write=function(e,t,n,r,i,s){var o,a,h,c=8*s-i-1,l=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:s-1,p=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(h=Math.pow(2,-o))<1&&(o--,h*=2),(t+=o+u>=1?d/h:d*Math.pow(2,1-u))*h>=2&&(o++,h/=2),o+u>=l?(a=0,o=l):o+u>=1?(a=(t*h-1)*Math.pow(2,i),o+=u):(a=t*Math.pow(2,u-1)*Math.pow(2,i),o=0));i>=8;e[n+f]=255&a,f+=p,a/=256,i-=8);for(o=o<0;e[n+f]=255&o,f+=p,o/=256,c-=8);e[n+f-p]|=128*g}},3700:(e,t,n)=>{const r=n(4375);e.exports=class{constructor(e){if(this.store=e,this.chunkLength=e.chunkLength,!this.store||!this.store.get||!this.store.put)throw new Error("First argument must be abstract-chunk-store compliant");this.mem=[]}put(e,t,n=(()=>{})){this.mem[e]=t,this.store.put(e,t,(t=>{this.mem[e]=null,n(t)}))}get(e,t,n=(()=>{})){if("function"==typeof t)return this.get(e,null,t);let i=this.mem[e];if(!i)return this.store.get(e,t,n);t||(t={});const s=t.offset||0,o=t.length||i.length-s;0===s&&o===i.length||(i=i.slice(s,o+s)),r((()=>n(null,i)))}close(e=(()=>{})){this.store.close(e)}destroy(e=(()=>{})){this.store.destroy(e)}}},5717:e=>{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},6512:function(e){!function(t){const n="(0?\\d+|0x[a-f0-9]+)",r={fourOctet:new RegExp(`^${n}\\.${n}\\.${n}\\.${n}$`,"i"),threeOctet:new RegExp(`^${n}\\.${n}\\.${n}$`,"i"),twoOctet:new RegExp(`^${n}\\.${n}$`,"i"),longValue:new RegExp(`^${n}$`,"i")},i=new RegExp("^0[0-7]+$","i"),s=new RegExp("^0x[a-f0-9]+$","i"),o="%[0-9a-z]{1,}",a="(?:[0-9a-f]+::?)+",h={zoneIndex:new RegExp(o,"i"),native:new RegExp(`^(::)?(${a})?([0-9a-f]+)?(::)?(${o})?$`,"i"),deprecatedTransitional:new RegExp(`^(?:::)(${n}\\.${n}\\.${n}\\.${n}(${o})?)$`,"i"),transitional:new RegExp(`^((?:${a})|(?:::)(?:${a})?)${n}\\.${n}\\.${n}\\.${n}(${o})?$`,"i")};function c(e,t){if(e.indexOf("::")!==e.lastIndexOf("::"))return null;let n,r,i=0,s=-1,o=(e.match(h.zoneIndex)||[])[0];for(o&&(o=o.substring(1),e=e.replace(/%.+$/,""));(s=e.indexOf(":",s+1))>=0;)i++;if("::"===e.substr(0,2)&&i--,"::"===e.substr(-2,2)&&i--,i>t)return null;for(r=t-i,n=":";r--;)n+="0:";return":"===(e=e.replace("::",n))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){const t=e.split(":"),n=[];for(let e=0;e0;){if(i=n-r,i<0&&(i=0),e[s]>>i!=t[s]>>i)return!1;r-=n,s+=1}return!0}function u(e){if(s.test(e))return parseInt(e,16);if("0"===e[0]&&!isNaN(parseInt(e[1],10))){if(i.test(e))return parseInt(e,8);throw new Error(`ipaddr: cannot parse ${e} as octal`)}return parseInt(e,10)}function d(e,t){for(;e.length=0;r-=1){if(i=this.octets[r],!(i in n))return null;if(s=n[i],t&&0!==s)return null;8!==s&&(t=!0),e+=s}return 32-e},e.prototype.range=function(){return f.subnetMatch(this,this.SpecialRanges)},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.toIPv4MappedAddress=function(){return f.IPv6.parse(`::ffff:${this.toString()}`)},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toString=function(){return this.octets.join(".")},e}(),f.IPv4.broadcastAddressFromCIDR=function(e){try{const t=this.parseCIDR(e),n=t[0].toByteArray(),r=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[];let s=0;for(;s<4;)i.push(parseInt(n[s],10)|255^parseInt(r[s],10)),s++;return new this(i)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},f.IPv4.isIPv4=function(e){return null!==this.parser(e)},f.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},f.IPv4.isValidFourPartDecimal=function(e){return!(!f.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},f.IPv4.networkAddressFromCIDR=function(e){let t,n,r,i,s;try{for(t=this.parseCIDR(e),r=t[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[],n=0;n<4;)i.push(parseInt(r[n],10)&parseInt(s[n],10)),n++;return new this(i)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},f.IPv4.parse=function(e){const t=this.parser(e);if(null===t)throw new Error("ipaddr: string is not formatted like an IPv4 Address");return new this(t)},f.IPv4.parseCIDR=function(e){let t;if(t=e.match(/^(.+)\/(\d+)$/)){const e=parseInt(t[2]);if(e>=0&&e<=32){const n=[this.parse(t[1]),e];return Object.defineProperty(n,"toString",{value:function(){return this.join("/")}}),n}}throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},f.IPv4.parser=function(e){let t,n,i;if(t=e.match(r.fourOctet))return function(){const e=t.slice(1,6),r=[];for(let t=0;t4294967295||i<0)throw new Error("ipaddr: address outside defined range");return function(){const e=[];let t;for(t=0;t<=24;t+=8)e.push(i>>t&255);return e}().reverse()}return(t=e.match(r.twoOctet))?function(){const e=t.slice(1,4),n=[];if(i=u(e[1]),i>16777215||i<0)throw new Error("ipaddr: address outside defined range");return n.push(u(e[0])),n.push(i>>16&255),n.push(i>>8&255),n.push(255&i),n}():(t=e.match(r.threeOctet))?function(){const e=t.slice(1,5),n=[];if(i=u(e[2]),i>65535||i<0)throw new Error("ipaddr: address outside defined range");return n.push(u(e[0])),n.push(u(e[1])),n.push(i>>8&255),n.push(255&i),n}():null},f.IPv4.subnetMaskFromPrefixLength=function(e){if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");const t=[0,0,0,0];let n=0;const r=Math.floor(e/8);for(;n=0;s-=1){if(r=this.parts[s],!(r in n))return null;if(i=n[r],t&&0!==i)return null;16!==i&&(t=!0),e+=i}return 128-e},e.prototype.range=function(){return f.subnetMatch(this,this.SpecialRanges)},e.prototype.toByteArray=function(){let e;const t=[],n=this.parts;for(let r=0;r>8),t.push(255&e);return t},e.prototype.toFixedLengthString=function(){const e=function(){const e=[];for(let t=0;t>8,255&t,n>>8,255&n])},e.prototype.toNormalizedString=function(){const e=function(){const e=[];for(let t=0;ti&&(r=n.index,i=n[0].length);return i<0?t:`${t.substring(0,r)}::${t.substring(r+i)}`},e.prototype.toString=function(){return this.toRFC5952String()},e}(),f.IPv6.broadcastAddressFromCIDR=function(e){try{const t=this.parseCIDR(e),n=t[0].toByteArray(),r=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[];let s=0;for(;s<16;)i.push(parseInt(n[s],10)|255^parseInt(r[s],10)),s++;return new this(i)}catch(e){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`)}},f.IPv6.isIPv6=function(e){return null!==this.parser(e)},f.IPv6.isValid=function(e){if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{const t=this.parser(e);return new this(t.parts,t.zoneId),!0}catch(e){return!1}},f.IPv6.networkAddressFromCIDR=function(e){let t,n,r,i,s;try{for(t=this.parseCIDR(e),r=t[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[],n=0;n<16;)i.push(parseInt(r[n],10)&parseInt(s[n],10)),n++;return new this(i)}catch(e){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`)}},f.IPv6.parse=function(e){const t=this.parser(e);if(null===t.parts)throw new Error("ipaddr: string is not formatted like an IPv6 Address");return new this(t.parts,t.zoneId)},f.IPv6.parseCIDR=function(e){let t,n,r;if((n=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(n[2]),t>=0&&t<=128))return r=[this.parse(n[1]),t],Object.defineProperty(r,"toString",{value:function(){return this.join("/")}}),r;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},f.IPv6.parser=function(e){let t,n,r,i,s,o;if(r=e.match(h.deprecatedTransitional))return this.parser(`::ffff:${r[1]}`);if(h.native.test(e))return c(e,8);if((r=e.match(h.transitional))&&(o=r[6]||"",t=c(r[1].slice(0,-1)+o,6),t.parts)){for(s=[parseInt(r[2]),parseInt(r[3]),parseInt(r[4]),parseInt(r[5])],n=0;n128)throw new Error("ipaddr: invalid IPv6 prefix length");const t=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];let n=0;const r=Math.floor(e/8);for(;n{var r=n(8991);function i(e){return r.existsSync(e)&&r.statSync(e).isFile()}e.exports=function(e,t){if(!t)return i(e);r.stat(e,(function(e,n){return e?t(e):t(null,n.isFile())}))},e.exports.sync=i},8225:e=>{e.exports=async function*(e){for(let t of e)"function"==typeof t&&(t=t()),yield*t}},1351:(e,t)=>{t.re=()=>{throw new Error("`junk.re` was renamed to `junk.regex`")},t.regex=new RegExp(["^npm-debug\\.log$","^\\..*\\.swp$","^\\.DS_Store$","^\\.AppleDouble$","^\\.LSOverride$","^Icon\\r$","^\\._.*","^\\.Spotlight-V100(?:$|\\/)","\\.Trashes","^__MACOSX$","~$","^Thumbs\\.db$","^ehthumbs\\.db$","^Desktop\\.ini$","@eaDir$"].join("|")),t.is=e=>t.regex.test(e),t.not=e=>!t.is(e),t.default=e.exports},9507:(e,t,n)=>{const r=n(1798),{EventEmitter:i}=n(7187);function s(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0,r=e.length;nt.vectorClock?e:t}static distance(e,t){let n=0,r=0;const i=Math.min(e.length,t.length),s=Math.max(e.length,t.length);for(;r=0?(this._update(n,r,e),this):n.contacts.length0&&n.length[this.distance(t.id,e),t])).sort(((e,t)=>e[0]-t[0])).slice(0,t).map((e=>e[1]))}count(){let e=0;for(const t=[this.root];t.length>0;){const n=t.pop();null===n.contacts?t.push(n.right,n.left):e+=n.contacts.length}return e}_determineNode(e,t,n){const r=n>>3,i=n%8;if(t.length<=r&&0!==i)return e.left;return t[r]&1<<7-i?e.right:e.left}get(e){o("id",e);let t=0,n=this.root;for(;null===n.contacts;)n=this._determineNode(n,e,t++);const r=this._indexOf(n,e);return r>=0?n.contacts[r]:null}_indexOf(e,t){for(let n=0;n=0){const e=n.contacts.splice(r,1)[0];this.emit("removed",e)}return this}_split(e,t){e.left={contacts:[],dontSplit:!1,left:null,right:null},e.right={contacts:[],dontSplit:!1,left:null,right:null};for(const n of e.contacts)this._determineNode(e,n.id,t).contacts.push(n);e.contacts=null;const n=this._determineNode(e,this.localNodeId,t);(e.left===n?e.right:e.left).dontSplit=!0}toArray(){let e=[];for(const t=[this.root];t.length>0;){const n=t.pop();null===n.contacts?t.push(n.right,n.left):e=e.concat(n.contacts)}return e}*toIterable(){for(const e=[this.root];e.length>0;){const t=e.pop();null===t.contacts?e.push(t.right,t.left):yield*t.contacts}}_update(e,t,n){if(!s(e.contacts[t].id,n.id))throw new Error("wrong index for _update");const r=e.contacts[t],i=this.arbiter(r,n);i===r&&r!==n||(e.contacts.splice(t,1),e.contacts.push(i),this.emit("updated",r,i))}}e.exports=a},4475:(e,t,n)=>{var r=n(8764).Buffer,i=n(8025),s=n(5450),o=n(7460).isIP,a=n(5813),h=n(9539),c=n(7187),l=new Error("Query timed out");l.code="ETIMEDOUT";var u=new Error("Unexpected node id");function d(e){if(!(this instanceof d))return new d(e);e||(e={});var t=this;this.timeout=e.timeout||2e3,this.inflight=0,this.destroyed=!1,this.isIP=e.isIP||o,this.socket=e.socket||i.createSocket("udp4"),this.socket.on("message",(function(e,n){if(t.destroyed)return;if(!n.port)return;try{var i=s.decode(e)}catch(e){return t.emit("warning",e)}var o=i&&i.y&&i.y.toString();if("r"===o||"e"===o){if(!r.isBuffer(i.t))return;try{var a=i.t.readUInt16BE(0)}catch(d){return t.emit("warning",d)}var h=t._ids.indexOf(a);if(-1===h||0===a)return t.emit("response",i,n),void t.emit("warning",new Error("Unexpected transaction id: "+a));var c=t._reqs[h];if(c.peer.host!==n.address)return t.emit("response",i,n),void t.emit("warning",new Error("Out of order response"));if(t._ids[h]=0,t._reqs[h]=null,t.inflight--,"e"===o){var l=Array.isArray(i.e),d=new Error(l?i.e.join(" "):"Unknown error");return d.code=l&&i.e.length&&"number"==typeof i.e[0]?i.e[0]:0,c.callback(d,i,n,c.message),t.emit("update"),void t.emit("postupdate")}var f=i.r&&i.r.id;if(c.peer&&c.peer.id&&f&&!c.peer.id.equals(f))return c.callback(u,null,n),t.emit("update"),void t.emit("postupdate");c.callback(null,i,n,c.message),t.emit("update"),t.emit("postupdate"),t.emit("response",i,n)}else"q"===o?t.emit("query",i,n):t.emit("warning",new Error("Unknown type: "+o))})),this.socket.on("error",(function(e){"EACCES"===e.code||"EADDRINUSE"===e.code?t.emit("error",e):t.emit("warning",e)})),this.socket.on("listening",(function(){t.emit("listening")})),this._tick=0,this._ids=[],this._reqs=[],this._timer=setInterval((function(){var e=t.inflight;if(!e)return;for(var n=0;n-1&&this._cancel(n,t)},d.prototype._cancel=function(e,t){var n=this._reqs[e];this._ids[e]=0,this._reqs[e]=null,n&&(this.inflight--,n.callback(t||new Error("Query was cancelled"),null,n.peer),this.emit("update"),this.emit("postupdate"))},d.prototype._resolveAndQuery=function(e,t,n){var r=this;a.lookup(e.host,(function(i,s){return i?n(i):r.destroyed?n(new Error("k-rpc-socket is destroyed")):void r.query({host:s,port:e.port},t,n)}))}},1167:(e,t,n)=>{var r=n(8764).Buffer;function i(e,t,n){let r=0,i=1;for(let s=t;s=48)r=10*r+(n-48);else if(s!==t||43!==n){if(s!==t||45!==n){if(46===n)break;throw new Error("not a number: buffer["+s+"] = "+n)}i=-1}}return r*i}function s(e,t,n,i){return null==e||0===e.length?null:("number"!=typeof t&&null==i&&(i=t,t=void 0),"number"!=typeof n&&null==i&&(i=n,n=void 0),s.position=0,s.encoding=i||null,s.data=r.isBuffer(e)?e.slice(t,n):r.from(e),s.bytes=s.data.length,s.next())}s.bytes=0,s.position=0,s.data=null,s.encoding=null,s.next=function(){switch(s.data[s.position]){case 100:return s.dictionary();case 108:return s.list();case 105:return s.integer();default:return s.buffer()}},s.find=function(e){let t=s.position;const n=s.data.length,r=s.data;for(;t{var r=n(8764).Buffer;const{getType:i}=n(4697);function s(e,t,n){const i=[];let o=null;return s._encode(i,e),o=r.concat(i),s.bytes=o.length,r.isBuffer(t)?(o.copy(t,n),t):o}s.bytes=-1,s._floatConversionDetected=!1,s._encode=function(e,t){if(null!=t)switch(i(t)){case"buffer":s.buffer(e,t);break;case"object":s.dict(e,t);break;case"map":s.dictMap(e,t);break;case"array":s.list(e,t);break;case"set":s.listSet(e,t);break;case"string":s.string(e,t);break;case"number":case"boolean":s.number(e,t);break;case"arraybufferview":s.buffer(e,r.from(t.buffer,t.byteOffset,t.byteLength));break;case"arraybuffer":s.buffer(e,r.from(t))}};const o=r.from("e"),a=r.from("d"),h=r.from("l");s.buffer=function(e,t){e.push(r.from(t.length+":"),t)},s.string=function(e,t){e.push(r.from(r.byteLength(t)+":"+t))},s.number=function(e,t){const n=2147483648,i=(t/n<<0)*n+(t%n<<0);e.push(r.from("i"+i+"e")),i===t||s._floatConversionDetected||(s._floatConversionDetected=!0,console.warn('WARNING: Possible data corruption detected with value "'+t+'":','Bencoding only defines support for integers, value was converted to "'+i+'"'),console.trace())},s.dict=function(e,t){e.push(a);let n,r=0;const i=Object.keys(t).sort(),h=i.length;for(;r{var r=n(8764).Buffer;const{digitCount:i,getType:s}=n(4697);function o(e){if(null==e)return 0;const t=s(e);switch(t){case"buffer":return i(e.length)+1+e.length;case"arraybufferview":return function(e){const t=e.byteLength-e.byteOffset;return i(t)+1+t}(e);case"string":return function(e){const t=r.byteLength(e);return i(t)+1+t}(e);case"array":case"set":return function(e){let t=2;for(const n of e)t+=o(n);return t}(e);case"number":return 1+i(Math.floor(e))+1;case"bigint":return 1+e.toString().length+1;case"object":return function(e){let t=2;const n=Object.keys(e);for(let s=0;s{const r=e.exports;r.encode=n(2507),r.decode=n(1167),r.byteLength=r.encodingLength=n(1089)},4697:(e,t,n)=>{var r=n(8764).Buffer;const i=e.exports;i.digitCount=function(e){const t=e<0?1:0;return e=Math.abs(Number(e||1)),Math.floor(Math.log10(e))+1+t},i.getType=function(e){return r.isBuffer(e)?"buffer":ArrayBuffer.isView(e)?"arraybufferview":Array.isArray(e)?"array":e instanceof Number?"number":e instanceof Boolean?"boolean":e instanceof Set?"set":e instanceof Map?"map":e instanceof String?"string":e instanceof ArrayBuffer?"arraybuffer":typeof e}},3996:(e,t,n)=>{var r=n(8768),i=n(8764).Buffer,s=n(4475),o=n(9507),a=n(7187),h=n(1798),c=n(9539),l=[{host:"router.bittorrent.com",port:6881},{host:"router.utorrent.com",port:6881},{host:"dht.transmissionbt.com",port:6881}];function u(e){if(!(this instanceof u))return new u(e);e||(e={});var t,n=this;function r(e,t){if(e&&d(e.id,n._idLength)&&!e.id.equals(n.id)){var r=n.nodes.get(e.id);if(r)return void(r.seen=Date.now());n._addNode({id:e.id,host:t.address||t.host,port:t.port,distance:0,seen:Date.now()})}}this._idLength=e.idLength||20,this.id=function(e){if(i.isBuffer(e))return e;if(ArrayBuffer.isView(e))return i.from(e.buffer,e.byteOffset,e.byteLength);if("string"==typeof e)return i.from(e,"hex");throw new Error("Pass a buffer or a string")}(e.id||e.nodeId||h(this._idLength)),this.socket=e.krpcSocket||s(e),this.bootstrap=!1===(t=e.nodes||e.bootstrap)?[]:!0===t?l:[].concat(t||l).map(p),this.concurrency=e.concurrency||16,this.backgroundConcurrency=e.backgroundConcurrency||this.concurrency/4|0,this.k=e.k||20,this.destroyed=!1,this.pending=[],this.nodes=null,this.socket.setMaxListeners(0),this.socket.on("query",(function(e,t){r(e.a,t),n.emit("query",e,t)})),this.socket.on("response",(function(e,t){r(e.r,t)})),this.socket.on("warning",(function(e){n.emit("warning",e)})),this.socket.on("error",(function(e){n.emit("error",e)})),this.socket.on("update",(function(){for(;n.pending.length&&n.socket.inflight=300&&e.code<400&&(a=e):o++,e||i||n&&!1===n(t,h)&&(i=!0),--s||r(o?null:a||new Error("All queries failed"),o)}},u.prototype.query=function(e,t,n){this.socket.inflight>=this.concurrency?this.pending.push([e,t,n]):(t.a||(t.a={}),t.a.id||(t.a.id=this.id),e.token&&(t.a.token=e.token),this.socket.query(e,t,n))},u.prototype.destroy=function(e){this.destroyed=!0,this.socket.destroy(e)},u.prototype.clear=function(){var e=this;this.nodes=new o({localNodeId:this.id,numberOfNodesPerKBucket:this.k,numberOfNodesToPing:this.concurrency}),this.nodes.on("ping",(function(t,n){e.emit("ping",t,(function(t){t&&(t.id&&e.nodes.remove(t.id),e._addNode(n))}))}))},u.prototype.populate=function(e,t,n){this._closest(e,t,!0,null,n)},u.prototype.closest=function(e,t,n,r){this._closest(e,t,!1,n,r)},u.prototype._addNode=function(e){var t=this.nodes.get(e.id);this.nodes.add(e),t||this.emit("node",e)},u.prototype._closest=function(e,t,n,i,s){s||(s=g);var a=this,h=0,c={},l=0,u=!0,p=!1;t.a||(t.a={}),t.a.id||(t.a.id=this.id);var _=new o({localNodeId:e,numberOfNodesPerKBucket:this.k,numberOfNodesToPing:this.concurrency}),m=n?"postupdate":"update";function y(){if(!(a.destroyed||a.socket.inflight>=a.concurrency)){var i=a.pending.length+a.socket.inflight-l;if(!(n&&a.socket.inflight>=a.backgroundConcurrency&&i)){var s=_.closest(e,a.k);(!s.length||s.length=a.concurrency)return;var h=s[o],d=h.host+":"+h.port;c[d]||(c[d]=!0,l++,a.socket.query(h,t,w))}l||(a.socket.removeListener(m,y),r.nextTick(b))}}}function b(){s(null,h)}function w(e,t,n){l--,n&&(c[(n.address||n.host)+":"+n.port]=!0),n&&n.id&&a.nodes.get(n.id)&&(!e||"EUNEXPECTEDNODE"!==e.code&&"ETIMEDOUT"!==e.code||a.nodes.remove(n.id));var r=t&&t.r;if(!r)return y();!e&&d(r.id,a._idLength)&&(h++,v({id:r.id,port:n.port,host:n.host||n.address,distance:0}));for(var s=r.nodes?function(e,t){var n=[];try{for(var r=0;r{function t(e){}e.exports=function(e){var n=null,r=null,i=null,s=null;return function(e,n){s=e,o(n||t)};function o(t){if(r)return n||(n=[]),void n.push(t);var i=s;s=null,r=t,e(i,a)}function a(e){var s=r,a=i;if(i=null,r=null,n&&(i=n,n=null,o(t)),a)for(var h=0;h{t.RateLimiter=n(1114),t.TokenBucket=n(4976)},6188:(e,t,n)=>{var r=n(8768);e.exports=function(){if(void 0!==r&&r.hrtime){var e=r.hrtime(),t=e[0],n=e[1];return 1e3*t+Math.floor(n/1e6)}return(new Date).getTime()}},1114:(e,t,n)=>{var r=n(8768),i=n(4976),s=n(6188),o=function(e,t,n){this.tokenBucket=new i(e,e,t,null),this.tokenBucket.content=e,this.curIntervalStart=s(),this.tokensThisInterval=0,this.fireImmediately=n};o.prototype={tokenBucket:null,curIntervalStart:0,tokensThisInterval:0,fireImmediately:!1,removeTokens:function(e,t){if(e>this.tokenBucket.bucketSize)return r.nextTick(t.bind(null,"Requested tokens "+e+" exceeds maximum tokens per interval "+this.tokenBucket.bucketSize,null)),!1;var n=this,i=s();if((i=this.tokenBucket.interval)&&(this.curIntervalStart=i,this.tokensThisInterval=0),e>this.tokenBucket.tokensPerInterval-this.tokensThisInterval){if(this.fireImmediately)r.nextTick(t.bind(null,null,-1));else{var o=Math.ceil(this.curIntervalStart+this.tokenBucket.interval-i);setTimeout((function(){n.tokenBucket.removeTokens(e,a)}),o)}return!1}return this.tokenBucket.removeTokens(e,a);function a(r,i){if(r)return t(r,null);n.tokensThisInterval+=e,t(null,i)}},tryRemoveTokens:function(e){if(e>this.tokenBucket.bucketSize)return!1;var t=s();if((t=this.tokenBucket.interval)&&(this.curIntervalStart=t,this.tokensThisInterval=0),e>this.tokenBucket.tokensPerInterval-this.tokensThisInterval)return!1;var n=this.tokenBucket.tryRemoveTokens(e);return n&&(this.tokensThisInterval+=e),n},getTokensRemaining:function(){return this.tokenBucket.drip(),this.tokenBucket.content}},e.exports=o},4976:(e,t,n)=>{var r=n(8768),i=function(e,t,n,r){if(this.bucketSize=e,this.tokensPerInterval=t,"string"==typeof n)switch(n){case"sec":case"second":this.interval=1e3;break;case"min":case"minute":this.interval=6e4;break;case"hr":case"hour":this.interval=36e5;break;case"day":this.interval=864e5;break;default:throw new Error("Invaid interval "+n)}else this.interval=n;this.parentBucket=r,this.content=0,this.lastDrip=+new Date};i.prototype={bucketSize:1,tokensPerInterval:1,interval:1e3,parentBucket:null,content:0,lastDrip:0,removeTokens:function(e,t){var n=this;return this.bucketSize?e>this.bucketSize?(r.nextTick(t.bind(null,"Requested tokens "+e+" exceeds bucket size "+this.bucketSize,null)),!1):(this.drip(),e>this.content?i():this.parentBucket?this.parentBucket.removeTokens(e,(function(r,s){return r?t(r,null):e>n.content?i():(n.content-=e,void t(null,Math.min(s,n.content)))})):(this.content-=e,r.nextTick(t.bind(null,null,this.content)),!0)):(r.nextTick(t.bind(null,null,e,Number.POSITIVE_INFINITY)),!0);function i(){var r=Math.ceil((e-n.content)*(n.interval/n.tokensPerInterval));return setTimeout((function(){n.removeTokens(e,t)}),r),!1}},tryRemoveTokens:function(e){return!this.bucketSize||!(e>this.bucketSize)&&(this.drip(),!(e>this.content)&&(!(this.parentBucket&&!this.parentBucket.tryRemoveTokens(e))&&(this.content-=e,!0)))},drip:function(){if(this.tokensPerInterval){var e=+new Date,t=Math.max(e-this.lastDrip,0);this.lastDrip=e;var n=t*(this.tokensPerInterval/this.interval);this.content=Math.min(this.content+n,this.bucketSize)}else this.content=this.bucketSize}},e.exports=i},7117:(e,t,n)=>{var r=n(7187),i=n(5717);function s(e){if(!(this instanceof s))return new s(e);"number"==typeof e&&(e={max:e}),e||(e={}),r.EventEmitter.call(this),this.cache={},this.head=this.tail=null,this.length=0,this.max=e.max||1e3,this.maxAge=e.maxAge||0}e.exports=s,i(s,r.EventEmitter),Object.defineProperty(s.prototype,"keys",{get:function(){return Object.keys(this.cache)}}),s.prototype.clear=function(){this.cache={},this.head=this.tail=null,this.length=0},s.prototype.remove=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];return delete this.cache[e],this._unlink(e,t.prev,t.next),t.value}},s.prototype._unlink=function(e,t,n){this.length--,0===this.length?this.head=this.tail=null:this.head===e?(this.head=t,this.cache[this.head].next=null):this.tail===e?(this.tail=n,this.cache[this.tail].prev=null):(this.cache[t].next=n,this.cache[n].prev=t)},s.prototype.peek=function(e){if(this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return t.value}},s.prototype.set=function(e,t){var n;if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){if((n=this.cache[e]).value=t,this.maxAge&&(n.modified=Date.now()),e===this.head)return t;this._unlink(e,n.prev,n.next)}else n={value:t,modified:0,next:null,prev:null},this.maxAge&&(n.modified=Date.now()),this.cache[e]=n,this.length===this.max&&this.evict();return this.length++,n.next=null,n.prev=this.head,this.head&&(this.cache[this.head].next=e),this.head=e,this.tail||(this.tail=e),t},s.prototype._checkAge=function(e,t){return!(this.maxAge&&Date.now()-t.modified>this.maxAge)||(this.remove(e),this.emit("evict",{key:e,value:t.value}),!1)},s.prototype.get=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return this.head!==e&&(e===this.tail?(this.tail=t.next,this.cache[this.tail].prev=null):this.cache[t.prev].next=t.next,this.cache[t.next].prev=t.prev,this.cache[this.head].next=e,t.prev=this.head,t.next=null,this.head=e),t.value}},s.prototype.evict=function(){if(this.tail){var e=this.tail,t=this.remove(this.tail);this.emit("evict",{key:e,value:t})}}},1191:(e,t,n)=>{e.exports=i;const r=n(4375);function i(e,t){if(!(this instanceof i))return new i(e,t);if(t||(t={}),this.chunkLength=Number(e),!this.chunkLength)throw new Error("First argument must be a chunk length");this.chunks=[],this.closed=!1,this.length=Number(t.length)||1/0,this.length!==1/0&&(this.lastChunkLength=this.length%this.chunkLength||this.chunkLength,this.lastChunkIndex=Math.ceil(this.length/this.chunkLength)-1)}i.prototype.put=function(e,t,n=(()=>{})){if(this.closed)return r((()=>n(new Error("Storage is closed"))));const i=e===this.lastChunkIndex;return i&&t.length!==this.lastChunkLength?r((()=>n(new Error("Last chunk length must be "+this.lastChunkLength)))):i||t.length===this.chunkLength?(this.chunks[e]=t,void r((()=>n(null)))):r((()=>n(new Error("Chunk length must be "+this.chunkLength))))},i.prototype.get=function(e,t,n=(()=>{})){if("function"==typeof t)return this.get(e,null,t);if(this.closed)return r((()=>n(new Error("Storage is closed"))));let i=this.chunks[e];if(!i){const e=new Error("Chunk not found");return e.notFound=!0,r((()=>n(e)))}t||(t={});const s=t.offset||0,o=t.length||i.length-s;0===s&&o===i.length||(i=i.slice(s,o+s)),r((()=>n(null,i)))},i.prototype.close=i.prototype.destroy=function(e=(()=>{})){if(this.closed)return r((()=>e(new Error("Storage is closed"))));this.closed=!0,this.chunks=null,r((()=>e(null)))}},9146:e=>{function t(){this._types=Object.create(null),this._extensions=Object.create(null);for(let e=0;e{let r=n(9146);e.exports=new r(n(4415))},4415:e=>{e.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["es","ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avif":["avif"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/hsj2":["hsj2"],"image/ief":["ief"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]}},6344:e=>{const t=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];e.exports=(e,n)=>{if(n._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");const r=new Set(Object.keys(e).concat(t)),i={};for(const t of r)t in n||(i[t]={get(){const n=e[t];return"function"==typeof n?n.bind(e):n},set(n){e[t]=n},enumerable:!0,configurable:!1});return Object.defineProperties(n,i),e.once("aborted",(()=>{n.destroy(),n.emit("aborted")})),e.once("close",(()=>{e.complete&&n.readable?n.once("end",(()=>{n.emit("close")})):n.emit("close")})),n}},7824:e=>{var t=1e3,n=60*t,r=60*n,i=24*r,s=7*i,o=365.25*i;function a(e,t,n,r){var i=t>=1.5*n;return Math.round(e/n)+" "+r+(i?"s":"")}e.exports=function(e,h){h=h||{};var c=typeof e;if("string"===c&&e.length>0)return function(e){if((e=String(e)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!a)return;var h=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return h*o;case"weeks":case"week":case"w":return h*s;case"days":case"day":case"d":return h*i;case"hours":case"hour":case"hrs":case"hr":case"h":return h*r;case"minutes":case"minute":case"mins":case"min":case"m":return h*n;case"seconds":case"second":case"secs":case"sec":case"s":return h*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return h;default:return}}(e);if("number"===c&&isFinite(e))return h.long?function(e){var s=Math.abs(e);if(s>=i)return a(e,s,i,"day");if(s>=r)return a(e,s,r,"hour");if(s>=n)return a(e,s,n,"minute");if(s>=t)return a(e,s,t,"second");return e+" ms"}(e):function(e){var s=Math.abs(e);if(s>=i)return Math.round(e/i)+"d";if(s>=r)return Math.round(e/r)+"h";if(s>=n)return Math.round(e/n)+"m";if(s>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},7418:e=>{var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,i){for(var s,o,a=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),h=1;h{var r=n(2479);function i(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function s(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},n=e.name||"Function wrapped with `once`";return t.onceError=n+" shouldn't be called more than once",t.called=!1,t}e.exports=r(i),e.exports.strict=r(s),i.proto=i((function(){Object.defineProperty(Function.prototype,"once",{value:function(){return i(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return s(this)},configurable:!0})}))},6470:(e,t,n)=>{var r=n(8768);function i(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function s(e,t){for(var n,r="",i=0,s=-1,o=0,a=0;a<=e.length;++a){if(a2){var h=r.lastIndexOf("/");if(h!==r.length-1){-1===h?(r="",i=0):i=(r=r.slice(0,h)).length-1-r.lastIndexOf("/"),s=a,o=0;continue}}else if(2===r.length||1===r.length){r="",i=0,s=a,o=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(s+1,a):r=e.slice(s+1,a),i=a-s-1;s=a,o=0}else 46===n&&-1!==o?++o:o=-1}return r}var o={resolve:function(){for(var e,t="",n=!1,o=arguments.length-1;o>=-1&&!n;o--){var a;o>=0?a=arguments[o]:(void 0===e&&(e=r.cwd()),a=e),i(a),0!==a.length&&(t=a+"/"+t,n=47===a.charCodeAt(0))}return t=s(t,!n),n?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(e){if(i(e),0===e.length)return".";var t=47===e.charCodeAt(0),n=47===e.charCodeAt(e.length-1);return 0!==(e=s(e,!t)).length||t||(e="."),e.length>0&&n&&(e+="/"),t?"/"+e:e},isAbsolute:function(e){return i(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,t=0;t0&&(void 0===e?e=n:e+="/"+n)}return void 0===e?".":o.normalize(e)},relative:function(e,t){if(i(e),i(t),e===t)return"";if((e=o.resolve(e))===(t=o.resolve(t)))return"";for(var n=1;nc){if(47===t.charCodeAt(a+u))return t.slice(a+u+1);if(0===u)return t.slice(a+u)}else s>c&&(47===e.charCodeAt(n+u)?l=u:0===u&&(l=0));break}var d=e.charCodeAt(n+u);if(d!==t.charCodeAt(a+u))break;47===d&&(l=u)}var f="";for(u=n+l+1;u<=r;++u)u!==r&&47!==e.charCodeAt(u)||(0===f.length?f+="..":f+="/..");return f.length>0?f+t.slice(a+l):(a+=l,47===t.charCodeAt(a)&&++a,t.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(i(e),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,r=-1,s=!0,o=e.length-1;o>=1;--o)if(47===(t=e.charCodeAt(o))){if(!s){r=o;break}}else s=!1;return-1===r?n?"/":".":n&&1===r?"//":e.slice(0,r)},basename:function(e,t){if(void 0!==t&&"string"!=typeof t)throw new TypeError('"ext" argument must be a string');i(e);var n,r=0,s=-1,o=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var a=t.length-1,h=-1;for(n=e.length-1;n>=0;--n){var c=e.charCodeAt(n);if(47===c){if(!o){r=n+1;break}}else-1===h&&(o=!1,h=n+1),a>=0&&(c===t.charCodeAt(a)?-1==--a&&(s=n):(a=-1,s=h))}return r===s?s=h:-1===s&&(s=e.length),e.slice(r,s)}for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!o){r=n+1;break}}else-1===s&&(o=!1,s=n+1);return-1===s?"":e.slice(r,s)},extname:function(e){i(e);for(var t=-1,n=0,r=-1,s=!0,o=0,a=e.length-1;a>=0;--a){var h=e.charCodeAt(a);if(47!==h)-1===r&&(s=!1,r=a+1),46===h?-1===t?t=a:1!==o&&(o=1):-1!==t&&(o=-1);else if(!s){n=a+1;break}}return-1===t||-1===r||0===o||1===o&&t===r-1&&t===n+1?"":e.slice(t,r)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+e+r:r}("/",e)},parse:function(e){i(e);var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n,r=e.charCodeAt(0),s=47===r;s?(t.root="/",n=1):n=0;for(var o=-1,a=0,h=-1,c=!0,l=e.length-1,u=0;l>=n;--l)if(47!==(r=e.charCodeAt(l)))-1===h&&(c=!1,h=l+1),46===r?-1===o?o=l:1!==u&&(u=1):-1!==o&&(u=-1);else if(!c){a=l+1;break}return-1===o||-1===h||0===u||1===u&&o===h-1&&o===a+1?-1!==h&&(t.base=t.name=0===a&&s?e.slice(1,h):e.slice(a,h)):(0===a&&s?(t.name=e.slice(1,o),t.base=e.slice(1,h)):(t.name=e.slice(a,o),t.base=e.slice(a,h)),t.ext=e.slice(o,h)),a>0?t.dir=e.slice(0,a-1):s&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,e.exports=o},3786:e=>{e.exports=function(e){return Math.max(16384,1<{var r=n(8768),i=n(778),s=n(2840),o=n(1156),a=function(){},h=/^v?\.0/.test(r.version),c=function(e){return"function"==typeof e},l=function(e,t,n,r){r=i(r);var l=!1;e.on("close",(function(){l=!0})),s(e,{readable:t,writable:n},(function(e){if(e)return r(e);l=!0,r()}));var u=!1;return function(t){if(!l&&!u)return u=!0,function(e){return!!h&&!!o&&(e instanceof(o.ReadStream||a)||e instanceof(o.WriteStream||a))&&c(e.close)}(e)?e.close(a):function(e){return e.setHeader&&c(e.abort)}(e)?e.abort():c(e.destroy)?e.destroy():void r(t||new Error("stream was destroyed"))}},u=function(e){e()},d=function(e,t){return e.pipe(t)};e.exports=function(){var e,t=Array.prototype.slice.call(arguments),n=c(t[t.length-1]||a)&&t.pop()||a;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r=t.map((function(i,s){var o=s0,(function(t){e||(e=t),t&&r.forEach(u),o||(r.forEach(u),n(e))}))}));return t.reduce(d)}},2587:e=>{function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,n,r,i){n=n||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var o=/\+/g;e=e.split(n);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var h=e.length;a>0&&h>a&&(h=a);for(var c=0;c=0?(l=p.substr(0,g),u=p.substr(g+1)):(l=p,u=""),d=decodeURIComponent(l),f=decodeURIComponent(u),t(s,d)?Array.isArray(s[d])?s[d].push(f):s[d]=[s[d],f]:s[d]=f}return s}},2361:e=>{var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,n,r,i){return n=n||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(i){var s=encodeURIComponent(t(i))+r;return Array.isArray(e[i])?e[i].map((function(e){return s+encodeURIComponent(t(e))})).join(n):s+encodeURIComponent(t(e[i]))})).join(n):i?encodeURIComponent(t(i))+r+encodeURIComponent(t(e)):""}},7673:(e,t,n)=>{t.decode=t.parse=n(2587),t.encode=t.stringify=n(2361)},4375:e=>{let t;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:globalThis):e=>(t||(t=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0)))},3527:e=>{e.exports="function"==typeof queueMicrotask?queueMicrotask:e=>Promise.resolve().then(e)},5960:e=>{e.exports=function(e){var t=0;return function(){if(t===e.length)return null;var n=e.length-t,r=Math.random()*n|0,i=e[t+r],s=e[t];return e[t]=i,e[t+r]=s,t++,i}}},1798:(e,t,n)=>{var r=n(8768),i=65536,s=4294967295;var o=n(9509).Buffer,a=globalThis.crypto||globalThis.msCrypto;a&&a.getRandomValues?e.exports=function(e,t){if(e>s)throw new RangeError("requested too many random bytes");var n=o.allocUnsafe(e);if(e>0)if(e>i)for(var h=0;h{function t(e,t){return{start:e.start,end:e.end,index:t}}function n(e){return{start:e.start,end:e.end}}function r(e,t){return e.index-t.index}function i(e,t){return e.start-t.start}e.exports=function(e,s,o){if("string"!=typeof s)throw new TypeError("argument str must be a string");var a=s.indexOf("=");if(-1===a)return-2;var h=s.slice(a+1).split(","),c=[];c.type=s.slice(0,a);for(var l=0;le-1&&(f=e-1),isNaN(d)||isNaN(f)||d>f||d<0||c.push({start:d,end:f})}if(c.length<1)return-1;return o&&o.combine?function(e){for(var s=e.map(t).sort(i),o=0,a=1;ac.end+1?s[++o]=h:h.end>c.end&&(c.end=h.end,c.index=Math.min(c.index,h.index))}s.length=o+1;var l=s.sort(r).map(n);return l.type=e.type,l}(c):c}},7830:e=>{function t(e){return parseInt(e,10)===e}function n(e){function n(t){if(void 0===t){t=new Array(e);for(var n=0;n{const t={};function n(e,n,r){r||(r=Error);class i extends r{constructor(e,t,r){super(function(e,t,r){return"string"==typeof n?n:n(e,t,r)}(e,t,r))}}i.prototype.name=r.name,i.prototype.code=e,t[e]=i}function r(e,t){if(Array.isArray(e)){const n=e.length;return e=e.map((e=>String(e))),n>2?`one of ${t} ${e.slice(0,n-1).join(", ")}, or `+e[n-1]:2===n?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}return`of ${t} ${String(e)}`}n("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(e,t,n){let i;var s,o;let a;if("string"==typeof t&&(s="not ",t.substr(!o||o<0?0:+o,s.length)===s)?(i="must not be",t=t.replace(/^not /,"")):i="must be",function(e,t,n){return(void 0===n||n>e.length)&&(n=e.length),e.substring(n-t.length,n)===t}(e," argument"))a=`The ${e} ${i} ${r(t,"type")}`;else{const n=function(e,t,n){return"number"!=typeof n&&(n=0),!(n+t.length>e.length)&&-1!==e.indexOf(t,n)}(e,".")?"property":"argument";a=`The "${e}" ${n} ${i} ${r(t,"type")}`}return a+=". Received type "+typeof n,a}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.q=t},6753:(e,t,n)=>{var r=n(8768),i=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=l;var s=n(9481),o=n(4229);n(5717)(l,s);for(var a=i(o.prototype),h=0;h{e.exports=i;var r=n(4605);function i(e){if(!(this instanceof i))return new i(e);r.call(this,e)}n(5717)(i,r),i.prototype._transform=function(e,t,n){n(null,e)}},9481:(e,t,n)=>{var r,i=n(8768);e.exports=S,S.ReadableState=x;n(7187).EventEmitter;var s=function(e,t){return e.listeners(t).length},o=n(9740),a=n(8764).Buffer,h=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var c,l=n(9539);c=l&&l.debuglog?l.debuglog("stream"):function(){};var u,d,f,p=n(7327),g=n(1195),_=n(2457).getHighWaterMark,m=n(4012).q,y=m.ERR_INVALID_ARG_TYPE,b=m.ERR_STREAM_PUSH_AFTER_EOF,w=m.ERR_METHOD_NOT_IMPLEMENTED,v=m.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;n(5717)(S,o);var k=g.errorOrDestroy,E=["error","close","destroy","pause","resume"];function x(e,t,i){r=r||n(6753),e=e||{},"boolean"!=typeof i&&(i=t instanceof r),this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=_(this,e,"readableHighWaterMark",i),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(u||(u=n(2553).s),this.decoder=new u(e.encoding),this.encoding=e.encoding)}function S(e){if(r=r||n(6753),!(this instanceof S))return new S(e);var t=this instanceof r;this._readableState=new x(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),o.call(this)}function T(e,t,n,r,i){c("readableAddChunk",t);var s,o=e._readableState;if(null===t)o.reading=!1,function(e,t){if(c("onEofChunk"),t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,t.sync?P(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,R(e)))}(e,o);else if(i||(s=function(e,t){var n;r=t,a.isBuffer(r)||r instanceof h||"string"==typeof t||void 0===t||e.objectMode||(n=new y("chunk",["string","Buffer","Uint8Array"],t));var r;return n}(o,t)),s)k(e,s);else if(o.objectMode||t&&t.length>0)if("string"==typeof t||o.objectMode||Object.getPrototypeOf(t)===a.prototype||(t=function(e){return a.from(e)}(t)),r)o.endEmitted?k(e,new v):A(e,o,t,!0);else if(o.ended)k(e,new b);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!n?(t=o.decoder.write(t),o.objectMode||0!==t.length?A(e,o,t,!1):O(e,o)):A(e,o,t,!1)}else r||(o.reading=!1,O(e,o));return!o.ended&&(o.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=C?e=C:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function P(e){var t=e._readableState;c("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(c("emitReadable",t.flowing),t.emittedReadable=!0,i.nextTick(R,e))}function R(e){var t=e._readableState;c("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,U(e)}function O(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(L,e,t))}function L(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function B(e){c("readable nexttick read 0"),e.read(0)}function D(e,t){c("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),U(e),t.flowing&&!t.reading&&e.read(0)}function U(e){var t=e._readableState;for(c("flow",t.flowing);t.flowing&&null!==e.read(););}function M(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):n=t.buffer.consume(e,t.decoder),n);var n}function j(e){var t=e._readableState;c("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,i.nextTick(H,t,e))}function H(e,t){if(c("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var n=t._writableState;(!n||n.autoDestroy&&n.finished)&&t.destroy()}}function q(e,t){for(var n=0,r=e.length;n=t.highWaterMark:t.length>0)||t.ended))return c("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?j(this):P(this),null;if(0===(e=I(e,t))&&t.ended)return 0===t.length&&j(this),null;var r,i=t.needReadable;return c("need readable",i),(0===t.length||t.length-e0?M(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&j(this)),null!==r&&this.emit("data",r),r},S.prototype._read=function(e){k(this,new w("_read()"))},S.prototype.pipe=function(e,t){var n=this,r=this._readableState;switch(r.pipesCount){case 0:r.pipes=e;break;case 1:r.pipes=[r.pipes,e];break;default:r.pipes.push(e)}r.pipesCount+=1,c("pipe count=%d opts=%j",r.pipesCount,t);var o=(!t||!1!==t.end)&&e!==i.stdout&&e!==i.stderr?h:_;function a(t,i){c("onunpipe"),t===n&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,c("cleanup"),e.removeListener("close",p),e.removeListener("finish",g),e.removeListener("drain",l),e.removeListener("error",f),e.removeListener("unpipe",a),n.removeListener("end",h),n.removeListener("end",_),n.removeListener("data",d),u=!0,!r.awaitDrain||e._writableState&&!e._writableState.needDrain||l())}function h(){c("onend"),e.end()}r.endEmitted?i.nextTick(o):n.once("end",o),e.on("unpipe",a);var l=function(e){return function(){var t=e._readableState;c("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,U(e))}}(n);e.on("drain",l);var u=!1;function d(t){c("ondata");var i=e.write(t);c("dest.write",i),!1===i&&((1===r.pipesCount&&r.pipes===e||r.pipesCount>1&&-1!==q(r.pipes,e))&&!u&&(c("false write response, pause",r.awaitDrain),r.awaitDrain++),n.pause())}function f(t){c("onerror",t),_(),e.removeListener("error",f),0===s(e,"error")&&k(e,t)}function p(){e.removeListener("finish",g),_()}function g(){c("onfinish"),e.removeListener("close",p),_()}function _(){c("unpipe"),n.unpipe(e)}return n.on("data",d),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",f),e.once("close",p),e.once("finish",g),e.emit("pipe",n),r.flowing||(c("pipe resume"),n.resume()),e},S.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var s=0;s0,!1!==r.flowing&&this.resume()):"readable"===e&&(r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.flowing=!1,r.emittedReadable=!1,c("on readable",r.length,r.reading),r.length?P(this):r.reading||i.nextTick(B,this))),n},S.prototype.addListener=S.prototype.on,S.prototype.removeListener=function(e,t){var n=o.prototype.removeListener.call(this,e,t);return"readable"===e&&i.nextTick(N,this),n},S.prototype.removeAllListeners=function(e){var t=o.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||i.nextTick(N,this),t},S.prototype.resume=function(){var e=this._readableState;return e.flowing||(c("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,i.nextTick(D,e,t))}(this,e)),e.paused=!1,this},S.prototype.pause=function(){return c("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(c("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},S.prototype.wrap=function(e){var t=this,n=this._readableState,r=!1;for(var i in e.on("end",(function(){if(c("wrapped end"),n.decoder&&!n.ended){var e=n.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(c("wrapped data"),n.decoder&&(i=n.decoder.write(i)),n.objectMode&&null==i)||(n.objectMode||i&&i.length)&&(t.push(i)||(r=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var s=0;s{e.exports=l;var r=n(4012).q,i=r.ERR_METHOD_NOT_IMPLEMENTED,s=r.ERR_MULTIPLE_CALLBACK,o=r.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=r.ERR_TRANSFORM_WITH_LENGTH_0,h=n(6753);function c(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(null===r)return this.emit("error",new s);n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{var r,i=n(8768);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree.next=e}(t,e)}}e.exports=S,S.WritableState=x;var o={deprecate:n(4927)},a=n(9740),h=n(8764).Buffer,c=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var l,u=n(1195),d=n(2457).getHighWaterMark,f=n(4012).q,p=f.ERR_INVALID_ARG_TYPE,g=f.ERR_METHOD_NOT_IMPLEMENTED,_=f.ERR_MULTIPLE_CALLBACK,m=f.ERR_STREAM_CANNOT_PIPE,y=f.ERR_STREAM_DESTROYED,b=f.ERR_STREAM_NULL_VALUES,w=f.ERR_STREAM_WRITE_AFTER_END,v=f.ERR_UNKNOWN_ENCODING,k=u.errorOrDestroy;function E(){}function x(e,t,o){r=r||n(6753),e=e||{},"boolean"!=typeof o&&(o=t instanceof r),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=d(this,e,"writableHighWaterMark",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===e.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,s=n.writecb;if("function"!=typeof s)throw new _;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,s){--t.pendingcb,n?(i.nextTick(s,r),i.nextTick(R,e,t),e._writableState.errorEmitted=!0,k(e,r)):(s(r),e._writableState.errorEmitted=!0,k(e,r),R(e,t))}(e,n,r,t,s);else{var o=I(n)||e.destroyed;o||n.corked||n.bufferProcessing||!n.bufferedRequest||C(e,n),r?i.nextTick(A,e,n,o,s):A(e,n,o,s)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function S(e){var t=this instanceof(r=r||n(6753));if(!t&&!l.call(S,this))return new S(e);this._writableState=new x(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),a.call(this)}function T(e,t,n,r,i,s,o){t.writelen=r,t.writecb=o,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new y("write")):n?e._writev(i,t.onwrite):e._write(i,s,t.onwrite),t.sync=!1}function A(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),R(e,t)}function C(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),o=t.corkedRequestsFree;o.entry=n;for(var a=0,h=!0;n;)i[a]=n,n.isBuf||(h=!1),n=n.next,a+=1;i.allBuffers=h,T(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,l=n.encoding,u=n.callback;if(T(e,t,!1,t.objectMode?1:c.length,c,l,u),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function I(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function P(e,t){e._final((function(n){t.pendingcb--,n&&k(e,n),t.prefinished=!0,e.emit("prefinish"),R(e,t)}))}function R(e,t){var n=I(t);if(n&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,i.nextTick(P,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var r=e._readableState;(!r||r.autoDestroy&&r.endEmitted)&&e.destroy()}return n}n(5717)(S,a),x.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(x.prototype,"buffer",{get:o.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(S,Symbol.hasInstance,{value:function(e){return!!l.call(this,e)||this===S&&(e&&e._writableState instanceof x)}})):l=function(e){return e instanceof this},S.prototype.pipe=function(){k(this,new m)},S.prototype.write=function(e,t,n){var r,s=this._writableState,o=!1,a=!s.objectMode&&(r=e,h.isBuffer(r)||r instanceof c);return a&&!h.isBuffer(e)&&(e=function(e){return h.from(e)}(e)),"function"==typeof t&&(n=t,t=null),a?t="buffer":t||(t=s.defaultEncoding),"function"!=typeof n&&(n=E),s.ending?function(e,t){var n=new w;k(e,n),i.nextTick(t,n)}(this,n):(a||function(e,t,n,r){var s;return null===n?s=new b:"string"==typeof n||t.objectMode||(s=new p("chunk",["string","Buffer"],n)),!s||(k(e,s),i.nextTick(r,s),!1)}(this,s,e,n))&&(s.pendingcb++,o=function(e,t,n,r,i,s){if(!n){var o=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=h.from(t,n));return t}(t,r,i);r!==o&&(n=!0,i="buffer",r=o)}var a=t.objectMode?1:r.length;t.length+=a;var c=t.length-1))throw new v(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),S.prototype._write=function(e,t,n){n(new g("_write()"))},S.prototype._writev=null,S.prototype.end=function(e,t,n){var r=this._writableState;return"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||function(e,t,n){t.ending=!0,R(e,t),n&&(t.finished?i.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n),this},Object.defineProperty(S.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),S.prototype.destroy=u.destroy,S.prototype._undestroy=u.undestroy,S.prototype._destroy=function(e,t){t(e)}},5850:(e,t,n)=>{var r,i=n(8768);function s(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=n(8610),a=Symbol("lastResolve"),h=Symbol("lastReject"),c=Symbol("error"),l=Symbol("ended"),u=Symbol("lastPromise"),d=Symbol("handlePromise"),f=Symbol("stream");function p(e,t){return{value:e,done:t}}function g(e){var t=e[a];if(null!==t){var n=e[f].read();null!==n&&(e[u]=null,e[a]=null,e[h]=null,t(p(n,!1)))}}function _(e){i.nextTick(g,e)}var m=Object.getPrototypeOf((function(){})),y=Object.setPrototypeOf((s(r={get stream(){return this[f]},next:function(){var e=this,t=this[c];if(null!==t)return Promise.reject(t);if(this[l])return Promise.resolve(p(void 0,!0));if(this[f].destroyed)return new Promise((function(t,n){i.nextTick((function(){e[c]?n(e[c]):t(p(void 0,!0))}))}));var n,r=this[u];if(r)n=new Promise(function(e,t){return function(n,r){e.then((function(){t[l]?n(p(void 0,!0)):t[d](n,r)}),r)}}(r,this));else{var s=this[f].read();if(null!==s)return Promise.resolve(p(s,!1));n=new Promise(this[d])}return this[u]=n,n}},Symbol.asyncIterator,(function(){return this})),s(r,"return",(function(){var e=this;return new Promise((function(t,n){e[f].destroy(null,(function(e){e?n(e):t(p(void 0,!0))}))}))})),r),m);e.exports=function(e){var t,n=Object.create(y,(s(t={},f,{value:e,writable:!0}),s(t,a,{value:null,writable:!0}),s(t,h,{value:null,writable:!0}),s(t,c,{value:null,writable:!0}),s(t,l,{value:e._readableState.endEmitted,writable:!0}),s(t,d,{value:function(e,t){var r=n[f].read();r?(n[u]=null,n[a]=null,n[h]=null,e(p(r,!1))):(n[a]=e,n[h]=t)},writable:!0}),t));return n[u]=null,o(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=n[h];return null!==t&&(n[u]=null,n[a]=null,n[h]=null,t(e)),void(n[c]=e)}var r=n[a];null!==r&&(n[u]=null,n[a]=null,n[h]=null,r(p(void 0,!0))),n[l]=!0})),e.on("readable",_.bind(null,n)),n}},7327:(e,t,n)=>{function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n}},{key:"concat",value:function(e){if(0===this.length)return h.alloc(0);for(var t,n,r,i=h.allocUnsafe(e>>>0),s=this.head,o=0;s;)t=s.data,n=i,r=o,h.prototype.copy.call(t,n,r),o+=s.data.length,s=s.next;return i}},{key:"consume",value:function(e,t){var n;return ei.length?i.length:e;if(s===i.length?r+=i:r+=i.slice(0,e),0==(e-=s)){s===i.length?(++n,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(s));break}++n}return this.length-=n,r}},{key:"_getBuffer",value:function(e){var t=h.allocUnsafe(e),n=this.head,r=1;for(n.data.copy(t),e-=n.data.length;n=n.next;){var i=n.data,s=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,s),0==(e-=s)){s===i.length?(++r,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=i.slice(s));break}++r}return this.length-=r,t}},{key:l,value:function(e,t){return c(this,i(i({},t),{},{depth:0,customInspect:!1}))}}])&&o(t.prototype,n),r&&o(t,r),Object.defineProperty(t,"prototype",{writable:!1}),e}()},1195:(e,t,n)=>{var r=n(8768);function i(e,t){o(e,t),s(e)}function s(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function o(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,r.nextTick(o,this,e)):r.nextTick(o,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?n._writableState?n._writableState.errorEmitted?r.nextTick(s,n):(n._writableState.errorEmitted=!0,r.nextTick(i,n,e)):r.nextTick(i,n,e):t?(r.nextTick(s,n),t(e)):r.nextTick(s,n)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var n=e._readableState,r=e._writableState;n&&n.autoDestroy||r&&r.autoDestroy?e.destroy(t):e.emit("error",t)}}},8610:(e,t,n)=>{var r=n(4012).q.ERR_STREAM_PREMATURE_CLOSE;function i(){}e.exports=function e(t,n,s){if("function"==typeof n)return e(t,null,n);n||(n={}),s=function(e){var t=!1;return function(){if(!t){t=!0;for(var n=arguments.length,r=new Array(n),i=0;i{function r(e,t,n,r,i,s,o){try{var a=e[s](o),h=a.value}catch(e){return void n(e)}a.done?t(h):Promise.resolve(h).then(r,i)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=n(4012).q.ERR_INVALID_ARG_TYPE;e.exports=function(e,t,n){var a;if(t&&"function"==typeof t.next)a=t;else if(t&&t[Symbol.asyncIterator])a=t[Symbol.asyncIterator]();else{if(!t||!t[Symbol.iterator])throw new o("iterable",["Iterable"],t);a=t[Symbol.iterator]()}var h=new e(function(e){for(var t=1;t{var r;var i=n(4012).q,s=i.ERR_MISSING_ARGS,o=i.ERR_STREAM_DESTROYED;function a(e){if(e)throw e}function h(e){e()}function c(e,t){return e.pipe(t)}e.exports=function(){for(var e=arguments.length,t=new Array(e),i=0;i0,(function(e){l||(l=e),e&&d.forEach(h),s||(d.forEach(h),u(l))}))}));return t.reduce(c)}},2457:(e,t,n)=>{var r=n(4012).q.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,n,i){var s=function(e,t,n){return null!=e.highWaterMark?e.highWaterMark:t?e[n]:null}(t,i,n);if(null!=s){if(!isFinite(s)||Math.floor(s)!==s||s<0)throw new r(i?n:"highWaterMark",s);return Math.floor(s)}return e.objectMode?16:16384}}},9740:(e,t,n)=>{e.exports=n(1451)},1451:(e,t,n)=>{var r=n(8768),i=n(1451);"disable"===r.env.READABLE_STREAM&&i?(e.exports=i.Readable,Object.assign(e.exports,i),e.exports.Stream=i):((t=e.exports=n(9481)).Stream=i||t,t.Readable=t,t.Writable=n(4229),t.Duplex=n(6753),t.Transform=n(4605),t.PassThrough=n(2725),t.finished=n(8610),t.pipeline=n(9946))},4734:(e,t,n)=>{const r=n(5792);var i=[];function s(){this.list=[],this.map=new Map}function o(){this.records=new Map,this.size=0}function a(e){if(!(this instanceof a))return new a(e);if(e||(e={}),this.maxSize=e.maxSize||1/0,this.maxAge=e.maxAge||0,this._onstale=e.onStale||e.onstale||null,this._fresh=new o,this._stale=new o,this._interval=null,this._gced=!1,this.maxAge&&this.maxAge<1/0){var t=Math.ceil(2/3*this.maxAge);this._interval=setInterval(this._gcAuto.bind(this),t),this._interval.unref&&this._interval.unref()}}function h(e){return r.isBuffer(e)?r.toString(e,"hex"):e}function c(e,t,n){var r=e[t];r.index=n,e[n].index=t,e[t]=e[n],e[n]=r}e.exports=a,s.prototype.add=function(e,t){var n=h(e),r=this.map.get(n);return!r&&(r={index:this.list.length,record:t||e},this.list.push(r),this.map.set(n,r),!0)},s.prototype.remove=function(e){var t=h(e),n=this.map.get(t);return!!n&&(c(this.list,n.index,this.list.length-1),this.list.pop(),this.map.delete(t),!0)},o.prototype.add=function(e,t,n){var r=this.records.get(e);return r||(r=new s,this.records.set(e,r)),!!r.add(t,n)&&(this.size++,!0)},o.prototype.remove=function(e,t,n){var r=this.records.get(e);return!!r&&(!!r.remove(t,n)&&(this.size--,r.map.size||this.records.delete(e),!0))},o.prototype.get=function(e){var t=this.records.get(e);return t?t.list:i},Object.defineProperty(a.prototype,"size",{get:function(){return this._fresh.size+this._stale.size}}),a.prototype.add=function(e,t,n){this._stale.remove(e,t,n),this._fresh.add(e,t,n)&&this._fresh.size>this.maxSize&&this._gc()},a.prototype.remove=function(e,t,n){this._fresh.remove(e,t,n),this._stale.remove(e,t,n)},a.prototype.get=function(e,t){var n=this._fresh.get(e),r=this._stale.get(e),i=n.length,s=r.length,o=i+s;(t>o||!t)&&(t=o);for(var a=new Array(t),h=0;h0&&this._onstale(this._stale),this._stale=this._fresh,this._fresh=new o,this._gced=!0},a.prototype.clear=function(){this._gc(),this._gc()},a.prototype.destroy=function(){this.clear(),clearInterval(this._interval),this._interval=null}},9967:(e,t,n)=>{e.exports=function(e,t,n){if("number"!=typeof t)throw new Error("second argument must be a Number");let i,s,o,a,h,c,l=!0;Array.isArray(e)?(i=[],o=s=e.length):(a=Object.keys(e),i={},o=s=a.length);function u(e){function t(){n&&n(e,i),n=null}l?r(t):t()}function d(t,n,r){if(i[t]=r,n&&(h=!0),0==--o||n)u(n);else if(!h&&c{e.exports=function(e,t){let n,i,s,o=!0;Array.isArray(e)?(n=[],i=e.length):(s=Object.keys(e),n={},i=s.length);function a(e){function i(){t&&t(e,n),t=null}o?r(i):i()}function h(e,t,r){n[e]=r,(0==--i||t)&&a(t)}i?s?s.forEach((function(t){e[t]((function(e,n){h(t,e,n)}))})):e.forEach((function(e,t){e((function(e,n){h(t,e,n)}))})):a(null);o=!1};const r=n(4375)},9059:(e,t,n)=>{var r=n(8768);e.exports=function(e,t){var n=0,i=[],s=!0;function o(e){function n(){t&&t(e,i)}s?r.nextTick(n):n()}e.length>0?e[0]((function t(r,s){i.push(s),++n>=e.length||r?o(r):e[n](t)})):o(null);s=!1}},9509:(e,t,n)=>{var r=n(8764),i=r.Buffer;function s(e,t){for(var n in e)t[n]=e[n]}function o(e,t,n){return i(e,t,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=r:(s(r,t),t.Buffer=o),o.prototype=Object.create(i.prototype),s(i,o),o.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,n)},o.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=i(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},4889:function(e,t,n){var r=n(8768);!function(e,t){if(!e.setImmediate){var n,i,s,o,a,h=1,c={},l=!1,u=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?n=function(e){r.nextTick((function(){p(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){s.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(i=u.documentElement,n=function(e){var t=u.createElement("script");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(o="setImmediate$"+Math.random()+"$",a=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener("message",a,!1):e.attachEvent("onmessage",a),n=function(t){e.postMessage(o+t,"*")}),d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r{var r=n(8764).Buffer;e.exports=function(e,t){var n=[];e.on("data",(function(e){n.push(e)})),e.once("end",(function(){t&&t(null,r.concat(n)),t=null})),e.once("error",(function(e){t&&t(e),t=null}))}},6993:(e,t,n)=>{var r=n(8764).Buffer;e.exports=d;const i=n(7485),s=n(346),o=n(8669),a=n(8669),h=n(778),c=n(7673),l=n(8575),u=e=>null!==e&&"object"==typeof e&&"function"==typeof e.pipe;function d(e,t){if(e=Object.assign({maxRedirects:10},"string"==typeof e?{url:e}:e),t=h(t),e.url){const{hostname:t,port:n,protocol:r,auth:i,path:s}=l.parse(e.url);delete e.url,t||n||r||i?Object.assign(e,{hostname:t,port:n,protocol:r,auth:i,path:s}):e.path=s}const n={"accept-encoding":"gzip, deflate"};let i;e.headers&&Object.keys(e.headers).forEach((t=>n[t.toLowerCase()]=e.headers[t])),e.headers=n,e.body?i=e.json&&!u(e.body)?JSON.stringify(e.body):e.body:e.form&&(i="string"==typeof e.form?e.form:c.stringify(e.form),e.headers["content-type"]="application/x-www-form-urlencoded"),i&&(e.method||(e.method="POST"),u(i)||(e.headers["content-length"]=r.byteLength(i)),e.json&&!e.form&&(e.headers["content-type"]="application/json")),delete e.body,delete e.form,e.json&&(e.headers.accept="application/json"),e.method&&(e.method=e.method.toUpperCase());const f=e.hostname,p=("https:"===e.protocol?a:o).request(e,(n=>{if(!1!==e.followRedirects&&n.statusCode>=300&&n.statusCode<400&&n.headers.location){e.url=n.headers.location,delete e.headers.host,n.resume();const r=l.parse(e.url).hostname;return null!==r&&r!==f&&(delete e.headers.cookie,delete e.headers.authorization),"POST"===e.method&&[301,302].includes(n.statusCode)&&(e.method="GET",delete e.headers["content-length"],delete e.headers["content-type"]),0==e.maxRedirects--?t(new Error("too many redirects")):d(e,t)}const r="function"==typeof s&&"HEAD"!==e.method;t(null,r?s(n):n)}));return p.on("timeout",(()=>{p.abort(),t(new Error("Request timed out"))})),p.on("error",t),u(i)?i.on("error",t).pipe(p):p.end(i),p}d.concat=(e,t)=>d(e,((n,r)=>{if(n)return t(n);i(r,((n,i)=>{if(n)return t(n);if(e.json)try{i=JSON.parse(i.toString())}catch(n){return t(n,r,i)}t(null,r,i)}))})),["get","post","put","patch","head","delete"].forEach((e=>{d[e]=(t,n)=>("string"==typeof t&&(t={url:t}),d(Object.assign({method:e.toUpperCase()},t),n))}))},558:(e,t,n)=>{const r=n(7768),i=n(9929);e.exports={Throttle:r,ThrottleGroup:i}},9929:(e,t,n)=>{const{TokenBucket:r}=n(5516),i=n(7768);e.exports=class{constructor(e={}){if("object"!=typeof e)throw new Error("Options must be an object");this.throttles=[],this.setEnabled(e.enabled),this.setRate(e.rate,e.chunksize)}getEnabled(){return this._enabled}getRate(){return this.bucket.tokensPerInterval}getChunksize(){return this.chunksize}setEnabled(e=!0){if("boolean"!=typeof e)throw new Error("Enabled must be a boolean");this._enabled=e;for(const t of this.throttles)t.setEnabled(e)}setRate(e,t=null){if(!Number.isInteger(e)||e<0)throw new Error("Rate must be an integer bigger than zero");if(e=parseInt(e),t&&("number"!=typeof t||t<=0))throw new Error("Chunksize must be bigger than zero");if(t=t||Math.max(parseInt(e/10),1),t=parseInt(t),e>0&&t>e)throw new Error("Chunk size must be smaller than rate");this.bucket||(this.bucket=new r(e,e,"second",null)),this.bucket.bucketSize=e,this.bucket.tokensPerInterval=e,this.chunksize=t}setChunksize(e){if(!Number.isInteger(e)||e<=0)throw new Error("Chunk size must be an integer bigger than zero");const t=this.getRate();if(e=parseInt(e),t>0&&e>t)throw new Error("Chunk size must be smaller than rate");this.chunksize=e}throttle(e={}){if("object"!=typeof e)throw new Error("Options must be an object");return new i({...e,group:this})}destroy(){for(const e of this.throttles)e.destroy();this.throttles=[]}_addThrottle(e){if(!(e instanceof i))throw new Error("Throttle must be an instance of Throttle");this.throttles.push(e)}_removeThrottle(e){const t=this.throttles.indexOf(e);t>-1&&this.throttles.splice(t,1)}}},7768:(e,t,n)=>{const{EventEmitter:r}=n(7187),{Transform:i}=n(1237),{wait:s}=n(5324);e.exports=class extends i{constructor(e={}){if(super(),"object"!=typeof e)throw new Error("Options must be an object");const t=Object.assign({},e);if(t.group&&!(t.group instanceof o))throw new Error("Group must be an instanece of ThrottleGroup");t.group||(t.group=new o(t)),this._setEnabled(t.enabled||t.group.enabled),this._group=t.group,this._emitter=new r,this._destroyed=!1,this._group._addThrottle(this)}getEnabled(){return this._enabled}getGroup(){return this._group}_setEnabled(e=!0){if("boolean"!=typeof e)throw new Error("Enabled must be a boolean");this._enabled=e}setEnabled(e){this._setEnabled(e),this._enabled?this._emitter.emit("enabled"):this._emitter.emit("disabled")}_transform(e,t){this._processChunk(e,t)}async _waitForTokens(e){return new Promise(((t,n)=>{let r=!1;const i=this;function s(e){if(i._emitter.removeListener("disabled",s),i._emitter.removeListener("destroyed",s),!r){if(r=!0,e)return n(e);t()}}this._emitter.once("disabled",s),this._emitter.once("destroyed",s),this._group.bucket.removeTokens(e,s)}))}_areBothEnabled(){return this._enabled&&this._group.getEnabled()}async _processChunk(e,t){if(!this._areBothEnabled())return t(null,e);let n=0,r=this._group.getChunksize(),i=e.slice(n,n+r);for(;i.length>0;){if(this._areBothEnabled())try{for(;0===this._group.getRate()&&!this._destroyed&&this._areBothEnabled();)if(await s(1e3),this._destroyed)return;if(this._areBothEnabled()&&!this._group.bucket.tryRemoveTokens(i.length)&&(await this._waitForTokens(i.length),this._destroyed))return}catch(e){return t(e)}this.push(i),n+=r,r=this._areBothEnabled()?this._group.getChunksize():e.length-n,i=e.slice(n,n+r)}return t()}destroy(...e){this._group._removeThrottle(this),this._destroyed=!0,this._emitter.emit("destroyed"),super.destroy(...e)}};const o=n(9929)},5324:e=>{e.exports={wait:function(e){return new Promise((t=>setTimeout(t,e)))}}},1237:(e,t,n)=>{const{EventEmitter:r}=n(7187),i=new Error("Stream was destroyed"),s=new Error("Premature close"),o=n(3527),a=n(1607),h=67108863,c=1^h,l=16,u=128,d=256,f=1024,p=2048,g=4096,_=8192,m=16384,y=32784,b=768^h,w=1<<17,v=2<<17,k=4<<17,E=8<<17,x=16<<17,S=32<<17,T=64<<17,A=129<<17,C=256<<17,I=66977791,P=66846719,R=131088,O=66977775,L=4210688,N=14,B=15,D=4210702,U=16941072,M=16809999,j=1179648,H=1179663,q=Symbol.asyncIterator||Symbol("asyncIterator");class F{constructor(e,{highWaterMark:t=16384,map:n=null,mapWritable:r,byteLength:i,byteLengthWritable:s}={}){this.stream=e,this.queue=new a,this.highWaterMark=t,this.buffered=0,this.error=null,this.pipeline=null,this.byteLength=s||i||ce,this.map=r||n,this.afterWrite=Z.bind(this),this.afterUpdateNextTick=Q.bind(this)}get ended(){return 0!=(this.stream._duplexState&S)}push(e){return null!==this.map&&(e=this.map(e)),this.buffered+=this.byteLength(e),this.queue.push(e),this.buffered=e._readableState.highWaterMark}static isPaused(e){return 0==(e._duplexState&d)}[q](){const e=this;let t=null,n=null,r=null;return this.on("error",(e=>{t=e})),this.on("readable",(function(){null!==n&&s(e.read())})),this.on("close",(function(){null!==n&&s(null)})),{[q](){return this},next:()=>new Promise((function(t,i){n=t,r=i;const o=e.read();null!==o?s(o):0!=(8&e._duplexState)&&s(null)})),return:()=>o(null),throw:e=>o(e)};function s(s){null!==r&&(t?r(t):null===s&&0==(e._duplexState&m)?r(i):n({value:s,done:null===s}),r=n=null)}function o(t){return e.destroy(t),new Promise(((n,r)=>{if(8&e._duplexState)return n({value:void 0,done:!0});e.once("close",(function(){t?r(t):n({value:void 0,done:!0})}))}))}}}class re extends ne{constructor(e){super(e),this._duplexState=1,this._writableState=new F(this,e),e&&(e.writev&&(this._writev=e.writev),e.write&&(this._write=e.write),e.final&&(this._final=e.final))}_writev(e,t){t(null)}_write(e,t){this._writableState.autoBatch(e,t)}_final(e){e(null)}write(e){return this._writableState.updateNextTick(),this._writableState.push(e)}end(e){return this._writableState.updateNextTick(),this._writableState.end(e),this}}class ie extends re{constructor(e){super(e),this._transformState=new $(this),e&&(e.transform&&(this._transform=e.transform),e.flush&&(this._flush=e.flush))}_write(e,t){this._readableState.buffered>=this._readableState.highWaterMark?this._transformState.data=e:this._transform(e,this._transformState.afterTransform)}_read(e){if(null!==this._transformState.data){const t=this._transformState.data;this._transformState.data=null,e(null),this._transform(t,this._transformState.afterTransform)}else e(null)}_transform(e,t){t(null,e)}_flush(e){e(null)}_final(e){this._transformState.afterFinal=e,this._flush(se.bind(this))}}function se(e,t){const n=this._transformState.afterFinal;if(e)return n(e);null!=t&&this.push(t),this.push(null),n(null)}function oe(e,...t){const n=Array.isArray(e)?[...e,...t]:[e,...t],r=n.length&&"function"==typeof n[n.length-1]?n.pop():null;if(n.length<2)throw new Error("Pipeline requires at least 2 streams");let i=n[0],o=null,a=null;for(let e=1;e1,c),i.pipe(o)),i=o;if(r){let e=!1;o.on("finish",(()=>{e=!0})),o.on("error",(e=>{a=a||e})),o.on("close",(()=>r(a||(e?null:s))))}return o;function h(e,t,n,r){e.on("error",r),e.on("close",(function(){if(t&&e._readableState&&!e._readableState.ended)return r(s);if(n&&e._writableState&&!e._writableState.ended)return r(s)}))}function c(e){if(e&&!a){a=e;for(const t of n)t.destroy(e)}}}function ae(e){return!!e._readableState||!!e._writableState}function he(e){return"number"==typeof e._duplexState&&ae(e)}function ce(e){return function(e){return"object"==typeof e&&null!==e&&"number"==typeof e.byteLength}(e)?e.byteLength:1024}function le(){}function ue(){this.destroy(new Error("Stream aborted."))}e.exports={pipeline:oe,pipelinePromise:function(...e){return new Promise(((t,n)=>oe(...e,(e=>{if(e)return n(e);t()}))))},isStream:ae,isStreamx:he,getStreamError:function(e){return e._readableState&&e._readableState.error||e._writableState&&e._writableState.error},Stream:te,Writable:class extends te{constructor(e){super(e),this._duplexState|=16385,this._writableState=new F(this,e),e&&(e.writev&&(this._writev=e.writev),e.write&&(this._write=e.write),e.final&&(this._final=e.final))}_writev(e,t){t(null)}_write(e,t){this._writableState.autoBatch(e,t)}_final(e){e(null)}static isBackpressured(e){return 0!=(39845902&e._duplexState)}write(e){return this._writableState.updateNextTick(),this._writableState.push(e)}end(e){return this._writableState.updateNextTick(),this._writableState.end(e),this}},Readable:ne,Duplex:re,Transform:ie,PassThrough:class extends ie{}}},2553:(e,t,n)=>{var r=n(9509).Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function s(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=h,this.end=c,t=4;break;case"utf8":this.fillLast=a,t=4;break;case"base64":this.text=l,this.end=u,t=3;break;default:return this.write=d,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function h(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function l(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function f(e){return e&&e.length?this.write(e):""}t.s=s,s.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return i>0&&(e.lastNeed=i-1),i;if(--r=0)return i>0&&(e.lastNeed=i-2),i;if(--r=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},s.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},1463:e=>{function t(e){return(+Date.now()-e)/100&65535}e.exports=function(e){const n=+Date.now(),r=10*(e||5),i=[0];let s=1,o=t(n)-1&65535;return function(e){const a=t(n);let h=a-o&65535;for(h>r&&(h=r),o=a;h--;)s===r&&(s=0),i[s]=i[0===s?r-1:s-1],s++;e&&(i[s-1]+=e);const c=i[s-1],l=i.length=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(4889),t.setImmediate="undefined"!=typeof self&&self.setImmediate||"undefined"!=typeof globalThis&&globalThis.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||"undefined"!=typeof globalThis&&globalThis.clearImmediate||this&&this.clearImmediate},8687:(e,t,n)=>{var r=n(8764).Buffer;const i=16384;class s{constructor(e){this.length=e,this.missing=e,this.sources=null,this._chunks=Math.ceil(e/i),this._remainder=e%i||i,this._buffered=0,this._buffer=null,this._cancellations=null,this._reservations=0,this._flushed=!1}chunkLength(e){return e===this._chunks-1?this._remainder:i}chunkLengthRemaining(e){return this.length-e*i}chunkOffset(e){return e*i}reserve(){return this.init()?this._cancellations.length?this._cancellations.pop():this._reservations{e.exports=function(e,t){if(t>=e.length||t<0)return;var n=e.pop();if(t= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=h-c,v=Math.floor,k=String.fromCharCode;function E(e){throw RangeError(b[e])}function x(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function S(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+x((e=e.replace(y,".")).split("."),t).join(".")}function T(e){for(var t,n,r=[],i=0,s=e.length;i=55296&&t<=56319&&i65535&&(t+=k((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=k(e)})).join("")}function C(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function I(e,t,n){var r=0;for(e=n?v(e/d):e>>1,e+=v(e/t);e>w*l>>1;r+=h)e=v(e/w);return v(r+(w+1)*e/(e+u))}function P(e){var t,n,r,i,s,o,u,d,_,m,y,b=[],w=e.length,k=0,x=p,S=f;for((n=e.lastIndexOf(g))<0&&(n=0),r=0;r=128&&E("not-basic"),b.push(e.charCodeAt(r));for(i=n>0?n+1:0;i=w&&E("invalid-input"),((d=(y=e.charCodeAt(i++))-48<10?y-22:y-65<26?y-65:y-97<26?y-97:h)>=h||d>v((a-k)/o))&&E("overflow"),k+=d*o,!(d<(_=u<=S?c:u>=S+l?l:u-S));u+=h)o>v(a/(m=h-_))&&E("overflow"),o*=m;S=I(k-s,t=b.length+1,0==s),v(k/t)>a-x&&E("overflow"),x+=v(k/t),k%=t,b.splice(k++,0,x)}return A(b)}function R(e){var t,n,r,i,s,o,u,d,_,m,y,b,w,x,S,A=[];for(b=(e=T(e)).length,t=p,n=0,s=f,o=0;o=t&&yv((a-n)/(w=r+1))&&E("overflow"),n+=(u-t)*w,t=u,o=0;oa&&E("overflow"),y==t){for(d=n,_=h;!(d<(m=_<=s?c:_>=s+l?l:_-s));_+=h)S=d-m,x=h-m,A.push(k(C(m+S%x,0))),d=v(S/x);A.push(k(C(d,0))),s=I(n,w,r==i),n=0,++r}++n,++t}return A.join("")}o={version:"1.3.2",ucs2:{decode:T,encode:A},decode:P,encode:R,toASCII:function(e){return S(e,(function(e){return m.test(e)?"xn--"+R(e):e}))},toUnicode:function(e){return S(e,(function(e){return _.test(e)?P(e.slice(4).toLowerCase()):e}))}},void 0===(r=function(){return o}.call(t,n,t,e))||(e.exports=r)}()},8575:(e,t,n)=>{var r=n(2511),i=n(2502);function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=b,t.resolve=function(e,t){return b(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?b(e,!1,!0).resolveObject(t):t},t.format=function(e){i.isString(e)&&(e=b(e));return e instanceof s?e.format():s.prototype.format.call(e)},t.Url=s;var o=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,h=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(c),u=["%","/","?",";","#"].concat(l),d=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=n(7673);function b(e,t,n){if(e&&i.isObject(e)&&e instanceof s)return e;var r=new s;return r.parse(e,t,n),r}s.prototype.parse=function(e,t,n){if(!i.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var s=e.indexOf("?"),a=-1!==s&&s127?L+="x":L+=O[N];if(!L.match(f)){var D=P.slice(0,A),U=P.slice(A+1),M=O.match(p);M&&(D.push(M[1]),U.unshift(M[2])),U.length&&(b="/"+U.join(".")+b),this.hostname=D.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),I||(this.hostname=r.toASCII(this.hostname));var j=this.port?":"+this.port:"",H=this.hostname||"";this.host=H+j,this.href+=this.host,I&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!g[k])for(A=0,R=l.length;A0)&&n.host.split("@"))&&(n.auth=I.shift(),n.host=n.hostname=I.shift());return n.search=e.search,n.query=e.query,i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!E.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var S=E.slice(-1)[0],T=(n.host||e.host||E.length>1)&&("."===S||".."===S)||""===S,A=0,C=E.length;C>=0;C--)"."===(S=E[C])?E.splice(C,1):".."===S?(E.splice(C,1),A++):A&&(E.splice(C,1),A--);if(!v&&!k)for(;A--;A)E.unshift("..");!v||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),T&&"/"!==E.join("/").substr(-1)&&E.push("");var I,P=""===E[0]||E[0]&&"/"===E[0].charAt(0);x&&(n.hostname=n.host=P?"":E.length?E.shift():"",(I=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=I.shift(),n.host=n.hostname=I.shift()));return(v=v||n.host&&E.length)&&!P&&E.unshift(""),E.length?n.pathname=E.join("/"):(n.pathname=null,n.path=null),i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},s.prototype.parseHost=function(){var e=this.host,t=a.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},2502:e=>{e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},4927:e=>{function t(e){try{if(!globalThis.localStorage)return!1}catch(e){return!1}var t=globalThis.localStorage[e];return null!=t&&"true"===String(t).toLowerCase()}e.exports=function(e,n){if(t("noDeprecation"))return e;var r=!1;return function(){if(!r){if(t("throwDeprecation"))throw new Error(n);t("traceDeprecation")?console.trace(n):console.warn(n),r=!0}return e.apply(this,arguments)}}},1496:e=>{"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},4724:(e,t,n)=>{var r=n(8764).Buffer;e.exports=function(e){return e instanceof r}},9539:(e,t,n)=>{var r=n(8768),i=/%[sdj%]/g;t.format=function(e){if(!m(e)){for(var t=[],n=0;n=s)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),h=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),p(n)?r.showHidden=n:n&&t._extend(r,n),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=h),l(r,e,r.depth)}function h(e,t){var n=a.styles[t];return n?"["+a.colors[n][0]+"m"+e+"["+a.colors[n][1]+"m":e}function c(e,t){return e}function l(e,n,r){if(e.customInspect&&n&&E(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,e);return m(i)||(i=l(e,i,r)),i}var s=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(m(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(_(t))return e.stylize(""+t,"number");if(p(t))return e.stylize(""+t,"boolean");if(g(t))return e.stylize("null","null")}(e,n);if(s)return s;var o=Object.keys(n),a=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(n)),k(n)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return u(n);if(0===o.length){if(E(n)){var h=n.name?": "+n.name:"";return e.stylize("[Function"+h+"]","special")}if(b(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(v(n))return e.stylize(Date.prototype.toString.call(n),"date");if(k(n))return u(n)}var c,w="",x=!1,S=["{","}"];(f(n)&&(x=!0,S=["[","]"]),E(n))&&(w=" [Function"+(n.name?": "+n.name:"")+"]");return b(n)&&(w=" "+RegExp.prototype.toString.call(n)),v(n)&&(w=" "+Date.prototype.toUTCString.call(n)),k(n)&&(w=" "+u(n)),0!==o.length||x&&0!=n.length?r<0?b(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),c=x?function(e,t,n,r,i){for(var s=[],o=0,a=t.length;o=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0);if(r>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(c,w,S)):S[0]+w+S[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,i,s){var o,a,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?a=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(a=e.stylize("[Setter]","special")),A(r,i)||(o="["+i+"]"),a||(e.seen.indexOf(h.value)<0?(a=g(n)?l(e,h.value,null):l(e,h.value,n-1)).indexOf("\n")>-1&&(a=s?a.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+a.split("\n").map((function(e){return" "+e})).join("\n")):a=e.stylize("[Circular]","special")),y(o)){if(s&&i.match(/^\d+$/))return a;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+a}function f(e){return Array.isArray(e)}function p(e){return"boolean"==typeof e}function g(e){return null===e}function _(e){return"number"==typeof e}function m(e){return"string"==typeof e}function y(e){return void 0===e}function b(e){return w(e)&&"[object RegExp]"===x(e)}function w(e){return"object"==typeof e&&null!==e}function v(e){return w(e)&&"[object Date]"===x(e)}function k(e){return w(e)&&("[object Error]"===x(e)||e instanceof Error)}function E(e){return"function"==typeof e}function x(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(s)&&(s=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!o[e])if(new RegExp("\\b"+e+"\\b","i").test(s)){var n=r.pid;o[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,n,r)}}else o[e]=function(){};return o[e]},t.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=m,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=w,t.isDate=v,t.isError=k,t.isFunction=E,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(4724);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function A(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,n;console.log("%s - %s",(e=new Date,n=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":"),[e.getDate(),T[e.getMonth()],n].join(" ")),t.format.apply(t,arguments))},t.inherits=n(1496),t._extend=function(e,t){if(!t||!w(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}},2479:e=>{e.exports=function e(t,n){if(t&&n)return e(t)(n);if("function"!=typeof t)throw new TypeError("need wrapper function");return Object.keys(t).forEach((function(e){r[e]=t[e]})),r;function r(){for(var e=new Array(arguments.length),n=0;n{e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}},6475:()=>{},2203:()=>{},5381:()=>{},2927:()=>{},5517:()=>{},9354:()=>{},859:()=>{},7036:()=>{},8991:()=>{},1982:()=>{},1156:()=>{},5843:()=>{},3287:(e,t,n)=>{n.r(t),n.d(t,{default:()=>_,enableSecure:()=>g});var r=n(7187),i=n(1237),s=n(6581),o=n(1227),a=n(814);const h="tcpIncoming",c="tcpOutgoing",l="utpIncoming",u="utpOutgoing",d="webSeed",f=o("webtorrent:peer");let p=!1;const g=()=>{p=!0};class _ extends r{constructor(e,t){super(),this.id=e,this.type=t,f("new %s Peer %s",t,e),this.addr=null,this.conn=null,this.swarm=null,this.wire=null,this.source=null,this.connected=!1,this.destroyed=!1,this.timeout=null,this.retries=0,this.sentPe1=!1,this.sentPe2=!1,this.sentPe3=!1,this.sentPe4=!1,this.sentHandshake=!1}onConnect(){if(this.destroyed)return;this.connected=!0,f("Peer %s connected",this.id),clearTimeout(this.connectTimeout);const e=this.conn;e.once("end",(()=>{this.destroy()})),e.once("close",(()=>{this.destroy()})),e.once("finish",(()=>{this.destroy()})),e.once("error",(e=>{this.destroy(e)}));const t=this.wire=new a.Z(this.type,this.retries,p);t.once("end",(()=>{this.destroy()})),t.once("close",(()=>{this.destroy()})),t.once("finish",(()=>{this.destroy()})),t.once("error",(e=>{this.destroy(e)})),t.once("pe1",(()=>{this.onPe1()})),t.once("pe2",(()=>{this.onPe2()})),t.once("pe3",(()=>{this.onPe3()})),t.once("pe4",(()=>{this.onPe4()})),t.once("handshake",((e,t)=>{this.onHandshake(e,t)})),this.startHandshakeTimeout(),this.setThrottlePipes(),this.swarm&&("tcpOutgoing"===this.type?p&&0===this.retries&&!this.sentPe1?this.sendPe1():this.sentHandshake||this.handshake():"tcpIncoming"===this.type||this.sentHandshake||this.handshake())}sendPe1(){this.wire.sendPe1(),this.sentPe1=!0}onPe1(){this.sendPe2()}sendPe2(){this.wire.sendPe2(),this.sentPe2=!0}onPe2(){this.sendPe3()}sendPe3(){this.wire.sendPe3(this.swarm.infoHash),this.sentPe3=!0}onPe3(e){this.swarm&&(this.swarm.infoHashHash!==e&&this.destroy(new Error("unexpected crypto handshake info hash for this swarm")),this.sendPe4())}sendPe4(){this.wire.sendPe4(this.swarm.infoHash),this.sentPe4=!0}onPe4(){this.sentHandshake||this.handshake()}clearPipes(){this.conn.unpipe(),this.wire.unpipe()}setThrottlePipes(){const e=this;(0,i.pipeline)(this.conn,this.throttleGroups.down.throttle(),new i.Transform({transform(t,n){e.emit("download",t.length),e.destroyed||n(null,t)}}),this.wire,this.throttleGroups.up.throttle(),new i.Transform({transform(t,n){e.emit("upload",t.length),e.destroyed||n(null,t)}}),this.conn)}onHandshake(e,t){if(!this.swarm)return;if(this.destroyed)return;if(this.swarm.destroyed)return this.destroy(new Error("swarm already destroyed"));if(e!==this.swarm.infoHash)return this.destroy(new Error("unexpected handshake info hash for this swarm"));if(t===this.swarm.peerId)return this.destroy(new Error("refusing to connect to ourselves"));f("Peer %s got handshake %s",this.id,e),clearTimeout(this.handshakeTimeout),this.retries=0;let n=this.addr;!n&&this.conn.remoteAddress&&this.conn.remotePort&&(n=`${this.conn.remoteAddress}:${this.conn.remotePort}`),this.swarm._onWire(this.wire,n),this.swarm&&!this.swarm.destroyed&&(this.sentHandshake||this.handshake())}handshake(){const e={dht:!this.swarm.private&&!!this.swarm.client.dht,fast:!0};this.wire.handshake(this.swarm.infoHash,this.swarm.client.peerId,e),this.sentHandshake=!0}startConnectTimeout(){clearTimeout(this.connectTimeout);const e={webrtc:25e3,tcpOutgoing:5e3,utpOutgoing:5e3};this.connectTimeout=setTimeout((()=>{this.destroy(new Error("connect timeout"))}),e[this.type]),this.connectTimeout.unref&&this.connectTimeout.unref()}startHandshakeTimeout(){clearTimeout(this.handshakeTimeout),this.handshakeTimeout=setTimeout((()=>{this.destroy(new Error("handshake timeout"))}),25e3),this.handshakeTimeout.unref&&this.handshakeTimeout.unref()}destroy(e){if(this.destroyed)return;this.destroyed=!0,this.connected=!1,f("destroy %s %s (error: %s)",this.type,this.id,e&&(e.message||e)),clearTimeout(this.connectTimeout),clearTimeout(this.handshakeTimeout);const t=this.swarm,n=this.conn,r=this.wire;this.swarm=null,this.conn=null,this.wire=null,t&&r&&s(t.wires,t.wires.indexOf(r)),n&&(n.on("error",(()=>{})),n.destroy()),r&&r.destroy(),t&&t.removePeer(this.id)}}_.TYPE_TCP_INCOMING=h,_.TYPE_TCP_OUTGOING=c,_.TYPE_UTP_INCOMING=l,_.TYPE_UTP_OUTGOING=u,_.TYPE_WEBRTC="webrtc",_.TYPE_WEBSEED=d,_.SOURCE_MANUAL="manual",_.SOURCE_TRACKER="tracker",_.SOURCE_DHT="dht",_.SOURCE_LSD="lsd",_.SOURCE_UT_PEX="ut_pex",_.createWebRTCPeer=(e,t,n)=>{const r=new _(e.id,"webrtc");if(r.conn=e,r.swarm=t,r.throttleGroups=n,r.conn.connected)r.onConnect();else{const e=()=>{r.conn.removeListener("connect",t),r.conn.removeListener("error",n)},t=()=>{e(),r.onConnect()},n=t=>{e(),r.destroy(t)};r.conn.once("connect",t),r.conn.once("error",n),r.startConnectTimeout()}return r},_.createTCPIncomingPeer=(e,t)=>_._createIncomingPeer(e,h,t),_.createUTPIncomingPeer=(e,t)=>_._createIncomingPeer(e,l,t),_.createTCPOutgoingPeer=(e,t,n)=>_._createOutgoingPeer(e,t,c,n),_.createUTPOutgoingPeer=(e,t,n)=>_._createOutgoingPeer(e,t,u,n),_._createIncomingPeer=(e,t,n)=>{const r=`${e.remoteAddress}:${e.remotePort}`,i=new _(r,t);return i.conn=e,i.addr=r,i.throttleGroups=n,i.onConnect(),i},_._createOutgoingPeer=(e,t,n,r)=>{const i=new _(e,n);return i.addr=e,i.swarm=t,i.throttleGroups=r,i},_.createWebSeedPeer=(e,t,n,r)=>{const i=new _(t,d);return i.swarm=n,i.conn=e,i.throttleGroups=r,i.onConnect(),i}},502:(e,t,n)=>{n.d(t,{Z:()=>p});var r=n(5194);function i(e){const t=e<0?1:0;return e=Math.abs(Number(e||1)),Math.floor(Math.log10(e))+1+t}function s(e){return ArrayBuffer.isView(e)?"arraybufferview":Array.isArray(e)?"array":e instanceof Number?"number":e instanceof Boolean?"boolean":e instanceof Set?"set":e instanceof Map?"map":e instanceof String?"string":e instanceof ArrayBuffer?"arraybuffer":typeof e}function o(e,t,n){const i=[];let s=null;return o._encode(i,e),s=(0,r.zo)(i),o.bytes=s.length,ArrayBuffer.isView(t)?(t.set(s,n),t):s}o.bytes=-1,o._floatConversionDetected=!1,o._encode=function(e,t){if(null!=t)switch(s(t)){case"object":o.dict(e,t);break;case"map":o.dictMap(e,t);break;case"array":o.list(e,t);break;case"set":o.listSet(e,t);break;case"string":o.string(e,t);break;case"number":case"boolean":o.number(e,t);break;case"arraybufferview":o.buffer(e,new Uint8Array(t.buffer,t.byteOffset,t.byteLength));break;case"arraybuffer":o.buffer(e,new Uint8Array(t))}};const a=new Uint8Array([101]),h=new Uint8Array([100]),c=new Uint8Array([108]);o.buffer=function(e,t){e.push((0,r.gR)(t.length+":"),t)},o.string=function(e,t){e.push((0,r.gR)((0,r.gR)(t).byteLength+":"+t))},o.number=function(e,t){const n=2147483648,i=(t/n<<0)*n+(t%n<<0);e.push((0,r.gR)("i"+i+"e")),i===t||o._floatConversionDetected||(o._floatConversionDetected=!0,console.warn('WARNING: Possible data corruption detected with value "'+t+'":','Bencoding only defines support for integers, value was converted to "'+i+'"'),console.trace())},o.dict=function(e,t){e.push(h);let n,r=0;const i=Object.keys(t).sort(),s=i.length;for(;r=48)r=10*r+(n-48);else if(s!==t||43!==n){if(s!==t||45!==n){if(46===n)break;throw new Error("not a number: buffer["+s+"] = "+n)}i=-1}}return r*i}function d(e,t,n,i){return null==e||0===e.length?null:("number"!=typeof t&&null==i&&(i=t,t=void 0),"number"!=typeof n&&null==i&&(i=n,n=void 0),d.position=0,d.encoding=i||null,d.data=ArrayBuffer.isView(e)?new Uint8Array(e.slice(t,n)):(0,r.gR)(e),d.bytes=d.data.length,d.next())}d.bytes=0,d.position=0,d.data=null,d.encoding=null,d.next=function(){switch(d.data[d.position]){case 100:return d.dictionary();case 108:return d.list();case 105:return d.integer();default:return d.buffer()}},d.find=function(e){let t=d.position;const n=d.data.length,r=d.data;for(;t{function r(e){let t=e>>3;return e%8!=0&&t++,t}n.d(t,{Z:()=>i});class i{constructor(e=0,t){const n=null==t?void 0:t.grow;this.grow=n&&isFinite(n)&&r(n)||n||0,this.buffer="number"==typeof e?new Uint8Array(r(e)):e}get(e){const t=e>>3;return t>e%8)}set(e,t=!0){const n=e>>3;if(t){if(this.buffer.length>e%8}else n>e%8))}forEach(e,t=0,n=8*this.buffer.length){for(let r=t,i=r>>3,s=128>>r%8,o=this.buffer[i];r>1}}},814:(e,t,n)=>{n.d(t,{Z:()=>P});var r=n(502),i=n(8205),s=n(5517),o=n(1227),a=n(7830),h=n(1237),c=n(5194),l=n(1463),u=n(6581);const d=o("bittorrent-protocol"),f=(0,c.gR)("BitTorrent protocol"),p=new Uint8Array([0,0,0,0]),g=new Uint8Array([0,0,0,1,0]),_=new Uint8Array([0,0,0,1,1]),m=new Uint8Array([0,0,0,1,2]),y=new Uint8Array([0,0,0,1,3]),b=[0,0,0,0,0,0,0,0],w=[0,0,0,3,9,0,0],v=new Uint8Array([0,0,0,1,14]),k=new Uint8Array([0,0,0,1,15]),E=new Uint8Array([0,0,0,0,0,0,0,0]),x=new Uint8Array([0,0,1,2]),S=new Uint8Array([0,0,0,2]);function T(e,t){for(let n=e.length;n--;)e[n]^=t[n];return e}class A{constructor(e,t,n,r){this.piece=e,this.offset=t,this.length=n,this.callback=r}}class C{constructor(){this.buffer=new Uint8Array}get(e){return!0}set(e){}}class I extends h.Duplex{constructor(e=null,t=0,n=!1){super(),this._debugId=(0,c.oc)((0,c.O6)(4)),this._debug("new wire"),this.peerId=null,this.peerIdBuffer=null,this.type=e,this.amChoking=!0,this.amInterested=!1,this.peerChoking=!0,this.peerInterested=!1,this.peerPieces=new i.Z(0,{grow:4e5}),this.extensions={},this.peerExtensions={},this.requests=[],this.peerRequests=[],this.extendedMapping={},this.peerExtendedMapping={},this.extendedHandshake={},this.peerExtendedHandshake={},this.hasFast=!1,this.allowedFastSet=[],this.peerAllowedFastSet=[],this._ext={},this._nextExt=1,this.uploaded=0,this.downloaded=0,this.uploadSpeed=l(),this.downloadSpeed=l(),this._keepAliveInterval=null,this._timeout=null,this._timeoutMs=0,this._timeoutExpiresAt=null,this._finished=!1,this._parserSize=0,this._parser=null,this._buffer=[],this._bufferSize=0,this._peEnabled=n,n?(this._dh=s.createDiffieHellman("ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a36210000000000090563","hex",2),this._myPubKey=this._dh.generateKeys("hex")):this._myPubKey=null,this._peerPubKey=null,this._sharedSecret=null,this._peerCryptoProvide=[],this._cryptoHandshakeDone=!1,this._cryptoSyncPattern=null,this._waitMaxBytes=null,this._encryptionMethod=null,this._encryptGenerator=null,this._decryptGenerator=null,this._setGenerators=!1,this.once("finish",(()=>this._onFinish())),this.on("finish",this._onFinish),this._debug("type:",this.type),"tcpIncoming"===this.type&&this._peEnabled?this._determineHandshakeType():"tcpOutgoing"===this.type&&this._peEnabled&&0===t?this._parsePe2():this._parseHandshake(null)}setKeepAlive(e){this._debug("setKeepAlive %s",e),clearInterval(this._keepAliveInterval),!1!==e&&(this._keepAliveInterval=setInterval((()=>{this.keepAlive()}),55e3))}setTimeout(e,t){this._debug("setTimeout ms=%d unref=%s",e,t),this._timeoutMs=e,this._timeoutUnref=!!t,this._resetTimeout(!0)}destroy(){if(!this.destroyed)return this._debug("destroy"),this.end(),this}end(e){if(!this.destroyed&&!this.destroying)return this._debug("end"),this._onUninterested(),this._onChoke(),super.end(e)}use(e){const t=e.prototype.name;if(!t)throw new Error('Extension class requires a "name" property on the prototype');this._debug("use extension.name=%s",t);const n=this._nextExt,r=new e(this);function i(){}"function"!=typeof r.onHandshake&&(r.onHandshake=i),"function"!=typeof r.onExtendedHandshake&&(r.onExtendedHandshake=i),"function"!=typeof r.onMessage&&(r.onMessage=i),this.extendedMapping[n]=t,this._ext[t]=r,this[t]=r,this._nextExt+=1}keepAlive(){this._debug("keep-alive"),this._push(p)}sendPe1(){if(this._peEnabled){const e=Math.floor(513*Math.random()),t=(0,c.O6)(e);this._push((0,c.zo)([(0,c._0)(this._myPubKey),t]))}}sendPe2(){const e=Math.floor(513*Math.random()),t=(0,c.O6)(e);this._push((0,c.zo)([(0,c._0)(this._myPubKey),t]))}async sendPe3(e){await this.setEncrypt(this._sharedSecret,e);const t=await(0,c.vp)((0,c._0)(this._utfToHex("req1")+this._sharedSecret)),n=T(await(0,c.vp)((0,c._0)(this._utfToHex("req2")+e)),await(0,c.vp)((0,c._0)(this._utfToHex("req3")+this._sharedSecret))),r=new DataView((0,c.O6)(2).buffer).getUint16(0)%512,i=(0,c.O6)(r);let s=new Uint8Array(14+r+2);s.set(E),s.set(x,8);const o=new DataView(s.buffer);o.setInt16(12,r),i.copy(s,14),o.setInt16(14+r,0),s=this._encryptHandshake(s),this._push((0,c.zo)([t,n,s]))}async sendPe4(e){await this.setEncrypt(this._sharedSecret,e);const t=new DataView((0,c.O6)(2).buffer).getUint16(0)%512,n=(0,c.O6)(t);let r=new Uint8Array(14+t);const i=new DataView(r.buffer);r.set(E),r.set(S,8),i.setInt16(12,t),r.set(n,14),r=this._encryptHandshake(r),this._push(r),this._cryptoHandshakeDone=!0,this._debug("completed crypto handshake")}handshake(e,t,n){let r,i;if("string"==typeof e?(e=e.toLowerCase(),r=(0,c._0)(e)):(r=e,e=(0,c.oc)(r)),"string"==typeof t?i=(0,c._0)(t):(i=t,t=(0,c.oc)(i)),this._infoHash=r,20!==r.length||20!==i.length)throw new Error("infoHash and peerId MUST have length 20");this._debug("handshake i=%s p=%s exts=%o",e,t,n);const s=new Uint8Array(b);this.extensions={extended:!0,dht:!(!n||!n.dht),fast:!(!n||!n.fast)},s[5]|=16,this.extensions.dht&&(s[7]|=1),this.extensions.fast&&(s[7]|=4),this.extensions.fast&&this.peerExtensions.fast&&(this._debug("fast extension is enabled"),this.hasFast=!0),this._push((0,c.zo)([f,s,r,i])),this._handshakeSent=!0,this.peerExtensions.extended&&!this._extendedHandshakeSent&&this._sendExtendedHandshake()}_sendExtendedHandshake(){const e=Object.assign({},this.extendedHandshake);e.m={};for(const t in this.extendedMapping){const n=this.extendedMapping[t];e.m[n]=Number(t)}this.extended(0,r.Z.encode(e)),this._extendedHandshakeSent=!0}choke(){if(!this.amChoking)if(this.amChoking=!0,this._debug("choke"),this._push(g),this.hasFast){let e=0;for(;this.peerRequests.length>e;){const t=this.peerRequests[e];this.allowedFastSet.includes(t.piece)?++e:this.reject(t.piece,t.offset,t.length)}}else for(;this.peerRequests.length;)this.peerRequests.pop()}unchoke(){this.amChoking&&(this.amChoking=!1,this._debug("unchoke"),this._push(_))}interested(){this.amInterested||(this.amInterested=!0,this._debug("interested"),this._push(m))}uninterested(){this.amInterested&&(this.amInterested=!1,this._debug("uninterested"),this._push(y))}have(e){this._debug("have %d",e),this._message(4,[e],null)}bitfield(e){this._debug("bitfield"),ArrayBuffer.isView(e)||(e=e.buffer),this._message(5,[],e)}request(e,t,n,r){return r||(r=()=>{}),this._finished?r(new Error("wire is closed")):!this.peerChoking||this.hasFast&&this.peerAllowedFastSet.includes(e)?(this._debug("request index=%d offset=%d length=%d",e,t,n),this.requests.push(new A(e,t,n,r)),this._timeout||this._resetTimeout(!0),void this._message(6,[e,t,n],null)):r(new Error("peer is choking"))}piece(e,t,n){this._debug("piece index=%d offset=%d",e,t),this._message(7,[e,t],n),this.uploaded+=n.length,this.uploadSpeed(n.length),this.emit("upload",n.length)}cancel(e,t,n){this._debug("cancel index=%d offset=%d length=%d",e,t,n),this._callback(this._pull(this.requests,e,t,n),new Error("request was cancelled"),null),this._message(8,[e,t,n],null)}port(e){this._debug("port %d",e);const t=new Uint8Array(w);new DataView(t.buffer).setUint16(5,e),this._push(t)}suggest(e){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("suggest %d",e),this._message(13,[e],null)}haveAll(){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("have-all"),this._push(v)}haveNone(){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("have-none"),this._push(k)}reject(e,t,n){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("reject index=%d offset=%d length=%d",e,t,n),this._pull(this.peerRequests,e,t,n),this._message(16,[e,t,n],null)}allowedFast(e){if(!this.hasFast)throw Error("fast extension is disabled");this._debug("allowed-fast %d",e),this.allowedFastSet.includes(e)||this.allowedFastSet.push(e),this._message(17,[e],null)}extended(e,t){if(this._debug("extended ext=%s",e),"string"==typeof e&&this.peerExtendedMapping[e]&&(e=this.peerExtendedMapping[e]),"number"!=typeof e)throw new Error(`Unrecognized extension: ${e}`);{const n=new Uint8Array([e]),i=ArrayBuffer.isView(t)?t:r.Z.encode(t);this._message(20,[],(0,c.zo)([n,i]))}}async setEncrypt(e,t){let n,r,i,s;switch(this.type){case"tcpIncoming":n=await(0,c.vp)((0,c._0)(this._utfToHex("keyB")+e+t)),i=await(0,c.vp)((0,c._0)(this._utfToHex("keyA")+e+t)),r=[];for(const e of n.values())r.push(e);s=[];for(const e of i.values())s.push(e);this._encryptGenerator=new a(r),this._decryptGenerator=new a(s);break;case"tcpOutgoing":n=await(0,c.vp)((0,c._0)(this._utfToHex("keyA")+e+t)),i=await(0,c.vp)((0,c._0)(this._utfToHex("keyB")+e+t)),r=[];for(const e of n.values())r.push(e);s=[];for(const e of i.values())s.push(e);this._encryptGenerator=new a(r),this._decryptGenerator=new a(s);break;default:return!1}for(let e=0;e<1024;e++)this._encryptGenerator.randomByte(),this._decryptGenerator.randomByte();return this._setGenerators=!0,!0}_message(e,t,n){const r=n?n.length:0,i=new Uint8Array(5+4*t.length),s=new DataView(i.buffer);s.setUint32(0,i.length+r-4),i[4]=e;for(let e=0;e{if(i===this._pull(this.peerRequests,e,t,n))return r?(this._debug("error satisfying request index=%d offset=%d length=%d (%s)",e,t,n,r.message),void(this.hasFast&&this.reject(e,t,n))):void this.piece(e,t,s)},i=new A(e,t,n,r);this.peerRequests.push(i),this.emit("request",e,t,n,r)}_onPiece(e,t,n){this._debug("got piece index=%d offset=%d",e,t),this._callback(this._pull(this.requests,e,t,n.length),null,n),this.downloaded+=n.length,this.downloadSpeed(n.length),this.emit("download",n.length),this.emit("piece",e,t,n)}_onCancel(e,t,n){this._debug("got cancel index=%d offset=%d length=%d",e,t,n),this._pull(this.peerRequests,e,t,n),this.emit("cancel",e,t,n)}_onPort(e){this._debug("got port %d",e),this.emit("port",e)}_onSuggest(e){if(!this.hasFast)return this._debug("Error: got suggest whereas fast extension is disabled"),void this.destroy();this._debug("got suggest %d",e),this.emit("suggest",e)}_onHaveAll(){if(!this.hasFast)return this._debug("Error: got have-all whereas fast extension is disabled"),void this.destroy();this._debug("got have-all"),this.peerPieces=new C,this.emit("have-all")}_onHaveNone(){if(!this.hasFast)return this._debug("Error: got have-none whereas fast extension is disabled"),void this.destroy();this._debug("got have-none"),this.emit("have-none")}_onReject(e,t,n){if(!this.hasFast)return this._debug("Error: got reject whereas fast extension is disabled"),void this.destroy();this._debug("got reject index=%d offset=%d length=%d",e,t,n),this._callback(this._pull(this.requests,e,t,n),new Error("request was rejected"),null),this.emit("reject",e,t,n)}_onAllowedFast(e){if(!this.hasFast)return this._debug("Error: got allowed-fast whereas fast extension is disabled"),void this.destroy();this._debug("got allowed-fast %d",e),this.peerAllowedFastSet.includes(e)||this.peerAllowedFastSet.push(e),this.peerAllowedFastSet.length>100&&this.peerAllowedFastSet.shift(),this.emit("allowed-fast",e)}_onExtended(e,t){if(0===e){let e;try{e=r.Z.decode(t)}catch(e){this._debug("ignoring invalid extended handshake: %s",e.message||e)}if(!e)return;if(this.peerExtendedHandshake=e,"object"==typeof e.m)for(const t in e.m)this.peerExtendedMapping[t]=Number(e.m[t].toString());for(const e in this._ext)this.peerExtendedMapping[e]&&this._ext[e].onExtendedHandshake(this.peerExtendedHandshake);this._debug("got extended handshake"),this.emit("extended","handshake",this.peerExtendedHandshake)}else this.extendedMapping[e]&&(e=this.extendedMapping[e],this._ext[e]&&this._ext[e].onMessage(t)),this._debug("got extended message ext=%s",e),this.emit("extended",e,t)}_onTimeout(){this._debug("request timed out"),this._callback(this.requests.shift(),new Error("request has timed out"),null),this.emit("timeout")}_write(e,t){if(2===this._encryptionMethod&&this._cryptoHandshakeDone&&(e=this._decrypt(e)),this._bufferSize+=e.length,this._buffer.push(e),this._buffer.length>1&&(this._buffer=[(0,c.zo)(this._buffer,this._bufferSize)]),this._cryptoSyncPattern){const t=this._buffer[0].indexOf(this._cryptoSyncPattern);if(-1!==t)this._buffer[0]=this._buffer[0].slice(t+this._cryptoSyncPattern.length),this._bufferSize-=t+this._cryptoSyncPattern.length,this._cryptoSyncPattern=null;else if(this._bufferSize+e.length>this._waitMaxBytes+this._cryptoSyncPattern.length)return this._debug("Error: could not resynchronize"),void this.destroy()}for(;this._bufferSize>=this._parserSize&&!this._cryptoSyncPattern;)if(0===this._parserSize)this._parser(new Uint8Array);else{const e=this._buffer[0];this._bufferSize-=this._parserSize,this._buffer=this._bufferSize?[e.slice(this._parserSize)]:[],this._parser(e.slice(0,this._parserSize))}t(null)}_callback(e,t,n){e&&(this._resetTimeout(!this.peerChoking&&!this._finished),e.callback(t,n))}_resetTimeout(e){if(!e||!this._timeoutMs||!this.requests.length)return clearTimeout(this._timeout),this._timeout=null,void(this._timeoutExpiresAt=null);const t=Date.now()+this._timeoutMs;if(this._timeout){if(t-this._timeoutExpiresAt<.05*this._timeoutMs)return;clearTimeout(this._timeout)}this._timeoutExpiresAt=t,this._timeout=setTimeout((()=>this._onTimeout()),this._timeoutMs),this._timeoutUnref&&this._timeout.unref&&this._timeout.unref()}_parse(e,t){this._parserSize=e,this._parser=t}_parseUntil(e,t){this._cryptoSyncPattern=e,this._waitMaxBytes=t}_onMessageLength(e){const t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0);t>0?this._parse(t,this._onMessage):(this._onKeepAlive(),this._parse(4,this._onMessageLength))}_onMessage(e){this._parse(4,this._onMessageLength);const t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e[0]){case 0:return this._onChoke();case 1:return this._onUnchoke();case 2:return this._onInterested();case 3:return this._onUninterested();case 4:return this._onHave(t.getUint32(1));case 5:return this._onBitField(e.slice(1));case 6:return this._onRequest(t.getUint32(1),t.getUint32(5),t.getUint32(9));case 7:return this._onPiece(t.getUint32(1),t.getUint32(5),e.slice(9));case 8:return this._onCancel(t.getUint32(1),t.getUint32(5),t.getUint32(9));case 9:return this._onPort(t.getUint16(1));case 13:return this._onSuggest(t.getUint32(1));case 14:return this._onHaveAll();case 15:return this._onHaveNone();case 16:return this._onReject(t.getUint32(1),t.getUint32(5),t.getUint32(9));case 17:return this._onAllowedFast(t.getUint32(1));case 20:return this._onExtended(e[1],e.slice(2));default:return this._debug("got unknown message"),this.emit("unknownmessage",e)}}_determineHandshakeType(){this._parse(1,(e=>{const t=e[0];19===t?this._parse(t+48,this._onHandshakeBuffer):this._parsePe1(e)}))}_parsePe1(e){this._parse(95,(t=>{this._onPe1((0,c.zo)([e,t])),this._parsePe3()}))}_parsePe2(){this._parse(96,(e=>{for(this._onPe2(e);!this._setGenerators;);this._parsePe4()}))}async _parsePe3(){const e=await(0,c.vp)((0,c._0)(this._utfToHex("req1")+this._sharedSecret));this._parseUntil(e,512),this._parse(20,(e=>{for(this._onPe3(e);!this._setGenerators;);this._parsePe3Encrypted()}))}_parsePe3Encrypted(){this._parse(14,(e=>{const t=this._decryptHandshake(e.slice(0,8)),n=this._decryptHandshake(e.slice(8,12)),r=new DataView(this._decryptHandshake(e.slice(12,14)).buffer).getUint16(0);this._parse(r,(e=>{e=this._decryptHandshake(e),this._parse(2,(r=>{const i=new DataView(this._decryptHandshake(r).buffer).getUint16(0);this._parse(i,(r=>{r=this._decryptHandshake(r),this._onPe3Encrypted(t,n,e,r);const s=i?r[0]:null,o=i?r.slice(1,20):null;19===s&&"BitTorrent protocol"===(0,c.vV)(o)?this._onHandshakeBuffer(r.slice(1)):this._parseHandshake()}))}))}))}))}_parsePe4(){const e=this._decryptHandshake(E);this._parseUntil(e,512),this._parse(6,(e=>{const t=this._decryptHandshake(e.slice(0,4)),n=new DataView(this._decryptHandshake(e.slice(4,6)).buffer).getUint16(0);this._parse(n,(e=>{this._decryptHandshake(e),this._onPe4(t),this._parseHandshake(null)}))}))}_parseHandshake(){this._parse(1,(e=>{const t=e[0];if(19!==t)return this._debug("Error: wire not speaking BitTorrent protocol (%s)",t.toString()),void this.end();this._parse(t+48,this._onHandshakeBuffer)}))}_onHandshakeBuffer(e){const t=e.slice(0,19);if("BitTorrent protocol"!==(0,c.vV)(t))return this._debug("Error: wire not speaking BitTorrent protocol (%s)",(0,c.vV)(t)),void this.end();e=e.slice(19),this._onHandshake(e.slice(8,28),e.slice(28,48),{dht:!!(1&e[7]),fast:!!(4&e[7]),extended:!!(16&e[5])}),this._parse(4,this._onMessageLength)}_onFinish(){for(this._finished=!0,this.push(null);this.read(););for(clearInterval(this._keepAliveInterval),this._parse(Number.MAX_VALUE,(()=>{}));this.peerRequests.length;)this.peerRequests.pop();for(;this.requests.length;)this._callback(this.requests.pop(),new Error("wire was closed"),null)}_debug(...e){e[0]=`[${this._debugId}] ${e[0]}`,d(...e)}_pull(e,t,n,r){for(let i=0;i{n.d(t,{te:()=>m,oc:()=>o,vV:()=>p,Ff:()=>y,zo:()=>h,Dg:()=>c,vp:()=>x,_0:()=>a,E:()=>b,O6:()=>S,gR:()=>_});const r="0123456789abcdef",i=[],s=[];for(let e=0;e<256;e++)i[e]=r[e>>4&15]+r[15&e],e<16&&(e<10?s[48+e]=e:s[87+e]=e);const o=e=>{const t=e.length;let n="",r=0;for(;r{const t=e.length>>1,n=t<<1,r=new Uint8Array(t);let i=0,o=0;for(;o{if(!t){t=0;let n=e.length||e.byteLength||0;for(;n--;)t+=e[n].length}const n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.byteLength||t.length;return n},c=(e,t)=>{if(e.byteLength!==t.byteLength)return!1;for(let n=e.length;n>-1;n-=1)if(e[n]!==t[n])return!1;return!0};for(var l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u="undefined"==typeof Uint8Array?[]:new Uint8Array(256),d=0;d<64;d++)u[l.charCodeAt(d)]=d;const f=new TextDecoder,p=(e,t)=>{if(!t)return f.decode(e);return new TextDecoder(t).decode(e)},g=new TextEncoder,_=e=>g.encode(e),m=e=>function(e){var t,n=new Uint8Array(e),r=n.length,i="";for(t=0;t>2],i+=l[(3&n[t])<<4|n[t+1]>>4],i+=l[(15&n[t+1])<<2|n[t+2]>>6],i+=l[63&n[t+2]];return r%3==2?i=i.substring(0,i.length-1)+"=":r%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e),y=e=>{let t,n="",i=0;const s=e.length;for(;i>4],n+=r[15&t];return n},b=e=>{const t=new Array(e.length/2);for(let n=0,r=e.length/2;n{if(!k)throw new Error("no web crypto support");"string"==typeof e&&(e=_(e));const r=new Uint8Array(await k.digest(n,e));return t?E[t](r):r},S=e=>{const t=new Uint8Array(e);return v.getRandomValues(t)}},8128:(e,t,n)=>{n.r(t),n.d(t,{inflateSync:()=>yn});function r(e){let t=e.length;for(;--t>=0;)e[t]=0}const i=256,s=286,o=30,a=15,h=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),c=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),u=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);r(d);const f=new Array(60);r(f);const p=new Array(512);r(p);const g=new Array(256);r(g);const _=new Array(29);r(_);const m=new Array(o);function y(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let b,w,v;function k(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}r(m);const E=e=>e<256?p[e]:p[256+(e>>>7)],x=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},S=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<{S(e,n[2*t],n[2*t+1])},A=(e,t)=>{let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1},C=(e,t,n)=>{const r=new Array(16);let i,s,o=0;for(i=1;i<=a;i++)o=o+n[i-1]<<1,r[i]=o;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=A(r[t]++,t))}},I=e=>{let t;for(t=0;t{e.bi_valid>8?x(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},R=(e,t,n,r)=>{const i=2*t,s=2*n;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,s,o,a,l=0;if(0!==e.sym_next)do{r=255&e.pending_buf[e.sym_buf+l++],r+=(255&e.pending_buf[e.sym_buf+l++])<<8,s=e.pending_buf[e.sym_buf+l++],0===r?T(e,s,t):(o=g[s],T(e,o+i+1,t),a=h[o],0!==a&&(s-=_[o],S(e,s,a)),r--,o=E(r),T(e,o,n),a=c[o],0!==a&&(r-=m[o],S(e,r,a)))}while(l{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,s=t.stat_desc.elems;let o,h,c,l=-1;for(e.heap_len=0,e.heap_max=573,o=0;o>1;o>=1;o--)O(e,n,o);c=s;do{o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],O(e,n,1),h=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=h,n[2*c]=n[2*o]+n[2*h],e.depth[c]=(e.depth[o]>=e.depth[h]?e.depth[o]:e.depth[h])+1,n[2*o+1]=n[2*h+1]=c,e.heap[1]=c++,O(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,h=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,u,d,f,p,g,_=0;for(f=0;f<=a;f++)e.bl_count[f]=0;for(n[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)u=e.heap[l],f=n[2*n[2*u+1]+1]+1,f>c&&(f=c,_++),n[2*u+1]=f,u>r||(e.bl_count[f]++,p=0,u>=h&&(p=o[u-h]),g=n[2*u],e.opt_len+=g*(f+p),s&&(e.static_len+=g*(i[2*u+1]+p)));if(0!==_){do{for(f=c-1;0===e.bl_count[f];)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[c]--,_-=2}while(_>0);for(f=c;0!==f;f--)for(u=e.bl_count[f];0!==u;)d=e.heap[--l],d>r||(n[2*d+1]!==f&&(e.opt_len+=(f-n[2*d+1])*n[2*d],n[2*d+1]=f),u--)}})(e,t),C(n,l,e.bl_count)},B=(e,t,n)=>{let r,i,s=-1,o=t[1],a=0,h=7,c=4;for(0===o&&(h=138,c=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=t[2*(r+1)+1],++a{let r,i,s=-1,o=t[1],a=0,h=7,c=4;for(0===o&&(h=138,c=3),r=0;r<=n;r++)if(i=o,o=t[2*(r+1)+1],!(++a{S(e,0+(r?1:0),3),P(e),x(e,n),x(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n};var j=(e,t,n,r)=>{let s,o,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t{let t;for(B(e,e.dyn_ltree,e.l_desc.max_code),B(e,e.dyn_dtree,e.d_desc.max_code),N(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*u[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),s=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=s&&(s=o)):s=o=n+5,n+4<=s&&-1!==t?M(e,t,n,r):4===e.strategy||o===s?(S(e,2+(r?1:0),3),L(e,d,f)):(S(e,4+(r?1:0),3),((e,t,n,r)=>{let i;for(S(e,t-257,5),S(e,n-1,5),S(e,r-4,4),i=0;i{U||((()=>{let e,t,n,r,i;const u=new Array(16);for(n=0,r=0;r<28;r++)for(_[r]=n,e=0;e<1<>=7;r(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(g[n]+i+1)]++,e.dyn_dtree[2*E(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{S(e,2,3),T(e,256,d),(e=>{16===e.bi_valid?(x(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}};var q=(e,t,n,r)=>{let i=65535&e|0,s=e>>>16&65535|0,o=0;for(;0!==n;){o=n>2e3?2e3:n,n-=o;do{i=i+t[r++]|0,s=s+i|0}while(--o);i%=65521,s%=65521}return i|s<<16|0};const F=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t})());var z=(e,t,n,r)=>{const i=F,s=r+n;e^=-1;for(let n=r;n>>8^i[255&(e^t[n])];return-1^e},$={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},W={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:V,_tr_stored_block:G,_tr_flush_block:K,_tr_tally:Z,_tr_align:Y}=H,{Z_NO_FLUSH:J,Z_PARTIAL_FLUSH:Q,Z_FULL_FLUSH:X,Z_FINISH:ee,Z_BLOCK:te,Z_OK:ne,Z_STREAM_END:re,Z_STREAM_ERROR:ie,Z_DATA_ERROR:se,Z_BUF_ERROR:oe,Z_DEFAULT_COMPRESSION:ae,Z_FILTERED:he,Z_HUFFMAN_ONLY:ce,Z_RLE:le,Z_FIXED:ue,Z_DEFAULT_STRATEGY:de,Z_UNKNOWN:fe,Z_DEFLATED:pe}=W,ge=258,_e=262,me=42,ye=113,be=666,we=(e,t)=>(e.msg=$[t],t),ve=e=>2*e-(e>4?9:0),ke=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Ee=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do{n=e.head[--r],e.head[r]=n>=i?n-i:0}while(--t);t=i,r=t;do{n=e.prev[--r],e.prev[r]=n>=i?n-i:0}while(--t)};let xe=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))},Te=(e,t)=>{K(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Se(e.strm)},Ae=(e,t)=>{e.pending_buf[e.pending++]=t},Ce=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Ie=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),0===i?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),1===e.state.wrap?e.adler=q(e.adler,t,i,n):2===e.state.wrap&&(e.adler=z(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},Pe=(e,t)=>{let n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match;const h=e.strstart>e.w_size-_e?e.strstart-(e.w_size-_e):0,c=e.window,l=e.w_mask,u=e.prev,d=e.strstart+ge;let f=c[s+o-1],p=c[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(n=t,c[n+o]===p&&c[n+o-1]===f&&c[n]===c[s]&&c[++n]===c[s+1]){s+=2,n++;do{}while(c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&c[++s]===c[++n]&&so){if(e.match_start=t,o=r,r>=a)break;f=c[s+o-1],p=c[s+o]}}}while((t=u[t&l])>h&&0!=--i);return o<=e.lookahead?o:e.lookahead},Re=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-_e)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Ee(e),r+=t),0===e.strm.avail_in)break;if(n=Ie(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=3)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=xe(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=xe(e,e.ins_h,e.window[i+3-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<_e&&0!==e.strm.avail_in)},Oe=(e,t)=>{let n,r,i,s=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,o=0,a=e.strm.avail_in;do{if(n=65535,i=e.bi_valid+42>>3,e.strm.avail_outr+e.strm.avail_in&&(n=r+e.strm.avail_in),n>i&&(n=i),n>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,Se(e.strm),r&&(r>n&&(r=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,n-=r),n&&(Ie(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(0===o);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_wateri&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,i+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),i>e.strm.avail_in&&(i=e.strm.avail_in),i&&(Ie(e.strm,e.window,e.strstart,i),e.strstart+=i,e.insert+=i>e.w_size-e.insert?e.w_size-e.insert:i),e.high_water>3,i=e.pending_buf_size-i>65535?65535:e.pending_buf_size-i,s=i>e.w_size?e.w_size:i,r=e.strstart-e.block_start,(r>=s||(r||t===ee)&&t!==J&&0===e.strm.avail_in&&r<=i)&&(n=r>i?i:r,o=t===ee&&0===e.strm.avail_in&&n===r?1:0,G(e,e.block_start,n,o),e.block_start+=n,Se(e.strm)),o?3:1)},Le=(e,t)=>{let n,r;for(;;){if(e.lookahead<_e){if(Re(e),e.lookahead<_e&&t===J)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=xe(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-_e&&(e.match_length=Pe(e,n)),e.match_length>=3)if(r=Z(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=xe(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=xe(e,e.ins_h,e.window[e.strstart+1]);else r=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Te(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===ee?(Te(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Te(e,!1),0===e.strm.avail_out)?1:2},Ne=(e,t)=>{let n,r,i;for(;;){if(e.lookahead<_e){if(Re(e),e.lookahead<_e&&t===J)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=xe(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,r=Z(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=xe(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(Te(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(r=Z(e,0,e.window[e.strstart-1]),r&&Te(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=Z(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===ee?(Te(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Te(e,!1),0===e.strm.avail_out)?1:2};function Be(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const De=[new Be(0,0,0,0,Oe),new Be(4,4,8,4,Le),new Be(4,5,16,8,Le),new Be(4,6,32,32,Le),new Be(4,4,16,16,Ne),new Be(8,16,32,32,Ne),new Be(8,16,128,128,Ne),new Be(8,32,128,256,Ne),new Be(32,128,258,1024,Ne),new Be(32,258,258,4096,Ne)];function Ue(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=pe,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),ke(this.dyn_ltree),ke(this.dyn_dtree),ke(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),ke(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),ke(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Me=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==me&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==ye&&t.status!==be?1:0},je=e=>{if(Me(e))return we(e,ie);e.total_in=e.total_out=0,e.data_type=fe;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?me:ye,e.adler=2===t.wrap?0:1,t.last_flush=-2,V(t),ne},He=e=>{const t=je(e);var n;return t===ne&&((n=e.state).window_size=2*n.w_size,ke(n.head),n.max_lazy_match=De[n.level].max_lazy,n.good_match=De[n.level].good_length,n.nice_match=De[n.level].nice_length,n.max_chain_length=De[n.level].max_chain,n.strstart=0,n.block_start=0,n.lookahead=0,n.insert=0,n.match_length=n.prev_length=2,n.match_available=0,n.ins_h=0),t},qe=(e,t,n,r,i,s)=>{if(!e)return ie;let o=1;if(t===ae&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),i<1||i>9||n!==pe||r<8||r>15||t<0||t>9||s<0||s>ue||8===r&&1!==o)return we(e,ie);8===r&&(r=9);const a=new Ue;return e.state=a,a.strm=e,a.status=me,a.wrap=o,a.gzhead=null,a.w_bits=r,a.w_size=1<qe(e,t,pe,15,8,de),deflateInit2:qe,deflateReset:He,deflateResetKeep:je,deflateSetHeader:(e,t)=>Me(e)||2!==e.state.wrap?ie:(e.state.gzhead=t,ne),deflate:(e,t)=>{if(Me(e)||t>te||t<0)return e?we(e,ie):ie;const n=e.state;if(!e.output||0!==e.avail_in&&!e.input||n.status===be&&t!==ee)return we(e,0===e.avail_out?oe:ie);const r=n.last_flush;if(n.last_flush=t,0!==n.pending){if(Se(e),0===e.avail_out)return n.last_flush=-1,ne}else if(0===e.avail_in&&ve(t)<=ve(r)&&t!==ee)return we(e,oe);if(n.status===be&&0!==e.avail_in)return we(e,oe);if(n.status===me&&0===n.wrap&&(n.status=ye),n.status===me){let t=pe+(n.w_bits-8<<4)<<8,r=-1;if(r=n.strategy>=ce||n.level<2?0:n.level<6?1:6===n.level?2:3,t|=r<<6,0!==n.strstart&&(t|=32),t+=31-t%31,Ce(n,t),0!==n.strstart&&(Ce(n,e.adler>>>16),Ce(n,65535&e.adler)),e.adler=1,n.status=ye,Se(e),0!==n.pending)return n.last_flush=-1,ne}if(57===n.status)if(e.adler=0,Ae(n,31),Ae(n,139),Ae(n,8),n.gzhead)Ae(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Ae(n,255&n.gzhead.time),Ae(n,n.gzhead.time>>8&255),Ae(n,n.gzhead.time>>16&255),Ae(n,n.gzhead.time>>24&255),Ae(n,9===n.level?2:n.strategy>=ce||n.level<2?4:0),Ae(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(Ae(n,255&n.gzhead.extra.length),Ae(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=z(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(Ae(n,0),Ae(n,0),Ae(n,0),Ae(n,0),Ae(n,0),Ae(n,9===n.level?2:n.strategy>=ce||n.level<2?4:0),Ae(n,3),n.status=ye,Se(e),0!==n.pending)return n.last_flush=-1,ne;if(69===n.status){if(n.gzhead.extra){let t=n.pending,r=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+r>n.pending_buf_size;){let i=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>t&&(e.adler=z(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex+=i,Se(e),0!==n.pending)return n.last_flush=-1,ne;t=0,r-=i}let i=new Uint8Array(n.gzhead.extra);n.pending_buf.set(i.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending+=r,n.gzhead.hcrc&&n.pending>t&&(e.adler=z(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=73}if(73===n.status){if(n.gzhead.name){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=z(e.adler,n.pending_buf,n.pending-r,r)),Se(e),0!==n.pending)return n.last_flush=-1,ne;r=0}t=n.gzindexr&&(e.adler=z(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=91}if(91===n.status){if(n.gzhead.comment){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=z(e.adler,n.pending_buf,n.pending-r,r)),Se(e),0!==n.pending)return n.last_flush=-1,ne;r=0}t=n.gzindexr&&(e.adler=z(e.adler,n.pending_buf,n.pending-r,r))}n.status=103}if(103===n.status){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Se(e),0!==n.pending))return n.last_flush=-1,ne;Ae(n,255&e.adler),Ae(n,e.adler>>8&255),e.adler=0}if(n.status=ye,Se(e),0!==n.pending)return n.last_flush=-1,ne}if(0!==e.avail_in||0!==n.lookahead||t!==J&&n.status!==be){let r=0===n.level?Oe(n,t):n.strategy===ce?((e,t)=>{let n;for(;;){if(0===e.lookahead&&(Re(e),0===e.lookahead)){if(t===J)return 1;break}if(e.match_length=0,n=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Te(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===ee?(Te(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Te(e,!1),0===e.strm.avail_out)?1:2})(n,t):n.strategy===le?((e,t)=>{let n,r,i,s;const o=e.window;for(;;){if(e.lookahead<=ge){if(Re(e),e.lookahead<=ge&&t===J)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=e.strstart-1,r=o[i],r===o[++i]&&r===o[++i]&&r===o[++i])){s=e.strstart+ge;do{}while(r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=Z(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Te(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===ee?(Te(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Te(e,!1),0===e.strm.avail_out)?1:2})(n,t):De[n.level].func(n,t);if(3!==r&&4!==r||(n.status=be),1===r||3===r)return 0===e.avail_out&&(n.last_flush=-1),ne;if(2===r&&(t===Q?Y(n):t!==te&&(G(n,0,0,!1),t===X&&(ke(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Se(e),0===e.avail_out))return n.last_flush=-1,ne}return t!==ee?ne:n.wrap<=0?re:(2===n.wrap?(Ae(n,255&e.adler),Ae(n,e.adler>>8&255),Ae(n,e.adler>>16&255),Ae(n,e.adler>>24&255),Ae(n,255&e.total_in),Ae(n,e.total_in>>8&255),Ae(n,e.total_in>>16&255),Ae(n,e.total_in>>24&255)):(Ce(n,e.adler>>>16),Ce(n,65535&e.adler)),Se(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?ne:re)},deflateEnd:e=>{if(Me(e))return ie;const t=e.state.status;return e.state=null,t===ye?we(e,se):ne},deflateSetDictionary:(e,t)=>{let n=t.length;if(Me(e))return ie;const r=e.state,i=r.wrap;if(2===i||1===i&&r.status!==me||r.lookahead)return ie;if(1===i&&(e.adler=q(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){0===i&&(ke(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(n-r.w_size,n),0),t=e,n=r.w_size}const s=e.avail_in,o=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,Re(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do{r.ins_h=xe(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++}while(--t);r.strstart=e,r.lookahead=2,Re(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=o,e.input=a,e.avail_in=s,r.wrap=i,ne},deflateInfo:"pako deflate (from Nodeca project)"};const ze=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var $e={assign:function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const t in n)ze(n,t)&&(e[t]=n[t])}}return e},flattenChunks:e=>{let t=0;for(let n=0,r=e.length;n=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ve[254]=Ve[254]=1;var Ge={string2buf:e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,n,r,i,s,o=e.length,a=0;for(i=0;i>>6,t[s++]=128|63&n):n<65536?(t[s++]=224|n>>>12,t[s++]=128|n>>>6&63,t[s++]=128|63&n):(t[s++]=240|n>>>18,t[s++]=128|n>>>12&63,t[s++]=128|n>>>6&63,t[s++]=128|63&n);return t},buf2string:(e,t)=>{const n=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let r,i;const s=new Array(2*n);for(i=0,r=0;r4)s[i++]=65533,r+=o-1;else{for(t&=2===o?31:3===o?15:7;o>1&&r1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&We)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+Ve[e[n]]>t?n:t}};var Ke=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ze=Object.prototype.toString,{Z_NO_FLUSH:Ye,Z_SYNC_FLUSH:Je,Z_FULL_FLUSH:Qe,Z_FINISH:Xe,Z_OK:et,Z_STREAM_END:tt,Z_DEFAULT_COMPRESSION:nt,Z_DEFAULT_STRATEGY:rt,Z_DEFLATED:it}=W;function st(e){this.options=$e.assign({level:nt,method:it,chunkSize:16384,windowBits:15,memLevel:8,strategy:rt},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ke,this.strm.avail_out=0;let n=Fe.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==et)throw new Error($[n]);if(t.header&&Fe.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Ge.string2buf(t.dictionary):"[object ArrayBuffer]"===Ze.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,n=Fe.deflateSetDictionary(this.strm,e),n!==et)throw new Error($[n]);this._dict_set=!0}}function ot(e,t){const n=new st(t);if(n.push(e,!0),n.err)throw n.msg||$[n.err];return n.result}st.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,s;if(this.ended)return!1;for(s=t===~~t?t:!0===t?Xe:Ye,"string"==typeof e?n.input=Ge.string2buf(e):"[object ArrayBuffer]"===Ze.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(s===Je||s===Qe)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if(i=Fe.deflate(n,s),i===tt)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Fe.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===et;if(0!==n.avail_out){if(s>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},st.prototype.onData=function(e){this.chunks.push(e)},st.prototype.onEnd=function(e){e===et&&(this.result=$e.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var at={Deflate:st,deflate:ot,deflateRaw:function(e,t){return(t=t||{}).raw=!0,ot(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,ot(e,t)},constants:W};const ht=16209;var ct=function(e,t){let n,r,i,s,o,a,h,c,l,u,d,f,p,g,_,m,y,b,w,v,k,E,x,S;const T=e.state;n=e.next_in,x=e.input,r=n+(e.avail_in-5),i=e.next_out,S=e.output,s=i-(t-e.avail_out),o=i+(e.avail_out-257),a=T.dmax,h=T.wsize,c=T.whave,l=T.wnext,u=T.window,d=T.hold,f=T.bits,p=T.lencode,g=T.distcode,_=(1<>>24,d>>>=b,f-=b,b=y>>>16&255,0===b)S[i++]=65535&y;else{if(!(16&b)){if(0==(64&b)){y=p[(65535&y)+(d&(1<>>=b,f-=b),f<15&&(d+=x[n++]<>>24,d>>>=b,f-=b,b=y>>>16&255,!(16&b)){if(0==(64&b)){y=g[(65535&y)+(d&(1<a){e.msg="invalid distance too far back",T.mode=ht;break e}if(d>>>=b,f-=b,b=i-s,v>b){if(b=v-b,b>c&&T.sane){e.msg="invalid distance too far back",T.mode=ht;break e}if(k=0,E=u,0===l){if(k+=h-b,b2;)S[i++]=E[k++],S[i++]=E[k++],S[i++]=E[k++],w-=3;w&&(S[i++]=E[k++],w>1&&(S[i++]=E[k++]))}else{k=i-v;do{S[i++]=S[k++],S[i++]=S[k++],S[i++]=S[k++],w-=3}while(w>2);w&&(S[i++]=S[k++],w>1&&(S[i++]=S[k++]))}break}}break}}while(n>3,n-=w,f-=w<<3,d&=(1<{const h=a.bits;let c,l,u,d,f,p,g=0,_=0,m=0,y=0,b=0,w=0,v=0,k=0,E=0,x=0,S=null;const T=new Uint16Array(16),A=new Uint16Array(16);let C,I,P,R=null;for(g=0;g<=lt;g++)T[g]=0;for(_=0;_=1&&0===T[y];y--);if(b>y&&(b=y),0===y)return i[s++]=20971520,i[s++]=20971520,a.bits=1,0;for(m=1;m0&&(0===e||1!==y))return-1;for(A[1]=0,g=1;g852||2===e&&E>592)return 1;for(;;){C=g-v,o[_]+1=p?(I=R[o[_]-p],P=S[o[_]-p]):(I=96,P=0),c=1<>v)+l]=C<<24|I<<16|P|0}while(0!==l);for(c=1<>=1;if(0!==c?(x&=c-1,x+=c):x=0,_++,0==--T[g]){if(g===y)break;g=t[n+o[_]]}if(g>b&&(x&d)!==u){for(0===v&&(v=b),f+=m,w=g-v,k=1<852||2===e&&E>592)return 1;u=x&d,i[u]=b<<24|w<<16|f-s|0}}return 0!==x&&(i[f+x]=g-v<<24|64<<16|0),a.bits=b,0};const{Z_FINISH:_t,Z_BLOCK:mt,Z_TREES:yt,Z_OK:bt,Z_STREAM_END:wt,Z_NEED_DICT:vt,Z_STREAM_ERROR:kt,Z_DATA_ERROR:Et,Z_MEM_ERROR:xt,Z_BUF_ERROR:St,Z_DEFLATED:Tt}=W,At=16180,Ct=16190,It=16191,Pt=16192,Rt=16194,Ot=16199,Lt=16200,Nt=16206,Bt=16209,Dt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Ut(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Mt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},jt=e=>{if(Mt(e))return kt;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=At,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,bt},Ht=e=>{if(Mt(e))return kt;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,jt(e)},qt=(e,t)=>{let n;if(Mt(e))return kt;const r=e.state;return t<0?(n=0,t=-t):(n=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?kt:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,Ht(e))},Ft=(e,t)=>{if(!e)return kt;const n=new Ut;e.state=n,n.strm=e,n.window=null,n.mode=At;const r=qt(e,t);return r!==bt&&(e.state=null),r};let zt,$t,Wt=!0;const Vt=e=>{if(Wt){zt=new Int32Array(512),$t=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(gt(1,e.lens,0,288,zt,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;gt(2,e.lens,0,32,$t,0,e.work,{bits:5}),Wt=!1}e.lencode=zt,e.lenbits=9,e.distcode=$t,e.distbits=5},Gt=(e,t,n,r)=>{let i;const s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(t.subarray(n-s.wsize,n),0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),s.window.set(t.subarray(n-r,n-r+i),s.wnext),(r-=i)?(s.window.set(t.subarray(n-r,n),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whaveFt(e,15),inflateInit2:Ft,inflate:(e,t)=>{let n,r,i,s,o,a,h,c,l,u,d,f,p,g,_,m,y,b,w,v,k,E,x=0;const S=new Uint8Array(4);let T,A;const C=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Mt(e)||!e.output||!e.input&&0!==e.avail_in)return kt;n=e.state,n.mode===It&&(n.mode=Pt),o=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,c=n.hold,l=n.bits,u=a,d=h,E=bt;e:for(;;)switch(n.mode){case At:if(0===n.wrap){n.mode=Pt;break}for(;l<16;){if(0===a)break e;a--,c+=r[s++]<>>8&255,n.check=z(n.check,S,2,0),c=0,l=0,n.mode=16181;break}if(n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&c)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=Bt;break}if((15&c)!==Tt){e.msg="unknown compression method",n.mode=Bt;break}if(c>>>=4,l-=4,k=8+(15&c),0===n.wbits&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=Bt;break}n.dmax=1<>8&1),512&n.flags&&4&n.wrap&&(S[0]=255&c,S[1]=c>>>8&255,n.check=z(n.check,S,2,0)),c=0,l=0,n.mode=16182;case 16182:for(;l<32;){if(0===a)break e;a--,c+=r[s++]<>>8&255,S[2]=c>>>16&255,S[3]=c>>>24&255,n.check=z(n.check,S,4,0)),c=0,l=0,n.mode=16183;case 16183:for(;l<16;){if(0===a)break e;a--,c+=r[s++]<>8),512&n.flags&&4&n.wrap&&(S[0]=255&c,S[1]=c>>>8&255,n.check=z(n.check,S,2,0)),c=0,l=0,n.mode=16184;case 16184:if(1024&n.flags){for(;l<16;){if(0===a)break e;a--,c+=r[s++]<>>8&255,n.check=z(n.check,S,2,0)),c=0,l=0}else n.head&&(n.head.extra=null);n.mode=16185;case 16185:if(1024&n.flags&&(f=n.length,f>a&&(f=a),f&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(s,s+f),k)),512&n.flags&&4&n.wrap&&(n.check=z(n.check,r,f,s)),a-=f,s+=f,n.length-=f),n.length))break e;n.length=0,n.mode=16186;case 16186:if(2048&n.flags){if(0===a)break e;f=0;do{k=r[s+f++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k))}while(k&&f>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=It;break;case 16189:for(;l<32;){if(0===a)break e;a--,c+=r[s++]<>>=7&l,l-=7&l,n.mode=Nt;break}for(;l<3;){if(0===a)break e;a--,c+=r[s++]<>>=1,l-=1,3&c){case 0:n.mode=16193;break;case 1:if(Vt(n),n.mode=Ot,t===yt){c>>>=2,l-=2;break e}break;case 2:n.mode=16196;break;case 3:e.msg="invalid block type",n.mode=Bt}c>>>=2,l-=2;break;case 16193:for(c>>>=7&l,l-=7&l;l<32;){if(0===a)break e;a--,c+=r[s++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Bt;break}if(n.length=65535&c,c=0,l=0,n.mode=Rt,t===yt)break e;case Rt:n.mode=16195;case 16195:if(f=n.length,f){if(f>a&&(f=a),f>h&&(f=h),0===f)break e;i.set(r.subarray(s,s+f),o),a-=f,s+=f,h-=f,o+=f,n.length-=f;break}n.mode=It;break;case 16196:for(;l<14;){if(0===a)break e;a--,c+=r[s++]<>>=5,l-=5,n.ndist=1+(31&c),c>>>=5,l-=5,n.ncode=4+(15&c),c>>>=4,l-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Bt;break}n.have=0,n.mode=16197;case 16197:for(;n.have>>=3,l-=3}for(;n.have<19;)n.lens[C[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,T={bits:n.lenbits},E=gt(0,n.lens,0,19,n.lencode,0,n.work,T),n.lenbits=T.bits,E){e.msg="invalid code lengths set",n.mode=Bt;break}n.have=0,n.mode=16198;case 16198:for(;n.have>>24,m=x>>>16&255,y=65535&x,!(_<=l);){if(0===a)break e;a--,c+=r[s++]<>>=_,l-=_,n.lens[n.have++]=y;else{if(16===y){for(A=_+2;l>>=_,l-=_,0===n.have){e.msg="invalid bit length repeat",n.mode=Bt;break}k=n.lens[n.have-1],f=3+(3&c),c>>>=2,l-=2}else if(17===y){for(A=_+3;l>>=_,l-=_,k=0,f=3+(7&c),c>>>=3,l-=3}else{for(A=_+7;l>>=_,l-=_,k=0,f=11+(127&c),c>>>=7,l-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Bt;break}for(;f--;)n.lens[n.have++]=k}}if(n.mode===Bt)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=Bt;break}if(n.lenbits=9,T={bits:n.lenbits},E=gt(1,n.lens,0,n.nlen,n.lencode,0,n.work,T),n.lenbits=T.bits,E){e.msg="invalid literal/lengths set",n.mode=Bt;break}if(n.distbits=6,n.distcode=n.distdyn,T={bits:n.distbits},E=gt(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,T),n.distbits=T.bits,E){e.msg="invalid distances set",n.mode=Bt;break}if(n.mode=Ot,t===yt)break e;case Ot:n.mode=Lt;case Lt:if(a>=6&&h>=258){e.next_out=o,e.avail_out=h,e.next_in=s,e.avail_in=a,n.hold=c,n.bits=l,ct(e,d),o=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,c=n.hold,l=n.bits,n.mode===It&&(n.back=-1);break}for(n.back=0;x=n.lencode[c&(1<>>24,m=x>>>16&255,y=65535&x,!(_<=l);){if(0===a)break e;a--,c+=r[s++]<>b)],_=x>>>24,m=x>>>16&255,y=65535&x,!(b+_<=l);){if(0===a)break e;a--,c+=r[s++]<>>=b,l-=b,n.back+=b}if(c>>>=_,l-=_,n.back+=_,n.length=y,0===m){n.mode=16205;break}if(32&m){n.back=-1,n.mode=It;break}if(64&m){e.msg="invalid literal/length code",n.mode=Bt;break}n.extra=15&m,n.mode=16201;case 16201:if(n.extra){for(A=n.extra;l>>=n.extra,l-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=16202;case 16202:for(;x=n.distcode[c&(1<>>24,m=x>>>16&255,y=65535&x,!(_<=l);){if(0===a)break e;a--,c+=r[s++]<>b)],_=x>>>24,m=x>>>16&255,y=65535&x,!(b+_<=l);){if(0===a)break e;a--,c+=r[s++]<>>=b,l-=b,n.back+=b}if(c>>>=_,l-=_,n.back+=_,64&m){e.msg="invalid distance code",n.mode=Bt;break}n.offset=y,n.extra=15&m,n.mode=16203;case 16203:if(n.extra){for(A=n.extra;l>>=n.extra,l-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Bt;break}n.mode=16204;case 16204:if(0===h)break e;if(f=d-h,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Bt;break}f>n.wnext?(f-=n.wnext,p=n.wsize-f):p=n.wnext-f,f>n.length&&(f=n.length),g=n.window}else g=i,p=o-n.offset,f=n.length;f>h&&(f=h),h-=f,n.length-=f;do{i[o++]=g[p++]}while(--f);0===n.length&&(n.mode=Lt);break;case 16205:if(0===h)break e;i[o++]=n.length,h--,n.mode=Lt;break;case Nt:if(n.wrap){for(;l<32;){if(0===a)break e;a--,c|=r[s++]<{if(Mt(e))return kt;let t=e.state;return t.window&&(t.window=null),e.state=null,bt},inflateGetHeader:(e,t)=>{if(Mt(e))return kt;const n=e.state;return 0==(2&n.wrap)?kt:(n.head=t,t.done=!1,bt)},inflateSetDictionary:(e,t)=>{const n=t.length;let r,i,s;return Mt(e)?kt:(r=e.state,0!==r.wrap&&r.mode!==Ct?kt:r.mode===Ct&&(i=1,i=q(i,t,n,0),i!==r.check)?Et:(s=Gt(e,t,n,n),s?(r.mode=16210,xt):(r.havedict=1,bt)))},inflateInfo:"pako inflate (from Nodeca project)"};var Zt=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Yt=Object.prototype.toString,{Z_NO_FLUSH:Jt,Z_FINISH:Qt,Z_OK:Xt,Z_STREAM_END:en,Z_NEED_DICT:tn,Z_STREAM_ERROR:nn,Z_DATA_ERROR:rn,Z_MEM_ERROR:sn}=W;function on(e){this.options=$e.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ke,this.strm.avail_out=0;let n=Kt.inflateInit2(this.strm,t.windowBits);if(n!==Xt)throw new Error($[n]);if(this.header=new Zt,Kt.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Ge.string2buf(t.dictionary):"[object ArrayBuffer]"===Yt.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=Kt.inflateSetDictionary(this.strm,t.dictionary),n!==Xt)))throw new Error($[n])}function an(e,t){const n=new on(t);if(n.push(e),n.err)throw n.msg||$[n.err];return n.result}on.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let s,o,a;if(this.ended)return!1;for(o=t===~~t?t:!0===t?Qt:Jt,"[object ArrayBuffer]"===Yt.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),s=Kt.inflate(n,o),s===tn&&i&&(s=Kt.inflateSetDictionary(n,i),s===Xt?s=Kt.inflate(n,o):s===rn&&(s=tn));n.avail_in>0&&s===en&&n.state.wrap>0&&0!==e[n.next_in];)Kt.inflateReset(n),s=Kt.inflate(n,o);switch(s){case nn:case rn:case tn:case sn:return this.onEnd(s),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(0===n.avail_out||s===en))if("string"===this.options.to){let e=Ge.utf8border(n.output,n.next_out),t=n.next_out-e,i=Ge.buf2string(n.output,e);n.next_out=t,n.avail_out=r-t,t&&n.output.set(n.output.subarray(e,e+t),0),this.onData(i)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(s!==Xt||0!==a){if(s===en)return s=Kt.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},on.prototype.onData=function(e){this.chunks.push(e)},on.prototype.onEnd=function(e){e===Xt&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=$e.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var hn={Inflate:on,inflate:an,inflateRaw:function(e,t){return(t=t||{}).raw=!0,an(e,t)},ungzip:an,constants:W};const{Deflate:cn,deflate:ln,deflateRaw:un,gzip:dn}=at,{Inflate:fn,inflate:pn,inflateRaw:gn,ungzip:_n}=hn;var mn=pn;const yn=e=>mn(e,{to:"string"})},8768:(e,t,n)=>{n.r(t),n.d(t,{addListener:()=>d,argv:()=>a,binding:()=>x,browser:()=>s,chdir:()=>S,cwd:()=>k,emit:()=>m,env:()=>o,listeners:()=>v,nextTick:()=>w,off:()=>p,on:()=>u,once:()=>f,prependListener:()=>y,prependOnceListener:()=>b,removeAllListeners:()=>_,removeListener:()=>g,title:()=>i,umask:()=>E,version:()=>h,versions:()=>c});var r=n(4375);const i="browser",s=!0,o={},a=[],h="",c={};function l(){}const u=l,d=l,f=l,p=l,g=l,_=l,m=l,y=l,b=l,w=(e,...t)=>r((()=>e(...t))),v=e=>[],k=()=>"/",E=()=>0,x=e=>{throw new Error("process.binding is not supported")},S=e=>{throw new Error("process.chdir is not supported")}}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var s=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.loaded=!0,s.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var r={};(()=>{n.d(r,{Z:()=>Fn});var e={};n.r(e),n.d(e,{ACTIONS:()=>je,CONNECTION_ID:()=>Me,DESTROY_TIMEOUT:()=>$e,EVENTS:()=>He,EVENT_IDS:()=>qe,EVENT_NAMES:()=>Fe,IPV4_RE:()=>Be,IPV6_RE:()=>De,REMOVE_IPV4_MAPPED_IPV6_RE:()=>Ue,REQUEST_TIMEOUT:()=>ze,querystringParse:()=>Ve,querystringStringify:()=>Ge,toUInt32:()=>We});var t=n(7187),i=n(6470),s=n(502),o=n(2090),a=n(3786),h=n(9503),c=n(1351),l=n(8225),u=n(4595),d=n(4375),f=n(5194),p=(n(3811),n(7036)),g=n(778);function _(e){return"."!==e[0]}function m(e,t,n){p.stat(e,((r,s)=>{if(r)return n(r);s.isDirectory()?p.readdir(e,((r,s)=>{if(r)return n(r);u(s.filter(_).filter(c.not).map((n=>r=>{m(i.join(e,n),t,r)})),n)})):s.isFile()&&t(e,n)}))}function y(e,t,n){m(e,b,((r,s)=>{if(r)return n(r);s=Array.isArray(s)?s.flat(1/0):[s],e=i.normalize(e),t&&(e=e.slice(0,e.lastIndexOf(i.sep)+1)),e[e.length-1]!==i.sep&&(e+=i.sep),s.forEach((t=>{t.getStream=function(e){return()=>p.createReadStream(e)}(t.path),t.path=t.path.replace(e,"").split(i.sep)})),n(null,s)}))}function b(e,t){t=g(t),p.stat(e,((n,r)=>{if(n)return t(n);const i={length:r.size,path:e};t(null,i)}))}const w=[["udp://tracker.leechers-paradise.org:6969"],["udp://tracker.coppersurfer.tk:6969"],["udp://tracker.opentrackr.org:1337"],["udp://explodie.org:6969"],["udp://tracker.empire-js.us:1337"],["wss://tracker.btorrent.xyz"],["wss://tracker.openwebtorrent.com"]];const v=Symbol("itemPath");function k(e,t,n){var r;if(r=e,"undefined"!=typeof FileList&&r instanceof FileList&&(e=Array.from(e)),Array.isArray(e)||(e=[e]),0===e.length)throw new Error("invalid input type");e.forEach((e=>{if(null==e)throw new Error(`invalid input type: ${e}`)})),1!==(e=e.map((e=>S(e)&&"string"==typeof e.path?e.path:e))).length||"string"==typeof e[0]||e[0].name||(e[0].name=t.name);let s=null;e.forEach(((t,n)=>{if("string"==typeof t)return;let r=t.fullPath||t.name;r||(r=`Unknown File ${n+1}`,t.unknownName=!0),t[v]=r.split("/"),t[v][0]||t[v].shift(),t[v].length<2?s=null:0===n&&e.length>1?s=t[v][0]:t[v][0]!==s&&(s=null)}));(void 0===t.filterJunkFiles||t.filterJunkFiles)&&(e=e.filter((e=>"string"==typeof e||!function(e){const t=e[e.length-1];return"."===t[0]&&c.is(t)}(e[v])))),s&&e.forEach((e=>{const t=(ArrayBuffer.isView(e)||T(e))&&!e[v];"string"==typeof e||t||e[v].shift()})),!t.name&&s&&(t.name=s),t.name||e.some((e=>"string"==typeof e?(t.name=i.basename(e),!0):!e.unknownName&&(t.name=e[v][e[v].length-1],!0))),t.name||(t.name=`Unnamed Torrent ${Date.now()}`);const o=e.reduce(((e,t)=>e+Number("string"==typeof t)),0);let a=1===e.length;function l(){u(e.map((e=>t=>{const n={};if(S(e))n.getStream=e.stream(),n.length=e.size;else if(ArrayBuffer.isView(e))n.getStream=[e],n.length=e.length;else{if(!T(e)){if("string"==typeof e){0;return void y(e,o>1||a,t)}throw new Error("invalid input type")}n.getStream=async function*(e,t){for await(const n of e)t.length+=n.length,yield n}(e,n),n.length=0}n.path=e[v],t(null,n)})),((e,t)=>{if(e)return n(e);t=t.flat(),n(null,t,a)}))}1===e.length&&"string"==typeof e[0]?h(e[0],((e,t)=>{if(e)return n(e);a=t,l()})):d(l)}const E=5;function x(e,t){return e+t.length}function S(e){return"undefined"!=typeof Blob&&e instanceof Blob}function T(e){return"object"==typeof e&&null!=e&&"function"==typeof e.pipe}const A=function(e,t,n){"function"==typeof t&&([t,n]=[n,t]),k(e,t=t?Object.assign({},t):{},((e,r,i)=>{if(e)return n(e);t.singleFileTorrent=i,function(e,t,n){let r=t.announceList;r||("string"==typeof t.announce?r=[[t.announce]]:Array.isArray(t.announce)&&(r=t.announce.map((e=>[e]))));r||(r=[]);globalThis.WEBTORRENT_ANNOUNCE&&("string"==typeof globalThis.WEBTORRENT_ANNOUNCE?r.push([[globalThis.WEBTORRENT_ANNOUNCE]]):Array.isArray(globalThis.WEBTORRENT_ANNOUNCE)&&(r=r.concat(globalThis.WEBTORRENT_ANNOUNCE.map((e=>[e])))));void 0===t.announce&&void 0===t.announceList&&(r=r.concat(w));"string"==typeof t.urlList&&(t.urlList=[t.urlList]);const i={info:{name:t.name},"creation date":Math.ceil((Number(t.creationDate)||Date.now())/1e3),encoding:"UTF-8"};0!==r.length&&(i.announce=r[0][0],i["announce-list"]=r);void 0!==t.comment&&(i.comment=t.comment);void 0!==t.createdBy&&(i["created by"]=t.createdBy);void 0!==t.private&&(i.info.private=Number(t.private));void 0!==t.info&&Object.assign(i.info,t.info);void 0!==t.sslCert&&(i.info["ssl-cert"]=t.sslCert);void 0!==t.urlList&&(i["url-list"]=t.urlList);const h=e.reduce(x,0),c=t.pieceLength||a(h);i.info["piece length"]=c,async function(e,t,n,r,i){const s=[];let a=0,h=0;const c=e.map((e=>e.getStream)),u=r.onProgress;let d=0,p=0,g=!1;const _=o(l(c),t,{zeroPadding:!1});try{for await(const e of _)await new Promise((t=>{a+=e.length;const r=p;++p,++d{s[r]=o,--d,h+=e.length,u&&u(h,n),t(),g&&0===d&&i(null,(0,f._0)(s.join("")),a)}))}));if(0===d)return i(null,(0,f._0)(s.join("")),a);g=!0}catch(e){i(e)}}(e,c,h,t,((r,o,a)=>{if(r)return n(r);i.info.pieces=o,e.forEach((e=>{delete e.getStream})),t.singleFileTorrent?i.info.length=a:i.info.files=e,n(null,s.Z.encode(i))}))}(r,t,n)}))};var C=n(1227),I=n(9507),P=n(3996),R=n(5777),O=n(7117),L=n(1798),N=n(4734),B=n(2927),D=n(8764).Buffer,U=n(8768);const M=C("bittorrent-dht"),j=3e5;class H extends t.EventEmitter{constructor(e={}){super(),this._tables=new O({maxAge:j,max:e.maxTables||1e3}),this._values=new O(e.maxValues||1e3),this._peers=N({maxAge:e.maxAge||0,maxSize:e.maxPeers||1e4}),this._secrets=null,this._hash=e.hash||F,this._hashLength=this._hash(D.from("")).length,this._rpc=e.krpc||P(Object.assign({idLength:this._hashLength},e)),this._rpc.on("query",(function(e,t){n._onquery(e,t)})),this._rpc.on("node",(function(e){n.emit("node",e)})),this._rpc.on("warning",(function(e){n.emit("warning",e)})),this._rpc.on("error",(function(e){n.emit("error",e)})),this._rpc.on("listening",(function(){n.listening=!0,n._debug("listening %d",n.address().port),n.updateBucketTimestamp(),n._setBucketCheckInterval(),n.emit("listening")})),this._rotateSecrets(),this._verify=e.verify||null,this._host=e.host||null,this._interval=setInterval((function(){n._rotateSecrets()}),j),this._runningBucketCheck=!1,this._bucketCheckTimeout=null,this._bucketOutdatedTimeSpan=e.timeBucketOutdated||9e5,this.listening=!1,this.destroyed=!1,this.nodeId=this._rpc.id,this.nodes=this._rpc.nodes;const t=R((function(e,t){const r=e.older,i=e.swap;n._debug("received ping",r),n._checkNodes(r,!1,((e,r)=>{if(r)return n._debug("swaping dead node with newer",r),i(r),t();n._debug("no node added, all other nodes ok"),t()}))}));this._rpc.on("ping",((e,n)=>{t({older:e,swap:n})})),U.nextTick((function(){n.destroyed||n._bootstrap(!1!==e.bootstrap)})),this._debug("new DHT %s",this.nodeId);const n=this}_setBucketCheckInterval(){const e=this;function t(){if(Date.now()-e._rpc.nodes.metadata.lastChange{e.destroyed||(e.nodes.toArray().length<1&&e._bootstrap(!0),n())}))}function n(){if(!e._runningBucketCheck||e.destroyed)return;const n=Math.floor(6e4*Math.random()+3e4);e._bucketCheckTimeout=setTimeout(t,n)}this._runningBucketCheck=!0,n()}_pingAll(e){this._checkAndRemoveNodes(this.nodes.toArray(),e)}removeBucketCheckInterval(){this._runningBucketCheck=!1,clearTimeout(this._bucketCheckTimeout)}updateBucketTimestamp(){this._rpc.nodes.metadata.lastChange=Date.now()}_checkAndRemoveNodes(e,t){const n=this;this._checkNodes(e,!0,((e,r)=>{r&&n.removeNode(r.id),t(null,r)}))}_checkNodes(e,t,n){const r=this;!function e(i){let s=null;for(;i.length&&(s=i.pop(),s.id&&!t)&&!(Date.now()-(s.seen||0)>1e4);)s=null;if(!s)return n(null);r._sendPing(s,(t=>{if(!t)return r.updateBucketTimestamp(),e(i);n(null,s)}))}(e)}addNode(e){const t=this;if(e.id){e.id=G(e.id);const t=!!this._rpc.nodes.get(e.id);return this._rpc.nodes.add(e),void(t||(this.emit("node",e),this.updateBucketTimestamp()))}this._sendPing(e,((e,n)=>{n&&t.addNode(n)}))}removeNode(e){this._rpc.nodes.remove(G(e))}_sendPing(e,t){const n=this,r=e.id;this._rpc.query(e,{q:"ping"},((e,i,s)=>e?t(e):i.r&&i.r.id&&D.isBuffer(i.r.id)&&i.r.id.length===n._hashLength?D.isBuffer(r)&&!r.equals(i.r.id)?t(new Error("Unexpected node id")):(n.updateBucketTimestamp(),void t(null,{id:i.r.id,host:s.host||s.address,port:s.port})):t(new Error("Bad reply"))))}toJSON(){const e=this,t={};return Object.keys(this._values.cache).forEach((n=>{const r=e._values.cache[n].value;t[n]={v:r.v.toString("hex"),id:r.id.toString("hex")},null!=r.seq&&(t[n].seq=r.seq),null!=r.sig&&(t[n].sig=r.sig.toString("hex")),null!=r.k&&(t[n].k=r.k.toString("hex"))})),{nodes:this._rpc.nodes.toArray().map(V),values:t}}put(e,t){(D.isBuffer(e)||"string"==typeof e)&&(e={v:e});const n=!!e.k;if(void 0===e.v)throw new Error("opts.v not given");if(e.v.length>=1e3)throw new Error("v must be less than 1000 bytes in put()");if(n&&void 0!==e.cas&&"number"!=typeof e.cas)throw new Error("opts.cas must be an integer if provided");if(n&&32!==e.k.length)throw new Error("opts.k ed25519 public key must be 32 bytes");if(n&&"function"!=typeof e.sign&&!D.isBuffer(e.sig))throw new Error("opts.sign function or options.sig signature is required for mutable put");if(n&&e.salt&&e.salt.length>64)throw new Error("opts.salt is > 64 bytes long");if(n&&void 0===e.seq)throw new Error("opts.seq not provided for a mutable update");if(n&&"number"!=typeof e.seq)throw new Error("opts.seq not an integer");return this._put(e,t)}_put(e,t){t||(t=q);const n=!!e.k,r="string"==typeof e.v?D.from(e.v):e.v,i=n?this._hash(e.salt?D.concat([e.k,e.salt]):e.k):this._hash(s.Z.encode(r)),o=this._tables.get(i.toString("hex"));if(!o)return this._preput(i,e,t);const a={q:"put",a:{id:this._rpc.id,token:null,v:r}};return n?("number"==typeof e.cas&&(a.a.cas=e.cas),e.salt&&(a.a.salt=e.salt),a.a.k=e.k,a.a.seq=e.seq,"function"==typeof e.sign?a.a.sig=e.sign(W(a.a)):D.isBuffer(e.sig)&&(a.a.sig=e.sig)):this._values.set(i.toString("hex"),a.a),this._rpc.queryAll(o.closest(i),a,null,((e,n)=>{if(e)return t(e,i,n);t(null,i,n)})),i}_preput(e,t,n){const r=this;return this._closest(e,{q:"get",a:{id:this._rpc.id,target:e}},null,((e,i)=>{if(e)return n(e);r.put(t,n)})),e}get(e,t,n){e=G(e),"function"==typeof t&&(n=t,t=null),t||(t={});const r=t.verify||this._verify,i=this._hash;let o=this._values.get(e.toString("hex"))||null;if(o&&!1!==t.cache)return o=z(this._rpc.id,null,o),U.nextTick(a);function a(e){if(e)return n(e);n(null,o)}this._closest(e,{q:"get",a:{id:this._rpc.id,target:e}},(function(n){const a=n.r;if(!a||!a.v)return!0;const h=a.k||a.sig;t.salt&&(a.salt=D.from(t.salt));if(h){if(!r||!a.sig||!a.k)return!0;if(!r(a.sig,W(a),a.k))return!0;i(a.salt?D.concat([a.k,a.salt]):a.k).equals(e)&&(!o||a.seq>o.seq)&&(o=a)}else if(i(s.Z.encode(a.v)).equals(e))return o=a,!1;return!0}),a)}announce(e,t,n){if("function"==typeof t)return this.announce(e,0,t);e=G(e),n||(n=q);const r=this._tables.get(e.toString("hex"));if(!r)return this._preannounce(e,t,n);if(this._host){const n=this.listening?this.address().port:0;this._addPeer({host:this._host,port:t||n},e,{host:this._host,port:n})}const i={q:"announce_peer",a:{id:this._rpc.id,token:null,info_hash:e,port:t,implied_port:t?0:1}};this._debug("announce %s %d",e,t),this._rpc.queryAll(r.closest(e),i,null,n)}_preannounce(e,t,n){const r=this;this.lookup(e,(i=>r.destroyed?n(new Error("dht is destroyed")):i?n(i):void r.announce(e,t,n)))}lookup(e,t){e=G(e),t||(t=q);const n=this;let r=!1;function i(t,r){t||(t=n._peers.get(e.toString("hex"),100));const i=function(e){const t=[];try{for(let n=0;n{t.emit("close"),e&&e()}))}_onquery(e,t){if(void 0===e.q||null===e.q)return;const n=e.q.toString();if(this._debug("received %s query from %s:%d",n,t.address,t.port),e.a)switch(n){case"ping":return this._rpc.response(t,e,{id:this._rpc.id});case"find_node":return this._onfindnode(e,t);case"get_peers":return this._ongetpeers(e,t);case"announce_peer":return this._onannouncepeer(e,t);case"get":return this._onget(e,t);case"put":return this._onput(e,t)}}_onfindnode(e,t){const n=e.a.target;if(!n)return this._rpc.error(t,e,[203,"`find_node` missing required `a.target` field"]);this.emit("find_node",n);const r=this._rpc.nodes.closest(n);this._rpc.response(t,e,{id:this._rpc.id},r)}_ongetpeers(e,t){const n=t.address||t.host,r=e.a.info_hash;if(!r)return this._rpc.error(t,e,[203,"`get_peers` missing required `a.info_hash` field"]);this.emit("get_peers",r);const i={id:this._rpc.id,token:this._generateToken(n)},s=this._peers.get(r.toString("hex"));s.length?(i.values=s,this._rpc.response(t,e,i)):this._rpc.response(t,e,i,this._rpc.nodes.closest(r))}_onannouncepeer(e,t){const n=t.address||t.host,r=e.a.implied_port?t.port:e.a.port;if(!r||"number"!=typeof r||r<=0||r>65535)return;const i=e.a.info_hash,s=e.a.token;if(i&&s){if(!this._validateToken(n,s))return this._rpc.error(t,e,[203,"cannot `announce_peer` with bad token"]);this.emit("announce_peer",i,{host:n,port:t.port}),this._addPeer({host:n,port:r},i,{host:n,port:t.port}),this._rpc.response(t,e,{id:this._rpc.id})}}_addPeer(e,t,n){this._peers.add(t.toString("hex"),function(e,t){const n=D.allocUnsafe(6),r=e.split(".");for(let e=0;e<4;e++)n[e]=parseInt(r[e]||0,10);return n.writeUInt16BE(t,4),n}(e.host,e.port)),this.emit("announce",e,t,n)}_onget(e,t){const n=t.address||t.host,r=e.a.target;if(!r)return;const i=this._generateToken(n),s=this._values.get(r.toString("hex"));if(this.emit("get",r,s),s)this._rpc.response(t,e,z(this._rpc.id,i,s));else{const n=this._rpc.nodes.closest(r);this._rpc.response(t,e,{id:this._rpc.id,token:i},n)}}_onput(e,t){const n=t.address||t.host,r=e.a;if(!r)return;const i=e.a.v;if(!i)return;const o=e.a.id;if(!o)return;const a=r.token;if(!a)return;if(!this._validateToken(n,a))return this._rpc.error(t,e,[203,"cannot `put` with bad token"]);if(i.length>1e3)return this._rpc.error(t,e,[205,"data payload too large"]);const h=!(!r.k&&!r.sig);if(h&&!r.k&&!r.sig)return;const c=h?this._hash(r.salt?D.concat([r.k,r.salt]):r.k):this._hash(s.Z.encode(i)),l=c.toString("hex");if(this.emit("put",c,i),h){if(!this._verify)return this._rpc.error(t,e,[400,"verification not supported"]);if(!this._verify(r.sig,W(r),r.k))return;const n=this._values.get(l);if(n&&"number"==typeof r.cas&&n.seq!==r.cas)return this._rpc.error(t,e,[301,"CAS mismatch, re-read and try again"]);if(n&&"number"==typeof n.seq&&!(r.seq>n.seq))return this._rpc.error(t,e,[302,"sequence number less than current"]);this._values.set(l,{v:i,k:r.k,salt:r.salt,sig:r.sig,seq:r.seq,id:o})}else this._values.set(l,{v:i,id:o});this._rpc.response(t,e,{id:this._rpc.id})}_bootstrap(e){const t=this;if(!e)return U.nextTick(n);function n(){t.ready||(t._debug("emit ready"),t.ready=!0,t.emit("ready"))}this._rpc.populate(t._rpc.id,{q:"find_node",a:{id:t._rpc.id,target:t._rpc.id}},n)}_closest(e,t,n,r){const i=this,s=new I({localNodeId:e,numberOfNodesPerKBucket:this._rpc.k});this._rpc.closest(e,t,(function(t,r){if(!t.r)return!0;t.r.token&&t.r.id&&D.isBuffer(t.r.id)&&t.r.id.length===i._hashLength&&(i._debug("found node %s (target: %s)",t.r.id,e),s.add({id:t.r.id,host:r.host||r.address,port:r.port,token:t.r.token}));return!n||n(t,r)}),(function(t,n){if(t)return r(t);i._tables.set(e.toString("hex"),s),i._debug("visited %d nodes",n),r(null,n)}))}_debug(){if(!M.enabled)return;const e=[].slice.call(arguments);e[0]=`[${this.nodeId.toString("hex").substring(0,7)}] ${e[0]}`;for(let t=1;t{throw new Error("global fetch is not available!")}),Q=[255,255,26,27,28,29,30,31,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255];const X=function(e){if(!ArrayBuffer.isView(e)&&"string"!=typeof e)throw new TypeError("base32.decode only takes Buffer or string as parameter");let t,n=0,r=0,i=0;ArrayBuffer.isView(e)||(e=(0,f.gR)(e));const s=new Uint8Array(Math.ceil(5*e.length/8));for(let o=0;o>>n,s[i]=t,i++,t=255&r<<8-n)}return s.subarray(0,i)};function ee(e){return e.reduce(((e,t,n,r)=>{const i=t.split("-").map((e=>parseInt(e)));return e.concat(((e,t=e)=>Array.from({length:t-e+1},((t,n)=>n+e)))(...i))}),[])}const te=function(e){const t={},n=e.split("magnet:?")[1];let r;if((n&&n.length>=0?n.split("&"):[]).forEach((e=>{const n=e.split("=");if(2!==n.length)return;const r=n[0];let i=n[1];"dn"===r&&(i=decodeURIComponent(i).replace(/\+/g," ")),"tr"!==r&&"xs"!==r&&"as"!==r&&"ws"!==r||(i=decodeURIComponent(i)),"kt"===r&&(i=decodeURIComponent(i).split("+")),"ix"===r&&(i=Number(i)),"so"===r&&(i=ee(decodeURIComponent(i).split(","))),t[r]?(Array.isArray(t[r])||(t[r]=[t[r]]),t[r].push(i)):t[r]=i})),t.xt){(Array.isArray(t.xt)?t.xt:[t.xt]).forEach((e=>{(r=e.match(/^urn:btih:(.{40})/))?t.infoHash=r[1].toLowerCase():(r=e.match(/^urn:btih:(.{32})/))?t.infoHash=(0,f.oc)(X(r[1])):(r=e.match(/^urn:btmh:1220(.{64})/))&&(t.infoHashV2=r[1].toLowerCase())}))}if(t.xs){(Array.isArray(t.xs)?t.xs:[t.xs]).forEach((e=>{(r=e.match(/^urn:btpk:(.{64})/))&&(t.publicKey=r[1].toLowerCase())}))}return t.infoHash&&(t.infoHashBuffer=(0,f._0)(t.infoHash)),t.infoHashV2&&(t.infoHashV2Buffer=(0,f._0)(t.infoHashV2)),t.publicKey&&(t.publicKeyBuffer=(0,f._0)(t.publicKey)),t.dn&&(t.name=t.dn),t.kt&&(t.keywords=t.kt),t.announce=[],("string"==typeof t.tr||Array.isArray(t.tr))&&(t.announce=t.announce.concat(t.tr)),t.urlList=[],("string"==typeof t.as||Array.isArray(t.as))&&(t.urlList=t.urlList.concat(t.as)),("string"==typeof t.ws||Array.isArray(t.ws))&&(t.urlList=t.urlList.concat(t.ws)),t.peerAddresses=[],("string"==typeof t["x.pe"]||Array.isArray(t["x.pe"]))&&(t.peerAddresses=t.peerAddresses.concat(t["x.pe"])),t.announce=Array.from(new Set(t.announce)),t.urlList=Array.from(new Set(t.urlList)),t.peerAddresses=Array.from(new Set(t.peerAddresses)),t};async function ne(e){if("string"==typeof e&&/^(stream-)?magnet:/.test(e)){const t=te(e);if(!t.infoHash)throw new Error("Invalid torrent identifier");return t}if("string"==typeof e&&(/^[a-f0-9]{40}$/i.test(e)||/^[a-z2-7]{32}$/i.test(e)))return te(`magnet:?xt=urn:btih:${e}`);if(ArrayBuffer.isView(e)&&20===e.length)return te(`magnet:?xt=urn:btih:${(0,f.oc)(e)}`);if(ArrayBuffer.isView(e))return await async function(e){ArrayBuffer.isView(e)&&(e=s.Z.decode(e));se(e.info,"info"),se(e.info["name.utf-8"]||e.info.name,"info.name"),se(e.info["piece length"],"info['piece length']"),se(e.info.pieces,"info.pieces"),e.info.files?e.info.files.forEach((e=>{se("number"==typeof e.length,"info.files[0].length"),se(e["path.utf-8"]||e.path,"info.files[0].path")})):se("number"==typeof e.info.length,"info.length");const t={info:e.info,infoBuffer:s.Z.encode(e.info),name:(0,f.vV)(e.info["name.utf-8"]||e.info.name),announce:[]};t.infoHashBuffer=await(0,f.vp)(t.infoBuffer),t.infoHash=(0,f.oc)(t.infoHashBuffer),void 0!==e.info.private&&(t.private=!!e.info.private);e["creation date"]&&(t.created=new Date(1e3*e["creation date"]));e["created by"]&&(t.createdBy=(0,f.vV)(e["created by"]));ArrayBuffer.isView(e.comment)&&(t.comment=(0,f.vV)(e.comment));Array.isArray(e["announce-list"])&&e["announce-list"].length>0?e["announce-list"].forEach((e=>{e.forEach((e=>{t.announce.push((0,f.vV)(e))}))})):e.announce&&t.announce.push((0,f.vV)(e.announce));ArrayBuffer.isView(e["url-list"])&&(e["url-list"]=e["url-list"].length>0?[e["url-list"]]:[]);t.urlList=(e["url-list"]||[]).map((e=>(0,f.vV)(e))),t.announce=Array.from(new Set(t.announce)),t.urlList=Array.from(new Set(t.urlList));const n=e.info.files||[e.info];t.files=n.map(((e,r)=>{const s=[].concat(t.name,e["path.utf-8"]||e.path||[]).map((e=>ArrayBuffer.isView(e)?(0,f.vV)(e):e));return{path:i.join.apply(null,[i.sep].concat(s)).slice(1),name:s[s.length-1],length:e.length,offset:n.slice(0,r).reduce(ie,0)}})),t.length=n.reduce(ie,0);const r=t.files[t.files.length-1];return t.pieceLength=e.info["piece length"],t.lastPieceLength=(r.offset+r.length)%t.pieceLength||t.pieceLength,t.pieces=function(e){const t=[];for(let n=0;n{n(null,r)}));else if(i=e,"undefined"!=typeof Blob&&i instanceof Blob)try{s(new Uint8Array(await e.arrayBuffer()))}catch(e){return n(new Error(`Error converting Blob: ${e.message}`))}else if(/^https?:/.test(e))try{const n=await J(e,{headers:{"user-agent":"WebTorrent (https://webtorrent.io)"},signal:AbortSignal.timeout(3e4),...t});s(new Uint8Array(await n.arrayBuffer()))}catch(e){return n(new Error(`Error downloading torrent: ${e.message}`))}else"function"==typeof Y.readFile&&"string"==typeof e?Y.readFile(e,((e,t)=>{if(e)return n(new Error("Invalid torrent identifier"));s(t)})):d((()=>{n(new Error("Invalid torrent identifier"))}));var i;async function s(e){try{r=await ne(e)}catch(e){return n(e)}r&&r.infoHash?n(null,r):n(new Error("Invalid torrent identifier"))}}function ie(e,t){return e+t.length}function se(e,t){if(!e)throw new Error(`Torrent is missing required field: ${t}`)}const oe=ne,ae=function(e){e=Object.assign({},e);let t=new Set;e.xt&&"string"==typeof e.xt&&t.add(e.xt),e.xt&&Array.isArray(e.xt)&&(t=new Set(e.xt)),e.infoHashBuffer&&t.add(`urn:btih:${(0,f.oc)(e.infoHashBuffer)}`),e.infoHash&&t.add(`urn:btih:${e.infoHash}`),e.infoHashV2Buffer&&t.add(e.xt=`urn:btmh:1220${(0,f.oc)(e.infoHashV2Buffer)}`),e.infoHashV2&&t.add(`urn:btmh:1220${e.infoHashV2}`);const n=Array.from(t);1===n.length&&(e.xt=n[0]),n.length>1&&(e.xt=n),e.publicKeyBuffer&&(e.xs=`urn:btpk:${(0,f.oc)(e.publicKeyBuffer)}`),e.publicKey&&(e.xs=`urn:btpk:${e.publicKey}`),e.name&&(e.dn=e.name),e.keywords&&(e.kt=e.keywords),e.announce&&(e.tr=e.announce),e.urlList&&(e.ws=e.urlList,delete e.as),e.peerAddresses&&(e["x.pe"]=e.peerAddresses);let r="magnet:?";return Object.keys(e).filter((e=>2===e.length||"x.pe"===e)).forEach(((t,n)=>{const i=Array.isArray(e[t])?e[t]:[e[t]];var s;i.forEach(((e,i)=>{(n>0||i>0)&&("kt"!==t&&"so"!==t||0===i)&&(r+="&"),"dn"===t&&(e=encodeURIComponent(e).replace(/%20/g,"+")),"tr"!==t&&"as"!==t&&"ws"!==t||(e=encodeURIComponent(e)),"xs"!==t||e.startsWith("urn:btpk:")||(e=encodeURIComponent(e)),"kt"===t&&(e=encodeURIComponent(e)),"so"!==t&&(r+="kt"===t&&i>0?`+${e}`:`${t}=${e}`)})),"so"===t&&(r+=`${t}=${s=i,s.reduce(((e,t,n,r)=>(0!==n&&t===r[n-1]+1||e.push([]),e[e.length-1].push(t),e)),[]).map((e=>e.length>1?`${e[0]}-${e[e.length-1]}`:`${e[0]}`))}`)})),r};var he=n(5177),ce=n(1237),le=n(2114);const ue=C("simple-peer"),de=65536;function fe(e){return e.replace(/a=ice-options:trickle\s\n/g,"")}class pe extends ce.Duplex{constructor(e){if(super(e=Object.assign({allowHalfOpen:!1},e)),this.__objectMode=!!e.objectMode,this._id=(0,f.oc)((0,f.O6)(4)).slice(0,7),this._debug("new peer %o",e),this.channelName=e.initiator?e.channelName||(0,f.oc)((0,f.O6)(20)):null,this.initiator=e.initiator||!1,this.channelConfig=e.channelConfig||pe.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},pe.config,e.config),this.offerOptions=e.offerOptions||{},this.answerOptions=e.answerOptions||{},this.sdpTransform=e.sdpTransform||(e=>e),this.streams=e.streams||(e.stream?[e.stream]:[]),this.trickle=void 0===e.trickle||e.trickle,this.allowHalfTrickle=void 0!==e.allowHalfTrickle&&e.allowHalfTrickle,this.iceCompleteTimeout=e.iceCompleteTimeout||5e3,this._destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=e.wrtc&&"object"==typeof e.wrtc?e.wrtc:he(),!this._wrtc)throw"undefined"==typeof window?le(new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"),"ERR_WEBRTC_SUPPORT"):le(new Error("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(e){return void this.__destroy(le(e,"ERR_PC_CONSTRUCTOR"))}this._isReactNativeWebrtc="number"==typeof this._pc._peerConnectionId,this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=e=>{this._onIceCandidate(e)},"object"==typeof this._pc.peerIdentity&&this._pc.peerIdentity.catch((e=>{this.__destroy(le(e,"ERR_PC_PEER_IDENTITY"))})),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=e=>{this._setupData(e)},this.streams&&this.streams.forEach((e=>{this.addStream(e)})),this._pc.ontrack=e=>{this._onTrack(e)},this._debug("initial negotiation"),this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&"open"===this._channel.readyState}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(e){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e={}}this._debug("signal()"),e.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),e.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(e.transceiverRequest.kind,e.transceiverRequest.init)),e.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(e.candidate):this._pendingCandidates.push(e.candidate)),e.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(e)).then((()=>{this.destroyed||(this._pendingCandidates.forEach((e=>{this._addIceCandidate(e)})),this._pendingCandidates=[],"offer"===this._pc.remoteDescription.type&&this._createAnswer())})).catch((e=>{this.__destroy(le(e,"ERR_SET_REMOTE_DESCRIPTION"))})),e.sdp||e.candidate||e.renegotiate||e.transceiverRequest||this.__destroy(le(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(e){const t=new this._wrtc.RTCIceCandidate(e);this._pc.addIceCandidate(t).catch((e=>{var n;!t.address||t.address.endsWith(".local")?(n="Ignoring unsupported ICE candidate.",console.warn(n)):this.__destroy(le(e,"ERR_ADD_ICE_CANDIDATE"))}))}send(e){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(e)}}addTransceiver(e,t){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(e,t),this._needsNegotiation()}catch(e){this.__destroy(le(e,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind:e,init:t}})}}addStream(e){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()"),e.getTracks().forEach((t=>{this.addTrack(t,e)}))}}addTrack(e,t){if(this._destroying)return;if(this.destroyed)throw le(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");const n=this._senderMap.get(e)||new Map;let r=n.get(t);if(r)throw r.removed?le(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):le(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED");r=this._pc.addTrack(e,t),n.set(t,r),this._senderMap.set(e,n),this._needsNegotiation()}replaceTrack(e,t,n){if(this._destroying)return;if(this.destroyed)throw le(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");const r=this._senderMap.get(e),i=r?r.get(n):null;if(!i)throw le(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");t&&this._senderMap.set(t,r),null!=i.replaceTrack?i.replaceTrack(t):this.__destroy(le(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK"))}removeTrack(e,t){if(this._destroying)return;if(this.destroyed)throw le(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");const n=this._senderMap.get(e),r=n?n.get(t):null;if(!r)throw le(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{r.removed=!0,this._pc.removeTrack(r)}catch(e){"NS_ERROR_UNEXPECTED"===e.name?this._sendersAwaitingStable.push(r):this.__destroy(le(e,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(e){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()"),e.getTracks().forEach((t=>{this.removeTrack(t,e)}))}}_needsNegotiation(){this._debug("_needsNegotiation"),this._batchedNegotiation||(this._batchedNegotiation=!0,d((()=>{this._batchedNegotiation=!1,this.initiator||!this._firstNegotiation?(this._debug("starting batched negotiation"),this.negotiate()):this._debug("non-initiator initial negotiation request discarded"),this._firstNegotiation=!1})))}negotiate(){if(!this._destroying){if(this.destroyed)throw le(new Error("cannot negotiate after peer is destroyed"),"ERR_DESTROYED");this.initiator?this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("start negotiation"),setTimeout((()=>{this._createOffer()}),0)):this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("requesting negotiation from initiator"),this.emit("signal",{type:"renegotiate",renegotiate:!0})),this._isNegotiating=!0}}_final(e){this._readableState.ended||this.push(null),e(null)}__destroy(e){this.end(),this._destroy((()=>{}),e)}_destroy(e,t){this.destroyed||this._destroying||(this._destroying=!0,this._debug("destroying (error: %s)",t&&(t.message||t)),setTimeout((()=>{if(this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._remoteTracks=null,this._remoteStreams=null,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._onFinishBound&&this.removeListener("finish",this._onFinishBound),this._onFinishBound=null,this._channel){try{this._channel.close()}catch(e){}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch(e){}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ontrack=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,t&&this.emit("error",t),e()}),0))}_setupData(e){if(!e.channel)return this.__destroy(le(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=e.channel,this._channel.binaryType="arraybuffer","number"==typeof this._channel.bufferedAmountLowThreshold&&(this._channel.bufferedAmountLowThreshold=de),this.channelName=this._channel.label,this._channel.onmessage=e=>{this._onChannelMessage(e)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=e=>{const t=e.error instanceof Error?e.error:new Error(`Datachannel error: ${e.message} ${e.filename}:${e.lineno}:${e.colno}`);this.__destroy(le(t,"ERR_DATA_CHANNEL"))};let t=!1;this._closingInterval=setInterval((()=>{this._channel&&"closing"===this._channel.readyState?(t&&this._onChannelClose(),t=!0):t=!1}),5e3)}_write(e,t){if(this.destroyed)return t(le(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(e)}catch(e){return this.__destroy(le(e,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>de?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=t):t(null)}else this._debug("write before connect"),this._chunk=e,this._cb=t}_onFinish(){if(this.destroyed)return;const e=()=>{setTimeout((()=>this.__destroy()),1e3)};this._connected?e():this.once("connect",e)}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._debug("started iceComplete timeout"),this._iceCompleteTimer=setTimeout((()=>{this._iceComplete||(this._iceComplete=!0,this._debug("iceComplete timeout completed"),this.emit("iceTimeout"),this.emit("_iceComplete"))}),this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then((e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=fe(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(this.destroyed)return;const t=this._pc.localDescription||e;this._debug("signal"),this.emit("signal",{type:t.type,sdp:t.sdp})};this._pc.setLocalDescription(e).then((()=>{this._debug("createOffer success"),this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))})).catch((e=>{this.__destroy(le(e,"ERR_SET_LOCAL_DESCRIPTION"))}))})).catch((e=>{this.__destroy(le(e,"ERR_CREATE_OFFER"))}))}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach((e=>{e.mid||!e.sender.track||e.requested||(e.requested=!0,this.addTransceiver(e.sender.track.kind))}))}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then((e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=fe(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(this.destroyed)return;const t=this._pc.localDescription||e;this._debug("signal"),this.emit("signal",{type:t.type,sdp:t.sdp}),this.initiator||this._requestMissingTransceivers()};this._pc.setLocalDescription(e).then((()=>{this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))})).catch((e=>{this.__destroy(le(e,"ERR_SET_LOCAL_DESCRIPTION"))}))})).catch((e=>{this.__destroy(le(e,"ERR_CREATE_ANSWER"))}))}_onConnectionStateChange(){this.destroyed||this._destroying||"failed"===this._pc.connectionState&&this.__destroy(le(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;const e=this._pc.iceConnectionState,t=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",e,t),this.emit("iceStateChange",e,t),"connected"!==e&&"completed"!==e||(this._pcReady=!0,this._maybeReady()),"failed"===e&&this.__destroy(le(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE")),"closed"===e&&this.__destroy(le(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(e){const t=e=>("[object Array]"===Object.prototype.toString.call(e.values)&&e.values.forEach((t=>{Object.assign(e,t)})),e);0===this._pc.getStats.length||this._isReactNativeWebrtc?this._pc.getStats().then((n=>{const r=[];n.forEach((e=>{r.push(t(e))})),e(null,r)}),(t=>e(t))):this._pc.getStats.length>0?this._pc.getStats((n=>{if(this.destroyed)return;const r=[];n.result().forEach((e=>{const n={};e.names().forEach((t=>{n[t]=e.stat(t)})),n.id=e.id,n.type=e.type,n.timestamp=e.timestamp,r.push(t(n))})),e(null,r)}),(t=>e(t))):e(null,[])}_maybeReady(){if(this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady),this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;const e=()=>{this.destroyed||this._destroying||this.getStats(((t,n)=>{if(this.destroyed||this._destroying)return;t&&(n=[]);const r={},i={},s={};let o=!1;n.forEach((e=>{"remotecandidate"!==e.type&&"remote-candidate"!==e.type||(r[e.id]=e),"localcandidate"!==e.type&&"local-candidate"!==e.type||(i[e.id]=e),"candidatepair"!==e.type&&"candidate-pair"!==e.type||(s[e.id]=e)}));const a=e=>{o=!0;let t=i[e.localCandidateId];t&&(t.ip||t.address)?(this.localAddress=t.ip||t.address,this.localPort=Number(t.port)):t&&t.ipAddress?(this.localAddress=t.ipAddress,this.localPort=Number(t.portNumber)):"string"==typeof e.googLocalAddress&&(t=e.googLocalAddress.split(":"),this.localAddress=t[0],this.localPort=Number(t[1])),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let n=r[e.remoteCandidateId];n&&(n.ip||n.address)?(this.remoteAddress=n.ip||n.address,this.remotePort=Number(n.port)):n&&n.ipAddress?(this.remoteAddress=n.ipAddress,this.remotePort=Number(n.portNumber)):"string"==typeof e.googRemoteAddress&&(n=e.googRemoteAddress.split(":"),this.remoteAddress=n[0],this.remotePort=Number(n[1])),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4"),this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPort,this.remoteAddress,this.remotePort)};if(n.forEach((e=>{"transport"===e.type&&e.selectedCandidatePairId&&a(s[e.selectedCandidatePairId]),("googCandidatePair"===e.type&&"true"===e.googActiveConnection||("candidatepair"===e.type||"candidate-pair"===e.type)&&e.selected)&&a(e)})),o||Object.keys(s).length&&!Object.keys(i).length){if(this._connecting=!1,this._connected=!0,this._chunk){try{this.send(this._chunk)}catch(t){return this.__destroy(le(t,"ERR_DATA_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');const e=this._cb;this._cb=null,e(null)}"number"!=typeof this._channel.bufferedAmountLowThreshold&&(this._interval=setInterval((()=>this._onInterval()),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")}else setTimeout(e,100)}))};e()}_onInterval(){!this._cb||!this._channel||this._channel.bufferedAmount>de||this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||("stable"===this._pc.signalingState&&(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach((e=>{this._pc.removeTrack(e),this._queuedNegotiation=!0})),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._debug("flushing negotiation queue"),this._queuedNegotiation=!1,this._needsNegotiation()):(this._debug("negotiated"),this.emit("negotiated"))),this._debug("signalingStateChange %s",this._pc.signalingState),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(e){this.destroyed||(e.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex,sdpMid:e.candidate.sdpMid}}):e.candidate||this._iceComplete||(this._iceComplete=!0,this.emit("_iceComplete")),e.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(e){if(this.destroyed)return;let t=e.data;t instanceof ArrayBuffer?t=new Uint8Array(t):!1===this.__objectMode&&(t=(0,f.gR)(t)),this.push(t)}_onChannelBufferedAmountLow(){if(this.destroyed||!this._cb)return;this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);const e=this._cb;this._cb=null,e(null)}_onChannelOpen(){this._connected||this.destroyed||(this._debug("on channel open"),this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||(this._debug("on channel close"),this.__destroy())}_onTrack(e){this.destroyed||e.streams.forEach((t=>{this._debug("on track"),this.emit("track",e.track,t),this._remoteTracks.push({track:e.track,stream:t}),this._remoteStreams.some((e=>e.id===t.id))||(this._remoteStreams.push(t),d((()=>{this._debug("on stream"),this.emit("stream",t)})))}))}_debug(){const e=[].slice.call(arguments);e[0]="["+this._id+"] "+e[0],ue.apply(null,e)}}pe.WEBRTC_SUPPORT=!!he(),pe.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},pe.channelConfig={};const ge=pe;var _e=n(1463),me=n(558),ye=n(7460),be=n(3287),we=n(6475);const ve=C("webtorrent:conn-pool");class ke{constructor(e){ve("create pool (port %s)",e.torrentPort),this._client=e,this._pendingConns=new Set,this._onTCPConnectionBound=e=>{this._onConnection(e,"tcp")},this._onUTPConnectionBound=e=>{this._onConnection(e,"utp")},this._onListening=()=>{this._client._onListening()},this._onTCPError=e=>{this._client._destroy(e)},this._onUTPError=()=>{this._client.utp=!1},this.tcpServer=ye.createServer(),this.tcpServer.on("connection",this._onTCPConnectionBound),this.tcpServer.on("error",this._onTCPError),this.tcpServer.listen(e.torrentPort,(async()=>{ve("creating tcpServer in port %s",this.tcpServer.address().port),this._client.utp?(this.utpServer=(await we).createServer(),this.utpServer.on("connection",this._onUTPConnectionBound),this.utpServer.on("listening",this._onListening),this.utpServer.on("error",this._onUTPError),ve("creating utpServer in port %s",this.tcpServer.address().port),this.utpServer.listen(this.tcpServer.address().port)):this._onListening()}))}destroy(e){if(ve("destroy conn pool"),this.utpServer&&(this.utpServer.removeListener("connection",this._onUTPConnectionBound),this.utpServer.removeListener("listening",this._onListening),this.utpServer.removeListener("error",this._onUTPError)),this.tcpServer.removeListener("connection",this._onTCPConnectionBound),this.tcpServer.removeListener("error",this._onTCPError),this._pendingConns.forEach((e=>{e.on("error",Ee),e.destroy()})),this.utpServer)try{this.utpServer.close(e)}catch(t){e&&d(e)}try{this.tcpServer.close(e)}catch(t){e&&d(e)}this.tcpServer=null,this.utpServer=null,this._client=null,this._pendingConns=null}_onConnection(e,t){const n=this;if(!e.remoteAddress)return e.on("error",Ee),void e.destroy();n._pendingConns.add(e),e.once("close",o);const r="utp"===t?be.default.createUTPIncomingPeer(e,this._client.throttleGroups):be.default.createTCPIncomingPeer(e,this._client.throttleGroups),i=r.wire;async function s(e,t){o();const i=await n._client.get(e);if(i)r.swarm||(r.swarm=i,i._addIncomingPeer(r)),r.onHandshake(e,t);else{const t=new Error(`Unexpected info hash ${e} from incoming peer ${r.id}`);r.destroy(t)}}function o(){e.removeListener("close",o),i.removeListener("handshake",s),n._pendingConns&&n._pendingConns.delete(e)}i.once("pe3",(async function(e){const t=await n._client._getByHash(e);t?(r.swarm=t,t._addIncomingPeer(r),r.onPe3(e)):r.destroy(new Error(`Unexpected info hash hash ${e} from incoming peer ${r.id}`))})),i.once("handshake",s)}}function Ee(){}ke.UTP_SUPPORT=Object.keys(we).length>0;var xe=n(2203),Se=n(5381);const Te=/^\[?([^\]]+)]?:(\d+)$/;let Ae=new Map;function Ce(e){if(1e5===Ae.size&&Ae.clear(),!Ae.has(e)){const t=Te.exec(e);if(!t)throw new Error(`invalid addr: ${e}`);Ae.set(e,[t[1],Number(t[2])])}return Ae.get(e)}var Ie=n(8205),Pe=n(9421);async function*Re(e,t={}){if(e?.[Symbol.asyncIterator])return void(yield*e[Symbol.asyncIterator](t.offset));if(!e?.get)throw new Error("First argument must be an abstract-chunk-store compliant store");const n=t.chunkLength||e.chunkLength;if(!n)throw new Error("missing required `chunkLength` property");let r=t.length||e.length;if(!Number.isFinite(r))throw new Error("missing required `length` property");const i=t.offset||0,s=(t,n,r)=>new Promise(((i,s)=>{e.get(t,{offset:r,length:n},((e,t)=>{e&&s(e),i(t)}))}));let o=Math.floor(i/n);const a=i%n;if(i){const e=Math.min(r,n-a);r-=e,yield s(o++,e,a)}for(let e=r;e>0;++o,e-=n)yield s(o,Math.min(e,n))}async function Oe(e,t,n={}){if(!e?.put)throw new Error("First argument must be an abstract-chunk-store compliant store");const r=n.chunkLength||e.chunkLength;if(!r)throw new Error("missing required `chunkLength` property");const i=n.storeMaxOutstandingPuts||16;let s=0,a=0,h=()=>{},c=!1;for await(const l of o(t,r,{zeroPadding:n.zeroPadding||!1}))await new Promise((t=>{s++<=i&&t(),e.put(a++,l,(e=>{if(e)throw e;--s,t(),c&&0===s&&h()}))}));0!==s&&(c=new Promise((e=>{h=e})),await c)}var Le=n(9648),Ne=n(7673);const Be=/^[\d.]+$/,De=/^[\da-fA-F:]+$/,Ue=/^::ffff:/,Me=(0,f.zo)([We(1047),We(655366528)]),je={CONNECT:0,ANNOUNCE:1,SCRAPE:2,ERROR:3},He={update:0,completed:1,started:2,stopped:3,paused:4},qe={0:"update",1:"completed",2:"started",3:"stopped",4:"paused"},Fe={update:"update",completed:"complete",started:"start",stopped:"stop",paused:"pause"},ze=15e3,$e=1e3;function We(e){const t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e),t}const Ve=e=>Ne.parse(e,null,null,{decodeURIComponent:unescape}),Ge=e=>{let t=Ne.stringify(e,null,null,{encodeURIComponent:escape});return t=t.replace(/[@*/+]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)),t},Ke={DEFAULT_ANNOUNCE_PEERS:50,MAX_ANNOUNCE_PEERS:82,parseUrl:e=>{const t=new URL(e.replace(/^udp:/,"http:"));return e.match(/^udp:/)&&Object.defineProperties(t,{href:{value:t.href.replace(/^http/,"udp")},protocol:{value:t.protocol.replace(/^http/,"udp")},origin:{value:t.origin.replace(/^http/,"udp")}}),t},...e};var Ze=n(6581),Ye=n(6313),Je=n(6993),Qe=n(9354);const Xe=class extends t{constructor(e,t){super(),this.client=e,this.announceUrl=t,this.interval=null,this.destroyed=!1}setInterval(e){null==e&&(e=this.DEFAULT_ANNOUNCE_INTERVAL),clearInterval(this.interval),e&&(this.interval=setInterval((()=>{this.announce(this.client._defaultAnnounceOpts())}),e),this.interval.unref&&this.interval.unref())}};var et=n(229),tt=n(8764).Buffer;const nt=C("bittorrent-tracker:http-tracker"),rt=/\/(announce)[^/]*$/;class it extends Xe{constructor(e,t){super(e,t),nt("new http tracker %s",t),this.scrapeUrl=null;const n=this.announceUrl.match(rt);if(n){const e=this.announceUrl.slice(0,n.index),t=this.announceUrl.slice(n.index+9);this.scrapeUrl=`${e}/scrape${t}`}this.cleanupFns=[],this.maybeDestroyCleanup=null}announce(e){if(this.destroyed)return;const t=Object.assign({},e,{compact:null==e.compact?1:e.compact,info_hash:this.client._infoHashBinary,peer_id:this.client._peerIdBinary,port:this.client._port});this._trackerId&&(t.trackerid=this._trackerId),this._request(this.announceUrl,t,((e,t)=>{if(e)return this.client.emit("warning",e);this._onAnnounceResponse(t)}))}scrape(e){if(this.destroyed)return;if(!this.scrapeUrl)return void this.client.emit("error",new Error(`scrape not supported ${this.announceUrl}`));const t={info_hash:Array.isArray(e.infoHash)&&e.infoHash.length>0?e.infoHash.map((e=>(0,f.E)(e))):e.infoHash&&(0,f.E)(e.infoHash)||this.client._infoHashBinary};this._request(this.scrapeUrl,t,((e,t)=>{if(e)return this.client.emit("warning",e);this._onScrapeResponse(t)}))}destroy(e){const t=this;if(this.destroyed)return e(null);let n;if(this.destroyed=!0,clearInterval(this.interval),0===this.cleanupFns.length)return r();function r(){n&&(clearTimeout(n),n=null),t.maybeDestroyCleanup=null,t.cleanupFns.slice(0).forEach((e=>{e()})),t.cleanupFns=[],e(null)}n=setTimeout(r,Ke.DESTROY_TIMEOUT),this.maybeDestroyCleanup=()=>{0===this.cleanupFns.length&&r()}}_request(e,t,n){const r=this,i=new URL(e+(-1===e.indexOf("?")?"?":"&")+Ke.querystringStringify(t));let o;this.client._proxyOpts&&(o="https:"===i.protocol?this.client._proxyOpts.httpsAgent:this.client._proxyOpts.httpAgent,!o&&this.client._proxyOpts.socksProxy&&(o=new Qe.Agent(Ye(this.client._proxyOpts.socksProxy),"https:"===i.protocol))),this.cleanupFns.push(h);let a=Je.concat({url:i.toString(),agent:o,timeout:Ke.REQUEST_TIMEOUT,headers:{"user-agent":this.client._userAgent||""}},(function(t,i,o){if(h(),r.destroyed)return;if(t)return n(t);if(200!==i.statusCode)return n(new Error(`Non-200 response code ${i.statusCode} from ${r.announceUrl}`));if(!o||0===o.length)return n(new Error(`Invalid tracker response from${r.announceUrl}`));try{o=s.Z.decode(o)}catch(t){return n(new Error(`Error decoding tracker response: ${t.message}`))}const a=o["failure reason"]&&(0,f.vV)(o["failure reason"]);if(a)return nt(`failure from ${e} (${a})`),n(new Error(a));const c=o["warning message"]&&(0,f.vV)(o["warning message"]);c&&(nt(`warning from ${e} (${c})`),r.client.emit("warning",new Error(c)));nt(`response from ${e}`),n(null,o)}));function h(){a&&(Ze(r.cleanupFns,r.cleanupFns.indexOf(h)),a.abort(),a=null),r.maybeDestroyCleanup&&r.maybeDestroyCleanup()}}_onAnnounceResponse(e){const t=e.interval||e["min interval"];t&&this.setInterval(1e3*t);const n=e["tracker id"];n&&(this._trackerId=n);const r=Object.assign({},e,{announce:this.announceUrl,infoHash:(0,f.Ff)(e.info_hash||String(e.info_hash))});let i;if(this.client.emit("update",r),ArrayBuffer.isView(e.peers)){try{i=et.multi(tt.from(e.peers))}catch(e){return this.client.emit("warning",e)}i.forEach((e=>{this.client.emit("peer",e)}))}else Array.isArray(e.peers)&&e.peers.forEach((e=>{this.client.emit("peer",`${e.ip}:${e.port}`)}));if(ArrayBuffer.isView(e.peers6)){try{i=et.multi6(tt.from(e.peers6))}catch(e){return this.client.emit("warning",e)}i.forEach((e=>{this.client.emit("peer",e)}))}else Array.isArray(e.peers6)&&e.peers6.forEach((e=>{const t=/^\[/.test(e.ip)||!/:/.test(e.ip)?e.ip:`[${e.ip}]`;this.client.emit("peer",`${t}:${e.port}`)}))}_onScrapeResponse(e){e=e.files||e.host||{};const t=Object.keys(e);0!==t.length?t.forEach((t=>{const n=Object.assign(e[t],{announce:this.announceUrl,infoHash:(0,f.Ff)(t)});this.client.emit("scrape",n)})):this.client.emit("warning",new Error("invalid scrape response"))}}it.prototype.DEFAULT_ANNOUNCE_INTERVAL=18e5;const st=it;var ot=n(8025);const at=C("bittorrent-tracker:udp-tracker");class ht extends Xe{constructor(e,t){super(e,t),at("new udp tracker %s",t),this.cleanupFns=[],this.maybeDestroyCleanup=null}announce(e){this.destroyed||this._request(e)}scrape(e){this.destroyed||(e._scrape=!0,this._request(e))}destroy(e){const t=this;if(this.destroyed)return e(null);let n;if(this.destroyed=!0,clearInterval(this.interval),0===this.cleanupFns.length)return r();function r(){n&&(clearTimeout(n),n=null),t.maybeDestroyCleanup=null,t.cleanupFns.slice(0).forEach((e=>{e()})),t.cleanupFns=[],e(null)}n=setTimeout(r,Ke.DESTROY_TIMEOUT),this.maybeDestroyCleanup=()=>{0===this.cleanupFns.length&&r()}}_request(e){const t=this;e||(e={});let n,r,i,s,{hostname:o,port:a}=Ke.parseUrl(this.announceUrl);""===a&&(a=80);let h=ct();const c=this.client._proxyOpts&&Ye(this.client._proxyOpts.socksProxy);function l(t,o,a){if(t)return d(t);r=o,i=ot.createSocket("udp4"),s=a,n=setTimeout((()=>{"stopped"===e.event?u():d(new Error(`tracker request timed out (${e.event})`)),n=null}),Ke.REQUEST_TIMEOUT),n.unref&&n.unref(),g((0,f.zo)([Ke.CONNECTION_ID,Ke.toUInt32(Ke.ACTIONS.CONNECT),h]),s),i.once("error",d),i.on("message",p)}function u(){if(n&&(clearTimeout(n),n=null),i){Ze(t.cleanupFns,t.cleanupFns.indexOf(u)),i.removeListener("error",d),i.removeListener("message",p),i.on("error",ft);try{i.close()}catch(e){}if(i=null,r){try{r.close()}catch(e){}r=null}}t.maybeDestroyCleanup&&t.maybeDestroyCleanup()}function d(e){if(u(),!t.destroyed){try{e.message&&(e.message+=` (${t.announceUrl})`)}catch(e){}t.client.emit("warning",e)}}function p(n){r&&(n=n.slice(10));const i=new DataView(h.buffer);if(n.length<8||n.readUInt32BE(4)!==i.getUint32(0))return d(new Error("tracker sent invalid transaction id"));const o=n.readUInt32BE(0);switch(at("UDP response %s, action %s",t.announceUrl,o),o){case 0:if(n.length<16)return d(new Error("invalid udp handshake"));e._scrape?function(n){h=ct();const r=Array.isArray(e.infoHash)&&e.infoHash.length>0?(0,f.zo)(e.infoHash):e.infoHash||t.client._infoHashBuffer;g((0,f.zo)([n,Ke.toUInt32(Ke.ACTIONS.SCRAPE),h,r]),s)}(n.slice(8,16)):function(e,n){h=ct(),g((0,f.zo)([e,Ke.toUInt32(Ke.ACTIONS.ANNOUNCE),h,t.client._infoHashBuffer,t.client._peerIdBuffer,dt(n.downloaded),null!=n.left?dt(n.left):(0,f._0)("ffffffffffffffff"),dt(n.uploaded),Ke.toUInt32(Ke.EVENTS[n.event]||0),Ke.toUInt32(0),Ke.toUInt32(0),Ke.toUInt32(n.numwant),lt(t.client._port)]),s)}(n.slice(8,16),e);break;case 1:{if(u(),t.destroyed)return;if(n.length<20)return d(new Error("invalid announce message"));const e=n.readUInt32BE(8);let r;e&&t.setInterval(1e3*e),t.client.emit("update",{announce:t.announceUrl,complete:n.readUInt32BE(16),incomplete:n.readUInt32BE(12)});try{r=et.multi(n.slice(20))}catch(e){return t.client.emit("warning",e)}r.forEach((e=>{t.client.emit("peer",e)}));break}case 2:{if(u(),t.destroyed)return;if(n.length<20||(n.length-8)%12!=0)return d(new Error("invalid scrape message"));const r=Array.isArray(e.infoHash)&&e.infoHash.length>0?e.infoHash.map((e=>e.toString("hex"))):[e.infoHash&&e.infoHash.toString("hex")||t.client.infoHash];for(let e=0,i=(n.length-8)/12;eut||"string"==typeof e){const t=new Uint8Array(8);return new DataView(t.buffer).setBigUint64(0,e),t}return(0,f.zo)([new Uint8Array(4),Ke.toUInt32(e)])}function ft(){}const pt=ht;var gt=n(7026);const _t=C("simple-websocket"),mt="function"!=typeof gt?WebSocket:gt;class yt extends ce.Duplex{constructor(e={}){if("string"==typeof e&&(e={url:e}),super(e=Object.assign({allowHalfOpen:!1},e)),this.__objectMode=!!e.objectMode,null!=e.objectMode&&delete e.objectMode,null==e.url&&null==e.socket)throw new Error("Missing required `url` or `socket` option");if(null!=e.url&&null!=e.socket)throw new Error("Must specify either `url` or `socket` option, not both");if(this._id=(0,f.oc)((0,f.O6)(4)).slice(0,7),this._debug("new websocket: %o",e),this.connected=!1,this._chunk=null,this._cb=null,this._interval=null,e.socket)this.url=e.socket.url,this._ws=e.socket,this.connected=e.socket.readyState===mt.OPEN;else{this.url=e.url;try{this._ws="function"==typeof gt?new mt(e.url,{...e,encoding:void 0}):new mt(e.url)}catch(e){return void d((()=>this.destroy(e)))}}this._ws.binaryType="arraybuffer",e.socket&&this.connected?d((()=>this._handleOpen())):this._ws.onopen=()=>this._handleOpen(),this._ws.onmessage=e=>this._handleMessage(e),this._ws.onclose=()=>this._handleClose(),this._ws.onerror=e=>this._handleError(e),this._handleFinishBound=()=>this._handleFinish(),this.once("finish",this._handleFinishBound)}send(e){this._ws.send(e)}_final(e){this._readableState.ended||this.push(null),e(null)}_destroy(e){if(!this.destroyed){if(this._writableState.ended||this.end(),this.connected=!1,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._handleFinishBound&&this.removeListener("finish",this._handleFinishBound),this._handleFinishBound=null,this._ws){const e=this._ws,t=()=>{e.onclose=null};if(e.readyState===mt.CLOSED)t();else try{e.onclose=t,e.close()}catch(e){t()}e.onopen=null,e.onmessage=null,e.onerror=()=>{}}this._ws=null,e()}}_write(e,t){if(this.destroyed)return t(new Error("cannot write after socket is destroyed"));if(this.connected){try{this.send(e)}catch(e){return this.destroy(e)}"function"!=typeof gt&&this._ws.bufferedAmount>65536?(this._debug("start backpressure: bufferedAmount %d",this._ws.bufferedAmount),this._cb=t):t(null)}else this._debug("write before connect"),this._chunk=e,this._cb=t}_handleOpen(){if(!this.connected&&!this.destroyed){if(this.connected=!0,this._chunk){try{this.send(this._chunk)}catch(e){return this.destroy(e)}this._chunk=null,this._debug('sent chunk from "write before connect"');const e=this._cb;this._cb=null,e(null)}"function"!=typeof gt&&(this._interval=setInterval((()=>this._onInterval()),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")}}_handleMessage(e){if(this.destroyed)return;let t=e.data;t instanceof ArrayBuffer&&(t=new Uint8Array(t)),!1===this.__objectMode&&(t=(0,f.gR)(t)),this.push(t)}_handleClose(){this.destroyed||(this._debug("on close"),this.destroy())}_handleError(e){this.destroy(new Error(`Error connecting to ${this.url}`))}_handleFinish(){if(this.destroyed)return;const e=()=>{setTimeout((()=>this.destroy()),1e3)};this.connected?e():this.once("connect",e)}_onInterval(){if(!this._cb||!this._ws||this._ws.bufferedAmount>65536)return;this._debug("ending backpressure: bufferedAmount %d",this._ws.bufferedAmount);const e=this._cb;this._cb=null,e(null)}_debug(){const e=[].slice.call(arguments);e[0]="["+this._id+"] "+e[0],_t.apply(null,e)}}yt.WEBSOCKET_SUPPORT=!!mt;const bt=C("bittorrent-tracker:websocket-tracker"),wt={};class vt extends Xe{constructor(e,t){super(e,t),bt("new websocket tracker %s",t),this.peers={},this.socket=null,this.reconnecting=!1,this.retries=0,this.reconnectTimer=null,this.expectingResponse=!1,this._openSocket()}announce(e){if(this.destroyed||this.reconnecting)return;if(!this.socket.connected)return void this.socket.once("connect",(()=>{this.announce(e)}));const t=Object.assign({},e,{action:"announce",info_hash:this.client._infoHashBinary,peer_id:this.client._peerIdBinary});if(this._trackerId&&(t.trackerid=this._trackerId),"stopped"===e.event||"completed"===e.event)this._send(t);else{const n=Math.min(e.numwant,5);this._generateOffers(n,(e=>{t.numwant=n,t.offers=e,this._send(t)}))}}scrape(e){if(this.destroyed||this.reconnecting)return;if(!this.socket.connected)return void this.socket.once("connect",(()=>{this.scrape(e)}));const t={action:"scrape",info_hash:Array.isArray(e.infoHash)&&e.infoHash.length>0?e.infoHash.map((e=>(0,f.E)(e))):e.infoHash&&(0,f.E)(e.infoHash)||this.client._infoHashBinary};this._send(t)}destroy(e=kt){if(this.destroyed)return e(null);this.destroyed=!0,clearInterval(this.interval),clearTimeout(this.reconnectTimer);for(const e in this.peers){const t=this.peers[e];clearTimeout(t.trackerTimeout),t.destroy()}if(this.peers=null,this.socket&&(this.socket.removeListener("connect",this._onSocketConnectBound),this.socket.removeListener("data",this._onSocketDataBound),this.socket.removeListener("close",this._onSocketCloseBound),this.socket.removeListener("error",this._onSocketErrorBound),this.socket=null),this._onSocketConnectBound=null,this._onSocketErrorBound=null,this._onSocketDataBound=null,this._onSocketCloseBound=null,wt[this.announceUrl]&&(wt[this.announceUrl].consumers-=1),wt[this.announceUrl].consumers>0)return e();let t,n=wt[this.announceUrl];if(delete wt[this.announceUrl],n.on("error",kt),n.once("close",e),!this.expectingResponse)return r();function r(){t&&(clearTimeout(t),t=null),n.removeListener("data",r),n.destroy(),n=null}t=setTimeout(r,$e),n.once("data",r)}_openSocket(){if(this.destroyed=!1,this.peers||(this.peers={}),this._onSocketConnectBound=()=>{this._onSocketConnect()},this._onSocketErrorBound=e=>{this._onSocketError(e)},this._onSocketDataBound=e=>{this._onSocketData(e)},this._onSocketCloseBound=()=>{this._onSocketClose()},this.socket=wt[this.announceUrl],this.socket)wt[this.announceUrl].consumers+=1,this.socket.connected&&this._onSocketConnectBound();else{const e=new URL(this.announceUrl);let t;this.client._proxyOpts&&(t="wss:"===e.protocol?this.client._proxyOpts.httpsAgent:this.client._proxyOpts.httpAgent,!t&&this.client._proxyOpts.socksProxy&&(t=new Qe.Agent(Ye(this.client._proxyOpts.socksProxy),"wss:"===e.protocol))),this.socket=wt[this.announceUrl]=new yt({url:this.announceUrl,agent:t}),this.socket.consumers=1,this.socket.once("connect",this._onSocketConnectBound)}this.socket.on("data",this._onSocketDataBound),this.socket.once("close",this._onSocketCloseBound),this.socket.once("error",this._onSocketErrorBound)}_onSocketConnect(){this.destroyed||this.reconnecting&&(this.reconnecting=!1,this.retries=0,this.announce(this.client._defaultAnnounceOpts()))}_onSocketData(e){if(!this.destroyed){this.expectingResponse=!1;try{e=JSON.parse((0,f.vV)(e))}catch(e){return void this.client.emit("warning",new Error("Invalid tracker response"))}"announce"===e.action?this._onAnnounceResponse(e):"scrape"===e.action?this._onScrapeResponse(e):this._onSocketError(new Error(`invalid action in WS response: ${e.action}`))}}_onAnnounceResponse(e){if(e.info_hash!==this.client._infoHashBinary)return void bt("ignoring websocket data from %s for %s (looking for %s: reused socket)",this.announceUrl,(0,f.Ff)(e.info_hash),this.client.infoHash);if(e.peer_id&&e.peer_id===this.client._peerIdBinary)return;bt("received %s from %s for %s",JSON.stringify(e),this.announceUrl,this.client.infoHash);const t=e["failure reason"];if(t)return this.client.emit("warning",new Error(t));const n=e["warning message"];n&&this.client.emit("warning",new Error(n));const r=e.interval||e["min interval"];r&&this.setInterval(1e3*r);const i=e["tracker id"];if(i&&(this._trackerId=i),null!=e.complete){const t=Object.assign({},e,{announce:this.announceUrl,infoHash:(0,f.Ff)(e.info_hash)});this.client.emit("update",t)}let s;if(e.offer&&e.peer_id&&(bt("creating peer (from remote offer)"),s=this._createPeer(),s.id=(0,f.Ff)(e.peer_id),s.once("signal",(t=>{const n={action:"announce",info_hash:this.client._infoHashBinary,peer_id:this.client._peerIdBinary,to_peer_id:e.peer_id,answer:t,offer_id:e.offer_id};this._trackerId&&(n.trackerid=this._trackerId),this._send(n)})),this.client.emit("peer",s),s.signal(e.offer)),e.answer&&e.peer_id){const t=(0,f.Ff)(e.offer_id);s=this.peers[t],s?(s.id=(0,f.Ff)(e.peer_id),this.client.emit("peer",s),s.signal(e.answer),clearTimeout(s.trackerTimeout),s.trackerTimeout=null,delete this.peers[t]):bt(`got unexpected answer: ${JSON.stringify(e.answer)}`)}}_onScrapeResponse(e){e=e.files||{};const t=Object.keys(e);0!==t.length?t.forEach((t=>{const n=Object.assign(e[t],{announce:this.announceUrl,infoHash:(0,f.Ff)(t)});this.client.emit("scrape",n)})):this.client.emit("warning",new Error("invalid scrape response"))}_onSocketClose(){this.destroyed||(this.destroy(),this._startReconnectTimer())}_onSocketError(e){this.destroyed||(this.destroy(),this.client.emit("warning",e),this._startReconnectTimer())}_startReconnectTimer(){const e=Math.floor(3e5*Math.random())+Math.min(1e4*Math.pow(2,this.retries),36e5);this.reconnecting=!0,clearTimeout(this.reconnectTimer),this.reconnectTimer=setTimeout((()=>{this.retries++,this._openSocket()}),e),this.reconnectTimer.unref&&this.reconnectTimer.unref(),bt("reconnecting socket in %s ms",e)}_send(e){if(this.destroyed)return;this.expectingResponse=!0;const t=JSON.stringify(e);bt("send %s",t),this.socket.send(t)}_generateOffers(e,t){const n=this,r=[];bt("generating %s offers",e);for(let t=0;t{r.push({offer:t,offer_id:(0,f.E)(e)}),s()})),t.trackerTimeout=setTimeout((()=>{bt("tracker timeout: destroying peer"),t.trackerTimeout=null,delete n.peers[e],t.destroy()}),5e4),t.trackerTimeout.unref&&t.trackerTimeout.unref()}function s(){r.length===e&&(bt("generated %s offers",e),t(r))}s()}_createPeer(e){const t=this;e=Object.assign({trickle:!1,config:t.client._rtcConfig,wrtc:t.client._wrtc},e);const n=new ge(e);return n.once("error",r),n.once("connect",(function e(){n.removeListener("error",r),n.removeListener("connect",e)})),n;function r(e){t.client.emit("warning",new Error(`Connection error: ${e.message}`)),n.destroy()}}}function kt(){}vt.prototype.DEFAULT_ANNOUNCE_INTERVAL=3e4,vt._socketPool=wt;const Et=vt;var xt=n(8768);const St=C("bittorrent-tracker:client");class Tt extends t{constructor(e={}){if(super(),!e.peerId)throw new Error("Option `peerId` is required");if(!e.infoHash)throw new Error("Option `infoHash` is required");if(!e.announce)throw new Error("Option `announce` is required");if(!xt.browser&&!e.port)throw new Error("Option `port` is required");this.peerId="string"==typeof e.peerId?e.peerId:(0,f.oc)(e.peerId),this._peerIdBuffer=(0,f._0)(this.peerId),this._peerIdBinary=(0,f.E)(this.peerId),this.infoHash="string"==typeof e.infoHash?e.infoHash.toLowerCase():(0,f.oc)(e.infoHash),this._infoHashBuffer=(0,f._0)(this.infoHash),this._infoHashBinary=(0,f.E)(this.infoHash),St("new client %s",this.infoHash),this.destroyed=!1,this._port=e.port,this._getAnnounceOpts=e.getAnnounceOpts,this._rtcConfig=e.rtcConfig,this._userAgent=e.userAgent,this._proxyOpts=e.proxyOpts,this._wrtc="function"==typeof e.wrtc?e.wrtc():e.wrtc;let t="string"==typeof e.announce?[e.announce]:null==e.announce?[]:e.announce;t=t.map((e=>(ArrayBuffer.isView(e)&&(e=(0,f.vV)(e)),"/"===e[e.length-1]&&(e=e.substring(0,e.length-1)),e))),t=Array.from(new Set(t));const n=!1!==this._wrtc&&(!!this._wrtc||ge.WEBRTC_SUPPORT),r=e=>{d((()=>{this.emit("warning",e)}))};this._trackers=t.map((e=>{let t;try{t=Ke.parseUrl(e)}catch(t){return r(new Error(`Invalid tracker URL: ${e}`)),null}const i=t.port;if(i<0||i>65535)return r(new Error(`Invalid tracker port: ${e}`)),null;const s=t.protocol;return"http:"!==s&&"https:"!==s||"function"!=typeof st?"udp:"===s&&"function"==typeof pt?new pt(this,e):"ws:"!==s&&"wss:"!==s||!n||"ws:"===s&&"undefined"!=typeof window&&"https:"===window.location.protocol?(r(new Error(`Unsupported tracker protocol: ${e}`)),null):new Et(this,e):new st(this,e)})).filter(Boolean)}start(e){(e=this._defaultAnnounceOpts(e)).event="started",St("send `start` %o",e),this._announce(e),this._trackers.forEach((e=>{e.setInterval()}))}stop(e){(e=this._defaultAnnounceOpts(e)).event="stopped",St("send `stop` %o",e),this._announce(e)}complete(e){e||(e={}),(e=this._defaultAnnounceOpts(e)).event="completed",St("send `complete` %o",e),this._announce(e)}update(e){(e=this._defaultAnnounceOpts(e)).event&&delete e.event,St("send `update` %o",e),this._announce(e)}_announce(e){this._trackers.forEach((t=>{t.announce(e)}))}scrape(e){St("send `scrape`"),e||(e={}),this._trackers.forEach((t=>{t.scrape(e)}))}setInterval(e){St("setInterval %d",e),this._trackers.forEach((t=>{t.setInterval(e)}))}destroy(e){if(this.destroyed)return;this.destroyed=!0,St("destroy");const t=this._trackers.map((e=>t=>{e.destroy(t)}));u(t,e),this._trackers=[],this._getAnnounceOpts=null}_defaultAnnounceOpts(e={}){return null==e.numwant&&(e.numwant=Ke.DEFAULT_ANNOUNCE_PEERS),null==e.uploaded&&(e.uploaded=0),null==e.downloaded&&(e.downloaded=0),this._getAnnounceOpts&&(e=Object.assign({},e,this._getAnnounceOpts())),e}}Tt.scrape=(e,t)=>{if(t=g(t),!e.infoHash)throw new Error("Option `infoHash` is required");if(!e.announce)throw new Error("Option `announce` is required");const n=Object.assign({},e,{infoHash:Array.isArray(e.infoHash)?e.infoHash[0]:e.infoHash,peerId:(0,f.gR)("01234567890123456789"),port:6881}),r=new Tt(n);r.once("error",t),r.once("warning",t);let i=Array.isArray(e.infoHash)?e.infoHash.length:1;const s={};return r.on("scrape",(e=>{if(i-=1,s[e.infoHash]=e,0===i){r.destroy();const e=Object.keys(s);1===e.length?t(null,s[e[0]]):t(null,s)}})),r.scrape({infoHash:e.infoHash}),r};const At=Tt;n(859);const Ct=C("bittorrent-lsd"),It="239.192.152.143",Pt=6771;class Rt extends t.EventEmitter{constructor(e={}){if(super(),!e.peerId)throw new Error("Option `peerId` is required");if(!e.infoHash)throw new Error("Option `infoHash` is required");if(!e.port)throw new Error("Option `port` is required");this.peerId="string"==typeof e.peerId?e.peerId:e.peerId.toString("hex"),this.infoHash="string"==typeof e.infoHash?e.infoHash.toLowerCase():e.infoHash.toString("hex"),this.port="string"==typeof e.port?e.port:e.port.toString(),this.cookie=`bittorrent-lsd-${this.peerId}`,this.destroyed=!1,this.annouceIntervalId=null,this.server=ot.createSocket({type:"udp4",reuseAddr:!0});this.server.on("listening",(()=>{Ct("listening");try{this.server.addMembership(It)}catch(e){this.emit("warning",e)}})),this.server.on("message",((e,t)=>{Ct("message",e.toString(),`${t.address}:${t.port}`);const n=this._parseAnnounce(e.toString());null!==n&&n.cookie!==this.cookie&&n.infoHash.forEach((e=>{this.emit("peer",`${t.address}:${n.port}`,e)}))})),this.server.on("error",(e=>{this.emit("error",e)}))}_parseAnnounce(e){Ct("parse announce",e);const t=e.split("\r\n");if("BT-SEARCH * HTTP/1.1"!==t[0])return this.emit("warning","Invalid LSD announce (header)"),null;const n=t[1].split("Host: ")[1];if(!(e=>/^(239.192.152.143|\[ff15::efc0:988f]):6771$/.test(e))(n))return this.emit("warning","Invalid LSD announce (host)"),null;const r=t[2].split("Port: ")[1];if(!(e=>/^\d+$/.test(e))(r))return this.emit("warning","Invalid LSD announce (port)"),null;const i=t.filter((e=>e.includes("Infohash: "))).map((e=>e.split("Infohash: ")[1])).filter((e=>(e=>/^[0-9a-fA-F]{40}$/.test(e))(e)));if(0===i.length)return this.emit("warning","Invalid LSD announce (infoHash)"),null;return{host:n,port:r,infoHash:i,cookie:t.filter((e=>e.includes("cookie: "))).map((e=>e.split("cookie: ")[1])).reduce(((e,t)=>t),null)}}destroy(e){this.destroyed||(this.destroyed=!0,Ct("destroy"),clearInterval(this.annouceIntervalId),this.server.close(e))}start(){Ct("start"),this.server.bind(Pt),this._announce(),this.annouceIntervalId=setInterval((()=>{this._announce()}),3e5)}_announce(){Ct("send announce");const e=`BT-SEARCH * HTTP/1.1\r\nHost: ${`${It}:6771`}\r\nPort: ${this.port}\r\nInfohash: ${this.infoHash}\r\ncookie: ${this.cookie}\r\n\r\n\r\n`;this.server.send(e,Pt,It)}}const Ot=Rt;var Lt=n(8768);const Nt=C("torrent-discovery");class Bt extends t.EventEmitter{constructor(e){if(super(),!e.peerId)throw new Error("Option `peerId` is required");if(!e.infoHash)throw new Error("Option `infoHash` is required");if(!Lt.browser&&!e.port)throw new Error("Option `port` is required");this.peerId="string"==typeof e.peerId?e.peerId:e.peerId.toString("hex"),this.infoHash="string"==typeof e.infoHash?e.infoHash.toLowerCase():e.infoHash.toString("hex"),this._port=e.port,this._userAgent=e.userAgent,this.destroyed=!1,this._announce=e.announce||[],this._intervalMs=e.intervalMs||9e5,this._trackerOpts=null,this._dhtAnnouncing=!1,this._dhtTimeout=!1,this._internalDHT=!1,this._onWarning=e=>{this.emit("warning",e)},this._onError=e=>{this.emit("error",e)},this._onDHTPeer=(e,t)=>{t.toString("hex")===this.infoHash&&this.emit("peer",`${e.host}:${e.port}`,"dht")},this._onTrackerPeer=e=>{this.emit("peer",e,"tracker")},this._onTrackerAnnounce=()=>{this.emit("trackerAnnounce")},this._onLSDPeer=(e,t)=>{this.emit("peer",e,"lsd")};const t=(e,t)=>{const n=new K(t);return n.on("warning",this._onWarning),n.on("error",this._onError),n.listen(e),this._internalDHT=!0,n};!1===e.tracker?this.tracker=null:e.tracker&&"object"==typeof e.tracker?(this._trackerOpts=Object.assign({},e.tracker),this.tracker=this._createTracker()):this.tracker=this._createTracker(),!1===e.dht||"function"!=typeof K?this.dht=null:e.dht&&"function"==typeof e.dht.addNode?this.dht=e.dht:e.dht&&"object"==typeof e.dht?this.dht=t(e.dhtPort,e.dht):this.dht=t(e.dhtPort),this.dht&&(this.dht.on("peer",this._onDHTPeer),this._dhtAnnounce()),!1===e.lsd||"function"!=typeof Ot?this.lsd=null:this.lsd=this._createLSD()}updatePort(e){e!==this._port&&(this._port=e,this.dht&&this._dhtAnnounce(),this.tracker&&(this.tracker.stop(),this.tracker.destroy((()=>{this.tracker=this._createTracker()}))))}complete(e){this.tracker&&this.tracker.complete(e)}destroy(e){if(this.destroyed)return;this.destroyed=!0,clearTimeout(this._dhtTimeout);const t=[];this.tracker&&(this.tracker.stop(),this.tracker.removeListener("warning",this._onWarning),this.tracker.removeListener("error",this._onError),this.tracker.removeListener("peer",this._onTrackerPeer),this.tracker.removeListener("update",this._onTrackerAnnounce),t.push((e=>{this.tracker.destroy(e)}))),this.dht&&this.dht.removeListener("peer",this._onDHTPeer),this._internalDHT&&(this.dht.removeListener("warning",this._onWarning),this.dht.removeListener("error",this._onError),t.push((e=>{this.dht.destroy(e)}))),this.lsd&&(this.lsd.removeListener("warning",this._onWarning),this.lsd.removeListener("error",this._onError),this.lsd.removeListener("peer",this._onLSDPeer),t.push((e=>{this.lsd.destroy(e)}))),u(t,e),this.dht=null,this.tracker=null,this.lsd=null,this._announce=null}_createTracker(){const e=Object.assign({},this._trackerOpts,{infoHash:this.infoHash,announce:this._announce,peerId:this.peerId,port:this._port,userAgent:this._userAgent}),t=new At(e);return t.on("warning",this._onWarning),t.on("error",this._onError),t.on("peer",this._onTrackerPeer),t.on("update",this._onTrackerAnnounce),t.setInterval(this._intervalMs),t.start(),t}_dhtAnnounce(){this._dhtAnnouncing||(Nt("dht announce"),this._dhtAnnouncing=!0,clearTimeout(this._dhtTimeout),this.dht.announce(this.infoHash,this._port,(e=>{this._dhtAnnouncing=!1,Nt("dht announce complete"),e&&this.emit("warning",e),this.emit("dhtAnnounce"),this.destroyed||(this._dhtTimeout=setTimeout((()=>{this._dhtAnnounce()}),this._intervalMs+Math.floor(Math.random()*this._intervalMs/5)),this._dhtTimeout.unref&&this._dhtTimeout.unref())})))}_createLSD(){const e=Object.assign({},{infoHash:this.infoHash,peerId:this.peerId,port:this._port}),t=new Ot(e);return t.on("warning",this._onWarning),t.on("error",this._onError),t.on("peer",this._onLSDPeer),t.start(),t}}const Dt=Bt;var Ut=n(1191),Mt=n(3700);const jt=C("lt_donthave"),Ht=()=>{class e extends t.EventEmitter{constructor(e){super(),this._peerSupports=!1,this._wire=e}onExtendedHandshake(){this._peerSupports=!0}onMessage(e){let t;try{t=new DataView(e.buffer).getUint32(0)}catch(e){return}this._wire.peerPieces.get(t)&&(jt("got donthave %d",t),this._wire.peerPieces.set(t,!1),this.emit("donthave",t),this._failRequests(t))}donthave(e){if(!this._peerSupports)return;jt("donthave %d",e);const t=new Uint8Array(4);new DataView(t.buffer).setUint32(0,e),this._wire.extended("lt_donthave",t)}_failRequests(e){const t=this._wire.requests;for(let n=0;n{e.removeEntry("chunks",{recursive:!0})}));const qt=()=>{};class Ft{constructor(e,t={}){if(this.chunkLength=Number(e),!this.chunkLength)throw new Error("First argument must be a chunk length");if("undefined"==typeof navigator||!navigator.storage?.getDirectory)throw new Error("FSA API is not supported");if(this.closed=!1,this.name=t.name||crypto.randomUUID(),this.chunks=[],this.rootDirPromise=t.rootDir||navigator.storage.getDirectory(),this.storageDirPromise=(async()=>(await this.rootDirPromise).getDirectoryHandle(this.name,{create:!0}))(),this.chunksDirPromise=this.storageDirPromise,t.files&&t.rootDir){if(this.chunkMap=[],this.directoryMap={},this.chunksDirPromise=this._getChunksDirHandle(),this.files=t.files.map(((e,t,n)=>{if(null==e.path)throw new Error("File is missing `path` property");if(null==e.length)throw new Error("File is missing `length` property");if(null==e.offset)if(0===t)e.offset=0;else{const r=n[t-1];e.offset=r.offset+r.length}null==e.handle&&(e.handle=this._createFileHandle({path:e.path})),e.blob=this._createBlobReference(e.handle);const r=e.offset,i=e.offset+e.length,s=Math.floor(r/this.chunkLength),o=Math.floor((i-1)/this.chunkLength);for(let t=s;t<=o;++t){const n=t*this.chunkLength,s=rn+this.chunkLength?this.chunkLength:i-n,a=r>n?0:n-r;this.chunkMap[t]||(this.chunkMap[t]=[]),this.chunkMap[t].push({from:s,to:o,offset:a,file:e})}return e})),window.addEventListener("pagehide",(()=>this.cleanup())),this.length=this.files.reduce(((e,t)=>e+t.length),0),null!=t.length&&t.length!==this.length)throw new Error("total `files` length is not equal to explicit `length` option")}else this.length=Number(t.length)||1/0;this.length!==1/0&&(this.lastChunkLength=this.length%this.chunkLength||this.chunkLength,this.lastChunkIndex=Math.ceil(this.length/this.chunkLength)-1)}async _getChunkHandle(e){let t=this.chunks[e];if(!t){const n=await this.chunksDirPromise;this.chunks[e]=t=await n.getFileHandle(e,{create:!0})}return t}async _createFileHandle(e){const t=e.path.slice(e.path.lastIndexOf("/")+1);return(await this._getDirectoryHandle(e)).getFileHandle(t,{create:!0})}async _createBlobReference(e){return(await e).getFile()}async _getDirectoryHandle(e){const t=e.path.lastIndexOf("/");if(-1===t||0===t)return this.storageDirPromise;const n=e.path=e.path.slice(0,t);return this.directoryMap[n]||(this.directoryMap[n]=(async()=>(await this._getDirectoryHandle(e)).getDirectoryHandle(n.slice(n.lastIndexOf("/")+1),{create:!0}))()),this.directoryMap[n]}async _getChunksDirHandle(){const e=await navigator.storage.getDirectory();return(await e.getDirectoryHandle("chunks",{create:!0})).getDirectoryHandle(this.name,{create:!0})}async put(e,t,n=qt){try{return await this._put(e,t),n(null),null}catch(e){return queueMicrotask((()=>n(e))),e}}async _put(e,t){if(this.closed)throw new Error("Storage is closed");const n=e===this.lastChunkIndex;if(n&&t.length!==this.lastChunkLength)throw new Error(`Last chunk length must be ${this.lastChunkLength}`);if(!n&&t.length!==this.chunkLength)throw new Error(`Chunk length must be ${this.chunkLength}`);const r=(async()=>{const n=await this._getChunkHandle(e),r=await n.createWritable({keepExistingData:!1});await r.write(t),await r.close()})();if(!this.files)return r;const i=this.chunkMap[e];if(!i)throw new Error("No files matching the request range");const s=i.map((async({file:e,offset:n,from:r,to:i})=>{e.stream||(e.stream=await(await e.handle).createWritable({keepExistingData:!0})),await e.stream.write({type:"write",position:n,data:t.slice(r,i)})}));s.push(r),await Promise.all(s)}async get(e,t,n=qt){null==t&&(t={});try{const r=await this._get(e,t);return n(null,r),r}catch(e){return n(e),e}}async _get(e,t){if("function"==typeof t)return this.get(e,void 0,t);if(this.closed)throw new Error("Storage is closed");const n=e===this.lastChunkIndex?this.lastChunkLength:this.chunkLength,r=t.offset||0,i=t.length?r+t.length:n,s=t.length||n-r;if(r<0||r<0||i>n)throw new Error("Invalid offset and/or length");if(r===i)return new Uint8Array(0);if(!this.files||this.chunks[e]){const t=await this._getChunkHandle(e);let i=await t.getFile();0===r&&s===n||(i=i.slice(r,s+r));const o=await i.arrayBuffer();if(0===o.byteLength)throw new Error(`Index ${e} does not exist`);return new Uint8Array(o)}let o=this.chunkMap[e];if(!o)throw new Error("No files matching the request range");if(t&&(o=o.filter((({from:e,to:t})=>t>r&&e{t&&(n>i&&(n=i),equeueMicrotask((()=>e(new Error(t)))))(e,"Storage is closed");this.closed=!0,this.chunkMap=null,this.directoryMap=null,this.files&&await this.cleanup(),queueMicrotask((()=>e(null)))}async cleanup(){const e=[];for(const t of this.files)t.stream&&(e.push(t.stream.close()),t.stream=null);const t=(async()=>{const e=await this.chunksDirPromise;this.chunks=[];for await(const t of e.keys())await e.removeEntry(t,{recursive:!0});this.chunksDirPromise=await this._getChunksDirHandle()})();await Promise.all(e);for(const e of this.files)e.blob=this._createBlobReference(e.handle);await t}async destroy(e=qt){this.close((async t=>{if(t)e(t);else{try{const e=await this.rootDirPromise;await e.removeEntry(this.name,{recursive:!0})}catch(t){return void e(t)}e(null)}}))}}var zt=n(4137);const $t=!!("undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof globalThis&&globalThis).chrome?1/0:2130706432,Wt="undefined"!=typeof navigator&&navigator.storage?.getDirectory&&FileSystemFileHandle?.prototype?.createWritable,Vt=()=>{};class Gt{constructor(e,t={}){if(this.chunkLength=Number(e),!this.chunkLength)throw new Error("First argument must be a chunk length");this.length=Number(t.length)||1/0,this.limit=t.limit||$t,this.fallbackStore=null,this.dataStore=null,this.chunkCount=0,this.stores=[],this._init(t),this.dataStore&&(t.max>0&&(this.dataStore=new Pe(this.dataStore,{max:t.max})),this.stores.push(this.dataStore)),this.stores.push(this.fallbackStore)}_init(e){if(e.onlyMem||this.limit=this.length)return void(this.fallbackStore=new t(this.chunkLength,e));this.chunkCount=Math.floor(Math.min(this.length,this.limit)/this.chunkLength);const n=this.chunkCount*this.chunkLength,r=this.length-n;this.dataStore=new t(this.chunkLength,{...e,length:n}),this.fallbackStore=new Ut(this.chunkLength,{...e,length:r})}get(e,t,n){e>=this.chunkCount?this.fallbackStore.get(e-this.chunkCount,t,n):this.dataStore.get(e,t,n)}put(e,t,n){e>=this.chunkCount?this.fallbackStore.put(e-this.chunkCount,t,n):this.dataStore.put(e,t,n)}close(e=Vt){Promise.all(this.stores.map((e=>new Promise((t=>e.close(t)))))).then((t=>{const n=t.find((e=>e));e(n)}))}destroy(e=Vt){Promise.all(this.stores.map((e=>new Promise((t=>e.destroy(t)))))).then((t=>{const n=t.find((e=>e));e(n)}))}}var Kt=n(9967),Zt=n(8687),Yt=n(5960);const Jt=C("ut_metadata"),Qt=16384,Xt=e=>{class n extends t.EventEmitter{constructor(t){super(),this._wire=t,this._fetching=!1,this._metadataComplete=!1,this._metadataSize=null,this._remainingRejects=null,this._bitfield=new Ie.Z(0,{grow:1e3}),ArrayBuffer.isView(e)&&this.setMetadata(e)}onHandshake(e,t,n){this._infoHash=e}onExtendedHandshake(e){return e.m&&e.m.ut_metadata?e.metadata_size?"number"!=typeof e.metadata_size||1e7this._metadataSize&&(n=this._metadataSize);const r=this.metadata.slice(t,n);this._data(e,r,this._metadataSize)}_onData(e,t,n){t.length>Qt||!this._fetching||(this.metadata.set(t,e*Qt),this._bitfield.set(e),this._checkDone())}_onReject(e){this._remainingRejects>0&&this._fetching?(this._request(e),this._remainingRejects-=1):this.emit("warning",new Error('Peer sent "reject" too much'))}_requestPieces(){if(this._fetching){this.metadata=new Uint8Array(this._metadataSize);for(let e=0;e0?this._requestPieces():this.emit("warning",new Error("Peer sent invalid metadata"))}}return n.prototype.name="ut_metadata",n};var en=n(6512),tn=n(8764).Buffer;const nn=e=>("string"==typeof e&&(e=[e]),tn.concat(e.map((e=>{const t=Ce(e);if(2!==t.length)throw new Error("invalid address format, expecting: 10.10.10.5:128");const n=en.parse(t[0]),r=tn.from(n.toByteArray()),i=t[1],s=tn.allocUnsafe(2);return s.writeUInt16BE(i,0),tn.concat([r,s])}))));var rn=n(8764).Buffer;const sn={prefersEncryption:1,isSender:2,supportsUtp:4,supportsUtHolepunch:8,isReachable:16},on=()=>{class e extends t.EventEmitter{constructor(e){super(),this._wire=e,this._intervalId=null,this._lastMessageTimestamp=0,this.reset()}start(){clearInterval(this._intervalId),this._intervalId=setInterval((()=>this._sendMessage()),65e3),this._intervalId.unref&&this._intervalId.unref()}stop(){clearInterval(this._intervalId),this._intervalId=null}reset(){this._remoteAddedPeers={},this._remoteDroppedPeers={},this._localAddedPeers={},this._localDroppedPeers={},this.stop()}addPeer(e,t={}){this._addPeer(e,this._encodeFlags(t),4)}addPeer6(e,t={}){this._addPeer(e,this._encodeFlags(t),6)}_addPeer(e,t,n){e.includes(":")&&(e in this._remoteAddedPeers||(e in this._localDroppedPeers&&delete this._localDroppedPeers[e],this._localAddedPeers[e]={ip:n,flags:t}))}dropPeer(e){this._dropPeer(e,4)}dropPeer6(e){this._dropPeer(e,6)}_dropPeer(e,t){e.includes(":")&&(e in this._remoteDroppedPeers||(e in this._localAddedPeers&&delete this._localAddedPeers[e],this._localDroppedPeers[e]={ip:t}))}onExtendedHandshake(e){if(!e.m||!e.m.ut_pex)return this.emit("warning",new Error("Peer does not support ut_pex"))}onMessage(e){const t=Date.now();if(t-this._lastMessageTimestamp<6e4)return this.reset(),this._wire.destroy(),this.emit("warning",new Error("Peer disconnected for sending PEX messages too frequently"));let n;this._lastMessageTimestamp=t;try{n=s.Z.decode(e),n.added&&et.multi(n.added).forEach(((e,t)=>{if(delete this._remoteDroppedPeers[e],!(e in this._remoteAddedPeers)){const r=n["added.f"][t];this._remoteAddedPeers[e]={ip:4,flags:r},this.emit("peer",e,this._decodeFlags(r))}})),n.added6&&et.multi6(n.added6).forEach(((e,t)=>{if(delete this._remoteDroppedPeers[e],!(e in this._remoteAddedPeers)){const r=n["added6.f"][t];this._remoteAddedPeers[e]={ip:6,flags:r},this.emit("peer",e,this._decodeFlags(r))}})),n.dropped&&et.multi(n.dropped).forEach((e=>{delete this._remoteAddedPeers[e],e in this._remoteDroppedPeers||(this._remoteDroppedPeers[e]={ip:4},this.emit("dropped",e))})),n.dropped6&&et.multi6(n.dropped6).forEach((e=>{delete this._remoteAddedPeers[e],e in this._remoteDroppedPeers||(this._remoteDroppedPeers[e]={ip:6},this.emit("dropped",e))}))}catch(e){}}_decodeFlags(e){return{prefersEncryption:!!(e&sn.prefersEncryption),isSender:!!(e&sn.isSender),supportsUtp:!!(e&sn.supportsUtp),supportsUtHolepunch:!!(e&sn.supportsUtHolepunch),isReachable:!!(e&sn.isReachable)}}_encodeFlags(e){return Object.keys(e).reduce(((t,n)=>!0===e[n]?t|sn[n]:t),0)}_sendMessage(){const e=Object.keys(this._localAddedPeers).slice(0,50),t=Object.keys(this._localDroppedPeers).slice(0,50),n=(e,t)=>4===e[t].ip,r=(e,t)=>6===e[t].ip,i=(e,t)=>e[t].flags,s=nn(e.filter((e=>n(this._localAddedPeers,e)))),o=nn(e.filter((e=>r(this._localAddedPeers,e)))),a=nn(t.filter((e=>n(this._localDroppedPeers,e)))),h=nn(t.filter((e=>r(this._localDroppedPeers,e)))),c=rn.from(e.filter((e=>n(this._localAddedPeers,e))).map((e=>i(this._localAddedPeers,e)))),l=rn.from(e.filter((e=>r(this._localAddedPeers,e))).map((e=>i(this._localAddedPeers,e))));e.forEach((e=>delete this._localAddedPeers[e])),t.forEach((e=>delete this._localDroppedPeers[e])),this._wire.extended("ut_pex",{added:s,"added.f":c,dropped:a,added6:o,"added6.f":l,dropped6:h})}}return e.prototype.name="ut_pex",e};var an=n(2109);const hn=C("webtorrent:file-iterator");class cn extends t{constructor(e,{start:t,end:n}){super(),this._torrent=e._torrent,this._pieceLength=e._torrent.pieceLength,this._startPiece=(t+e.offset)/this._pieceLength|0,this._endPiece=(n+e.offset)/this._pieceLength|0,this._piece=this._startPiece,this._offset=t+e.offset-this._startPiece*this._pieceLength,this._missing=n-t+1,this._criticalLength=Math.min(1048576/this._pieceLength|0,2),this._torrent.select(this._startPiece,this._endPiece,!0,(()=>{this.emit("_notify")})),this.destroyed=!1}[Symbol.asyncIterator](){return this}next(){return new Promise(((e,t)=>{if(0===this._missing||this.destroyed)return e({done:!0}),this.destroy();const n=(r,i)=>{if(!this._torrent.bitfield.get(r)){this._torrent.critical(r,r+this._criticalLength);const e=()=>{this._torrent.bitfield.get(r)&&(this.removeListener("_notify",e),n(r,i))};return this.on("_notify",e)}if(this._torrent.destroyed)return t(new Error("Torrent removed"));this._torrent.store.get(r,i,((n,i)=>this.destroyed?e({done:!0}):(hn("read %s and yielding (length %s) (err %s)",r,i?.length,n?.message),n?t(n):void e({value:i,done:!1}))))},r=Math.min(this._missing,this._pieceLength-this._offset);n(this._piece++,{length:r,offset:this._offset}),this._missing-=r,this._offset=0}))}async return(){this.destroy();const{value:e}=await this.next();return{done:!0,value:e}}async throw(e){throw e}destroy(e=(()=>{}),t){this.destroyed||(this.destroyed=!0,this._torrent.destroyed||this._torrent.deselect(this._startPiece,this._endPiece,!0),this.emit("return"),e(t))}}class ln extends t{constructor(e,t){super(),this._torrent=e,this._destroyed=!1,this._fileStreams=new Set,this._iterators=new Set,this.name=t.name,this.path=t.path,this.length=t.length,this.size=t.length,this.type=an.getType(this.name)||"application/octet-stream",this.offset=t.offset,this.done=!1;const n=t.offset,r=n+t.length-1;this._startPiece=n/this._torrent.pieceLength|0,this._endPiece=r/this._torrent.pieceLength|0,0===this.length&&(this.done=!0,this.emit("done")),this._client=e.client}get downloaded(){if(this._destroyed||!this._torrent.bitfield)return 0;const{pieces:e,bitfield:t,pieceLength:n,lastPieceLength:r}=this._torrent,{_startPiece:i,_endPiece:s}=this,o=i=>{const s=i===e.length-1?r:n;return t.get(i)?s:s-e[i].missing};let a=0;for(let t=i;t<=s;t+=1){const h=o(t);if(a+=h,t===i){const e=this.offset%n;a-=Math.min(e,h)}if(t===s){const t=(s===e.length-1?r:n)-(this.offset+this.length)%n;a-=Math.min(t,h)}}return a}get progress(){return this.length?this.downloaded/this.length:0}select(e){0!==this.length&&this._torrent.select(this._startPiece,this._endPiece,e)}deselect(){0!==this.length&&this._torrent.deselect(this._startPiece,this._endPiece,!1)}[Symbol.asyncIterator](e={}){if(0===this.length)return async function*(){}();const{start:t=0}=e??{},n=e?.end&&e.end{this._iterators.delete(r)})),r}createReadStream(e){const t=this[Symbol.asyncIterator](e),n=ce.Readable.from(t);return this._fileStreams.add(n),n.once("close",(()=>{this._fileStreams.delete(n)})),n}async arrayBuffer(e){const t=new Uint8Array(this.length);let n=0;for await(const r of this[Symbol.asyncIterator](e))t.set(r,n),n+=r.length;return t.buffer}async blob(e){return new Blob([await this.arrayBuffer(e)],{type:this.type})}stream(e){let t;return new ReadableStream({start(){t=this[Symbol.asyncIterator](e)},async pull({close:e,enqueue:n}){const{value:r,done:i}=await t.next();i?e():n(r)},cancel(){t.return()}})}get streamURL(){if(!this._client._server)throw new Error("No server created");return`${this._client._server.pathname}/${this._torrent.infoHash}/${encodeURI(this.path)}`}streamTo(e){return e.src=this.streamURL,e}includes(e){return this._startPiece<=e&&this._endPiece>=e}_destroy(){this._destroyed=!0,this._torrent=null;for(const e of this._fileStreams)e.destroy();this._fileStreams.clear();for(const e of this._iterators)e.destroy();this._iterators.clear()}}class un{constructor(e){this._torrent=e,this._numPieces=e.pieces.length,this._pieces=new Array(this._numPieces),this._onWire=e=>{this.recalculate(),this._initWire(e)},this._onWireHave=e=>{this._pieces[e]+=1},this._onWireBitfield=()=>{this.recalculate()},this._torrent.wires.forEach((e=>{this._initWire(e)})),this._torrent.on("wire",this._onWire),this.recalculate()}getRarestPiece(e){let t=[],n=1/0;for(let r=0;r{this._cleanupWireEvents(e)})),this._torrent=null,this._pieces=null,this._onWire=null,this._onWireHave=null,this._onWireBitfield=null}_initWire(e){e._onClose=()=>{this._cleanupWireEvents(e);for(let t=0;t{const r=await(0,f.vp)(e,"hex");if(this.destroyed)return;this.handshake(t,r);const i=this._torrent.pieces.length,s=new Ie.Z(i);for(let e=0;e<=i;e++)s.set(e,!0);this.bitfield(s)})),this.once("interested",(()=>{pn("interested"),this.unchoke()})),this.on("uninterested",(()=>{pn("uninterested")})),this.on("choke",(()=>{pn("choke")})),this.on("unchoke",(()=>{pn("unchoke")})),this.on("bitfield",(()=>{pn("bitfield")})),this.lt_donthave.on("donthave",(()=>{pn("donthave")})),this.on("request",((e,t,n,r)=>{pn("request pieceIndex=%d offset=%d length=%d",e,t,n),this.httpRequest(e,t,n,((t,n)=>{if(t){this.lt_donthave.donthave(e);const t=setTimeout((()=>{this.destroyed||this.have(e)}),1e4);t.unref&&t.unref()}r(t,n)}))}))}async httpRequest(e,t,n,r){r=g(r);const i=e*this._torrent.pieceLength+t,s=i+n-1,o=this._torrent.files;let a,h;if(o.length<=1)a=[{url:this.url,start:i,end:s}];else{const e=o.filter((e=>e.offset<=s&&e.offset+e.length>i));if(e.length<1)return r(new Error("Could not find file corresponding to web seed range request"));a=e.map((e=>{const t=e.offset+e.length-1;return{url:this.url+("/"===this.url[this.url.length-1]?"":"/")+e.path.replace(this._torrent.path,""),fileOffsetInRange:Math.max(e.offset-i,0),start:Math.max(i-e.offset,0),end:Math.min(t,s-e.offset)}}))}try{h=await Promise.all(a.map((async({start:r,end:i,url:s})=>{pn("Requesting url=%s pieceIndex=%d offset=%d length=%d start=%d end=%d",s,e,t,n,r,i);const o=await J(s,{cache:"no-store",method:"GET",headers:{"Cache-Control":"no-store","user-agent":`WebTorrent/${gn} (https://webtorrent.io)`,range:`bytes=${r}-${i}`},signal:AbortSignal.timeout(6e4)});if(!o.ok)throw new Error(`Unexpected HTTP status code ${o.status}`);const a=new Uint8Array(await o.arrayBuffer());return pn("Got data of length %d",a.length),a})))}catch(e){return r(e)}r(null,(0,f.zo)(h))}destroy(){super.destroy(),this._torrent=null}}var mn=n(8768);const yn=C("webtorrent:torrent"),bn=5e3,wn=3*Zt.BLOCK_LENGTH,vn=mn.browser?Le().length:2,kn=[1e3,5e3,15e3],En=`WebTorrent/${fn} (https://webtorrent.io)`;let xn;try{xn=i.join(xe.statSync("/tmp")&&"/tmp","webtorrent")}catch(e){xn=i.join("function"==typeof Se.tmpdir?Se.tmpdir():"/","webtorrent")}const Sn="undefined"!=typeof window&&"function"==typeof window.requestIdleCallback&&window.requestIdleCallback;class Tn extends t{constructor(e,t,n){super(),this._debugId="unknown infohash",this.client=t,this.announce=n.announce,this.urlList=n.urlList,this.path=n.path||xn,this.addUID=n.addUID||!1,this.rootDir=n.rootDir||null,this.skipVerify=!!n.skipVerify,this._store=n.store||Ut,this._preloadedStore=n.preloadedStore||null,this._storeCacheSlots=void 0!==n.storeCacheSlots?n.storeCacheSlots:20,this._destroyStoreOnDestroy=n.destroyStoreOnDestroy||!1,this.store=null,this.storeOpts=n.storeOpts,this._getAnnounceOpts=n.getAnnounceOpts,"boolean"==typeof n.private&&(this.private=n.private),this.strategy=n.strategy||"sequential",this.maxWebConns=n.maxWebConns||4,this._rechokeNumSlots=!1===n.uploads||0===n.uploads?0:+n.uploads||10,this._rechokeOptimisticWire=null,this._rechokeOptimisticTime=0,this._rechokeIntervalId=null,this._noPeersIntervalId=null,this._noPeersIntervalTime=n.noPeersIntervalTime?1e3*n.noPeersIntervalTime:3e4,this.ready=!1,this.destroyed=!1,this.paused=n.paused||!1,this.done=!1,this.metadata=null,this.files=[],this.pieces=[],this._amInterested=!1,this._selections=[],this._critical=[],this.wires=[],this._queue=[],this._peers={},this._peersLength=0,this.received=0,this.uploaded=0,this._downloadSpeed=_e(),this._uploadSpeed=_e(),this._servers=[],this._xsRequests=[],this._fileModtimes=n.fileModtimes,null!==e&&this._onTorrentId(e),this._debug("new torrent")}get timeRemaining(){return this.done?0:0===this.downloadSpeed?1/0:(this.length-this.downloaded)/this.downloadSpeed*1e3}get downloaded(){if(!this.bitfield)return 0;let e=0;for(let t=0,n=this.pieces.length;t{this.destroyed||this._onParsedTorrent(t)}))):re(e,((e,t)=>{if(!this.destroyed)return e?this._destroy(e):void this._onParsedTorrent(t)}))}_onParsedTorrent(e){if(!this.destroyed){if(this._processParsedTorrent(e),!this.infoHash)return this._destroy(new Error("Malformed torrent data: No info hash"));this._rechokeIntervalId=setInterval((()=>{this._rechoke()}),1e4),this._rechokeIntervalId.unref&&this._rechokeIntervalId.unref(),this.emit("_infoHash",this.infoHash),this.destroyed||(this.emit("infoHash",this.infoHash),this.destroyed||(this.client.listening?this._onListening():this.client.once("listening",(()=>{this._onListening()}))))}}_processParsedTorrent(e){this._debugId=(0,f.oc)(e.infoHash).substring(0,7),void 0!==this.private&&(e.private=this.private),this.announce&&(e.announce=e.announce.concat(this.announce)),this.client.tracker&&globalThis.WEBTORRENT_ANNOUNCE&&!e.private&&(e.announce=e.announce.concat(globalThis.WEBTORRENT_ANNOUNCE)),this.urlList&&(e.urlList=e.urlList.concat(this.urlList)),e.announce=Array.from(new Set(e.announce)),e.urlList=Array.from(new Set(e.urlList)),Object.assign(this,e),this.magnetURI=ae(e),this.torrentFile=function(e){const t={info:e.info};return t["announce-list"]=(e.announce||[]).map((e=>(t.announce||(t.announce=e),[e=(0,f.gR)(e)]))),t["url-list"]=e.urlList||[],void 0!==e.private&&(t.private=Number(e.private)),e.created&&(t["creation date"]=e.created.getTime()/1e3|0),e.createdBy&&(t["created by"]=e.createdBy),e.comment&&(t.comment=e.comment),s.Z.encode(t)}(e)}_onListening(){this.destroyed||(this.info?this._onMetadata(this):(this.xs&&this._getMetadataFromServer(),this._startDiscovery()))}_startDiscovery(){if(this.discovery||this.destroyed)return;let e=this.client.tracker;e&&(e=Object.assign({},this.client.tracker,{getAnnounceOpts:()=>{if(this.destroyed)return;const e={uploaded:this.uploaded,downloaded:this.downloaded,left:Math.max(this.length-this.downloaded,0)};return this.client.tracker.getAnnounceOpts&&Object.assign(e,this.client.tracker.getAnnounceOpts()),this._getAnnounceOpts&&Object.assign(e,this._getAnnounceOpts()),e}})),this.peerAddresses&&this.peerAddresses.forEach((e=>this.addPeer(e,be.default.SOURCE_MANUAL))),this.discovery=new Dt({infoHash:this.infoHash,announce:this.announce,peerId:this.client.peerId,dht:!this.private&&this.client.dht,tracker:e,port:this.client.torrentPort,userAgent:En,lsd:this.client.lsd}),this.discovery.on("error",(e=>{this._destroy(e)})),this.discovery.on("peer",((e,t)=>{this._debug("peer %s discovered via %s",e,t),"string"==typeof e&&this.done||this.addPeer(e,t)})),this.discovery.on("trackerAnnounce",(()=>{this.emit("trackerAnnounce")})),this.discovery.on("dhtAnnounce",(()=>{this.emit("dhtAnnounce")})),this.discovery.on("warning",(e=>{this.emit("warning",e)})),this._noPeersIntervalId=setInterval((()=>{if(this.destroyed)return;const e={[be.default.SOURCE_TRACKER]:{enabled:!!this.client.tracker,numPeers:0},[be.default.SOURCE_DHT]:{enabled:!!this.client.dht,numPeers:0},[be.default.SOURCE_LSD]:{enabled:!!this.client.lsd,numPeers:0},[be.default.SOURCE_UT_PEX]:{enabled:this.client.utPex&&!0,numPeers:0}};for(const t of Object.values(this._peers)){const n=e[t.source];void 0!==n&&n.numPeers++}for(const t of Object.keys(e)){const n=e[t];n.enabled&&0===n.numPeers&&this.emit("noPeers",t)}}),this._noPeersIntervalTime),this._noPeersIntervalId.unref&&this._noPeersIntervalId.unref()}_getMetadataFromServer(){const e=this,t=Array.isArray(this.xs)?this.xs:[this.xs];e._xsRequestsController=new AbortController;const n=e._xsRequestsController.signal,r=t.map((t=>r=>{!async function(t,r){if(0!==t.indexOf("http://")&&0!==t.indexOf("https://"))return e.emit("warning",new Error(`skipping non-http xs param: ${t}`)),r(null);const i={method:"GET",headers:{"user-agent":En},signal:n};let s,o,a;try{s=await J(t,i)}catch(n){return e.emit("warning",new Error(`http error from xs param: ${t}`)),r(null)}if(e.destroyed)return r(null);if(e.metadata)return r(null);if(200!==s.status)return e.emit("warning",new Error(`non-200 status code ${s.status} from xs param: ${t}`)),r(null);try{o=new Uint8Array(await s.arrayBuffer())}catch(t){return e.emit("warning",t),r(null)}try{a=await oe(o)}catch(e){}if(!a)return e.emit("warning",new Error(`got invalid torrent file from xs param: ${t}`)),r(null);if(a.infoHash!==e.infoHash)return e.emit("warning",new Error(`got torrent file with incorrect info hash from xs param: ${t}`)),r(null);e._onMetadata(a),r(null)}(t,r)}));u(r)}async _onMetadata(e){if(this.metadata||this.destroyed)return;let t;if(this._debug("got metadata"),this._xsRequestsController?.abort(),this._xsRequestsController=null,e&&e.infoHash)t=e;else try{t=await oe(e)}catch(e){return this._destroy(e)}this._processParsedTorrent(t),this.metadata=this.torrentFile,this.client.enableWebSeeds&&this.urlList.forEach((e=>{this.addWebSeed(e)})),this._rarityMap=new un(this),this.files=this.files.map((e=>new ln(this,e)));let n=this._preloadedStore;if(n||(n=new this._store(this.pieceLength,{...this.storeOpts,torrent:this,path:this.path,files:this.files,length:this.length,name:this.name+" - "+this.infoHash.slice(0,8),addUID:this.addUID,rootDir:this.rootDir,max:this._storeCacheSlots})),this._storeCacheSlots>0&&!(n instanceof Ut||n instanceof Gt)&&(n=new Pe(n,{max:this._storeCacheSlots})),this.store=new Mt(n),this.so?this.files.forEach(((e,t)=>{this.so.includes(t)?this.files[t].select():this.files[t].deselect()})):0!==this.pieces.length&&this.select(0,this.pieces.length-1,!1),this._hashes=this.pieces,this.pieces=this.pieces.map(((e,t)=>{const n=t===this.pieces.length-1?this.lastPieceLength:this.pieceLength;return new Zt(n)})),this._reservations=this.pieces.map((()=>[])),this.bitfield=new Ie.Z(this.pieces.length),this.emit("metadata"),!this.destroyed)if(this.skipVerify)this._markAllVerified(),this._onStore();else{const e=e=>{if(e)return this._destroy(e);this._debug("done verifying"),this._onStore()};this._debug("verifying existing torrent data"),this._fileModtimes&&this._store===Ut?this.getFileModtimes(((t,n)=>{if(t)return this._destroy(t);this.files.map(((e,t)=>n[t]===this._fileModtimes[t])).every((e=>e))?(this._markAllVerified(),this._onStore()):this._verifyPieces(e)})):this._verifyPieces(e)}}getFileModtimes(e){const t=[];Kt(this.files.map(((e,n)=>r=>{const s=this.addUID?i.join(this.name+" - "+this.infoHash.slice(0,8)):i.join(this.path,e.path);xe.stat(s,((e,i)=>{if(e&&"ENOENT"!==e.code)return r(e);t[n]=i&&i.mtime.getTime(),r(null)}))})),vn,(n=>{this._debug("done getting file modtimes"),e(n,t)}))}_verifyPieces(e){Kt(this.pieces.map(((e,t)=>e=>{if(this.destroyed)return e(new Error("torrent is destroyed"));const n={};t===this.pieces.length-1&&(n.length=this.lastPieceLength),this.store.get(t,n,(async(n,r)=>{if(this.destroyed)return e(new Error("torrent is destroyed"));if(n)return d((()=>e(null)));const i=await(0,f.vp)(r,"hex");if(this.destroyed)return e(new Error("torrent is destroyed"));i===this._hashes[t]?(this._debug("piece verified %s",t),this._markVerified(t)):(this._markUnverified(t),this._debug("piece invalid %s",t)),e(null)}))})),vn,e)}rescanFiles(e){if(this.destroyed)throw new Error("torrent is destroyed");e||(e=Cn),this._verifyPieces((t=>{if(t)return this._destroy(t),e(t);this._checkDone(),e(null)}))}_markAllVerified(){for(let e=0;e{t.done&&t.includes(e)&&(t.done=!1)}))}_hasAllPieces(){for(let e=0;ee))return!0;return!1}_onStore(){this.destroyed||(this._debug("on store"),this._startDiscovery(),this.ready=!0,this.emit("ready"),this._checkDone(),this._updateSelections(),this.wires.forEach((e=>{e.ut_metadata&&e.ut_metadata.setMetadata(this.metadata),this._onWireWithMetadata(e)})))}destroy(e,t){if("function"==typeof e)return this.destroy(null,e);this._destroy(null,e,t)}_destroy(e,t,n){if("function"==typeof t)return this._destroy(e,null,t);if(this.destroyed)return;this.destroyed=!0,this._debug("destroy"),this.client._remove(this),clearInterval(this._rechokeIntervalId),clearInterval(this._noPeersIntervalId),this._xsRequestsController?.abort(),this._rarityMap&&this._rarityMap.destroy();for(const e in this._peers)this.removePeer(e);this.files.forEach((e=>{e instanceof ln&&e._destroy()}));const r=this._servers.map((e=>t=>{e.destroy(t)}));if(this.discovery&&r.push((e=>{this.discovery.destroy(e)})),this.store){let e=this._destroyStoreOnDestroy;t&&void 0!==t.destroyStore&&(e=t.destroyStore),r.push((t=>{e?this.store.destroy(t):this.store.close(t)}))}u(r,n),e&&(0===this.listenerCount("error")?this.client.emit("error",e):this.emit("error",e)),this.emit("close"),this.client=null,this.files=[],this.discovery=null,this.store=null,this._rarityMap=null,this._peers=null,this._servers=null,this._xsRequests=null}addPeer(e,t){if(this.destroyed)throw new Error("torrent is destroyed");if(!this.infoHash)throw new Error("addPeer() must not be called before the `infoHash` event");let n;if(this.client.blocked){if("string"==typeof e){let t;try{t=Ce(e)}catch(t){return this._debug("ignoring peer: invalid %s",e),this.emit("invalidPeer",e),!1}n=t[0]}else"string"==typeof e.remoteAddress&&(n=e.remoteAddress);if(n&&this.client.blocked.contains(n))return this._debug("ignoring peer: blocked %s",e),"string"!=typeof e&&e.destroy(),this.emit("blockedPeer",e),!1}const r=this.client.utp&&this._isIPv4(n)?"utp":"tcp",i=!!this._addPeer(e,r,t);return i?this.emit("peer",e):this.emit("invalidPeer",e),i}_addPeer(e,t,n){if(this.destroyed)return"string"!=typeof e&&e.destroy(),null;if("string"==typeof e&&!this._validAddr(e))return this._debug("ignoring peer: invalid %s",e),null;const r=e&&e.id||e;if(this._peers[r])return this._debug("ignoring peer: duplicate (%s)",r),"string"!=typeof e&&e.destroy(),null;if(this.paused)return this._debug("ignoring peer: torrent is paused"),"string"!=typeof e&&e.destroy(),null;let i;return this._debug("add peer %s",r),i="string"==typeof e?"utp"===t?be.default.createUTPOutgoingPeer(e,this,this.client.throttleGroups):be.default.createTCPOutgoingPeer(e,this,this.client.throttleGroups):be.default.createWebRTCPeer(e,this,this.client.throttleGroups),this._registerPeer(i),"string"==typeof e&&(this._queue.push(i),this._drain()),i}addWebSeed(e){if(this.destroyed)throw new Error("torrent is destroyed");let t,n;if("string"==typeof e){if(t=e,!/^https?:\/\/.+/.test(t))return this.emit("warning",new Error(`ignoring invalid web seed: ${t}`)),void this.emit("invalidPeer",t);if(this._peers[t])return this.emit("warning",new Error(`ignoring duplicate web seed: ${t}`)),void this.emit("invalidPeer",t);n=new _n(t,this)}else{if(!e||"string"!=typeof e.connId)return void this.emit("warning",new Error("addWebSeed must be passed a string or connection object with id property"));if(n=e,t=n.connId,this._peers[t])return this.emit("warning",new Error(`ignoring duplicate web seed: ${t}`)),void this.emit("invalidPeer",t)}this._debug("add web seed %s",t);const r=be.default.createWebSeedPeer(n,t,this,this.client.throttleGroups);this._registerPeer(r),this.emit("peer",t)}_addIncomingPeer(e){return this.destroyed?e.destroy(new Error("torrent is destroyed")):this.paused?e.destroy(new Error("torrent is paused")):(this._debug("add incoming peer %s",e.id),void this._registerPeer(e))}_registerPeer(e){e.on("download",(e=>{this.destroyed||(this.received+=e,this._downloadSpeed(e),this.client._downloadSpeed(e),this.emit("download",e),this.destroyed||this.client.emit("download",e))})),e.on("upload",(e=>{this.destroyed||(this.uploaded+=e,this._uploadSpeed(e),this.client._uploadSpeed(e),this.emit("upload",e),this.destroyed||this.client.emit("upload",e))})),this._peers[e.id]=e,this._peersLength+=1}removePeer(e){const t=e?.id||e;e&&!e.id&&(e=this._peers?.[t]),e&&(e.destroy(),this.destroyed||(this._debug("removePeer %s",t),delete this._peers[t],this._peersLength-=1,this._drain()))}select(e,t,n,r){if(this.destroyed)throw new Error("torrent is destroyed");if(e<0||tt.priority-e.priority)),this._updateSelections()}deselect(e,t,n){if(this.destroyed)throw new Error("torrent is destroyed");n=Number(n)||0,this._debug("deselect %s-%s (priority %s)",e,t,n);for(let r=0;r{if(!this.destroyed&&!this.client.dht.destroyed){if(!e.remoteAddress)return this._debug("ignoring PORT from peer with no address");if(0===n||n>65536)return this._debug("ignoring invalid PORT from peer");this._debug("port: %s (from %s)",n,t),this.client.dht.addNode({host:e.remoteAddress,port:n})}})),e.on("timeout",(()=>{this._debug("wire timeout (%s)",t),e.destroy()})),"webSeed"!==e.type&&e.setTimeout(3e4,!0),e.setKeepAlive(!0),e.use(Xt(this.metadata)),e.ut_metadata.on("warning",(e=>{this._debug("ut_metadata warning: %s",e.message)})),this.metadata||(e.ut_metadata.on("metadata",(e=>{this._debug("got metadata via ut_metadata"),this._onMetadata(e)})),e.ut_metadata.fetch()),this.client.utPex&&!this.private&&(e.use(on()),e.ut_pex.on("peer",(e=>{this.done||(this._debug("ut_pex: got peer: %s (from %s)",e,t),this.addPeer(e,be.default.SOURCE_UT_PEX))})),e.ut_pex.on("dropped",(e=>{const n=this._peers[e];n&&!n.connected&&(this._debug("ut_pex: dropped peer: %s (from %s)",e,t),this.removePeer(e))})),e.once("close",(()=>{e.ut_pex.reset()}))),e.use(Ht()),this.emit("wire",e,t),this.ready&&d((()=>{this._onWireWithMetadata(e)}))}_onWireWithMetadata(e){let t=null;const n=()=>{this.destroyed||e.destroyed||(this._numQueued>2*(this._numConns-this.numPeers)&&e.amInterested?e.destroy():(t=setTimeout(n,bn),t.unref&&t.unref()))};let r;const i=()=>{if(e.peerPieces.buffer.length===this.bitfield.buffer.length){for(r=0;r{i(),this._update(),this._updateWireInterest(e)})),e.on("have",(()=>{i(),this._update(),this._updateWireInterest(e)})),e.lt_donthave.on("donthave",(()=>{i(),this._update(),this._updateWireInterest(e)})),e.on("have-all",(()=>{e.isSeeder=!0,e.choke(),this._update(),this._updateWireInterest(e)})),e.on("have-none",(()=>{e.isSeeder=!1,this._update(),this._updateWireInterest(e)})),e.on("allowed-fast",(e=>{this._update()})),e.once("interested",(()=>{e.unchoke()})),e.once("close",(()=>{clearTimeout(t)})),e.on("choke",(()=>{clearTimeout(t),t=setTimeout(n,bn),t.unref&&t.unref()})),e.on("unchoke",(()=>{clearTimeout(t),this._update()})),e.on("request",((t,n,r,i)=>{if(r>131072)return e.destroy();this.pieces[t]||this.store.get(t,{offset:n,length:r},i)})),e.hasFast&&this._hasAllPieces()?e.haveAll():e.hasFast&&this._hasNoPieces()?e.haveNone():e.bitfield(this.bitfield),this._updateWireInterest(e),e.peerExtensions.dht&&this.client.dht&&this.client.dht.listening&&e.port(this.client.dht.address().port),"webSeed"!==e.type&&(t=setTimeout(n,bn),t.unref&&t.unref()),e.isSeeder=!1,i()}_updateSelections(){this.ready&&!this.destroyed&&(d((()=>{this._gcSelections()})),this._updateInterest(),this._update())}_gcSelections(){for(let e=0;ethis._updateWireInterest(e))),e!==this._amInterested&&(this._amInterested?this.emit("interested"):this.emit("uninterested"))}_updateWireInterest(e){let t=!1;for(let n=0;nthis._updateWireWrapper()),{timeout:250}):this._updateWireWrapper()}_updateWireWrapper(){if(this.destroyed)return;const e=Yt(this.wires);let t;for(;t=e();)this._updateWire(t)}_updateWire(e){if(e.destroyed)return!1;const t=this,n=An(e,.5);if(e.requests.length>=n)return;const r=An(e,1);if(e.peerChoking)e.hasFast&&e.peerAllowedFastSet.length>0&&!this._hasMorePieces(e.peerAllowedFastSet.length-1)&&function(){if(e.requests.length>=r)return!1;for(const n of e.peerAllowedFastSet){if(e.peerPieces.get(n)&&!t.bitfield.get(n))for(;t._request(e,n,!1)&&e.requests.length=r.from+r.offset;--s)if(e.peerPieces.get(s)&&t._request(e,s,!1))return}}();o(!1)||o(!0)}function i(t,n,r,i){return s=>s>=t&&s<=n&&!(s in r)&&e.peerPieces.get(s)&&(!i||i(s))}function s(e){let n=e;for(let r=e;r=r)return!0;const o=function(){const n=e.downloadSpeed()||1;if(n>wn)return()=>!0;const r=Math.max(1,e.requests.length)*Zt.BLOCK_LENGTH/n;let i=10,s=0;return e=>{if(!i||t.bitfield.get(e))return!0;let o=t.pieces[e].missing;for(;s0))return i--,!1}return!0}}();for(let a=0;a({wire:e,random:Math.random()}))).sort(((e,t)=>{const n=e.wire,r=t.wire;return n.downloadSpeed()!==r.downloadSpeed()?n.downloadSpeed()-r.downloadSpeed():n.uploadSpeed()!==r.uploadSpeed()?n.uploadSpeed()-r.uploadSpeed():n.amChoking!==r.amChoking?n.amChoking?-1:1:e.random-t.random})).map((e=>e.wire));this._rechokeOptimisticTime<=0?this._rechokeOptimisticWire=null:this._rechokeOptimisticTime-=1;let t=0;for(;e.length>0&&t0){const t=e.filter((e=>e.peerInterested));if(t.length>0){const e=t[(n=t.length,Math.random()*n|0)];e.unchoke(),this._rechokeOptimisticWire=e,this._rechokeOptimisticTime=2}}var n;e.filter((e=>e!==this._rechokeOptimisticWire)).forEach((e=>e.choke()))}_hotswap(e,t){const n=e.downloadSpeed();if(n=wn||(2*a>n||a>o||(i=t,o=a))}if(!i)return!1;for(s=0;s=o)return!1;const a=r.pieces[t];let h=s?a.reserveRemaining():a.reserve();if(-1===h&&n&&r._hotswap(e,t)&&(h=s?a.reserveRemaining():a.reserve()),-1===h)return!1;let c=r._reservations[t];c||(c=r._reservations[t]=[]);let l=c.indexOf(null);-1===l&&(l=c.length),c[l]=e;const u=a.chunkOffset(h),p=s?a.chunkLengthRemaining(h):a.chunkLength(h);function g(){d((()=>{r._update()}))}return e.request(t,u,p,(async function n(i,o){if(r.destroyed)return;if(!r.ready)return r.once("ready",(()=>{n(i,o)}));if(c[l]===e&&(c[l]=null),a!==r.pieces[t])return g();if(i)return r._debug("error getting piece %s (offset: %s length: %s) from %s: %s",t,u,p,`${e.remoteAddress}:${e.remotePort}`,i.message),s?a.cancelRemaining(h):a.cancel(h),void g();if(r._debug("got piece %s (offset: %s length: %s) from %s",t,u,p,`${e.remoteAddress}:${e.remotePort}`),!a.set(h,o,e))return g();const d=a.flush(),_=await(0,f.vp)(d,"hex");r.destroyed||(_===r._hashes[t]?(r._debug("piece verified %s",t),r.store.put(t,d,(e=>{e?r._destroy(e):(r.pieces[t]=null,r._markVerified(t),r.wires.forEach((e=>{e.have(t)})),r._checkDone()&&!r.destroyed&&r.discovery.complete(),g())}))):(r.pieces[t]=new Zt(a.length),r.emit("warning",new Error(`Piece ${t} failed verification`)),g()))})),!0}_checkDone(){if(this.destroyed)return;this.files.forEach((e=>{if(!e.done){for(let t=e._startPiece;t<=e._endPiece;++t)if(!this.bitfield.get(t))return;e.done=!0,e.emit("done"),this._debug(`file done: ${e.name}`)}}));let e=!0;for(const t of this._selections){for(let n=t.from;n<=t.to;n++)if(!this.bitfield.get(n)){e=!1;break}if(!e)break}return!this.done&&e?(this.done=!0,this._debug(`torrent done: ${this.infoHash}`),this.emit("done")):this.done=!1,this._gcSelections(),e}async load(e,t){if(this.destroyed)throw new Error("torrent is destroyed");if(!this.ready)return this.once("ready",(()=>{this.load(e,t)}));Array.isArray(e)||(e=[e]),t||(t=Cn);try{await Oe(this.store,l(e),{chunkLength:this.pieceLength}),this._markAllVerified(),this._checkDone(),t(null)}catch(e){return t(e),e}}pause(){this.destroyed||(this._debug("pause"),this.paused=!0)}resume(){this.destroyed||(this._debug("resume"),this.paused=!1,this._drain())}_debug(){const e=[].slice.call(arguments);e[0]=`[${this.client?this.client._debugId:"No Client"}] [${this._debugId}] ${e[0]}`,yn(...e)}_drain(){if(this._debug("_drain numConns %s maxConns %s",this._numConns,this.client.maxConns),"function"!=typeof ye.connect||this.destroyed||this.paused||this._numConns>=this.client.maxConns)return;this._debug("drain (%s queued, %s/%s peers)",this._numQueued,this.numPeers,this.client.maxConns);const e=this._queue.shift();if(!e)return;this._debug("%s connect attempt to %s",e.type,e.addr);const t=Ce(e.addr),n={host:t[0],port:t[1]};this.client.utp&&e.type===be.default.TYPE_UTP_OUTGOING?e.conn=we.connect(n.port,n.host):e.conn=ye.connect(n);const r=e.conn;r.once("connect",(()=>{this.destroyed||e.onConnect()})),r.once("error",(t=>{e.destroy(t)})),e.startConnectTimeout(),r.on("close",(()=>{if(this.destroyed)return;if(e.retries>=kn.length){if(this.client.utp){const t=this._addPeer(e.addr,"tcp",e.source);t&&(t.retries=0)}else this._debug("conn %s closed: will not re-add (max %s attempts)",e.addr,kn.length);return}const t=kn[e.retries];this._debug("conn %s closed: will re-add to queue in %sms (attempt %s)",e.addr,t,e.retries+1);const n=setTimeout((()=>{if(this.destroyed)return;const t=Ce(e.addr)[0],n=this.client.utp&&this._isIPv4(t)?"utp":"tcp",r=this._addPeer(e.addr,n,e.source);r&&(r.retries=e.retries+1)}),t);n.unref&&n.unref()}))}_validAddr(e){let t;try{t=Ce(e)}catch(e){return!1}const n=t[0],r=t[1];return r>0&&r<65535&&!("127.0.0.1"===n&&r===this.client.torrentPort)}_isIPv4(e){return/^((?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/.test(e)}}function An(e,t){let n=2+Math.ceil(t*e.downloadSpeed()/Zt.BLOCK_LENGTH);if(e.peerExtendedHandshake){const t=e.peerExtendedHandshake.reqq;"number"==typeof t&&t>0&&(n=Math.min(n,t))}return n}function Cn(){}var In=n(8669),Pn=n(5573),Rn=n(4286),On=n(4622);class Ln{constructor(e,t={}){this.client=e,t.origin||(t.origin="*"),this.opts=t,this.pendingReady=new Set}static serveIndexPage(e,t,n){const r=t.map((e=>`
  • \n \n ${Pn(e.name)}\n \n (${Pn(e.length)} bytes)\n
  • `)).join("
    ");return e.status=200,e.headers["Content-Type"]="text/html",e.body=Dn("WebTorrent",`

    WebTorrent

    \n
      ${r}
    `),e}isOriginAllowed(e){return!1!==this.opts.origin&&("*"===this.opts.origin||e.headers.origin===this.opts.origin)}static serveMethodNotAllowed(e){return e.status=405,e.headers["Content-Type"]="text/html",e.body=Dn("405 - Method Not Allowed","

    405 - Method Not Allowed

    "),e}static serve404Page(e){return e.status=404,e.headers["Content-Type"]="text/html",e.body=Dn("404 - Not Found","

    404 - Not Found

    "),e}static serveTorrentPage(e,t,n){const r=e.files.map((t=>`
  • \n \n ${Pn(t.path)}\n \n (${Pn(t.length)} bytes)\n
  • `)).join("
    ");return t.status=200,t.headers["Content-Type"]="text/html",t.body=Dn(`${Pn(e.name)} - WebTorrent`,`

    ${Pn(e.name)}

    \n
      ${r}
    `),t}static serveOptionsRequest(e,t){return t.status=204,t.headers["Access-Control-Max-Age"]="600",t.headers["Access-Control-Allow-Methods"]="GET,HEAD",e.headers["access-control-request-headers"]&&(t.headers["Access-Control-Allow-Headers"]=e.headers["access-control-request-headers"]),t}static serveFile(e,t,n){n.status=200,n.headers.Expires="0",n.headers["Cache-Control"]="no-cache, no-store, must-revalidate, max-age=0",n.headers["Accept-Ranges"]="bytes",n.headers["Content-Type"]=e.type,n.headers["transferMode.dlna.org"]="Streaming",n.headers["contentFeatures.dlna.org"]="DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000","document"===t.destination?(n.headers["Content-Type"]="application/octet-stream",n.headers["Content-Disposition"]=`attachment; filename*=UTF-8''${Un(e.name)}`,n.body="DOWNLOAD"):n.headers["Content-Disposition"]=`inline; filename*=UTF-8''${Un(e.name)}`;let r=On(e.length,t.headers.range||"");if(Array.isArray(r)?(n.status=206,r=r[0],n.headers["Content-Range"]=`bytes ${r.start}-${r.end}/${e.length}`,n.headers["Content-Length"]=r.end-r.start+1):(n.statusCode=200,r=null,n.headers["Content-Length"]=e.length),"GET"===t.method){const i=e[Symbol.asyncIterator](r);let s=null;e.emit("iterator",{iterator:i,req:t,file:e},(e=>{s=e}));const o=ce.Readable.from(s||i);let a=null;e.emit("stream",{stream:o,req:t,file:e},(e=>{a=Rn(o,e)})),n.body=a||o}else n.body=!1;return n}async onRequest(e,t){let n=new URL(e.url,"http://example.com").pathname;n=n.slice(n.indexOf(this.pathname)+this.pathname.length+1);const r={headers:{"X-Content-Type-Options":"nosniff","Content-Security-Policy":"base-uri 'none'; frame-ancestors 'none'; form-action 'none';"}};if(this.isOriginAllowed(e)&&(r.headers["Access-Control-Allow-Origin"]="*"===this.opts.origin?"*":e.headers.origin),"favicon.ico"===n)return t(Ln.serve404Page(r));if("OPTIONS"===e.method)return this.isOriginAllowed(e)?t(Ln.serveOptionsRequest(e,r)):t(Ln.serveMethodNotAllowed(r));const i=async()=>{this.pendingReady.delete(i);const e=await s();t(e)},s=async()=>{if(""===n)return Ln.serveIndexPage(r,this.client.torrents,this.pathname);let[t,...i]=n.split("/");i=decodeURI(i.join("/"));const s=await this.client.get(t);if(!t||!s)return Ln.serve404Page(r);if(!i)return Ln.serveTorrentPage(s,r,this.pathname);const o=s.files.find((e=>e.path.replace(/\\/g,"/")===i));return o?Ln.serveFile(o,e,r):Ln.serve404Page(r)};if("GET"===e.method||"HEAD"===e.method){if(this.client.ready){const e=await s();return t(e)}return this.pendingReady.add(i),void this.client.once("ready",i)}return Ln.serveMethodNotAllowed(r)}close(e=(()=>{})){this.closed=!0,this.pendingReady.forEach((e=>{this.client.removeListener("ready",e)})),this.pendingReady.clear(),d(e)}destroy(e=(()=>{})){this.closed?d(e):this.close(e),this.client=null}}class Nn extends Ln{constructor(e,t){super(e,t),this.server=In.createServer(),this._listen=this.server.listen,this.server.listen=this.listen.bind(this),this._close=this.server.close,this.server.close=this.close.bind(this),this.sockets=new Set,this.closed=!1,this.pathname=t?.pathname||"/webtorrent"}wrapRequest(e,t){return this.opts.hostname&&e.headers.host!==`${this.opts.hostname}:${this.server.address().port}`?e.destroy():new URL(e.url,"http://example.com").pathname.startsWith(this.pathname)?void this.onRequest(e,(({status:e,headers:n,body:r})=>{t.writeHead(e,n),r instanceof ce.Readable?Rn(r,t):t.end(r)})):e.destroy()}onConnection(e){e.setTimeout(36e6),this.sockets.add(e),e.once("close",(()=>{this.sockets.delete(e)}))}address(){return this.server.address()}listen(...e){return this.closed=!1,this.server.on("connection",this.onConnection.bind(this)),this.server.on("request",this.wrapRequest.bind(this)),this._listen.apply(this.server,e)}close(e=(()=>{})){this.server.removeAllListeners("connection"),this.server.removeAllListeners("request"),super.close(),this._close.call(this.server,e)}destroy(e){this.sockets.forEach((e=>{e.destroy()})),super.destroy(e)}}class Bn extends Ln{constructor(e,t){super(e,t),this.registration=t.controller,this.workerKeepAliveInterval=null,this.workerPortCount=0;const n=new URL(t.controller.scope);this.pathname=n.pathname+"webtorrent",this._address={port:n.port,family:"IPv4",address:n.hostname},this.boundHandler=this.wrapRequest.bind(this),navigator.serviceWorker.addEventListener("message",this.boundHandler),fetch(`${this.pathname}/cancel/`).then((e=>{e.body.cancel()}))}wrapRequest(e){const t=e.data;if("webtorrent"===!t?.type||!t.url)return null;const[n]=e.ports;this.onRequest(t,(({status:e,headers:t,body:r})=>{const i=r instanceof ce.Readable&&r[Symbol.asyncIterator](),s=()=>{n.onmessage=null,r?.destroy&&r.destroy(),this.workerPortCount--,this.workerPortCount||(clearInterval(this.workerKeepAliveInterval),this.workerKeepAliveInterval=null)};n.onmessage=async e=>{if(e.data){let e;try{e=(await i.next()).value}catch(e){}n.postMessage(e),e||s(),this.workerKeepAliveInterval||(this.workerKeepAliveInterval=setInterval((()=>fetch(`${this.pathname}/keepalive/`)),2e4))}else s()},this.workerPortCount++,n.postMessage({status:e,headers:t,body:i?"STREAM":r})}))}listen(e,t){t()}address(){return this._address}close(e){navigator.serviceWorker.removeEventListener("message",this.boundHandler),super.close(e)}destroy(e){super.destroy(e)}}function Dn(e,t){return`\n \n \n \n \n ${e}\n \n \n ${t}\n \n \n `}function Un(e){return encodeURIComponent(e).replace(/['()]/g,escape).replace(/\*/g,"%2A").replace(/%(?:7C|60|5E)/g,unescape)}const Mn=fn,jn=C("webtorrent"),Hn=Mn.replace(/\d*./g,(e=>("0"+e%100).slice(-2))).slice(0,4),qn=`-WW${Hn}-`;class Fn extends t{constructor(e={}){super(),"string"==typeof e.peerId?this.peerId=e.peerId:ArrayBuffer.isView(e.peerId)?this.peerId=(0,f.oc)(e.peerId):this.peerId=(0,f.oc)((0,f.gR)(qn+(0,f.te)((0,f.O6)(9)))),this.peerIdBuffer=(0,f._0)(this.peerId),"string"==typeof e.nodeId?this.nodeId=e.nodeId:ArrayBuffer.isView(e.nodeId)?this.nodeId=(0,f.oc)(e.nodeId):this.nodeId=(0,f.oc)((0,f.O6)(20)),this.nodeIdBuffer=(0,f._0)(this.nodeId),this._debugId=(0,f.oc)(this.peerId).substring(0,7),this.destroyed=!1,this.listening=!1,this.torrentPort=e.torrentPort||0,this.dhtPort=e.dhtPort||0,this.tracker=void 0!==e.tracker?e.tracker:{},this.lsd=!1!==e.lsd,this.utPex=!1!==e.utPex,this.torrents=[],this.maxConns=Number(e.maxConns)||55,this.utp=Fn.UTP_SUPPORT&&!1!==e.utp,this._downloadLimit=Math.max("number"==typeof e.downloadLimit?e.downloadLimit:-1,-1),this._uploadLimit=Math.max("number"==typeof e.uploadLimit?e.uploadLimit:-1,-1),!0===e.secure&&Promise.resolve().then(n.bind(n,3287)).then((({enableSecure:e})=>e())),this._debug("new webtorrent (peerId %s, nodeId %s, port %s)",this.peerId,this.nodeId,this.torrentPort),this.throttleGroups={down:new me.ThrottleGroup({rate:Math.max(this._downloadLimit,0),enabled:this._downloadLimit>=0}),up:new me.ThrottleGroup({rate:Math.max(this._uploadLimit,0),enabled:this._uploadLimit>=0})},this.tracker&&("object"!=typeof this.tracker&&(this.tracker={}),globalThis.WRTC&&!this.tracker.wrtc&&(this.tracker.wrtc=globalThis.WRTC)),"function"==typeof ke?this._connPool=new ke(this):d((()=>{this._onListening()})),this._downloadSpeed=_e(),this._uploadSpeed=_e(),!1!==e.dht&&"function"==typeof K?(this.dht=new K(Object.assign({},{nodeId:this.nodeId},e.dht)),this.dht.once("error",(e=>{this._destroy(e)})),this.dht.once("listening",(()=>{const e=this.dht.address();e&&(this.dhtPort=e.port)})),this.dht.setMaxListeners(0),this.dht.listen(this.dhtPort)):this.dht=!1,this.enableWebSeeds=!1!==e.webSeeds;const t=()=>{this.destroyed||(this.ready=!0,this.emit("ready"))};"function"==typeof Z&&null!=e.blocklist?Z(e.blocklist,{headers:{"user-agent":`WebTorrent/${Mn} (https://webtorrent.io)`}},((e,n)=>{if(e)return console.error(`Failed to load blocklist: ${e.message}`);this.blocked=n,t()})):d(t)}createServer(e,t){if(this.destroyed)throw new Error("torrent is destroyed");if(this._server)throw new Error("server already created");if("undefined"!=typeof window&&"node"!==t||"browser"===t){if(!(e?.controller instanceof ServiceWorkerRegistration))throw new Error("Invalid worker registration");if("activated"!==e.controller.active.state)throw new Error("Worker isn't activated");return this._server=new Bn(this,e),this._server}return this._server=new Nn(this,e),this._server}get downloadSpeed(){return this._downloadSpeed()}get uploadSpeed(){return this._uploadSpeed()}get progress(){const e=this.torrents.filter((e=>1!==e.progress));return e.reduce(((e,t)=>e+t.downloaded),0)/(e.reduce(((e,t)=>e+(t.length||0)),0)||1)}get ratio(){return this.torrents.reduce(((e,t)=>e+t.uploaded),0)/(this.torrents.reduce(((e,t)=>e+t.received),0)||1)}async get(e){if(e instanceof Tn){if(this.torrents.includes(e))return e}else{const t=this.torrents;let n;try{n=await oe(e)}catch(e){}if(!n)return null;if(!n.infoHash)throw new Error("Invalid torrent identifier");for(const e of t)if(e.infoHash===n.infoHash)return e}return null}add(e,t={},n=(()=>{})){if(this.destroyed)throw new Error("client is destroyed");"function"==typeof t&&([t,n]=[{},t]);const r=()=>{if(!this.destroyed)for(const e of this.torrents)if(e.infoHash===s.infoHash&&e!==s)return s._destroy(new Error(`Cannot add duplicate torrent ${s.infoHash}`)),void n(e)},i=()=>{this.destroyed||(n(s),this.emit("torrent",s))};this._debug("add"),t=t?Object.assign({},t):{};const s=new Tn(e,this,t);return this.torrents.push(s),s.once("_infoHash",r),s.once("ready",i),s.once("close",(function e(){s.removeListener("_infoHash",r),s.removeListener("ready",i),s.removeListener("close",e)})),s}seed(e,t,n){if(this.destroyed)throw new Error("client is destroyed");"function"==typeof t&&([t,n]=[{},t]),this._debug("seed"),(t=t?Object.assign({},t):{}).skipVerify=!0;const r="string"==typeof e;r&&(t.path=i.dirname(e)),t.createdBy||(t.createdBy=`WebTorrent/${Hn}`);const s=e=>{this._debug("on seed"),"function"==typeof n&&n(e),e.emit("seed"),this.emit("seed",e)},o=this.add(null,t,(e=>{const n=[n=>{if(r||t.preloadedStore)return n();e.load(a,n)}];this.dht&&n.push((t=>{e.once("dhtAnnounce",t)})),u(n,(t=>{if(!this.destroyed)return t?e._destroy(t):void s(e)}))}));let a;var h;return h=e,"undefined"!=typeof FileList&&h instanceof FileList?e=Array.from(e):Array.isArray(e)||(e=[e]),u(e.map((e=>async n=>{if(!t.preloadedStore&&function(e){return"object"==typeof e&&null!=e&&"function"==typeof e.pipe}(e)){const t=[];try{for await(const n of e)t.push(n)}catch(e){return n(e)}const r=(0,f.zo)(t);r.name=e.name,n(null,r)}else n(null,e)})),((e,r)=>{if(!this.destroyed)return e?o._destroy(e):void function(e,t,n){"function"==typeof t&&([t,n]=[n,t]),k(e,t=t?Object.assign({},t):{},n)}(r,t,((e,i)=>{if(!this.destroyed){if(e)return o._destroy(e);a=i.map((e=>e.getStream)),A(r,t,(async(e,t)=>{if(this.destroyed)return;if(e)return o._destroy(e);const r=await this.get(t);r?(console.warn("A torrent with the same id is already being seeded"),o._destroy(),"function"==typeof n&&n(r)):o._onTorrentId(t)}))}}))})),o}async remove(e,t,n){if("function"==typeof t)return this.remove(e,null,t);this._debug("remove");const r=await this.get(e);if(!r)throw new Error(`No torrent with id ${e}`);this._remove(r,t,n)}_remove(e,t,n){if(e){if("function"==typeof t)return this._remove(e,null,t);this.torrents.splice(this.torrents.indexOf(e),1),e.destroy(t,n),this.dht&&this.dht._tables.remove(e.infoHash)}}address(){return this.listening?this._connPool?this._connPool.tcpServer.address():{address:"0.0.0.0",family:"IPv4",port:0}:null}throttleDownload(e){return e=Number(e),!(isNaN(e)||!isFinite(e)||e<-1)&&(this._downloadLimit=e,this._downloadLimit<0?this.throttleGroups.down.setEnabled(!1):(this.throttleGroups.down.setEnabled(!0),void this.throttleGroups.down.setRate(this._downloadLimit)))}throttleUpload(e){return e=Number(e),!(isNaN(e)||!isFinite(e)||e<-1)&&(this._uploadLimit=e,this._uploadLimit<0?this.throttleGroups.up.setEnabled(!1):(this.throttleGroups.up.setEnabled(!0),void this.throttleGroups.up.setRate(this._uploadLimit)))}destroy(e){if(this.destroyed)throw new Error("client already destroyed");this._destroy(null,e)}_destroy(e,t){this._debug("client destroy"),this.destroyed=!0;const n=this.torrents.map((e=>t=>{e.destroy(t)}));this._connPool&&n.push((e=>{this._connPool.destroy(e)})),this.dht&&n.push((e=>{this.dht.destroy(e)})),this._server&&n.push((e=>{this._server.destroy(e)})),u(n,t),e&&this.emit("error",e),this.torrents=[],this._connPool=null,this.dht=null,this.throttleGroups.down.destroy(),this.throttleGroups.up.destroy()}_onListening(){if(this._debug("listening"),this.listening=!0,this._connPool){const e=this._connPool.tcpServer.address();e&&(this.torrentPort=e.port)}this.emit("listening")}_debug(){const e=[].slice.call(arguments);e[0]=`[${this._debugId}] ${e[0]}`,jn(...e)}async _getByHash(e){for(const t of this.torrents)if(t.infoHashHash||(t.infoHashHash=await(0,f.vp)((0,f._0)("72657132"+t.infoHash),"hex")),e===t.infoHashHash)return t;return null}}Fn.WEBRTC_SUPPORT=ge.WEBRTC_SUPPORT,Fn.UTP_SUPPORT=ke.UTP_SUPPORT,Fn.VERSION=Mn})();var i=r.Z;export{i as default}; //# sourceMappingURL=webtorrent.chromeapp.js.map \ No newline at end of file diff --git a/dist/webtorrent.chromeapp.js.map b/dist/webtorrent.chromeapp.js.map index 6143a99d0d..f12ee4f8ba 100644 --- a/dist/webtorrent.chromeapp.js.map +++ b/dist/webtorrent.chromeapp.js.map @@ -1 +1 @@ -{"version":3,"file":"webtorrent.chromeapp.js","mappings":"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","sources":["webpack://webtorrent/./node_modules/@webtorrent/http-node/_http_agent.js","webpack://webtorrent/./node_modules/@webtorrent/http-node/_http_client.js","webpack://webtorrent/./node_modules/@webtorrent/http-node/_http_common.js","webpack://webtorrent/./node_modules/@webtorrent/http-node/_http_incoming.js","webpack://webtorrent/./node_modules/@webtorrent/http-node/_http_outgoing.js","webpack://webtorrent/./node_modules/@webtorrent/http-node/_http_server.js","webpack://webtorrent/./node_modules/@webtorrent/http-node/http.js","webpack://webtorrent/./node_modules/assert/assert.js","webpack://webtorrent/./node_modules/assert/node_modules/inherits/inherits_browser.js","webpack://webtorrent/./node_modules/assert/node_modules/util/support/isBuffer.js","webpack://webtorrent/./node_modules/assert/node_modules/util/util.js","webpack://webtorrent/./node_modules/b4a/index.js","webpack://webtorrent/./node_modules/base64-js/index.js","webpack://webtorrent/./node_modules/block-iterator/index.js","webpack://webtorrent/./node_modules/buffer/index.js","webpack://webtorrent/./node_modules/cache-chunk-store/index.js","webpack://webtorrent/./node_modules/chrome-dgram/index.js","webpack://webtorrent/./node_modules/chrome-dns/index.js","webpack://webtorrent/./node_modules/chrome-net/index.js","webpack://webtorrent/./node_modules/clone/clone.js","webpack://webtorrent/./node_modules/compact2string/index.js","webpack://webtorrent/./node_modules/cpus/browser.js","webpack://webtorrent/./node_modules/debug/src/browser.js","webpack://webtorrent/./node_modules/debug/src/common.js","webpack://webtorrent/./node_modules/decompress-response/index.js","webpack://webtorrent/./node_modules/end-of-stream/index.js","webpack://webtorrent/./node_modules/err-code/index.js","webpack://webtorrent/./node_modules/escape-html/index.js","webpack://webtorrent/./node_modules/events/events.js","webpack://webtorrent/./node_modules/fast-fifo/fixed-size.js","webpack://webtorrent/./node_modules/fast-fifo/index.js","webpack://webtorrent/./node_modules/fast-readable-async-iterator/index.js","webpack://webtorrent/./node_modules/freelist/index.js","webpack://webtorrent/./node_modules/get-browser-rtc/index.js","webpack://webtorrent/./node_modules/http-parser-js/http-parser.js","webpack://webtorrent/./node_modules/idb-chunk-store/index.js","webpack://webtorrent/./node_modules/idb/build/esm/wrap-idb-value.js","webpack://webtorrent/./node_modules/idb/build/esm/index.js","webpack://webtorrent/./node_modules/ieee754/index.js","webpack://webtorrent/./node_modules/immediate-chunk-store/index.js","webpack://webtorrent/./node_modules/inherits/inherits_browser.js","webpack://webtorrent/./node_modules/ipaddr.js/lib/ipaddr.js","webpack://webtorrent/./node_modules/is-file/index.js","webpack://webtorrent/./node_modules/join-async-iterator/index.js","webpack://webtorrent/./node_modules/junk/index.js","webpack://webtorrent/./node_modules/k-bucket/index.js","webpack://webtorrent/./node_modules/k-rpc-socket/index.js","webpack://webtorrent/./node_modules/k-rpc-socket/node_modules/bencode/lib/decode.js","webpack://webtorrent/./node_modules/k-rpc-socket/node_modules/bencode/lib/encode.js","webpack://webtorrent/./node_modules/k-rpc-socket/node_modules/bencode/lib/encoding-length.js","webpack://webtorrent/./node_modules/k-rpc-socket/node_modules/bencode/lib/index.js","webpack://webtorrent/./node_modules/k-rpc-socket/node_modules/bencode/lib/util.js","webpack://webtorrent/./node_modules/k-rpc/index.js","webpack://webtorrent/./node_modules/last-one-wins/index.js","webpack://webtorrent/./node_modules/limiter/index.js","webpack://webtorrent/./node_modules/limiter/lib/clock.js","webpack://webtorrent/./node_modules/limiter/lib/rateLimiter.js","webpack://webtorrent/./node_modules/limiter/lib/tokenBucket.js","webpack://webtorrent/./node_modules/lru/index.js","webpack://webtorrent/./node_modules/lt_donthave/index.js","webpack://webtorrent/./node_modules/memory-chunk-store/index.js","webpack://webtorrent/./node_modules/mime/Mime.js","webpack://webtorrent/./node_modules/mime/lite.js","webpack://webtorrent/./node_modules/mime/types/standard.js","webpack://webtorrent/./node_modules/mimic-response/index.js","webpack://webtorrent/./node_modules/ms/index.js","webpack://webtorrent/./node_modules/object-assign/index.js","webpack://webtorrent/./node_modules/once/once.js","webpack://webtorrent/./node_modules/path-browserify/index.js","webpack://webtorrent/./node_modules/piece-length/index.js","webpack://webtorrent/./node_modules/pump/index.js","webpack://webtorrent/./node_modules/querystring/decode.js","webpack://webtorrent/./node_modules/querystring/encode.js","webpack://webtorrent/./node_modules/querystring/index.js","webpack://webtorrent/./node_modules/queue-microtask/index.js","webpack://webtorrent/./node_modules/queue-tick/queue-microtask.js","webpack://webtorrent/./node_modules/random-iterate/index.js","webpack://webtorrent/./node_modules/randombytes/browser.js","webpack://webtorrent/./node_modules/range-parser/index.js","webpack://webtorrent/./node_modules/rc4/rc4.js","webpack://webtorrent/./node_modules/readable-stream/errors.js","webpack://webtorrent/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://webtorrent/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://webtorrent/./node_modules/readable-stream/lib/_stream_readable.js","webpack://webtorrent/./node_modules/readable-stream/lib/_stream_transform.js","webpack://webtorrent/./node_modules/readable-stream/lib/_stream_writable.js","webpack://webtorrent/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://webtorrent/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://webtorrent/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://webtorrent/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://webtorrent/./node_modules/readable-stream/lib/internal/streams/from.js","webpack://webtorrent/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://webtorrent/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://webtorrent/./node_modules/readable-stream/lib/internal/streams/stream.js","webpack://webtorrent/./node_modules/readable-stream/readable.js","webpack://webtorrent/./node_modules/record-cache/index.js","webpack://webtorrent/./node_modules/run-parallel-limit/index.js","webpack://webtorrent/./node_modules/run-parallel/index.js","webpack://webtorrent/./node_modules/run-series/index.js","webpack://webtorrent/./node_modules/safe-buffer/index.js","webpack://webtorrent/./node_modules/setimmediate/setImmediate.js","webpack://webtorrent/./node_modules/simple-concat/index.js","webpack://webtorrent/./node_modules/simple-get/index.js","webpack://webtorrent/./node_modules/speed-limiter/index.js","webpack://webtorrent/./node_modules/speed-limiter/lib/throttle-group.js","webpack://webtorrent/./node_modules/speed-limiter/lib/throttle.js","webpack://webtorrent/./node_modules/speed-limiter/lib/utils.js","webpack://webtorrent/./node_modules/streamx/index.js","webpack://webtorrent/./node_modules/string_decoder/lib/string_decoder.js","webpack://webtorrent/./node_modules/throughput/index.js","webpack://webtorrent/./node_modules/timers-browserify/main.js","webpack://webtorrent/./node_modules/torrent-piece/index.js","webpack://webtorrent/./node_modules/unordered-array-remove/index.js","webpack://webtorrent/./node_modules/url/node_modules/punycode/punycode.js","webpack://webtorrent/./node_modules/url/url.js","webpack://webtorrent/./node_modules/url/util.js","webpack://webtorrent/./node_modules/util-deprecate/browser.js","webpack://webtorrent/./node_modules/util/node_modules/inherits/inherits_browser.js","webpack://webtorrent/./node_modules/util/support/isBuffer.js","webpack://webtorrent/./node_modules/util/util.js","webpack://webtorrent/./node_modules/wrappy/wrappy.js","webpack://webtorrent/./node_modules/ws/browser.js","webpack://webtorrent/./lib/peer.js","webpack://webtorrent/./node_modules/bencode/lib/util.js","webpack://webtorrent/./node_modules/bencode/lib/encode.js","webpack://webtorrent/./node_modules/bencode/lib/decode.js","webpack://webtorrent/./node_modules/bencode/lib/encoding-length.js","webpack://webtorrent/./node_modules/bencode/index.js","webpack://webtorrent/./node_modules/bitfield/lib/esm/index.js","webpack://webtorrent/./node_modules/bittorrent-protocol/index.js","webpack://webtorrent/./node_modules/uint8-util/util.js","webpack://webtorrent/./node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js","webpack://webtorrent/./node_modules/uint8-util/browser.js","webpack://webtorrent/./node_modules/pako/dist/pako.esm.mjs","webpack://webtorrent/./polyfills/inflate-sync-web.js","webpack://webtorrent/./polyfills/process-fast.js","webpack://webtorrent/webpack/bootstrap","webpack://webtorrent/webpack/runtime/define property getters","webpack://webtorrent/webpack/runtime/hasOwnProperty shorthand","webpack://webtorrent/webpack/runtime/make namespace object","webpack://webtorrent/webpack/runtime/node module decorator","webpack://webtorrent/./node_modules/create-torrent/get-files.js","webpack://webtorrent/./node_modules/create-torrent/index.js","webpack://webtorrent/./node_modules/bittorrent-dht/client.js","webpack://webtorrent/./node_modules/cross-fetch-ponyfill/browser.js","webpack://webtorrent/./node_modules/@thaunknown/thirty-two/lib/thirty-two/index.js","webpack://webtorrent/./node_modules/bep53-range/index.js","webpack://webtorrent/./node_modules/magnet-uri/index.js","webpack://webtorrent/./node_modules/parse-torrent/index.js","webpack://webtorrent/./node_modules/@thaunknown/simple-peer/index.js","webpack://webtorrent/./lib/conn-pool.js","webpack://webtorrent/./node_modules/addr-to-ip-port/index.js","webpack://webtorrent/./node_modules/chunk-store-iterator/index.js","webpack://webtorrent/./node_modules/bittorrent-tracker/lib/common-node.js","webpack://webtorrent/./node_modules/bittorrent-tracker/lib/common.js","webpack://webtorrent/./node_modules/bittorrent-tracker/lib/client/tracker.js","webpack://webtorrent/./node_modules/bittorrent-tracker/lib/client/http-tracker.js","webpack://webtorrent/./node_modules/bittorrent-tracker/lib/client/udp-tracker.js","webpack://webtorrent/./node_modules/@thaunknown/simple-websocket/index.js","webpack://webtorrent/./node_modules/bittorrent-tracker/lib/client/websocket-tracker.js","webpack://webtorrent/./node_modules/bittorrent-tracker/client.js","webpack://webtorrent/./node_modules/bittorrent-tracker/index.js","webpack://webtorrent/./node_modules/bittorrent-lsd/index.js","webpack://webtorrent/./node_modules/torrent-discovery/index.js","webpack://webtorrent/./node_modules/fsa-chunk-store/index.js","webpack://webtorrent/./node_modules/hybrid-chunk-store/index.js","webpack://webtorrent/./node_modules/ut_metadata/index.js","webpack://webtorrent/./node_modules/string2compact/index.js","webpack://webtorrent/./node_modules/ut_pex/index.js","webpack://webtorrent/./lib/file-iterator.js","webpack://webtorrent/./lib/file.js","webpack://webtorrent/./lib/rarity-map.js","webpack://webtorrent/./lib/webconn.js","webpack://webtorrent/./lib/torrent.js","webpack://webtorrent/./lib/server.js","webpack://webtorrent/./index.js"],"sourcesContent":["'use strict';\n\nconst net = require('net');\nconst util = require('util');\nconst EventEmitter = require('events');\nconst debug = util.debuglog('http');\n\n// New Agent code.\n\n// The largest departure from the previous implementation is that\n// an Agent instance holds connections for a variable number of host:ports.\n// Surprisingly, this is still API compatible as far as third parties are\n// concerned. The only code that really notices the difference is the\n// request object.\n\n// Another departure is that all code related to HTTP parsing is in\n// ClientRequest.onSocket(). The Agent is now *strictly*\n// concerned with managing a connection pool.\n\nfunction Agent(options) {\n if (!(this instanceof Agent))\n return new Agent(options);\n\n EventEmitter.call(this);\n\n var self = this;\n\n self.defaultPort = 80;\n self.protocol = 'http:';\n\n self.options = util._extend({}, options);\n\n // don't confuse net and make it think that we're connecting to a pipe\n self.options.path = null;\n self.requests = {};\n self.sockets = {};\n self.freeSockets = {};\n self.keepAliveMsecs = self.options.keepAliveMsecs || 1000;\n self.keepAlive = self.options.keepAlive || false;\n self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets;\n self.maxFreeSockets = self.options.maxFreeSockets || 256;\n\n self.on('free', function(socket, options) {\n var name = self.getName(options);\n debug('agent.on(free)', name);\n\n if (socket.writable &&\n self.requests[name] && self.requests[name].length) {\n self.requests[name].shift().onSocket(socket);\n if (self.requests[name].length === 0) {\n // don't leak\n delete self.requests[name];\n }\n } else {\n // If there are no pending requests, then put it in\n // the freeSockets pool, but only if we're allowed to do so.\n var req = socket._httpMessage;\n if (req &&\n req.shouldKeepAlive &&\n socket.writable &&\n self.keepAlive) {\n var freeSockets = self.freeSockets[name];\n var freeLen = freeSockets ? freeSockets.length : 0;\n var count = freeLen;\n if (self.sockets[name])\n count += self.sockets[name].length;\n\n if (count > self.maxSockets || freeLen >= self.maxFreeSockets) {\n socket.destroy();\n } else {\n freeSockets = freeSockets || [];\n self.freeSockets[name] = freeSockets;\n socket.setKeepAlive(true, self.keepAliveMsecs);\n socket.unref();\n socket._httpMessage = null;\n self.removeSocket(socket, options);\n freeSockets.push(socket);\n }\n } else {\n socket.destroy();\n }\n }\n });\n}\n\nutil.inherits(Agent, EventEmitter);\nexports.Agent = Agent;\n\nAgent.defaultMaxSockets = Infinity;\n\nAgent.prototype.createConnection = net.createConnection;\n\n// Get the key for a given set of request options\nAgent.prototype.getName = function(options) {\n var name = options.host || 'localhost';\n\n name += ':';\n if (options.port)\n name += options.port;\n\n name += ':';\n if (options.localAddress)\n name += options.localAddress;\n\n // Pacify parallel/test-http-agent-getname by only appending\n // the ':' when options.family is set.\n if (options.family === 4 || options.family === 6)\n name += ':' + options.family;\n\n return name;\n};\n\nAgent.prototype.addRequest = function(req, options) {\n // Legacy API: addRequest(req, host, port, localAddress)\n if (typeof options === 'string') {\n options = {\n host: options,\n port: arguments[2],\n localAddress: arguments[3]\n };\n }\n\n options = util._extend({}, options);\n options = util._extend(options, this.options);\n\n var name = this.getName(options);\n if (!this.sockets[name]) {\n this.sockets[name] = [];\n }\n\n var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0;\n var sockLen = freeLen + this.sockets[name].length;\n\n if (freeLen) {\n // we have a free socket, so use that.\n var socket = this.freeSockets[name].shift();\n debug('have free socket');\n\n // don't leak\n if (!this.freeSockets[name].length)\n delete this.freeSockets[name];\n\n socket.ref();\n req.onSocket(socket);\n this.sockets[name].push(socket);\n } else if (sockLen < this.maxSockets) {\n debug('call onSocket', sockLen, freeLen);\n // If we are under maxSockets create a new one.\n this.createSocket(req, options, function(err, newSocket) {\n if (err) {\n process.nextTick(function() {\n req.emit('error', err);\n });\n return;\n }\n req.onSocket(newSocket);\n });\n } else {\n debug('wait for socket');\n // We are over limit so we'll add it to the queue.\n if (!this.requests[name]) {\n this.requests[name] = [];\n }\n this.requests[name].push(req);\n }\n};\n\nAgent.prototype.createSocket = function(req, options, cb) {\n var self = this;\n options = util._extend({}, options);\n options = util._extend(options, self.options);\n\n if (!options.servername) {\n options.servername = options.host;\n const hostHeader = req.getHeader('host');\n if (hostHeader) {\n options.servername = hostHeader.replace(/:.*$/, '');\n }\n }\n\n var name = self.getName(options);\n options._agentKey = name;\n\n debug('createConnection', name, options);\n options.encoding = null;\n var called = false;\n const newSocket = self.createConnection(options, oncreate);\n if (newSocket)\n oncreate(null, newSocket);\n function oncreate(err, s) {\n if (called)\n return;\n called = true;\n if (err)\n return cb(err);\n if (!self.sockets[name]) {\n self.sockets[name] = [];\n }\n self.sockets[name].push(s);\n debug('sockets', name, self.sockets[name].length);\n\n function onFree() {\n self.emit('free', s, options);\n }\n s.on('free', onFree);\n\n function onClose(err) {\n debug('CLIENT socket onClose');\n // This is the only place where sockets get removed from the Agent.\n // If you want to remove a socket from the pool, just close it.\n // All socket errors end in a close event anyway.\n self.removeSocket(s, options);\n }\n s.on('close', onClose);\n\n function onRemove() {\n // We need this function for cases like HTTP 'upgrade'\n // (defined by WebSockets) where we need to remove a socket from the\n // pool because it'll be locked up indefinitely\n debug('CLIENT socket onRemove');\n self.removeSocket(s, options);\n s.removeListener('close', onClose);\n s.removeListener('free', onFree);\n s.removeListener('agentRemove', onRemove);\n }\n s.on('agentRemove', onRemove);\n cb(null, s);\n }\n};\n\nAgent.prototype.removeSocket = function(s, options) {\n var name = this.getName(options);\n debug('removeSocket', name, 'writable:', s.writable);\n var sets = [this.sockets];\n\n // If the socket was destroyed, remove it from the free buffers too.\n if (!s.writable)\n sets.push(this.freeSockets);\n\n for (var sk = 0; sk < sets.length; sk++) {\n var sockets = sets[sk];\n\n if (sockets[name]) {\n var index = sockets[name].indexOf(s);\n if (index !== -1) {\n sockets[name].splice(index, 1);\n // Don't leak\n if (sockets[name].length === 0)\n delete sockets[name];\n }\n }\n }\n\n if (this.requests[name] && this.requests[name].length) {\n debug('removeSocket, have a request, make a socket');\n var req = this.requests[name][0];\n // If we have pending requests and a socket gets closed make a new one\n this.createSocket(req, options, function(err, newSocket) {\n if (err) {\n process.nextTick(function() {\n req.emit('error', err);\n });\n return;\n }\n newSocket.emit('free');\n });\n }\n};\n\nAgent.prototype.destroy = function() {\n var sets = [this.freeSockets, this.sockets];\n for (var s = 0; s < sets.length; s++) {\n var set = sets[s];\n var keys = Object.keys(set);\n for (var v = 0; v < keys.length; v++) {\n var setName = set[keys[v]];\n for (var n = 0; n < setName.length; n++) {\n setName[n].destroy();\n }\n }\n }\n};\n\nexports.globalAgent = new Agent();\n","'use strict';\n\nconst util = require('util');\nconst net = require('net');\nconst url = require('url');\nconst HTTPParser = require('http-parser-js').HTTPParser;\nconst assert = require('assert').ok;\nconst common = require('./_http_common');\nconst httpSocketSetup = common.httpSocketSetup;\nconst parsers = common.parsers;\nconst freeParser = common.freeParser;\nconst debug = common.debug;\nconst OutgoingMessage = require('./_http_outgoing').OutgoingMessage;\nconst Agent = require('./_http_agent');\nconst Buffer = require('buffer').Buffer;\n\n\nfunction ClientRequest(options, cb) {\n var self = this;\n OutgoingMessage.call(self);\n\n if (typeof options === 'string') {\n options = url.parse(options);\n if (!options.hostname) {\n throw new Error('Unable to determine the domain name');\n }\n } else {\n options = util._extend({}, options);\n }\n\n var agent = options.agent;\n var defaultAgent = options._defaultAgent || Agent.globalAgent;\n if (agent === false) {\n agent = new defaultAgent.constructor();\n } else if ((agent === null || agent === undefined) &&\n typeof options.createConnection !== 'function') {\n agent = defaultAgent;\n }\n self.agent = agent;\n\n var protocol = options.protocol || defaultAgent.protocol;\n var expectedProtocol = defaultAgent.protocol;\n if (self.agent && self.agent.protocol)\n expectedProtocol = self.agent.protocol;\n\n if (options.path && / /.test(options.path)) {\n // The actual regex is more like /[^A-Za-z0-9\\-._~!$&'()*+,;=/:@]/\n // with an additional rule for ignoring percentage-escaped characters\n // but that's a) hard to capture in a regular expression that performs\n // well, and b) possibly too restrictive for real-world usage. That's\n // why it only scans for spaces because those are guaranteed to create\n // an invalid request.\n throw new TypeError('Request path contains unescaped characters');\n } else if (protocol !== expectedProtocol) {\n throw new Error('Protocol \"' + protocol + '\" not supported. ' +\n 'Expected \"' + expectedProtocol + '\"');\n }\n\n const defaultPort = options.defaultPort ||\n self.agent && self.agent.defaultPort;\n\n var port = options.port = options.port || defaultPort || 80;\n var host = options.host = options.hostname || options.host || 'localhost';\n\n if (options.setHost === undefined) {\n var setHost = true;\n }\n\n self.socketPath = options.socketPath;\n\n var method = self.method = (options.method || 'GET').toUpperCase();\n if (!common._checkIsHttpToken(method)) {\n throw new TypeError('Method must be a valid HTTP token');\n }\n self.path = options.path || '/';\n if (cb) {\n self.once('response', cb);\n }\n\n if (!Array.isArray(options.headers)) {\n if (options.headers) {\n var keys = Object.keys(options.headers);\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n self.setHeader(key, options.headers[key]);\n }\n }\n if (host && !this.getHeader('host') && setHost) {\n var hostHeader = host;\n var posColon = -1;\n\n // For the Host header, ensure that IPv6 addresses are enclosed\n // in square brackets, as defined by URI formatting\n // https://tools.ietf.org/html/rfc3986#section-3.2.2\n if (-1 !== (posColon = hostHeader.indexOf(':')) &&\n -1 !== (posColon = hostHeader.indexOf(':', posColon)) &&\n '[' !== hostHeader[0]) {\n hostHeader = `[${hostHeader}]`;\n }\n\n if (port && +port !== defaultPort) {\n hostHeader += ':' + port;\n }\n this.setHeader('Host', hostHeader);\n }\n }\n\n if (options.auth && !this.getHeader('Authorization')) {\n //basic auth\n this.setHeader('Authorization', 'Basic ' +\n Buffer.from(options.auth).toString('base64'));\n }\n\n if (method === 'GET' ||\n method === 'HEAD' ||\n method === 'DELETE' ||\n method === 'OPTIONS' ||\n method === 'CONNECT') {\n self.useChunkedEncodingByDefault = false;\n } else {\n self.useChunkedEncodingByDefault = true;\n }\n\n if (Array.isArray(options.headers)) {\n self._storeHeader(self.method + ' ' + self.path + ' HTTP/1.1\\r\\n',\n options.headers);\n } else if (self.getHeader('expect')) {\n self._storeHeader(self.method + ' ' + self.path + ' HTTP/1.1\\r\\n',\n self._renderHeaders());\n }\n\n var called = false;\n if (self.socketPath) {\n self._last = true;\n self.shouldKeepAlive = false;\n const optionsPath = {\n path: self.socketPath\n };\n const newSocket = self.agent.createConnection(optionsPath, oncreate);\n if (newSocket && !called) {\n called = true;\n self.onSocket(newSocket);\n } else {\n return;\n }\n } else if (self.agent) {\n // If there is an agent we should default to Connection:keep-alive,\n // but only if the Agent will actually reuse the connection!\n // If it's not a keepAlive agent, and the maxSockets==Infinity, then\n // there's never a case where this socket will actually be reused\n if (!self.agent.keepAlive && !Number.isFinite(self.agent.maxSockets)) {\n self._last = true;\n self.shouldKeepAlive = false;\n } else {\n self._last = false;\n self.shouldKeepAlive = true;\n }\n self.agent.addRequest(self, options);\n } else {\n // No agent, default to Connection:close.\n self._last = true;\n self.shouldKeepAlive = false;\n if (typeof options.createConnection === 'function') {\n const newSocket = options.createConnection(options, oncreate);\n if (newSocket && !called) {\n called = true;\n self.onSocket(newSocket);\n } else {\n return;\n }\n } else {\n debug('CLIENT use net.createConnection', options);\n self.onSocket(net.createConnection(options));\n }\n }\n\n function oncreate(err, socket) {\n if (called)\n return;\n called = true;\n if (err) {\n process.nextTick(function() {\n self.emit('error', err);\n });\n return;\n }\n self.onSocket(socket);\n self._deferToConnect(null, null, function() {\n self._flush();\n self = null;\n });\n }\n\n self._deferToConnect(null, null, function() {\n self._flush();\n self = null;\n });\n\n this._ended = false;\n}\n\nutil.inherits(ClientRequest, OutgoingMessage);\n\nexports.ClientRequest = ClientRequest;\n\nClientRequest.prototype.aborted = undefined;\n\nClientRequest.prototype._finish = function() {\n // DTRACE_HTTP_CLIENT_REQUEST(this, this.connection);\n // LTTNG_HTTP_CLIENT_REQUEST(this, this.connection);\n // COUNTER_HTTP_CLIENT_REQUEST();\n OutgoingMessage.prototype._finish.call(this);\n};\n\nClientRequest.prototype._implicitHeader = function() {\n this._storeHeader(this.method + ' ' + this.path + ' HTTP/1.1\\r\\n',\n this._renderHeaders());\n};\n\nClientRequest.prototype.abort = function() {\n if (this.aborted === undefined) {\n process.nextTick(emitAbortNT, this);\n }\n // Mark as aborting so we can avoid sending queued request data\n // This is used as a truthy flag elsewhere. The use of Date.now is for\n // debugging purposes only.\n this.aborted = Date.now();\n\n // If we're aborting, we don't care about any more response data.\n if (this.res)\n this.res._dump();\n else\n this.once('response', function(res) {\n res._dump();\n });\n\n // In the event that we don't have a socket, we will pop out of\n // the request queue through handling in onSocket.\n if (this.socket) {\n // in-progress\n this.socket.destroy();\n }\n};\n\n\nfunction emitAbortNT(self) {\n self.emit('abort');\n}\n\n\nfunction createHangUpError() {\n var error = new Error('socket hang up');\n error.code = 'ECONNRESET';\n return error;\n}\n\n\nfunction socketCloseListener() {\n var socket = this;\n var req = socket._httpMessage;\n debug('HTTP socket close');\n\n // Pull through final chunk, if anything is buffered.\n // the ondata function will handle it properly, and this\n // is a no-op if no final chunk remains.\n socket.read();\n\n // NOTE: It's important to get parser here, because it could be freed by\n // the `socketOnData`.\n var parser = socket.parser;\n req.emit('close');\n if (req.res && req.res.readable) {\n // Socket closed before we emitted 'end' below.\n req.res.emit('aborted');\n var res = req.res;\n res.on('end', function() {\n res.emit('close');\n });\n res.push(null);\n } else if (!req.res && !req.socket._hadError) {\n // This socket error fired before we started to\n // receive a response. The error needs to\n // fire on the request.\n req.emit('error', createHangUpError());\n req.socket._hadError = true;\n }\n\n // Too bad. That output wasn't getting written.\n // This is pretty terrible that it doesn't raise an error.\n // Fixed better in v0.10\n if (req.output)\n req.output.length = 0;\n if (req.outputEncodings)\n req.outputEncodings.length = 0;\n\n if (parser) {\n parser.finish();\n freeParser(parser, req, socket);\n }\n}\n\nfunction socketErrorListener(err) {\n var socket = this;\n var req = socket._httpMessage;\n debug('SOCKET ERROR:', err.message, err.stack);\n\n if (req) {\n req.emit('error', err);\n // For Safety. Some additional errors might fire later on\n // and we need to make sure we don't double-fire the error event.\n req.socket._hadError = true;\n }\n\n // Handle any pending data\n socket.read();\n\n var parser = socket.parser;\n if (parser) {\n parser.finish();\n freeParser(parser, req, socket);\n }\n\n // Ensure that no further data will come out of the socket\n socket.removeListener('data', socketOnData);\n socket.removeListener('end', socketOnEnd);\n socket.destroy();\n}\n\nfunction freeSocketErrorListener(err) {\n var socket = this;\n debug('SOCKET ERROR on FREE socket:', err.message, err.stack);\n socket.destroy();\n socket.emit('agentRemove');\n}\n\nfunction socketOnEnd() {\n var socket = this;\n var req = this._httpMessage;\n var parser = this.parser;\n\n if (!req.res && !req.socket._hadError) {\n // If we don't have a response then we know that the socket\n // ended prematurely and we need to emit an error on the request.\n req.emit('error', createHangUpError());\n req.socket._hadError = true;\n }\n if (parser) {\n parser.finish();\n freeParser(parser, req, socket);\n }\n socket.destroy();\n}\n\nfunction socketOnData(d) {\n var socket = this;\n var req = this._httpMessage;\n var parser = this.parser;\n\n assert(parser && parser.socket === socket);\n\n var ret = parser.execute(d);\n if (ret instanceof Error) {\n debug('parse error');\n freeParser(parser, req, socket);\n socket.destroy();\n req.emit('error', ret);\n req.socket._hadError = true;\n } else if (parser.incoming && parser.incoming.upgrade) {\n // Upgrade or CONNECT\n var bytesParsed = ret;\n var res = parser.incoming;\n req.res = res;\n\n socket.removeListener('data', socketOnData);\n socket.removeListener('end', socketOnEnd);\n parser.finish();\n\n var bodyHead = d.slice(bytesParsed, d.length);\n\n var eventName = req.method === 'CONNECT' ? 'connect' : 'upgrade';\n if (req.listenerCount(eventName) > 0) {\n req.upgradeOrConnect = true;\n\n // detach the socket\n socket.emit('agentRemove');\n socket.removeListener('close', socketCloseListener);\n socket.removeListener('error', socketErrorListener);\n\n // TODO(isaacs): Need a way to reset a stream to fresh state\n // IE, not flowing, and not explicitly paused.\n socket._readableState.flowing = null;\n\n req.emit(eventName, res, socket, bodyHead);\n req.emit('close');\n } else {\n // Got Upgrade header or CONNECT method, but have no handler.\n socket.destroy();\n }\n freeParser(parser, req, socket);\n } else if (parser.incoming && parser.incoming.complete &&\n // When the status code is 100 (Continue), the server will\n // send a final response after this client sends a request\n // body. So, we must not free the parser.\n parser.incoming.statusCode !== 100) {\n socket.removeListener('data', socketOnData);\n socket.removeListener('end', socketOnEnd);\n freeParser(parser, req, socket);\n }\n}\n\n\n// client\nfunction parserOnIncomingClient(res, shouldKeepAlive) {\n var socket = this.socket;\n var req = socket._httpMessage;\n\n\n // propagate \"domain\" setting...\n if (req.domain && !res.domain) {\n debug('setting \"res.domain\"');\n res.domain = req.domain;\n }\n\n debug('AGENT incoming response!');\n\n if (req.res) {\n // We already have a response object, this means the server\n // sent a double response.\n socket.destroy();\n return;\n }\n req.res = res;\n\n // Responses to CONNECT request is handled as Upgrade.\n if (req.method === 'CONNECT') {\n res.upgrade = true;\n return 2; // skip body, and the rest\n }\n\n // Responses to HEAD requests are crazy.\n // HEAD responses aren't allowed to have an entity-body\n // but *can* have a content-length which actually corresponds\n // to the content-length of the entity-body had the request\n // been a GET.\n var isHeadResponse = req.method === 'HEAD';\n debug('AGENT isHeadResponse', isHeadResponse);\n\n if (res.statusCode === 100) {\n // restart the parser, as this is a continue message.\n delete req.res; // Clear res so that we don't hit double-responses.\n req.emit('continue');\n return true;\n }\n\n if (req.shouldKeepAlive && !shouldKeepAlive && !req.upgradeOrConnect) {\n // Server MUST respond with Connection:keep-alive for us to enable it.\n // If we've been upgraded (via WebSockets) we also shouldn't try to\n // keep the connection open.\n req.shouldKeepAlive = false;\n }\n\n\n // DTRACE_HTTP_CLIENT_RESPONSE(socket, req);\n // LTTNG_HTTP_CLIENT_RESPONSE(socket, req);\n // COUNTER_HTTP_CLIENT_RESPONSE();\n req.res = res;\n res.req = req;\n\n // add our listener first, so that we guarantee socket cleanup\n res.on('end', responseOnEnd);\n req.on('prefinish', requestOnPrefinish);\n var handled = req.emit('response', res);\n\n // If the user did not listen for the 'response' event, then they\n // can't possibly read the data, so we ._dump() it into the void\n // so that the socket doesn't hang there in a paused state.\n if (!handled)\n res._dump();\n\n return isHeadResponse;\n}\n\n// client\nfunction responseKeepAlive(res, req) {\n var socket = req.socket;\n\n if (!req.shouldKeepAlive) {\n if (socket.writable) {\n debug('AGENT socket.destroySoon()');\n socket.destroySoon();\n }\n assert(!socket.writable);\n } else {\n debug('AGENT socket keep-alive');\n if (req.timeoutCb) {\n socket.setTimeout(0, req.timeoutCb);\n req.timeoutCb = null;\n }\n socket.removeListener('close', socketCloseListener);\n socket.removeListener('error', socketErrorListener);\n socket.once('error', freeSocketErrorListener);\n // Mark this socket as available, AFTER user-added end\n // handlers have a chance to run.\n process.nextTick(emitFreeNT, socket);\n }\n}\n\nfunction responseOnEnd() {\n const res = this;\n const req = this.req;\n\n req._ended = true;\n if (!req.shouldKeepAlive || req.finished)\n responseKeepAlive(res, req);\n}\n\nfunction requestOnPrefinish() {\n const req = this;\n const res = this.res;\n\n if (!req.shouldKeepAlive)\n return;\n\n if (req._ended)\n responseKeepAlive(res, req);\n}\n\nfunction emitFreeNT(socket) {\n socket.emit('free');\n}\n\nfunction tickOnSocket(req, socket) {\n var parser = parsers.alloc();\n req.socket = socket;\n req.connection = socket;\n parser.reinitialize(HTTPParser.RESPONSE);\n parser.socket = socket;\n parser.incoming = null;\n parser.outgoing = req;\n req.parser = parser;\n\n socket.parser = parser;\n socket._httpMessage = req;\n\n // Setup \"drain\" propagation.\n httpSocketSetup(socket);\n\n // Propagate headers limit from request object to parser\n if (typeof req.maxHeadersCount === 'number') {\n parser.maxHeaderPairs = req.maxHeadersCount << 1;\n } else {\n // Set default value because parser may be reused from FreeList\n parser.maxHeaderPairs = 2000;\n }\n\n parser.onIncoming = parserOnIncomingClient;\n socket.removeListener('error', freeSocketErrorListener);\n socket.on('error', socketErrorListener);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('close', socketCloseListener);\n req.emit('socket', socket);\n}\n\nClientRequest.prototype.onSocket = function(socket) {\n process.nextTick(onSocketNT, this, socket);\n};\n\nfunction onSocketNT(req, socket) {\n if (req.aborted) {\n // If we were aborted while waiting for a socket, skip the whole thing.\n socket.emit('free');\n } else {\n tickOnSocket(req, socket);\n }\n}\n\nClientRequest.prototype._deferToConnect = function(method, arguments_, cb) {\n // This function is for calls that need to happen once the socket is\n // connected and writable. It's an important promisy thing for all the socket\n // calls that happen either now (when a socket is assigned) or\n // in the future (when a socket gets assigned out of the pool and is\n // eventually writable).\n var self = this;\n\n function callSocketMethod() {\n if (method)\n self.socket[method].apply(self.socket, arguments_);\n\n if (typeof cb === 'function')\n cb();\n }\n\n var onSocket = function() {\n if (self.socket.writable) {\n callSocketMethod();\n } else {\n self.socket.once('connect', callSocketMethod);\n }\n };\n\n if (!self.socket) {\n self.once('socket', onSocket);\n } else {\n onSocket();\n }\n};\n\nClientRequest.prototype.setTimeout = function(msecs, callback) {\n if (callback) this.once('timeout', callback);\n\n var self = this;\n function emitTimeout() {\n self.emit('timeout');\n }\n\n if (this.socket && this.socket.writable) {\n if (this.timeoutCb)\n this.socket.setTimeout(0, this.timeoutCb);\n this.timeoutCb = emitTimeout;\n this.socket.setTimeout(msecs, emitTimeout);\n return this;\n }\n\n // Set timeoutCb so that it'll get cleaned up on request end\n this.timeoutCb = emitTimeout;\n if (this.socket) {\n var sock = this.socket;\n this.socket.once('connect', function() {\n sock.setTimeout(msecs, emitTimeout);\n });\n return this;\n }\n\n this.once('socket', function(sock) {\n sock.setTimeout(msecs, emitTimeout);\n });\n\n return this;\n};\n\nClientRequest.prototype.setNoDelay = function() {\n const argsLen = arguments.length;\n const args = new Array(argsLen);\n for (var i = 0; i < argsLen; i++)\n args[i] = arguments[i];\n this._deferToConnect('setNoDelay', args);\n};\nClientRequest.prototype.setSocketKeepAlive = function() {\n const argsLen = arguments.length;\n const args = new Array(argsLen);\n for (var i = 0; i < argsLen; i++)\n args[i] = arguments[i];\n this._deferToConnect('setKeepAlive', args);\n};\n\nClientRequest.prototype.clearTimeout = function(cb) {\n this.setTimeout(0, cb);\n};\n","'use strict';\n\nconst binding = require('http-parser-js');\nconst methods = binding.methods;\nconst HTTPParser = binding.HTTPParser;\n\nconst FreeList = require('freelist').FreeList;\nconst incoming = require('./_http_incoming');\nconst IncomingMessage = incoming.IncomingMessage;\nconst readStart = incoming.readStart;\nconst readStop = incoming.readStop;\n\nconst debug = require('util').debuglog('http');\nexports.debug = debug;\n\nexports.CRLF = '\\r\\n';\nexports.chunkExpression = /chunk/i;\nexports.continueExpression = /100-continue/i;\nexports.methods = methods;\n\nconst kOnHeaders = HTTPParser.kOnHeaders | 0;\nconst kOnHeadersComplete = HTTPParser.kOnHeadersComplete | 0;\nconst kOnBody = HTTPParser.kOnBody | 0;\nconst kOnMessageComplete = HTTPParser.kOnMessageComplete | 0;\nconst kOnExecute = HTTPParser.kOnExecute | 0;\n\n// Only called in the slow case where slow means\n// that the request headers were either fragmented\n// across multiple TCP packets or too large to be\n// processed in a single run. This method is also\n// called to process trailing HTTP headers.\nfunction parserOnHeaders(headers, url) {\n // Once we exceeded headers limit - stop collecting them\n if (this.maxHeaderPairs <= 0 ||\n this._headers.length < this.maxHeaderPairs) {\n this._headers = this._headers.concat(headers);\n }\n this._url += url;\n}\n\n// `headers` and `url` are set only if .onHeaders() has not been called for\n// this request.\n// `url` is not set for response parsers but that's not applicable here since\n// all our parsers are request parsers.\nfunction parserOnHeadersComplete(versionMajor, versionMinor, headers, method,\n url, statusCode, statusMessage, upgrade,\n shouldKeepAlive) {\n var parser = this;\n\n if (!headers) {\n headers = parser._headers;\n parser._headers = [];\n }\n\n if (!url) {\n url = parser._url;\n parser._url = '';\n }\n\n parser.incoming = new IncomingMessage(parser.socket);\n parser.incoming.httpVersionMajor = versionMajor;\n parser.incoming.httpVersionMinor = versionMinor;\n parser.incoming.httpVersion = versionMajor + '.' + versionMinor;\n parser.incoming.url = url;\n\n var n = headers.length;\n\n // If parser.maxHeaderPairs <= 0 assume that there's no limit.\n if (parser.maxHeaderPairs > 0)\n n = Math.min(n, parser.maxHeaderPairs);\n\n parser.incoming._addHeaderLines(headers, n);\n\n if (typeof method === 'number') {\n // server only\n parser.incoming.method = methods[method];\n } else {\n // client only\n parser.incoming.statusCode = statusCode;\n parser.incoming.statusMessage = statusMessage;\n }\n\n // The client made non-upgrade request, and server is just advertising\n // supported protocols.\n //\n // See RFC7230 Section 6.7\n //\n // NOTE: RegExp below matches `upgrade` in `Connection: abc, upgrade, def`\n // header.\n if (upgrade &&\n parser.outgoing !== null &&\n (parser.outgoing._headers.upgrade === undefined ||\n !/(^|\\W)upgrade(\\W|$)/i.test(parser.outgoing._headers.connection))) {\n upgrade = false;\n }\n\n parser.incoming.upgrade = upgrade;\n\n var skipBody = 0; // response to HEAD or CONNECT\n\n if (!upgrade) {\n // For upgraded connections and CONNECT method request, we'll emit this\n // after parser.execute so that we can capture the first part of the new\n // protocol.\n skipBody = parser.onIncoming(parser.incoming, shouldKeepAlive);\n }\n\n if (typeof skipBody !== 'number')\n return skipBody ? 1 : 0;\n else\n return skipBody;\n}\n\n// XXX This is a mess.\n// TODO: http.Parser should be a Writable emits request/response events.\nfunction parserOnBody(b, start, len) {\n var parser = this;\n var stream = parser.incoming;\n\n // if the stream has already been removed, then drop it.\n if (!stream)\n return;\n\n var socket = stream.socket;\n\n // pretend this was the result of a stream._read call.\n if (len > 0 && !stream._dumped) {\n var slice = b.slice(start, start + len);\n var ret = stream.push(slice);\n if (!ret)\n readStop(socket);\n }\n}\n\nfunction parserOnMessageComplete() {\n var parser = this;\n var stream = parser.incoming;\n\n if (stream) {\n stream.complete = true;\n // Emit any trailing headers.\n var headers = parser._headers;\n if (headers) {\n parser.incoming._addHeaderLines(headers, headers.length);\n parser._headers = [];\n parser._url = '';\n }\n\n // For emit end event\n stream.push(null);\n }\n\n // force to read the next incoming message\n readStart(parser.socket);\n}\n\n\nvar parsers = new FreeList('parsers', 1000, function() {\n var parser = new HTTPParser(HTTPParser.REQUEST);\n\n parser._headers = [];\n parser._url = '';\n parser._consumed = false;\n\n parser.socket = null;\n parser.incoming = null;\n parser.outgoing = null;\n\n // Only called in the slow case where slow means\n // that the request headers were either fragmented\n // across multiple TCP packets or too large to be\n // processed in a single run. This method is also\n // called to process trailing HTTP headers.\n parser[kOnHeaders] = parserOnHeaders;\n parser[kOnHeadersComplete] = parserOnHeadersComplete;\n parser[kOnBody] = parserOnBody;\n parser[kOnMessageComplete] = parserOnMessageComplete;\n parser[kOnExecute] = null;\n\n return parser;\n});\nexports.parsers = parsers;\n\n\n// Free the parser and also break any links that it\n// might have to any other things.\n// TODO: All parser data should be attached to a\n// single object, so that it can be easily cleaned\n// up by doing `parser.data = {}`, which should\n// be done in FreeList.free. `parsers.free(parser)`\n// should be all that is needed.\nfunction freeParser(parser, req, socket) {\n if (parser) {\n parser._headers = [];\n parser.onIncoming = null;\n if (parser._consumed)\n parser.unconsume();\n parser._consumed = false;\n if (parser.socket)\n parser.socket.parser = null;\n parser.socket = null;\n parser.incoming = null;\n parser.outgoing = null;\n parser[kOnExecute] = null;\n if (parsers.free(parser) === false)\n parser.close();\n parser = null;\n }\n if (req) {\n req.parser = null;\n }\n if (socket) {\n socket.parser = null;\n }\n}\nexports.freeParser = freeParser;\n\n\nfunction ondrain() {\n if (this._httpMessage) this._httpMessage.emit('drain');\n}\n\n\nfunction httpSocketSetup(socket) {\n socket.removeListener('drain', ondrain);\n socket.on('drain', ondrain);\n}\nexports.httpSocketSetup = httpSocketSetup;\n\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n *\n * Allowed characters in an HTTP token:\n * ^_`a-z 94-122\n * A-Z 65-90\n * - 45\n * 0-9 48-57\n * ! 33\n * #$%&' 35-39\n * *+ 42-43\n * . 46\n * | 124\n * ~ 126\n *\n * This implementation of checkIsHttpToken() loops over the string instead of\n * using a regular expression since the former is up to 180% faster with v8 4.9\n * depending on the string length (the shorter the string, the larger the\n * performance difference)\n *\n * Additionally, checkIsHttpToken() is currently designed to be inlinable by v8,\n * so take care when making changes to the implementation so that the source\n * code size does not exceed v8's default max_inlined_source_size setting.\n **/\nfunction isValidTokenChar(ch) {\n if (ch >= 94 && ch <= 122)\n return true;\n if (ch >= 65 && ch <= 90)\n return true;\n if (ch === 45)\n return true;\n if (ch >= 48 && ch <= 57)\n return true;\n if (ch === 34 || ch === 40 || ch === 41 || ch === 44)\n return false;\n if (ch >= 33 && ch <= 46)\n return true;\n if (ch === 124 || ch === 126)\n return true;\n return false;\n}\nfunction checkIsHttpToken(val) {\n if (typeof val !== 'string' || val.length === 0)\n return false;\n if (!isValidTokenChar(val.charCodeAt(0)))\n return false;\n const len = val.length;\n if (len > 1) {\n if (!isValidTokenChar(val.charCodeAt(1)))\n return false;\n if (len > 2) {\n if (!isValidTokenChar(val.charCodeAt(2)))\n return false;\n if (len > 3) {\n if (!isValidTokenChar(val.charCodeAt(3)))\n return false;\n for (var i = 4; i < len; i++) {\n if (!isValidTokenChar(val.charCodeAt(i)))\n return false;\n }\n }\n }\n }\n return true;\n}\nexports._checkIsHttpToken = checkIsHttpToken;\n\n/**\n * True if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n *\n * checkInvalidHeaderChar() is currently designed to be inlinable by v8,\n * so take care when making changes to the implementation so that the source\n * code size does not exceed v8's default max_inlined_source_size setting.\n **/\nfunction checkInvalidHeaderChar(val) {\n val += '';\n if (val.length < 1)\n return false;\n var c = val.charCodeAt(0);\n if ((c <= 31 && c !== 9) || c > 255 || c === 127)\n return true;\n if (val.length < 2)\n return false;\n c = val.charCodeAt(1);\n if ((c <= 31 && c !== 9) || c > 255 || c === 127)\n return true;\n if (val.length < 3)\n return false;\n c = val.charCodeAt(2);\n if ((c <= 31 && c !== 9) || c > 255 || c === 127)\n return true;\n for (var i = 3; i < val.length; ++i) {\n c = val.charCodeAt(i);\n if ((c <= 31 && c !== 9) || c > 255 || c === 127)\n return true;\n }\n return false;\n}\nexports._checkInvalidHeaderChar = checkInvalidHeaderChar;\n","'use strict';\n\nconst util = require('util');\nconst Stream = require('stream');\n\nfunction readStart(socket) {\n if (socket && !socket._paused && socket.readable)\n socket.resume();\n}\nexports.readStart = readStart;\n\nfunction readStop(socket) {\n if (socket)\n socket.pause();\n}\nexports.readStop = readStop;\n\n\n/* Abstract base class for ServerRequest and ClientResponse. */\nfunction IncomingMessage(socket) {\n Stream.Readable.call(this);\n\n // Set this to `true` so that stream.Readable won't attempt to read more\n // data on `IncomingMessage#push` (see `maybeReadMore` in\n // `_stream_readable.js`). This is important for proper tracking of\n // `IncomingMessage#_consuming` which is used to dump requests that users\n // haven't attempted to read.\n this._readableState.readingMore = true;\n\n this.socket = socket;\n this.connection = socket;\n\n this.httpVersionMajor = null;\n this.httpVersionMinor = null;\n this.httpVersion = null;\n this.complete = false;\n this.headers = {};\n this.rawHeaders = [];\n this.trailers = {};\n this.rawTrailers = [];\n\n this.readable = true;\n\n this.upgrade = null;\n\n // request (server) only\n this.url = '';\n this.method = null;\n\n // response (client) only\n this.statusCode = null;\n this.statusMessage = null;\n this.client = socket;\n\n // flag for backwards compatibility grossness.\n this._consuming = false;\n\n // flag for when we decide that this message cannot possibly be\n // read by the user, so there's no point continuing to handle it.\n this._dumped = false;\n}\nutil.inherits(IncomingMessage, Stream.Readable);\n\n\nexports.IncomingMessage = IncomingMessage;\n\n\nIncomingMessage.prototype.setTimeout = function(msecs, callback) {\n if (callback)\n this.on('timeout', callback);\n this.socket.setTimeout(msecs);\n return this;\n};\n\n\nIncomingMessage.prototype.read = function(n) {\n if (!this._consuming)\n this._readableState.readingMore = false;\n this._consuming = true;\n this.read = Stream.Readable.prototype.read;\n return this.read(n);\n};\n\n\nIncomingMessage.prototype._read = function(n) {\n // We actually do almost nothing here, because the parserOnBody\n // function fills up our internal buffer directly. However, we\n // do need to unpause the underlying socket so that it flows.\n if (this.socket.readable)\n readStart(this.socket);\n};\n\n\n// It's possible that the socket will be destroyed, and removed from\n// any messages, before ever calling this. In that case, just skip\n// it, since something else is destroying this connection anyway.\nIncomingMessage.prototype.destroy = function(error) {\n if (this.socket)\n this.socket.destroy(error);\n};\n\n\nIncomingMessage.prototype._addHeaderLines = function(headers, n) {\n if (headers && headers.length) {\n var raw, dest;\n if (this.complete) {\n raw = this.rawTrailers;\n dest = this.trailers;\n } else {\n raw = this.rawHeaders;\n dest = this.headers;\n }\n\n for (var i = 0; i < n; i += 2) {\n var k = headers[i];\n var v = headers[i + 1];\n raw.push(k);\n raw.push(v);\n this._addHeaderLine(k, v, dest);\n }\n }\n};\n\n\n// Add the given (field, value) pair to the message\n//\n// Per RFC2616, section 4.2 it is acceptable to join multiple instances of the\n// same header with a ', ' if the header in question supports specification of\n// multiple values this way. If not, we declare the first instance the winner\n// and drop the second. Extended header fields (those beginning with 'x-') are\n// always joined.\nIncomingMessage.prototype._addHeaderLine = function(field, value, dest) {\n field = field.toLowerCase();\n switch (field) {\n // Array headers:\n case 'set-cookie':\n if (dest[field] !== undefined) {\n dest[field].push(value);\n } else {\n dest[field] = [value];\n }\n break;\n\n /* eslint-disable max-len */\n // list is taken from:\n // https://mxr.mozilla.org/mozilla/source/netwerk/protocol/http/src/nsHttpHeaderArray.cpp\n /* eslint-enable max-len */\n case 'content-type':\n case 'content-length':\n case 'user-agent':\n case 'referer':\n case 'host':\n case 'authorization':\n case 'proxy-authorization':\n case 'if-modified-since':\n case 'if-unmodified-since':\n case 'from':\n case 'location':\n case 'max-forwards':\n case 'retry-after':\n case 'etag':\n case 'last-modified':\n case 'server':\n case 'age':\n case 'expires':\n // drop duplicates\n if (dest[field] === undefined)\n dest[field] = value;\n break;\n\n default:\n // make comma-separated list\n if (typeof dest[field] === 'string') {\n dest[field] += ', ' + value;\n } else {\n dest[field] = value;\n }\n }\n};\n\n\n// Call this instead of resume() if we want to just\n// dump all the data to /dev/null\nIncomingMessage.prototype._dump = function() {\n if (!this._dumped) {\n this._dumped = true;\n this.resume();\n }\n};\n","'use strict';\n\nconst assert = require('assert').ok;\nconst Stream = require('stream');\nconst timers = require('timers');\nconst util = require('util');\nconst internalUtil = util;\nconst Buffer = require('buffer').Buffer;\nconst common = require('./_http_common');\n\nconst CRLF = common.CRLF;\nconst chunkExpression = common.chunkExpression;\nconst debug = common.debug;\n\nconst connectionExpression = /^Connection$/i;\nconst transferEncodingExpression = /^Transfer-Encoding$/i;\nconst closeExpression = /close/i;\nconst contentLengthExpression = /^Content-Length$/i;\nconst dateExpression = /^Date$/i;\nconst expectExpression = /^Expect$/i;\nconst trailerExpression = /^Trailer$/i;\n\nconst automaticHeaders = {\n connection: true,\n 'content-length': true,\n 'transfer-encoding': true,\n date: true\n};\n\n\nvar dateCache;\nfunction utcDate() {\n if (!dateCache) {\n var d = new Date();\n dateCache = d.toUTCString();\n timers.enroll(utcDate, 1000 - d.getMilliseconds());\n timers._unrefActive(utcDate);\n }\n return dateCache;\n}\nutcDate._onTimeout = function() {\n dateCache = undefined;\n};\n\n\nfunction OutgoingMessage() {\n Stream.call(this);\n\n // Queue that holds all currently pending data, until the response will be\n // assigned to the socket (until it will its turn in the HTTP pipeline).\n this.output = [];\n this.outputEncodings = [];\n this.outputCallbacks = [];\n\n // `outputSize` is an approximate measure of how much data is queued on this\n // response. `_onPendingData` will be invoked to update similar global\n // per-connection counter. That counter will be used to pause/unpause the\n // TCP socket and HTTP Parser and thus handle the backpressure.\n this.outputSize = 0;\n\n this.writable = true;\n\n this._last = false;\n this.chunkedEncoding = false;\n this.shouldKeepAlive = true;\n this.useChunkedEncodingByDefault = true;\n this.sendDate = false;\n this._removedHeader = {};\n\n this._contentLength = null;\n this._hasBody = true;\n this._trailer = '';\n\n this.finished = false;\n this._headerSent = false;\n\n this.socket = null;\n this.connection = null;\n this._header = null;\n this._headers = null;\n this._headerNames = {};\n\n this._onPendingData = null;\n}\nutil.inherits(OutgoingMessage, Stream);\n\n\nexports.OutgoingMessage = OutgoingMessage;\n\n\nOutgoingMessage.prototype.setTimeout = function(msecs, callback) {\n\n if (callback) {\n this.on('timeout', callback);\n }\n\n if (!this.socket) {\n this.once('socket', function(socket) {\n socket.setTimeout(msecs);\n });\n } else {\n this.socket.setTimeout(msecs);\n }\n return this;\n};\n\n\n// It's possible that the socket will be destroyed, and removed from\n// any messages, before ever calling this. In that case, just skip\n// it, since something else is destroying this connection anyway.\nOutgoingMessage.prototype.destroy = function(error) {\n if (this.socket)\n this.socket.destroy(error);\n else\n this.once('socket', function(socket) {\n socket.destroy(error);\n });\n};\n\n\n// This abstract either writing directly to the socket or buffering it.\nOutgoingMessage.prototype._send = function(data, encoding, callback) {\n // This is a shameful hack to get the headers and first body chunk onto\n // the same packet. Future versions of Node are going to take care of\n // this at a lower level and in a more general way.\n if (!this._headerSent) {\n if (typeof data === 'string' &&\n encoding !== 'hex' &&\n encoding !== 'base64') {\n data = this._header + data;\n } else {\n this.output.unshift(this._header);\n this.outputEncodings.unshift('binary');\n this.outputCallbacks.unshift(null);\n this.outputSize += this._header.length;\n if (typeof this._onPendingData === 'function')\n this._onPendingData(this._header.length);\n }\n this._headerSent = true;\n }\n return this._writeRaw(data, encoding, callback);\n};\n\n\nOutgoingMessage.prototype._writeRaw = function(data, encoding, callback) {\n if (typeof encoding === 'function') {\n callback = encoding;\n encoding = null;\n }\n\n var connection = this.connection;\n if (connection &&\n connection._httpMessage === this &&\n connection.writable &&\n !connection.destroyed) {\n // There might be pending data in the this.output buffer.\n var outputLength = this.output.length;\n if (outputLength > 0) {\n this._flushOutput(connection);\n } else if (data.length === 0) {\n if (typeof callback === 'function')\n process.nextTick(callback);\n return true;\n }\n\n // Directly write to socket.\n return connection.write(data, encoding, callback);\n } else if (connection && connection.destroyed) {\n // The socket was destroyed. If we're still trying to write to it,\n // then we haven't gotten the 'close' event yet.\n return false;\n } else {\n // buffer, as long as we're not destroyed.\n return this._buffer(data, encoding, callback);\n }\n};\n\n\nOutgoingMessage.prototype._buffer = function(data, encoding, callback) {\n this.output.push(data);\n this.outputEncodings.push(encoding);\n this.outputCallbacks.push(callback);\n this.outputSize += data.length;\n if (typeof this._onPendingData === 'function')\n this._onPendingData(data.length);\n return false;\n};\n\n\nOutgoingMessage.prototype._storeHeader = function(firstLine, headers) {\n // firstLine in the case of request is: 'GET /index.html HTTP/1.1\\r\\n'\n // in the case of response it is: 'HTTP/1.1 200 OK\\r\\n'\n var state = {\n sentConnectionHeader: false,\n sentContentLengthHeader: false,\n sentTransferEncodingHeader: false,\n sentDateHeader: false,\n sentExpect: false,\n sentTrailer: false,\n messageHeader: firstLine\n };\n\n if (headers) {\n var keys = Object.keys(headers);\n var isArray = Array.isArray(headers);\n var field, value;\n\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n if (isArray) {\n field = headers[key][0];\n value = headers[key][1];\n } else {\n field = key;\n value = headers[key];\n }\n\n if (Array.isArray(value)) {\n for (var j = 0; j < value.length; j++) {\n storeHeader(this, state, field, value[j]);\n }\n } else {\n storeHeader(this, state, field, value);\n }\n }\n }\n\n // Date header\n if (this.sendDate === true && state.sentDateHeader === false) {\n state.messageHeader += 'Date: ' + utcDate() + CRLF;\n }\n\n // Force the connection to close when the response is a 204 No Content or\n // a 304 Not Modified and the user has set a \"Transfer-Encoding: chunked\"\n // header.\n //\n // RFC 2616 mandates that 204 and 304 responses MUST NOT have a body but\n // node.js used to send out a zero chunk anyway to accommodate clients\n // that don't have special handling for those responses.\n //\n // It was pointed out that this might confuse reverse proxies to the point\n // of creating security liabilities, so suppress the zero chunk and force\n // the connection to close.\n var statusCode = this.statusCode;\n if ((statusCode === 204 || statusCode === 304) &&\n this.chunkedEncoding === true) {\n debug(statusCode + ' response should not use chunked encoding,' +\n ' closing connection.');\n this.chunkedEncoding = false;\n this.shouldKeepAlive = false;\n }\n\n // keep-alive logic\n if (this._removedHeader.connection) {\n this._last = true;\n this.shouldKeepAlive = false;\n } else if (state.sentConnectionHeader === false) {\n var shouldSendKeepAlive = this.shouldKeepAlive &&\n (state.sentContentLengthHeader ||\n this.useChunkedEncodingByDefault ||\n this.agent);\n if (shouldSendKeepAlive) {\n state.messageHeader += 'Connection: keep-alive\\r\\n';\n } else {\n this._last = true;\n state.messageHeader += 'Connection: close\\r\\n';\n }\n }\n\n if (state.sentContentLengthHeader === false &&\n state.sentTransferEncodingHeader === false) {\n if (!this._hasBody) {\n // Make sure we don't end the 0\\r\\n\\r\\n at the end of the message.\n this.chunkedEncoding = false;\n } else if (!this.useChunkedEncodingByDefault) {\n this._last = true;\n } else {\n if (!state.sentTrailer &&\n !this._removedHeader['content-length'] &&\n typeof this._contentLength === 'number') {\n state.messageHeader += 'Content-Length: ' + this._contentLength +\n '\\r\\n';\n } else if (!this._removedHeader['transfer-encoding']) {\n state.messageHeader += 'Transfer-Encoding: chunked\\r\\n';\n this.chunkedEncoding = true;\n } else {\n // We should only be able to get here if both Content-Length and\n // Transfer-Encoding are removed by the user.\n // See: test/parallel/test-http-remove-header-stays-removed.js\n debug('Both Content-Length and Transfer-Encoding are removed');\n }\n }\n }\n\n this._header = state.messageHeader + CRLF;\n this._headerSent = false;\n\n // wait until the first body chunk, or close(), is sent to flush,\n // UNLESS we're sending Expect: 100-continue.\n if (state.sentExpect) this._send('');\n};\n\nfunction storeHeader(self, state, field, value) {\n if (!common._checkIsHttpToken(field)) {\n throw new TypeError(\n 'Header name must be a valid HTTP Token [\"' + field + '\"]');\n }\n if (common._checkInvalidHeaderChar(value) === true) {\n throw new TypeError('The header content contains invalid characters');\n }\n state.messageHeader += field + ': ' + escapeHeaderValue(value) + CRLF;\n\n if (connectionExpression.test(field)) {\n state.sentConnectionHeader = true;\n if (closeExpression.test(value)) {\n self._last = true;\n } else {\n self.shouldKeepAlive = true;\n }\n\n } else if (transferEncodingExpression.test(field)) {\n state.sentTransferEncodingHeader = true;\n if (chunkExpression.test(value)) self.chunkedEncoding = true;\n\n } else if (contentLengthExpression.test(field)) {\n state.sentContentLengthHeader = true;\n } else if (dateExpression.test(field)) {\n state.sentDateHeader = true;\n } else if (expectExpression.test(field)) {\n state.sentExpect = true;\n } else if (trailerExpression.test(field)) {\n state.sentTrailer = true;\n }\n}\n\n\nOutgoingMessage.prototype.setHeader = function(name, value) {\n if (!common._checkIsHttpToken(name))\n throw new TypeError(\n 'Header name must be a valid HTTP Token [\"' + name + '\"]');\n if (typeof name !== 'string')\n throw new TypeError('\"name\" should be a string in setHeader(name, value)');\n if (value === undefined)\n throw new Error('\"value\" required in setHeader(\"' + name + '\", value)');\n if (this._header)\n throw new Error('Can\\'t set headers after they are sent.');\n if (common._checkInvalidHeaderChar(value) === true) {\n throw new TypeError('The header content contains invalid characters');\n }\n if (this._headers === null)\n this._headers = {};\n\n var key = name.toLowerCase();\n this._headers[key] = value;\n this._headerNames[key] = name;\n\n if (automaticHeaders[key])\n this._removedHeader[key] = false;\n};\n\n\nOutgoingMessage.prototype.getHeader = function(name) {\n if (arguments.length < 1) {\n throw new Error('\"name\" argument is required for getHeader(name)');\n }\n\n if (!this._headers) return;\n\n var key = name.toLowerCase();\n return this._headers[key];\n};\n\n\nOutgoingMessage.prototype.removeHeader = function(name) {\n if (arguments.length < 1) {\n throw new Error('\"name\" argument is required for removeHeader(name)');\n }\n\n if (this._header) {\n throw new Error('Can\\'t remove headers after they are sent');\n }\n\n var key = name.toLowerCase();\n\n if (key === 'date')\n this.sendDate = false;\n else if (automaticHeaders[key])\n this._removedHeader[key] = true;\n\n if (this._headers) {\n delete this._headers[key];\n delete this._headerNames[key];\n }\n};\n\n\nOutgoingMessage.prototype._renderHeaders = function() {\n if (this._header) {\n throw new Error('Can\\'t render headers after they are sent to the client');\n }\n\n var headersMap = this._headers;\n if (!headersMap) return {};\n\n var headers = {};\n var keys = Object.keys(headersMap);\n var headerNames = this._headerNames;\n\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n headers[headerNames[key]] = headersMap[key];\n }\n return headers;\n};\n\n\nObject.defineProperty(OutgoingMessage.prototype, 'headersSent', {\n configurable: true,\n enumerable: true,\n get: function() { return !!this._header; }\n});\n\n\nOutgoingMessage.prototype.write = function(chunk, encoding, callback) {\n if (this.finished) {\n var err = new Error('write after end');\n process.nextTick(writeAfterEndNT, this, err, callback);\n\n return true;\n }\n\n if (!this._header) {\n this._implicitHeader();\n }\n\n if (!this._hasBody) {\n debug('This type of response MUST NOT have a body. ' +\n 'Ignoring write() calls.');\n return true;\n }\n\n if (typeof chunk !== 'string' && !(chunk instanceof Buffer)) {\n throw new TypeError('First argument must be a string or Buffer');\n }\n\n\n // If we get an empty string or buffer, then just do nothing, and\n // signal the user to keep writing.\n if (chunk.length === 0) return true;\n\n var len, ret;\n if (this.chunkedEncoding) {\n if (typeof chunk === 'string' &&\n encoding !== 'hex' &&\n encoding !== 'base64' &&\n encoding !== 'binary') {\n len = Buffer.byteLength(chunk, encoding);\n chunk = len.toString(16) + CRLF + chunk + CRLF;\n ret = this._send(chunk, encoding, callback);\n } else {\n // buffer, or a non-toString-friendly encoding\n if (typeof chunk === 'string')\n len = Buffer.byteLength(chunk, encoding);\n else\n len = chunk.length;\n\n if (this.connection && !this.connection.corked) {\n this.connection.cork();\n process.nextTick(connectionCorkNT, this.connection);\n }\n this._send(len.toString(16), 'binary', null);\n this._send(crlf_buf, null, null);\n this._send(chunk, encoding, null);\n ret = this._send(crlf_buf, null, callback);\n }\n } else {\n ret = this._send(chunk, encoding, callback);\n }\n\n debug('write ret = ' + ret);\n return ret;\n};\n\n\nfunction writeAfterEndNT(self, err, callback) {\n self.emit('error', err);\n if (callback) callback(err);\n}\n\n\nfunction connectionCorkNT(conn) {\n conn.uncork();\n}\n\n\nfunction escapeHeaderValue(value) {\n // Protect against response splitting. The regex test is there to\n // minimize the performance impact in the common case.\n return /[\\r\\n]/.test(value) ? value.replace(/[\\r\\n]+[ \\t]*/g, '') : value;\n}\n\n\nOutgoingMessage.prototype.addTrailers = function(headers) {\n this._trailer = '';\n var keys = Object.keys(headers);\n var isArray = Array.isArray(headers);\n var field, value;\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n if (isArray) {\n field = headers[key][0];\n value = headers[key][1];\n } else {\n field = key;\n value = headers[key];\n }\n if (!common._checkIsHttpToken(field)) {\n throw new TypeError(\n 'Trailer name must be a valid HTTP Token [\"' + field + '\"]');\n }\n if (common._checkInvalidHeaderChar(value) === true) {\n throw new TypeError('The header content contains invalid characters');\n }\n this._trailer += field + ': ' + escapeHeaderValue(value) + CRLF;\n }\n};\n\n\nconst crlf_buf = Buffer.from('\\r\\n');\n\n\nOutgoingMessage.prototype.end = function(data, encoding, callback) {\n if (typeof data === 'function') {\n callback = data;\n data = null;\n } else if (typeof encoding === 'function') {\n callback = encoding;\n encoding = null;\n }\n\n if (data && typeof data !== 'string' && !(data instanceof Buffer)) {\n throw new TypeError('First argument must be a string or Buffer');\n }\n\n if (this.finished) {\n return false;\n }\n\n if (!this._header) {\n if (data) {\n if (typeof data === 'string')\n this._contentLength = Buffer.byteLength(data, encoding);\n else\n this._contentLength = data.length;\n } else {\n this._contentLength = 0;\n }\n this._implicitHeader();\n }\n\n if (data && !this._hasBody) {\n debug('This type of response MUST NOT have a body. ' +\n 'Ignoring data passed to end().');\n data = null;\n }\n\n if (this.connection && data)\n this.connection.cork();\n\n var ret;\n if (data) {\n // Normal body write.\n this.write(data, encoding);\n }\n\n if (typeof callback === 'function')\n this.once('finish', callback);\n\n const finish = () => {\n this.emit('finish');\n };\n\n if (this._hasBody && this.chunkedEncoding) {\n ret = this._send('0\\r\\n' + this._trailer + '\\r\\n', 'binary', finish);\n } else {\n // Force a flush, HACK.\n ret = this._send('', 'binary', finish);\n }\n\n if (this.connection && data)\n this.connection.uncork();\n\n this.finished = true;\n\n // There is the first message on the outgoing queue, and we've sent\n // everything to the socket.\n debug('outgoing message end.');\n if (this.output.length === 0 &&\n this.connection &&\n this.connection._httpMessage === this) {\n this._finish();\n }\n\n return ret;\n};\n\n\nOutgoingMessage.prototype._finish = function() {\n assert(this.connection);\n this.emit('prefinish');\n};\n\n\n// This logic is probably a bit confusing. Let me explain a bit:\n//\n// In both HTTP servers and clients it is possible to queue up several\n// outgoing messages. This is easiest to imagine in the case of a client.\n// Take the following situation:\n//\n// req1 = client.request('GET', '/');\n// req2 = client.request('POST', '/');\n//\n// When the user does\n//\n// req2.write('hello world\\n');\n//\n// it's possible that the first request has not been completely flushed to\n// the socket yet. Thus the outgoing messages need to be prepared to queue\n// up data internally before sending it on further to the socket's queue.\n//\n// This function, outgoingFlush(), is called by both the Server and Client\n// to attempt to flush any pending messages out to the socket.\nOutgoingMessage.prototype._flush = function() {\n var socket = this.socket;\n var ret;\n\n if (socket && socket.writable) {\n // There might be remaining data in this.output; write it out\n ret = this._flushOutput(socket);\n\n if (this.finished) {\n // This is a queue to the server or client to bring in the next this.\n this._finish();\n } else if (ret) {\n // This is necessary to prevent https from breaking\n this.emit('drain');\n }\n }\n};\n\nOutgoingMessage.prototype._flushOutput = function _flushOutput(socket) {\n var ret;\n var outputLength = this.output.length;\n if (outputLength <= 0)\n return ret;\n\n var output = this.output;\n var outputEncodings = this.outputEncodings;\n var outputCallbacks = this.outputCallbacks;\n socket.cork();\n for (var i = 0; i < outputLength; i++) {\n ret = socket.write(output[i], outputEncodings[i],\n outputCallbacks[i]);\n }\n socket.uncork();\n\n this.output = [];\n this.outputEncodings = [];\n this.outputCallbacks = [];\n if (typeof this._onPendingData === 'function')\n this._onPendingData(-this.outputSize);\n this.outputSize = 0;\n\n return ret;\n};\n\n\nOutgoingMessage.prototype.flushHeaders = function() {\n if (!this._header) {\n this._implicitHeader();\n }\n\n // Force-flush the headers.\n this._send('');\n};\n\nOutgoingMessage.prototype.flush = internalUtil.deprecate(function() {\n this.flushHeaders();\n}, 'OutgoingMessage.flush is deprecated. Use flushHeaders instead.');\n","'use strict';\n\nconst util = require('util');\nconst net = require('net');\nconst HTTPParser = require('http-parser-js').HTTPParser;\nconst assert = require('assert').ok;\nconst common = require('./_http_common');\nconst parsers = common.parsers;\nconst freeParser = common.freeParser;\nconst debug = common.debug;\nconst CRLF = common.CRLF;\nconst continueExpression = common.continueExpression;\nconst chunkExpression = common.chunkExpression;\nconst httpSocketSetup = common.httpSocketSetup;\nconst OutgoingMessage = require('./_http_outgoing').OutgoingMessage;\n\nconst STATUS_CODES = exports.STATUS_CODES = {\n 100: 'Continue',\n 101: 'Switching Protocols',\n 102: 'Processing', // RFC 2518, obsoleted by RFC 4918\n 200: 'OK',\n 201: 'Created',\n 202: 'Accepted',\n 203: 'Non-Authoritative Information',\n 204: 'No Content',\n 205: 'Reset Content',\n 206: 'Partial Content',\n 207: 'Multi-Status', // RFC 4918\n 208: 'Already Reported',\n 226: 'IM Used',\n 300: 'Multiple Choices',\n 301: 'Moved Permanently',\n 302: 'Found',\n 303: 'See Other',\n 304: 'Not Modified',\n 305: 'Use Proxy',\n 307: 'Temporary Redirect',\n 308: 'Permanent Redirect', // RFC 7238\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Timeout',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed',\n 413: 'Payload Too Large',\n 414: 'URI Too Long',\n 415: 'Unsupported Media Type',\n 416: 'Range Not Satisfiable',\n 417: 'Expectation Failed',\n 418: 'I\\'m a teapot', // RFC 2324\n 421: 'Misdirected Request',\n 422: 'Unprocessable Entity', // RFC 4918\n 423: 'Locked', // RFC 4918\n 424: 'Failed Dependency', // RFC 4918\n 425: 'Unordered Collection', // RFC 4918\n 426: 'Upgrade Required', // RFC 2817\n 428: 'Precondition Required', // RFC 6585\n 429: 'Too Many Requests', // RFC 6585\n 431: 'Request Header Fields Too Large', // RFC 6585\n 451: 'Unavailable For Legal Reasons',\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates', // RFC 2295\n 507: 'Insufficient Storage', // RFC 4918\n 508: 'Loop Detected',\n 509: 'Bandwidth Limit Exceeded',\n 510: 'Not Extended', // RFC 2774\n 511: 'Network Authentication Required' // RFC 6585\n};\n\nconst kOnExecute = HTTPParser.kOnExecute | 0;\n\n\nfunction ServerResponse(req) {\n OutgoingMessage.call(this);\n\n if (req.method === 'HEAD') this._hasBody = false;\n\n this.sendDate = true;\n\n if (req.httpVersionMajor < 1 || req.httpVersionMinor < 1) {\n this.useChunkedEncodingByDefault = chunkExpression.test(req.headers.te);\n this.shouldKeepAlive = false;\n }\n}\nutil.inherits(ServerResponse, OutgoingMessage);\n\nServerResponse.prototype._finish = function() {\n // DTRACE_HTTP_SERVER_RESPONSE(this.connection);\n // LTTNG_HTTP_SERVER_RESPONSE(this.connection);\n // COUNTER_HTTP_SERVER_RESPONSE();\n OutgoingMessage.prototype._finish.call(this);\n};\n\n\nexports.ServerResponse = ServerResponse;\n\nServerResponse.prototype.statusCode = 200;\nServerResponse.prototype.statusMessage = undefined;\n\nfunction onServerResponseClose() {\n // EventEmitter.emit makes a copy of the 'close' listeners array before\n // calling the listeners. detachSocket() unregisters onServerResponseClose\n // but if detachSocket() is called, directly or indirectly, by a 'close'\n // listener, onServerResponseClose is still in that copy of the listeners\n // array. That is, in the example below, b still gets called even though\n // it's been removed by a:\n //\n // var EventEmitter = require('events');\n // var obj = new EventEmitter();\n // obj.on('event', a);\n // obj.on('event', b);\n // function a() { obj.removeListener('event', b) }\n // function b() { throw \"BAM!\" }\n // obj.emit('event'); // throws\n //\n // Ergo, we need to deal with stale 'close' events and handle the case\n // where the ServerResponse object has already been deconstructed.\n // Fortunately, that requires only a single if check. :-)\n if (this._httpMessage) this._httpMessage.emit('close');\n}\n\nServerResponse.prototype.assignSocket = function(socket) {\n assert(!socket._httpMessage);\n socket._httpMessage = this;\n socket.on('close', onServerResponseClose);\n this.socket = socket;\n this.connection = socket;\n this.emit('socket', socket);\n this._flush();\n};\n\nServerResponse.prototype.detachSocket = function(socket) {\n assert(socket._httpMessage === this);\n socket.removeListener('close', onServerResponseClose);\n socket._httpMessage = null;\n this.socket = this.connection = null;\n};\n\nServerResponse.prototype.writeContinue = function(cb) {\n this._writeRaw('HTTP/1.1 100 Continue' + CRLF + CRLF, 'ascii', cb);\n this._sent100 = true;\n};\n\nServerResponse.prototype._implicitHeader = function() {\n this.writeHead(this.statusCode);\n};\n\nServerResponse.prototype.writeHead = function(statusCode, reason, obj) {\n var headers;\n\n if (typeof reason === 'string') {\n // writeHead(statusCode, reasonPhrase[, headers])\n this.statusMessage = reason;\n } else {\n // writeHead(statusCode[, headers])\n this.statusMessage =\n this.statusMessage || STATUS_CODES[statusCode] || 'unknown';\n obj = reason;\n }\n this.statusCode = statusCode;\n\n if (this._headers) {\n // Slow-case: when progressive API and header fields are passed.\n if (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n if (k) this.setHeader(k, obj[k]);\n }\n }\n // only progressive api is used\n headers = this._renderHeaders();\n } else {\n // only writeHead() called\n headers = obj;\n }\n\n statusCode |= 0;\n if (statusCode < 100 || statusCode > 999)\n throw new RangeError(`Invalid status code: ${statusCode}`);\n\n var statusLine = 'HTTP/1.1 ' + statusCode.toString() + ' ' +\n this.statusMessage + CRLF;\n\n if (statusCode === 204 || statusCode === 304 ||\n (100 <= statusCode && statusCode <= 199)) {\n // RFC 2616, 10.2.5:\n // The 204 response MUST NOT include a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.3.5:\n // The 304 response MUST NOT contain a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.1 Informational 1xx:\n // This class of status code indicates a provisional response,\n // consisting only of the Status-Line and optional headers, and is\n // terminated by an empty line.\n this._hasBody = false;\n }\n\n // don't keep alive connections where the client expects 100 Continue\n // but we sent a final status; they may put extra bytes on the wire.\n if (this._expect_continue && !this._sent100) {\n this.shouldKeepAlive = false;\n }\n\n this._storeHeader(statusLine, headers);\n};\n\nServerResponse.prototype.writeHeader = function() {\n this.writeHead.apply(this, arguments);\n};\n\n\nfunction Server(requestListener) {\n if (!(this instanceof Server)) return new Server(requestListener);\n net.Server.call(this, { allowHalfOpen: true });\n\n if (requestListener) {\n this.addListener('request', requestListener);\n }\n\n /* eslint-disable max-len */\n // Similar option to this. Too lazy to write my own docs.\n // http://www.squid-cache.org/Doc/config/half_closed_clients/\n // http://wiki.squid-cache.org/SquidFaq/InnerWorkings#What_is_a_half-closed_filedescriptor.3F\n /* eslint-enable max-len */\n this.httpAllowHalfOpen = false;\n\n this.addListener('connection', connectionListener);\n\n this.timeout = 2 * 60 * 1000;\n\n this._pendingResponseData = 0;\n}\nutil.inherits(Server, net.Server);\n\n\nServer.prototype.setTimeout = function(msecs, callback) {\n this.timeout = msecs;\n if (callback)\n this.on('timeout', callback);\n return this;\n};\n\n\nexports.Server = Server;\n\n\nfunction connectionListener(socket) {\n var self = this;\n var outgoing = [];\n var incoming = [];\n var outgoingData = 0;\n\n function updateOutgoingData(delta) {\n // `outgoingData` is an approximate amount of bytes queued through all\n // inactive responses. If more data than the high watermark is queued - we\n // need to pause TCP socket/HTTP parser, and wait until the data will be\n // sent to the client.\n outgoingData += delta;\n if (socket._paused && outgoingData < socket._writableState.highWaterMark)\n return socketOnDrain();\n }\n\n function abortIncoming() {\n while (incoming.length) {\n var req = incoming.shift();\n req.emit('aborted');\n req.emit('close');\n }\n // abort socket._httpMessage ?\n }\n\n function serverSocketCloseListener() {\n debug('server socket close');\n // mark this parser as reusable\n if (this.parser) {\n freeParser(this.parser, null, this);\n }\n\n abortIncoming();\n }\n\n debug('SERVER new http connection');\n\n httpSocketSetup(socket);\n\n // If the user has added a listener to the server,\n // request, or response, then it's their responsibility.\n // otherwise, destroy on timeout by default\n if (self.timeout)\n socket.setTimeout(self.timeout);\n socket.on('timeout', function() {\n var req = socket.parser && socket.parser.incoming;\n var reqTimeout = req && !req.complete && req.emit('timeout', socket);\n var res = socket._httpMessage;\n var resTimeout = res && res.emit('timeout', socket);\n var serverTimeout = self.emit('timeout', socket);\n\n if (!reqTimeout && !resTimeout && !serverTimeout)\n socket.destroy();\n });\n\n var parser = parsers.alloc();\n parser.reinitialize(HTTPParser.REQUEST);\n parser.socket = socket;\n socket.parser = parser;\n parser.incoming = null;\n\n // Propagate headers limit from server instance to parser\n if (typeof this.maxHeadersCount === 'number') {\n parser.maxHeaderPairs = this.maxHeadersCount << 1;\n } else {\n // Set default value because parser may be reused from FreeList\n parser.maxHeaderPairs = 2000;\n }\n\n socket.addListener('error', socketOnError);\n socket.addListener('close', serverSocketCloseListener);\n parser.onIncoming = parserOnIncoming;\n socket.on('end', socketOnEnd);\n socket.on('data', socketOnData);\n\n // We are consuming socket, so it won't get any actual data\n socket.on('resume', onSocketResume);\n socket.on('pause', onSocketPause);\n\n socket.on('drain', socketOnDrain);\n\n // Override on to unconsume on `data`, `readable` listeners\n socket.on = socketOnWrap;\n\n var external = socket._handle && socket._handle._externalStream;\n if (external) {\n parser._consumed = true;\n parser.consume(external);\n }\n external = null;\n parser[kOnExecute] = onParserExecute;\n\n // TODO(isaacs): Move all these functions out of here\n function socketOnError(e) {\n // Ignore further errors\n this.removeListener('error', socketOnError);\n this.on('error', () => {});\n\n if (!self.emit('clientError', e, this))\n this.destroy(e);\n }\n\n function socketOnData(d) {\n assert(!socket._paused);\n debug('SERVER socketOnData %d', d.length);\n var ret = parser.execute(d);\n\n onParserExecuteCommon(ret, d);\n }\n\n function onParserExecute(ret, d) {\n socket._unrefTimer();\n debug('SERVER socketOnParserExecute %d', ret);\n onParserExecuteCommon(ret, undefined);\n }\n\n function onParserExecuteCommon(ret, d) {\n if (ret instanceof Error) {\n debug('parse error');\n socketOnError.call(socket, ret);\n } else if (parser.incoming && parser.incoming.upgrade) {\n // Upgrade or CONNECT\n var bytesParsed = ret;\n var req = parser.incoming;\n debug('SERVER upgrade or connect', req.method);\n\n if (!d)\n d = parser.getCurrentBuffer();\n\n socket.removeListener('data', socketOnData);\n socket.removeListener('end', socketOnEnd);\n socket.removeListener('close', serverSocketCloseListener);\n unconsume(parser, socket);\n parser.finish();\n freeParser(parser, req, null);\n parser = null;\n\n var eventName = req.method === 'CONNECT' ? 'connect' : 'upgrade';\n if (self.listenerCount(eventName) > 0) {\n debug('SERVER have listener for %s', eventName);\n var bodyHead = d.slice(bytesParsed, d.length);\n\n // TODO(isaacs): Need a way to reset a stream to fresh state\n // IE, not flowing, and not explicitly paused.\n socket._readableState.flowing = null;\n self.emit(eventName, req, socket, bodyHead);\n } else {\n // Got upgrade header or CONNECT method, but have no handler.\n socket.destroy();\n }\n }\n\n if (socket._paused && socket.parser) {\n // onIncoming paused the socket, we should pause the parser as well\n debug('pause parser');\n socket.parser.pause();\n }\n }\n\n function socketOnEnd() {\n var socket = this;\n var ret = parser.finish();\n\n if (ret instanceof Error) {\n debug('parse error');\n socketOnError.call(socket, ret);\n return;\n }\n\n if (!self.httpAllowHalfOpen) {\n abortIncoming();\n if (socket.writable) socket.end();\n } else if (outgoing.length) {\n outgoing[outgoing.length - 1]._last = true;\n } else if (socket._httpMessage) {\n socket._httpMessage._last = true;\n } else {\n if (socket.writable) socket.end();\n }\n }\n\n\n // The following callback is issued after the headers have been read on a\n // new message. In this callback we setup the response object and pass it\n // to the user.\n\n socket._paused = false;\n function socketOnDrain() {\n var needPause = outgoingData > socket._writableState.highWaterMark;\n\n // If we previously paused, then start reading again.\n if (socket._paused && !needPause) {\n socket._paused = false;\n if (socket.parser)\n socket.parser.resume();\n socket.resume();\n }\n }\n\n function parserOnIncoming(req, shouldKeepAlive) {\n incoming.push(req);\n\n // If the writable end isn't consuming, then stop reading\n // so that we don't become overwhelmed by a flood of\n // pipelined requests that may never be resolved.\n if (!socket._paused) {\n var needPause = socket._writableState.needDrain ||\n outgoingData >= socket._writableState.highWaterMark;\n if (needPause) {\n socket._paused = true;\n // We also need to pause the parser, but don't do that until after\n // the call to execute, because we may still be processing the last\n // chunk.\n socket.pause();\n }\n }\n\n var res = new ServerResponse(req);\n res._onPendingData = updateOutgoingData;\n\n res.shouldKeepAlive = shouldKeepAlive;\n // DTRACE_HTTP_SERVER_REQUEST(req, socket);\n // LTTNG_HTTP_SERVER_REQUEST(req, socket);\n // COUNTER_HTTP_SERVER_REQUEST();\n\n if (socket._httpMessage) {\n // There are already pending outgoing res, append.\n outgoing.push(res);\n } else {\n res.assignSocket(socket);\n }\n\n // When we're finished writing the response, check if this is the last\n // response, if so destroy the socket.\n res.on('finish', resOnFinish);\n function resOnFinish() {\n // Usually the first incoming element should be our request. it may\n // be that in the case abortIncoming() was called that the incoming\n // array will be empty.\n assert(incoming.length === 0 || incoming[0] === req);\n\n incoming.shift();\n\n // if the user never called req.read(), and didn't pipe() or\n // .resume() or .on('data'), then we call req._dump() so that the\n // bytes will be pulled off the wire.\n if (!req._consuming && !req._readableState.resumeScheduled)\n req._dump();\n\n res.detachSocket(socket);\n\n if (res._last) {\n socket.destroySoon();\n } else {\n // start sending the next message\n var m = outgoing.shift();\n if (m) {\n m.assignSocket(socket);\n }\n }\n }\n\n if (req.headers.expect !== undefined &&\n (req.httpVersionMajor == 1 && req.httpVersionMinor == 1)) {\n if (continueExpression.test(req.headers.expect)) {\n res._expect_continue = true;\n\n if (self.listenerCount('checkContinue') > 0) {\n self.emit('checkContinue', req, res);\n } else {\n res.writeContinue();\n self.emit('request', req, res);\n }\n } else {\n if (self.listenerCount('checkExpectation') > 0) {\n self.emit('checkExpectation', req, res);\n } else {\n res.writeHead(417);\n res.end();\n }\n }\n } else {\n self.emit('request', req, res);\n }\n return false; // Not a HEAD response. (Not even a response!)\n }\n}\nexports._connectionListener = connectionListener;\n\nfunction onSocketResume() {\n // It may seem that the socket is resumed, but this is an enemy's trick to\n // deceive us! `resume` is emitted asynchronously, and may be called from\n // `incoming.readStart()`. Stop the socket again here, just to preserve the\n // state.\n //\n // We don't care about stream semantics for the consumed socket anyway.\n if (this._paused) {\n this.pause();\n return;\n }\n\n if (this._handle && !this._handle.reading) {\n this._handle.reading = true;\n this._handle.readStart();\n }\n}\n\nfunction onSocketPause() {\n if (this._handle && this._handle.reading) {\n this._handle.reading = false;\n this._handle.readStop();\n }\n}\n\nfunction unconsume(parser, socket) {\n if (socket._handle) {\n if (parser._consumed)\n parser.unconsume(socket._handle._externalStream);\n parser._consumed = false;\n socket.removeListener('pause', onSocketPause);\n socket.removeListener('resume', onSocketResume);\n }\n}\n\nfunction socketOnWrap(ev, fn) {\n var res = net.Socket.prototype.on.call(this, ev, fn);\n if (!this.parser) {\n this.on = net.Socket.prototype.on;\n return res;\n }\n\n if (ev === 'data' || ev === 'readable')\n unconsume(this.parser, this);\n\n return res;\n}\n","'use strict';\n\nconst util = require('util');\nconst internalUtil = util;\nconst EventEmitter = require('events');\n\n\nexports.IncomingMessage = require('./_http_incoming').IncomingMessage;\n\n\nconst common = require('./_http_common');\nexports.METHODS = common.methods.slice().sort();\n\n\nexports.OutgoingMessage = require('./_http_outgoing').OutgoingMessage;\n\n\nconst server = require('./_http_server');\nexports.ServerResponse = server.ServerResponse;\nexports.STATUS_CODES = server.STATUS_CODES;\n\n\nconst agent = require('./_http_agent');\nconst Agent = exports.Agent = agent.Agent;\nexports.globalAgent = agent.globalAgent;\n\nconst client = require('./_http_client');\nconst ClientRequest = exports.ClientRequest = client.ClientRequest;\n\nexports.request = function(options, cb) {\n return new ClientRequest(options, cb);\n};\n\nexports.get = function(options, cb) {\n var req = exports.request(options, cb);\n req.end();\n return req;\n};\n\nexports._connectionListener = server._connectionListener;\nconst Server = exports.Server = server.Server;\n\nexports.createServer = function(requestListener) {\n return new Server(requestListener);\n};\n\n\n// Legacy Interface\n\nfunction Client(port, host) {\n if (!(this instanceof Client)) return new Client(port, host);\n EventEmitter.call(this);\n\n host = host || 'localhost';\n port = port || 80;\n this.host = host;\n this.port = port;\n this.agent = new Agent({ host: host, port: port, maxSockets: 1 });\n}\nutil.inherits(Client, EventEmitter);\nClient.prototype.request = function(method, path, headers) {\n var self = this;\n var options = {};\n options.host = self.host;\n options.port = self.port;\n if (method[0] === '/') {\n headers = path;\n path = method;\n method = 'GET';\n }\n options.method = method;\n options.path = path;\n options.headers = headers;\n options.agent = self.agent;\n var c = new ClientRequest(options);\n c.on('error', function(e) {\n self.emit('error', e);\n });\n // The old Client interface emitted 'end' on socket end.\n // This doesn't map to how we want things to operate in the future\n // but it will get removed when we remove this legacy interface.\n c.on('socket', function(s) {\n s.on('end', function() {\n if (self._decoder) {\n var ret = self._decoder.end();\n if (ret)\n self.emit('data', ret);\n }\n self.emit('end');\n });\n });\n return c;\n};\n\nexports.Client = internalUtil.deprecate(Client, 'http.Client is deprecated.');\n\nexports.createClient = internalUtil.deprecate(function(port, host) {\n return new Client(port, host);\n}, 'http.createClient is deprecated. Use http.request instead.');\n","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","module.exports = function isBuffer(arg) {\n return arg instanceof Buffer;\n}\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\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","function isBuffer (value) {\n return Buffer.isBuffer(value) || value instanceof Uint8Array\n}\n\nfunction isEncoding (encoding) {\n return Buffer.isEncoding(encoding)\n}\n\nfunction alloc (size, fill, encoding) {\n return Buffer.alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n return Buffer.allocUnsafe(size)\n}\n\nfunction allocUnsafeSlow (size) {\n return Buffer.allocUnsafeSlow(size)\n}\n\nfunction byteLength (string, encoding) {\n return Buffer.byteLength(string, encoding)\n}\n\nfunction compare (a, b) {\n return Buffer.compare(a, b)\n}\n\nfunction concat (buffers, totalLength) {\n return Buffer.concat(buffers, totalLength)\n}\n\nfunction copy (source, target, targetStart, start, end) {\n return toBuffer(source).copy(target, targetStart, start, end)\n}\n\nfunction equals (a, b) {\n return toBuffer(a).equals(b)\n}\n\nfunction fill (buffer, value, offset, end, encoding) {\n return toBuffer(buffer).fill(value, offset, end, encoding)\n}\n\nfunction from (value, encodingOrOffset, length) {\n return Buffer.from(value, encodingOrOffset, length)\n}\n\nfunction includes (buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).includes(value, byteOffset, encoding)\n}\n\nfunction indexOf (buffer, value, byfeOffset, encoding) {\n return toBuffer(buffer).indexOf(value, byfeOffset, encoding)\n}\n\nfunction lastIndexOf (buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).lastIndexOf(value, byteOffset, encoding)\n}\n\nfunction swap16 (buffer) {\n return toBuffer(buffer).swap16()\n}\n\nfunction swap32 (buffer) {\n return toBuffer(buffer).swap32()\n}\n\nfunction swap64 (buffer) {\n return toBuffer(buffer).swap64()\n}\n\nfunction toBuffer (buffer) {\n if (Buffer.isBuffer(buffer)) return buffer\n return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nfunction toString (buffer, encoding, start, end) {\n return toBuffer(buffer).toString(encoding, start, end)\n}\n\nfunction write (buffer, string, offset, length, encoding) {\n return toBuffer(buffer).write(string, offset, length, encoding)\n}\n\nfunction writeDoubleLE (buffer, value, offset) {\n return toBuffer(buffer).writeDoubleLE(value, offset)\n}\n\nfunction writeFloatLE (buffer, value, offset) {\n return toBuffer(buffer).writeFloatLE(value, offset)\n}\n\nfunction writeUInt32LE (buffer, value, offset) {\n return toBuffer(buffer).writeUInt32LE(value, offset)\n}\n\nfunction writeInt32LE (buffer, value, offset) {\n return toBuffer(buffer).writeInt32LE(value, offset)\n}\n\nfunction readDoubleLE (buffer, offset) {\n return toBuffer(buffer).readDoubleLE(offset)\n}\n\nfunction readFloatLE (buffer, offset) {\n return toBuffer(buffer).readFloatLE(offset)\n}\n\nfunction readUInt32LE (buffer, offset) {\n return toBuffer(buffer).readUInt32LE(offset)\n}\n\nfunction readInt32LE (buffer, offset) {\n return toBuffer(buffer).readInt32LE(offset)\n}\n\nmodule.exports = {\n isBuffer,\n isEncoding,\n alloc,\n allocUnsafe,\n allocUnsafeSlow,\n byteLength,\n compare,\n concat,\n copy,\n equals,\n fill,\n from,\n includes,\n indexOf,\n lastIndexOf,\n swap16,\n swap32,\n swap64,\n toBuffer,\n toString,\n write,\n writeDoubleLE,\n writeFloatLE,\n writeUInt32LE,\n writeInt32LE,\n readDoubleLE,\n readFloatLE,\n readUInt32LE,\n readInt32LE\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","function concat (chunks, size) {\r\n if (typeof chunks[0] === 'string') return chunks.join('')\r\n if (typeof chunks[0] === 'number') return new Uint8Array(chunks)\r\n const b = new Uint8Array(size)\r\n let offset = 0\r\n for (let i = 0, l = chunks.length; i < l; i++) {\r\n const chunk = chunks[i]\r\n b.set(chunk, offset)\r\n offset += chunk.byteLength || chunk.length\r\n }\r\n\r\n return b\r\n}\r\n\r\nmodule.exports = async function * (iterator, size = 512, opts = {}) {\r\n if (typeof size === 'object') {\r\n opts = size\r\n size = opts.size\r\n }\r\n let { nopad, zeroPadding = true } = opts\r\n\r\n if (nopad) zeroPadding = false\r\n\r\n let buffered = []\r\n let bufferedBytes = 0\r\n\r\n for await (const value of iterator) {\r\n bufferedBytes += value.byteLength || value.length || 1\r\n buffered.push(value)\r\n\r\n if (bufferedBytes >= size) {\r\n const b = concat(buffered, bufferedBytes)\r\n let offset = 0\r\n\r\n while (bufferedBytes >= size) {\r\n yield b.slice(offset, offset + size)\r\n bufferedBytes -= size\r\n offset += size\r\n }\r\n\r\n buffered = [b.slice(offset, b.length)]\r\n }\r\n }\r\n if (bufferedBytes) yield concat(buffered, zeroPadding ? size : bufferedBytes)\r\n}\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! cache-chunk-store. MIT License. Feross Aboukhadijeh */\nconst LRU = require('lru')\nconst queueMicrotask = require('queue-microtask')\n\nclass CacheStore {\n constructor (store, opts) {\n this.store = store\n this.chunkLength = store.chunkLength\n this.inProgressGets = new Map() // Map from chunk index to info on callbacks waiting for that chunk\n\n if (!this.store || !this.store.get || !this.store.put) {\n throw new Error('First argument must be abstract-chunk-store compliant')\n }\n\n this.cache = new LRU(opts)\n }\n\n put (index, buf, cb = () => {}) {\n if (!this.cache) {\n return queueMicrotask(() => cb(new Error('CacheStore closed')))\n }\n\n this.cache.remove(index)\n this.store.put(index, buf, cb)\n }\n\n get (index, opts, cb = () => {}) {\n if (typeof opts === 'function') return this.get(index, null, opts)\n\n if (!this.cache) {\n return queueMicrotask(() => cb(new Error('CacheStore closed')))\n }\n\n if (!opts) opts = {}\n\n let buf = this.cache.get(index)\n if (buf) {\n const offset = opts.offset || 0\n const len = opts.length || (buf.length - offset)\n if (offset !== 0 || len !== buf.length) {\n buf = buf.slice(offset, len + offset)\n }\n return queueMicrotask(() => cb(null, buf))\n }\n\n // See if a get for this index has already started\n let waiters = this.inProgressGets.get(index)\n const getAlreadyStarted = !!waiters\n if (!waiters) {\n waiters = []\n this.inProgressGets.set(index, waiters)\n }\n\n waiters.push({\n opts,\n cb\n })\n\n if (!getAlreadyStarted) {\n this.store.get(index, (err, buf) => {\n if (!err && this.cache != null) this.cache.set(index, buf)\n\n const inProgressEntry = this.inProgressGets.get(index)\n this.inProgressGets.delete(index)\n\n for (const { opts, cb } of inProgressEntry) {\n if (err) {\n cb(err)\n } else {\n const offset = opts.offset || 0\n const len = opts.length || (buf.length - offset)\n let slicedBuf = buf\n if (offset !== 0 || len !== buf.length) {\n slicedBuf = buf.slice(offset, len + offset)\n }\n cb(null, slicedBuf)\n }\n }\n })\n }\n }\n\n close (cb = () => {}) {\n if (!this.cache) {\n return queueMicrotask(() => cb(new Error('CacheStore closed')))\n }\n\n this.cache = null\n this.store.close(cb)\n }\n\n destroy (cb = () => {}) {\n if (!this.cache) {\n return queueMicrotask(() => cb(new Error('CacheStore closed')))\n }\n\n this.cache = null\n this.store.destroy(cb)\n }\n}\n\nmodule.exports = CacheStore\n","/*! chrome-dgram. MIT License. Feross Aboukhadijeh */\n/* global chrome */\n\n/**\n * UDP / Datagram Sockets\n * ======================\n *\n * Datagram sockets are available through require('chrome-dgram').\n */\n\nexports.Socket = Socket\n\nvar EventEmitter = require('events').EventEmitter\nvar inherits = require('inherits')\nvar series = require('run-series')\n\nvar BIND_STATE_UNBOUND = 0\nvar BIND_STATE_BINDING = 1\nvar BIND_STATE_BOUND = 2\n\n// Track open sockets to route incoming data (via onReceive) to the right handlers.\nvar sockets = {}\n\n// Thorough check for Chrome App since both Edge and Chrome implement dummy chrome object\nif (\n typeof chrome === 'object' &&\n typeof chrome.runtime === 'object' &&\n typeof chrome.runtime.id === 'string' &&\n typeof chrome.sockets === 'object' &&\n typeof chrome.sockets.udp === 'object'\n) {\n chrome.sockets.udp.onReceive.addListener(onReceive)\n chrome.sockets.udp.onReceiveError.addListener(onReceiveError)\n}\n\nfunction onReceive (info) {\n if (info.socketId in sockets) {\n sockets[info.socketId]._onReceive(info)\n } else {\n console.error('Unknown socket id: ' + info.socketId)\n }\n}\n\nfunction onReceiveError (info) {\n if (info.socketId in sockets) {\n sockets[info.socketId]._onReceiveError(info.resultCode)\n } else {\n console.error('Unknown socket id: ' + info.socketId)\n }\n}\n\n/**\n * dgram.createSocket(type, [callback])\n *\n * Creates a datagram Socket of the specified types. Valid types are `udp4`\n * and `udp6`.\n *\n * Takes an optional callback which is added as a listener for message events.\n *\n * Call socket.bind if you want to receive datagrams. socket.bind() will bind\n * to the \"all interfaces\" address on a random port (it does the right thing\n * for both udp4 and udp6 sockets). You can then retrieve the address and port\n * with socket.address().address and socket.address().port.\n *\n * @param {string} type Either 'udp4' or 'udp6'\n * @param {function} listener Attached as a listener to message events.\n * Optional\n * @return {Socket} Socket object\n */\nexports.createSocket = function (type, listener) {\n return new Socket(type, listener)\n}\n\ninherits(Socket, EventEmitter)\n\n/**\n * Class: dgram.Socket\n *\n * The dgram Socket class encapsulates the datagram functionality. It should\n * be created via `dgram.createSocket(type, [callback])`.\n *\n * Event: 'message'\n * - msg Buffer object. The message\n * - rinfo Object. Remote address information\n * Emitted when a new datagram is available on a socket. msg is a Buffer and\n * rinfo is an object with the sender's address information and the number\n * of bytes in the datagram.\n *\n * Event: 'listening'\n * Emitted when a socket starts listening for datagrams. This happens as soon\n * as UDP sockets are created.\n *\n * Event: 'close'\n * Emitted when a socket is closed with close(). No new message events will\n * be emitted on this socket.\n *\n * Event: 'error'\n * - exception Error object\n * Emitted when an error occurs.\n */\nfunction Socket (options, listener) {\n var self = this\n EventEmitter.call(self)\n if (typeof options === 'string') options = { type: options }\n if (options.type !== 'udp4') throw new Error('Bad socket type specified. Valid types are: udp4')\n\n if (typeof listener === 'function') self.on('message', listener)\n\n self._destroyed = false\n self._bindState = BIND_STATE_UNBOUND\n self._bindTasks = []\n}\n\n/**\n * socket.bind(port, [address], [callback])\n *\n * For UDP sockets, listen for datagrams on a named port and optional address.\n * If address is not specified, the OS will try to listen on all addresses.\n * After binding is done, a \"listening\" event is emitted and the callback(if\n * specified) is called. Specifying both a \"listening\" event listener and\n * callback is not harmful but not very useful.\n *\n * A bound datagram socket keeps the node process running to receive\n * datagrams.\n *\n * If binding fails, an \"error\" event is generated. In rare case (e.g. binding\n * a closed socket), an Error may be thrown by this method.\n *\n * @param {number} port\n * @param {string} address Optional\n * @param {function} callback Function with no parameters, Optional. Callback\n * when binding is done.\n */\nSocket.prototype.bind = function (port, address, callback) {\n var self = this\n if (typeof address === 'function') {\n callback = address\n address = undefined\n }\n\n if (!address) address = '0.0.0.0'\n\n if (!port) port = 0\n\n if (self._bindState !== BIND_STATE_UNBOUND) throw new Error('Socket is already bound')\n\n self._bindState = BIND_STATE_BINDING\n\n if (typeof callback === 'function') self.once('listening', callback)\n\n chrome.sockets.udp.create(function (createInfo) {\n self.id = createInfo.socketId\n\n sockets[self.id] = self\n\n var bindFns = self._bindTasks.map(function (t) { return t.fn })\n\n series(bindFns, function (err) {\n if (err) return self.emit('error', err)\n chrome.sockets.udp.bind(self.id, address, port, function (result) {\n if (result < 0) {\n self.emit('error', new Error('Socket ' + self.id + ' failed to bind. ' +\n chrome.runtime.lastError.message))\n return\n }\n chrome.sockets.udp.getInfo(self.id, function (socketInfo) {\n if (!socketInfo.localPort || !socketInfo.localAddress) {\n self.emit('error', new Error('Cannot get local port/address for Socket ' + self.id))\n return\n }\n\n self._port = socketInfo.localPort\n self._address = socketInfo.localAddress\n\n self._bindState = BIND_STATE_BOUND\n self.emit('listening')\n\n self._bindTasks.map(function (t) {\n t.callback()\n })\n })\n })\n })\n })\n}\n\n/**\n * Internal function to receive new messages and emit `message` events.\n */\nSocket.prototype._onReceive = function (info) {\n var self = this\n\n var buf = Buffer.from(new Uint8Array(info.data))\n var rinfo = {\n address: info.remoteAddress,\n family: 'IPv4',\n port: info.remotePort,\n size: buf.length\n }\n self.emit('message', buf, rinfo)\n}\n\nSocket.prototype._onReceiveError = function (resultCode) {\n var self = this\n self.emit('error', new Error('Socket ' + self.id + ' receive error ' + resultCode))\n}\n\n/**\n * socket.send(buf, offset, length, port, address, [callback])\n *\n * For UDP sockets, the destination port and IP address must be\n * specified. A string may be supplied for the address parameter, and it will\n * be resolved with DNS. An optional callback may be specified to detect any\n * DNS errors and when buf may be re-used. Note that DNS lookups will delay\n * the time that a send takes place, at least until the next tick. The only\n * way to know for sure that a send has taken place is to use the callback.\n *\n * If the socket has not been previously bound with a call to bind, it's\n * assigned a random port number and bound to the \"all interfaces\" address\n * (0.0.0.0 for udp4 sockets, ::0 for udp6 sockets).\n *\n * @param {Buffer|Arrayish|string} buf Message to be sent\n * @param {number} offset Offset in the buffer where the message starts. Optional.\n * @param {number} length Number of bytes in the message. Optional.\n * @param {number} port destination port\n * @param {string} address destination IP\n * @param {function} callback Callback when message is done being delivered.\n * Optional.\n *\n * Valid combinations:\n * send(buffer, offset, length, port, address, callback)\n * send(buffer, offset, length, port, address)\n * send(buffer, offset, length, port)\n * send(bufferOrList, port, address, callback)\n * send(bufferOrList, port, address)\n * send(bufferOrList, port)\n *\n */\nSocket.prototype.send = function (buffer, offset, length, port, address, callback) {\n var self = this\n\n var list\n\n if (address || (port && typeof port !== 'function')) {\n buffer = sliceBuffer(buffer, offset, length)\n } else {\n callback = port\n port = offset\n address = length\n }\n\n if (!Array.isArray(buffer)) {\n if (typeof buffer === 'string') {\n list = [Buffer.from(buffer)]\n } else if (!(buffer instanceof Buffer)) {\n throw new TypeError('First argument must be a buffer or a string')\n } else {\n list = [buffer]\n }\n } else if (!(list = fixBufferList(buffer))) {\n throw new TypeError('Buffer list arguments must be buffers or strings')\n }\n\n port = port >>> 0\n if (port === 0 || port > 65535) {\n throw new RangeError('Port should be > 0 and < 65536')\n }\n\n // Normalize callback so it's always a function\n if (typeof callback !== 'function') {\n callback = function () {}\n }\n\n if (self._bindState === BIND_STATE_UNBOUND) self.bind(0)\n\n // If the socket hasn't been bound yet, push the outbound packet onto the\n // send queue and send after binding is complete.\n if (self._bindState !== BIND_STATE_BOUND) {\n // If the send queue hasn't been initialized yet, do it, and install an\n // event handler that flishes the send queue after binding is done.\n if (!self._sendQueue) {\n self._sendQueue = []\n self.once('listening', function () {\n // Flush the send queue.\n for (var i = 0; i < self._sendQueue.length; i++) {\n self.send.apply(self, self._sendQueue[i])\n }\n self._sendQueue = undefined\n })\n }\n self._sendQueue.push([buffer, offset, length, port, address, callback])\n return\n }\n\n var ab = Buffer.concat(list).buffer\n\n chrome.sockets.udp.send(self.id, ab, address, port, function (sendInfo) {\n if (sendInfo.resultCode < 0) {\n var err = new Error('Socket ' + self.id + ' send error ' + sendInfo.resultCode)\n callback(err)\n self.emit('error', err)\n } else {\n callback(null)\n }\n })\n}\n\nfunction sliceBuffer (buffer, offset, length) {\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n } else if (!(buffer instanceof Buffer)) {\n throw new TypeError('First argument must be a buffer or string')\n }\n\n offset = offset >>> 0\n length = length >>> 0\n\n // assuming buffer is browser implementation (`buffer` package on npm)\n var buf = buffer.buffer\n if (buffer.byteOffset || buffer.byteLength !== buf.byteLength) {\n buf = buf.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)\n }\n if (offset || length !== buffer.length) {\n buf = buf.slice(offset, length)\n }\n\n return Buffer.from(buf)\n}\n\nfunction fixBufferList (list) {\n var newlist = new Array(list.length)\n\n for (var i = 0, l = list.length; i < l; i++) {\n var buf = list[i]\n if (typeof buf === 'string') {\n newlist[i] = Buffer.from(buf)\n } else if (!(buf instanceof Buffer)) {\n return null\n } else {\n newlist[i] = buf\n }\n }\n\n return newlist\n}\n\n/**\n * Close the underlying socket and stop listening for data on it.\n */\nSocket.prototype.close = function () {\n var self = this\n if (self._destroyed) return\n\n delete sockets[self.id]\n chrome.sockets.udp.close(self.id)\n self._destroyed = true\n\n self.emit('close')\n}\n\n/**\n * Returns an object containing the address information for a socket. For UDP\n * sockets, this object will contain address, family and port.\n *\n * @return {Object} information\n */\nSocket.prototype.address = function () {\n var self = this\n return {\n address: self._address,\n port: self._port,\n family: 'IPv4'\n }\n}\n\nSocket.prototype.setBroadcast = function (flag) {\n // No chrome.sockets equivalent\n}\n\nSocket.prototype.setTTL = function (ttl) {\n // No chrome.sockets equivalent\n}\n\n// NOTE: Multicast code is untested. Pull requests accepted for bug fixes and to\n// add tests!\n\n/**\n * Sets the IP_MULTICAST_TTL socket option. TTL stands for \"Time to Live,\" but\n * in this context it specifies the number of IP hops that a packet is allowed\n * to go through, specifically for multicast traffic. Each router or gateway\n * that forwards a packet decrements the TTL. If the TTL is decremented to 0\n * by a router, it will not be forwarded.\n *\n * The argument to setMulticastTTL() is a number of hops between 0 and 255.\n * The default on most systems is 1.\n *\n * NOTE: The Chrome version of this function is async, whereas the node\n * version is sync. Keep this in mind.\n *\n * @param {number} ttl\n * @param {function} callback CHROME-SPECIFIC: Called when the configuration\n * operation is done.\n */\nSocket.prototype.setMulticastTTL = function (ttl, callback) {\n var self = this\n if (!callback) callback = function () {}\n if (self._bindState === BIND_STATE_BOUND) {\n setMulticastTTL(callback)\n } else {\n self._bindTasks.push({\n fn: setMulticastTTL,\n callback\n })\n }\n\n function setMulticastTTL (callback) {\n chrome.sockets.udp.setMulticastTimeToLive(self.id, ttl, callback)\n }\n}\n\n/**\n * Sets or clears the IP_MULTICAST_LOOP socket option. When this option is\n * set, multicast packets will also be received on the local interface.\n *\n * NOTE: The Chrome version of this function is async, whereas the node\n * version is sync. Keep this in mind.\n *\n * @param {boolean} flag\n * @param {function} callback CHROME-SPECIFIC: Called when the configuration\n * operation is done.\n */\nSocket.prototype.setMulticastLoopback = function (flag, callback) {\n var self = this\n if (!callback) callback = function () {}\n if (self._bindState === BIND_STATE_BOUND) {\n setMulticastLoopback(callback)\n } else {\n self._bindTasks.push({\n fn: setMulticastLoopback,\n callback\n })\n }\n\n function setMulticastLoopback (callback) {\n chrome.sockets.udp.setMulticastLoopbackMode(self.id, flag, callback)\n }\n}\n\n/**\n * Tells the kernel to join a multicast group with IP_ADD_MEMBERSHIP socket\n * option.\n *\n * If multicastInterface is not specified, the OS will try to add membership\n * to all valid interfaces.\n *\n * NOTE: The Chrome version of this function is async, whereas the node\n * version is sync. Keep this in mind.\n *\n * @param {string} multicastAddress\n * @param {string} [multicastInterface] Optional\n * @param {function} callback CHROME-SPECIFIC: Called when the configuration\n * operation is done.\n */\nSocket.prototype.addMembership = function (multicastAddress,\n multicastInterface,\n callback) {\n var self = this\n if (!callback) callback = function () {}\n chrome.sockets.udp.joinGroup(self.id, multicastAddress, callback)\n}\n\n/**\n * Opposite of addMembership - tells the kernel to leave a multicast group\n * with IP_DROP_MEMBERSHIP socket option. This is automatically called by the\n * kernel when the socket is closed or process terminates, so most apps will\n * never need to call this.\n *\n * NOTE: The Chrome version of this function is async, whereas the node\n * version is sync. Keep this in mind.\n *\n * If multicastInterface is not specified, the OS will try to drop membership\n * to all valid interfaces.\n *\n * @param {[type]} multicastAddress\n * @param {[type]} multicastInterface Optional\n * @param {function} callback CHROME-SPECIFIC: Called when the configuration\n * operation is done.\n */\nSocket.prototype.dropMembership = function (multicastAddress,\n multicastInterface,\n callback) {\n var self = this\n if (!callback) callback = function () {}\n chrome.sockets.udp.leaveGroup(self.id, multicastAddress, callback)\n}\n\nSocket.prototype.unref = function () {\n // No chrome.sockets equivalent\n}\n\nSocket.prototype.ref = function () {\n // No chrome.sockets equivalent\n}\n","/* global chrome */\n\nconst { isIPv4, isIPv6 } = require('chrome-net')\n\n/**\n * DNS\n * ======================\n *\n * DNS lookup is available through require('chrome-dns').\n *\n * The chrome.dns API for Chrome Apps is not documented, but it still available.\n * You need the \"dns\" permission in your manifest.\n * @param {string} hostname: the hostname to be resolved\n * @param {function} cb: a callback function for dns.lookup with error and ip arguments\n */\n\nexports.lookup = lookup\n\n/**\n * dns.lookup(hostname[, options], callback)\n *\n * hostname \n * options | \n * - Not supported by chrome-dns. All options are ignored.\n * callback \n * - err \n * - address A string representation of an IPv4 or IPv6 address.\n * - family 4 or 6, denoting the family of address, or 0 if the\n * address is not an IPv4 or IPv6 address. 0 is a likely\n * indicator of a bug in the name resolution service used\n * by the operating system.\n */\nfunction lookup (hostname, opts, cb) {\n if (typeof opts === 'function') return lookup(hostname, null, opts)\n\n chrome.dns.resolve(hostname, resolveInfo => {\n if (resolveInfo.resultCode !== 0) {\n return cb(new Error('DNS lookup error: ' + chrome.runtime.lastError.message))\n }\n const address = resolveInfo.address\n const ipVersion = isIPv4(address)\n ? 4\n : isIPv6(address)\n ? 6\n : 0\n cb(null, address, ipVersion)\n })\n}\n","/*! chrome-net. MIT License. Feross Aboukhadijeh */\n/* global chrome */\n'use strict'\n\n/**\n * net\n * ===\n *\n * The net module provides you with an asynchronous network wrapper. It\n * contains methods for creating both servers and clients (called streams).\n * You can include this module with require('chrome-net')\n */\n\nvar EventEmitter = require('events')\nvar inherits = require('inherits')\nvar stream = require('stream')\nvar deprecate = require('util').deprecate\nvar timers = require('timers')\nvar Buffer = require('buffer').Buffer\n\n// Track open servers and sockets to route incoming sockets (via onAccept and onReceive)\n// to the right handlers.\nvar servers = {}\nvar sockets = {}\n\n// Thorough check for Chrome App since both Edge and Chrome implement dummy chrome object\nif (\n typeof chrome === 'object' &&\n typeof chrome.runtime === 'object' &&\n typeof chrome.runtime.id === 'string' &&\n typeof chrome.sockets === 'object' &&\n typeof chrome.sockets.tcpServer === 'object' &&\n typeof chrome.sockets.tcp === 'object'\n) {\n chrome.sockets.tcpServer.onAccept.addListener(onAccept)\n chrome.sockets.tcpServer.onAcceptError.addListener(onAcceptError)\n chrome.sockets.tcp.onReceive.addListener(onReceive)\n chrome.sockets.tcp.onReceiveError.addListener(onReceiveError)\n}\n\nfunction onAccept (info) {\n if (info.socketId in servers) {\n servers[info.socketId]._onAccept(info.clientSocketId)\n } else {\n console.error('Unknown server socket id: ' + info.socketId)\n }\n}\n\nfunction onAcceptError (info) {\n if (info.socketId in servers) {\n servers[info.socketId]._onAcceptError(info.resultCode)\n } else {\n console.error('Unknown server socket id: ' + info.socketId)\n }\n}\n\nfunction onReceive (info) {\n if (info.socketId in sockets) {\n sockets[info.socketId]._onReceive(info.data)\n } else {\n console.error('Unknown socket id: ' + info.socketId)\n }\n}\n\nfunction onReceiveError (info) {\n if (info.socketId in sockets) {\n sockets[info.socketId]._onReceiveError(info.resultCode)\n } else {\n if (info.resultCode === -100) return // net::ERR_CONNECTION_CLOSED\n console.error('Unknown socket id: ' + info.socketId)\n }\n}\n\n/**\n * Creates a new TCP server. The connectionListener argument is automatically\n * set as a listener for the 'connection' event.\n *\n * @param {Object} options\n * @param {function} connectionListener\n * @return {Server}\n */\nexports.createServer = function (options, connectionListener) {\n return new Server(options, connectionListener)\n}\n\n/**\n * net.connect(options, [connectionListener])\n * net.createConnection(options, [connectionListener])\n *\n * Constructs a new socket object and opens the socket to the given location.\n * When the socket is established, the 'connect' event will be emitted.\n *\n * For TCP sockets, options argument should be an object which specifies:\n *\n * port: Port the client should connect to (Required).\n * host: Host the client should connect to. Defaults to 'localhost'.\n * localAddress: Local interface to bind to for network connections.\n *\n * ===============================================================\n *\n * net.connect(port, [host], [connectListener])\n * net.createConnection(port, [host], [connectListener])\n *\n * Creates a TCP connection to port on host. If host is omitted,\n * 'localhost' will be assumed. The connectListener parameter will be\n * added as an listener for the 'connect' event.\n *\n * @param {Object} options\n * @param {function} listener\n * @return {Socket}\n */\nexports.connect = exports.createConnection = function () {\n const argsLen = arguments.length\n var args = new Array(argsLen)\n for (var i = 0; i < argsLen; i++) args[i] = arguments[i]\n args = normalizeConnectArgs(args)\n var s = new Socket(args[0])\n return Socket.prototype.connect.apply(s, args)\n}\n\ninherits(Server, EventEmitter)\n\n/**\n * Class: net.Server\n * =================\n *\n * This class is used to create a TCP server.\n *\n * Event: 'listening'\n * Emitted when the server has been bound after calling server.listen.\n *\n * Event: 'connection'\n * - Socket object The connection object\n * Emitted when a new connection is made. socket is an instance of net.Socket.\n *\n * Event: 'close'\n * Emitted when the server closes. Note that if connections exist, this event\n * is not emitted until all connections are ended.\n *\n * Event: 'error'\n * - Error Object\n * Emitted when an error occurs. The 'close' event will be called directly\n * following this event. See example in discussion of server.listen.\n */\nfunction Server (options, connectionListener) {\n if (!(this instanceof Server)) return new Server(options, connectionListener)\n EventEmitter.call(this)\n\n if (typeof options === 'function') {\n connectionListener = options\n options = {}\n this.on('connection', connectionListener)\n } else if (options == null || typeof options === 'object') {\n options = options || {}\n\n if (typeof connectionListener === 'function') {\n this.on('connection', connectionListener)\n }\n } else {\n throw new TypeError('options must be an object')\n }\n\n this._connections = 0\n\n Object.defineProperty(this, 'connections', {\n get: deprecate(() => this._connections,\n 'Server.connections property is deprecated. ' +\n 'Use Server.getConnections method instead.'),\n set: deprecate((val) => (this._connections = val),\n 'Server.connections property is deprecated.'),\n configurable: true,\n enumerable: false\n })\n\n this.id = null // a number > 0\n this.connecting = false\n\n this.allowHalfOpen = options.allowHalfOpen || false\n this.pauseOnConnect = !!options.pauseOnConnect\n this._address = null\n\n this._host = null\n this._port = null\n this._backlog = null\n}\nexports.Server = Server\n\nServer.prototype._usingSlaves = false // not used\n\n/**\n * server.listen(port, [host], [backlog], [callback])\n *\n * Begin accepting connections on the specified port and host. If the host is\n * omitted, the server will accept connections directed to any IPv4 address\n * (INADDR_ANY). A port value of zero will assign a random port.\n *\n * Backlog is the maximum length of the queue of pending connections. The\n * actual length will be determined by your OS through sysctl settings such as\n * tcp_max_syn_backlog and somaxconn on linux. The default value of this\n * parameter is 511 (not 512).\n *\n * This function is asynchronous. When the server has been bound, 'listening'\n * event will be emitted. The last parameter callback will be added as an\n * listener for the 'listening' event.\n *\n * @return {Socket}\n */\nServer.prototype.listen = function (/* variable arguments... */) {\n var lastArg = arguments[arguments.length - 1]\n if (typeof lastArg === 'function') {\n this.once('listening', lastArg)\n }\n\n var port = toNumber(arguments[0])\n\n var address\n\n // The third optional argument is the backlog size.\n // When the ip is omitted it can be the second argument.\n var backlog = toNumber(arguments[1]) || toNumber(arguments[2]) || undefined\n\n if (arguments[0] !== null && typeof arguments[0] === 'object') {\n var h = arguments[0]\n\n if (h._handle || h.handle) {\n throw new Error('handle is not supported in Chrome Apps.')\n }\n if (typeof h.fd === 'number' && h.fd >= 0) {\n throw new Error('fd is not supported in Chrome Apps.')\n }\n\n // The first argument is a configuration object\n if (h.backlog) {\n backlog = h.backlog\n }\n\n if (typeof h.port === 'number' || typeof h.port === 'string' ||\n (typeof h.port === 'undefined' && 'port' in h)) {\n // Undefined is interpreted as zero (random port) for consistency\n // with net.connect().\n address = h.host || null\n port = h.port\n } else if (h.path && isPipeName(h.path)) {\n throw new Error('Pipes are not supported in Chrome Apps.')\n } else {\n throw new Error('Invalid listen argument: ' + h)\n }\n } else if (isPipeName(arguments[0])) {\n // UNIX socket or Windows pipe.\n throw new Error('Pipes are not supported in Chrome Apps.')\n } else if (arguments[1] === undefined ||\n typeof arguments[1] === 'function' ||\n typeof arguments[1] === 'number') {\n // The first argument is the port, no IP given.\n address = null\n } else {\n // The first argument is the port, the second an IP.\n address = arguments[1]\n }\n\n // now do something with port, address, backlog\n\n if (this.id) {\n this.close()\n }\n\n // If port is invalid or undefined, bind to a random port.\n assertPort(port)\n this._port = port | 0\n\n this._host = address\n\n var isAny6 = !this._host\n if (isAny6) {\n this._host = '::'\n }\n\n this._backlog = typeof backlog === 'number' ? backlog : undefined\n\n this.connecting = true\n\n chrome.sockets.tcpServer.create((createInfo) => {\n if (!this.connecting || this.id) {\n ignoreLastError()\n chrome.sockets.tcpServer.close(createInfo.socketId)\n return\n }\n if (chrome.runtime.lastError) {\n this.emit('error', new Error(chrome.runtime.lastError.message))\n return\n }\n\n var socketId = this.id = createInfo.socketId\n servers[this.id] = this\n\n var listen = () => chrome.sockets.tcpServer.listen(this.id, this._host,\n this._port, this._backlog,\n (result) => {\n // callback may be after close\n if (this.id !== socketId) {\n ignoreLastError()\n return\n }\n if (result !== 0 && isAny6) {\n ignoreLastError()\n this._host = '0.0.0.0' // try IPv4\n isAny6 = false\n return listen()\n }\n\n this._onListen(result)\n })\n listen()\n })\n\n return this\n}\n\nServer.prototype._onListen = function (result) {\n this.connecting = false\n\n if (result === 0) {\n var idBefore = this.id\n chrome.sockets.tcpServer.getInfo(this.id, (info) => {\n if (this.id !== idBefore) {\n ignoreLastError()\n return\n }\n if (chrome.runtime.lastError) {\n this._onListen(-2) // net::ERR_FAILED\n return\n }\n\n this._address = {\n port: info.localPort,\n family: info.localAddress &&\n info.localAddress.indexOf(':') !== -1 ? 'IPv6' : 'IPv4',\n address: info.localAddress\n }\n this.emit('listening')\n })\n } else {\n this.emit('error', exceptionWithHostPort(result, 'listen', this._host, this._port))\n if (this.id) {\n chrome.sockets.tcpServer.close(this.id)\n delete servers[this.id]\n this.id = null\n }\n }\n}\n\nServer.prototype._onAccept = function (clientSocketId) {\n // Set the `maxConnections` property to reject connections when the server's\n // connection count gets high.\n if (this.maxConnections && this._connections >= this.maxConnections) {\n chrome.sockets.tcp.close(clientSocketId)\n console.warn('Rejected connection - hit `maxConnections` limit')\n return\n }\n\n this._connections += 1\n\n var acceptedSocket = new Socket({\n server: this,\n id: clientSocketId,\n allowHalfOpen: this.allowHalfOpen,\n pauseOnCreate: this.pauseOnConnect\n })\n acceptedSocket.on('connect', () => this.emit('connection', acceptedSocket))\n}\n\nServer.prototype._onAcceptError = function (resultCode) {\n this.emit('error', errnoException(resultCode, 'accept'))\n this.close()\n}\n\n/**\n * Stops the server from accepting new connections and keeps existing\n * connections. This function is asynchronous, the server is finally closed\n * when all connections are ended and the server emits a 'close' event.\n * Optionally, you can pass a callback to listen for the 'close' event.\n * @param {function} callback\n */\nServer.prototype.close = function (callback) {\n if (typeof callback === 'function') {\n if (!this.id) {\n this.once('close', () => callback(new Error('Not running')))\n } else {\n this.once('close', callback)\n }\n }\n\n if (this.id) {\n chrome.sockets.tcpServer.close(this.id)\n delete servers[this.id]\n this.id = null\n }\n this._address = null\n this.connecting = false\n\n this._emitCloseIfDrained()\n\n return this\n}\n\nServer.prototype._emitCloseIfDrained = function () {\n if (this.id || this.connecting || this._connections) {\n return\n }\n\n process.nextTick(emitCloseNT, this)\n}\n\nfunction emitCloseNT (self) {\n if (self.id || self.connecting || self._connections) {\n return\n }\n self.emit('close')\n}\n\nObject.defineProperty(Server.prototype, 'listening', {\n get: function () {\n return !!this._address\n },\n configurable: true,\n enumerable: true\n})\n\n/**\n * Returns the bound address, the address family name and port of the socket\n * as reported by the operating system. Returns an object with three\n * properties, e.g. { port: 12346, family: 'IPv4', address: '127.0.0.1' }\n *\n * @return {Object} information\n */\nServer.prototype.address = function () {\n return this._address\n}\n\nServer.prototype.unref =\nServer.prototype.ref = function () {\n // No chrome.socket equivalent\n return this\n}\n\n/**\n * Asynchronously get the number of concurrent connections on the server.\n * Works when sockets were sent to forks.\n *\n * Callback should take two arguments err and count.\n *\n * @param {function} callback\n */\nServer.prototype.getConnections = function (callback) {\n process.nextTick(callback, null, this._connections)\n}\n\ninherits(Socket, stream.Duplex)\n\n/**\n * Class: net.Socket\n * =================\n *\n * This object is an abstraction of a TCP or UNIX socket. net.Socket instances\n * implement a duplex Stream interface. They can be created by the user and\n * used as a client (with connect()) or they can be created by Node and passed\n * to the user through the 'connection' event of a server.\n *\n * Construct a new socket object.\n *\n * options is an object with the following defaults:\n *\n * { fd: null // NO CHROME EQUIVALENT\n * type: null\n * allowHalfOpen: false // NO CHROME EQUIVALENT\n * }\n *\n * `type` can only be 'tcp4' (for now).\n *\n * Event: 'connect'\n * Emitted when a socket connection is successfully established. See\n * connect().\n *\n * Event: 'data'\n * - Buffer object\n * Emitted when data is received. The argument data will be a Buffer or\n * String. Encoding of data is set by socket.setEncoding(). (See the Readable\n * Stream section for more information.)\n *\n * Note that the data will be lost if there is no listener when a Socket\n * emits a 'data' event.\n *\n * Event: 'end'\n * Emitted when the other end of the socket sends a FIN packet.\n *\n * By default (allowHalfOpen == false) the socket will destroy its file\n * descriptor once it has written out its pending write queue. However,\n * by setting allowHalfOpen == true the socket will not automatically\n * end() its side allowing the user to write arbitrary amounts of data,\n * with the caveat that the user is required to end() their side now.\n *\n * Event: 'timeout'\n * Emitted if the socket times out from inactivity. This is only to notify\n * that the socket has been idle. The user must manually close the connection.\n *\n * See also: socket.setTimeout()\n *\n * Event: 'drain'\n * Emitted when the write buffer becomes empty. Can be used to throttle\n * uploads.\n *\n * See also: the return values of socket.write()\n *\n * Event: 'error'\n * - Error object\n * Emitted when an error occurs. The 'close' event will be called directly\n * following this event.\n *\n * Event: 'close'\n * - had_error Boolean true if the socket had a transmission error\n * Emitted once the socket is fully closed. The argument had_error is a\n * boolean which says if the socket was closed due to a transmission error.\n */\nfunction Socket (options) {\n if (!(this instanceof Socket)) return new Socket(options)\n\n if (typeof options === 'number') {\n options = { fd: options } // Legacy interface.\n } else if (options === undefined) {\n options = {}\n }\n\n if (options.handle) {\n throw new Error('handle is not supported in Chrome Apps.')\n } else if (options.fd !== undefined) {\n throw new Error('fd is not supported in Chrome Apps.')\n }\n\n options.decodeStrings = true\n options.objectMode = false\n stream.Duplex.call(this, options)\n\n this.destroyed = false\n this._hadError = false // Used by _http_client.js\n this.id = null // a number > 0\n this._parent = null\n this._host = null\n this._port = null\n this._pendingData = null\n\n this.ondata = null\n this.onend = null\n\n this._init()\n this._reset()\n\n // default to *not* allowing half open sockets\n // Note: this is not possible in Chrome Apps, see https://crbug.com/124952\n this.allowHalfOpen = options.allowHalfOpen || false\n\n // shut down the socket when we're finished with it.\n this.on('finish', this.destroy)\n\n if (options.server) {\n this.server = this._server = options.server\n this.id = options.id\n sockets[this.id] = this\n\n if (options.pauseOnCreate) {\n // stop the handle from reading and pause the stream\n // (Already paused in Chrome version)\n this._readableState.flowing = false\n }\n\n // For incoming sockets (from server), it's already connected.\n this.connecting = true\n this.writable = true\n this._onConnect()\n }\n}\nexports.Socket = Socket\n\n// called when creating new Socket, or when re-using a closed Socket\nSocket.prototype._init = function () {\n // The amount of received bytes.\n this.bytesRead = 0\n\n this._bytesDispatched = 0\n\n // Reserve properties\n this.server = null\n this._server = null\n}\n\n// called when creating new Socket, or when closing a Socket\nSocket.prototype._reset = function () {\n this.remoteAddress = this.remotePort =\n this.localAddress = this.localPort = null\n this.remoteFamily = 'IPv4'\n this.readable = this.writable = false\n this.connecting = false\n}\n\n/**\n * socket.connect(port, [host], [connectListener])\n * socket.connect(options, [connectListener])\n *\n * Opens the connection for a given socket. If port and host are given, then\n * the socket will be opened as a TCP socket, if host is omitted, localhost\n * will be assumed. If a path is given, the socket will be opened as a unix\n * socket to that path.\n *\n * Normally this method is not needed, as net.createConnection opens the\n * socket. Use this only if you are implementing a custom Socket.\n *\n * This function is asynchronous. When the 'connect' event is emitted the\n * socket is established. If there is a problem connecting, the 'connect'\n * event will not be emitted, the 'error' event will be emitted with the\n * exception.\n *\n * The connectListener parameter will be added as an listener for the\n * 'connect' event.\n *\n * @param {Object} options\n * @param {function} cb\n * @return {Socket} this socket (for chaining)\n */\nSocket.prototype.connect = function () {\n const argsLen = arguments.length\n var args = new Array(argsLen)\n for (var i = 0; i < argsLen; i++) args[i] = arguments[i]\n args = normalizeConnectArgs(args)\n var options = args[0]\n var cb = args[1]\n\n if (options.path) {\n throw new Error('Pipes are not supported in Chrome Apps.')\n }\n\n if (this.id) {\n // already connected, destroy and connect again\n this.destroy()\n }\n\n if (this.destroyed) {\n this._readableState.reading = false\n this._readableState.ended = false\n this._readableState.endEmitted = false\n this._writableState.ended = false\n this._writableState.ending = false\n this._writableState.finished = false\n this._writableState.errorEmitted = false\n this._writableState.length = 0\n this.destroyed = false\n }\n\n this.connecting = true\n this.writable = true\n\n this._host = options.host || 'localhost'\n this._port = options.port\n\n if (typeof this._port !== 'undefined') {\n if (typeof this._port !== 'number' && typeof this._port !== 'string') {\n throw new TypeError('\"port\" option should be a number or string: ' + this._port)\n }\n if (!isLegalPort(this._port)) {\n throw new RangeError('\"port\" option should be >= 0 and < 65536: ' + this._port)\n }\n }\n this._port |= 0\n\n this._init()\n\n this._unrefTimer()\n\n if (typeof cb === 'function') {\n this.once('connect', cb)\n }\n\n chrome.sockets.tcp.create((createInfo) => {\n if (!this.connecting || this.id) {\n ignoreLastError()\n chrome.sockets.tcp.close(createInfo.socketId)\n return\n }\n if (chrome.runtime.lastError) {\n this.destroy(new Error(chrome.runtime.lastError.message))\n return\n }\n\n this.id = createInfo.socketId\n sockets[this.id] = this\n\n chrome.sockets.tcp.setPaused(this.id, true)\n\n chrome.sockets.tcp.connect(this.id, this._host, this._port, (result) => {\n // callback may come after call to destroy\n if (this.id !== createInfo.socketId) {\n ignoreLastError()\n return\n }\n if (result !== 0) {\n this.destroy(exceptionWithHostPort(result, 'connect', this._host, this._port))\n return\n }\n\n this._unrefTimer()\n this._onConnect()\n })\n })\n\n return this\n}\n\nSocket.prototype._onConnect = function () {\n var idBefore = this.id\n chrome.sockets.tcp.getInfo(this.id, (result) => {\n if (this.id !== idBefore) {\n ignoreLastError()\n return\n }\n if (chrome.runtime.lastError) {\n this.destroy(new Error(chrome.runtime.lastError.message))\n return\n }\n\n this.remoteAddress = result.peerAddress\n this.remoteFamily = result.peerAddress &&\n result.peerAddress.indexOf(':') !== -1 ? 'IPv6' : 'IPv4'\n this.remotePort = result.peerPort\n this.localAddress = result.localAddress\n this.localPort = result.localPort\n\n this.connecting = false\n this.readable = true\n\n this.emit('connect')\n // start the first read, or get an immediate EOF.\n // this doesn't actually consume any bytes, because len=0\n if (!this.isPaused()) this.read(0)\n })\n}\n\n/**\n * The number of characters currently buffered to be written.\n * @type {number}\n */\nObject.defineProperty(Socket.prototype, 'bufferSize', {\n get: function () {\n if (this.id) {\n var bytes = this._writableState.length\n if (this._pendingData) bytes += this._pendingData.length\n return bytes\n }\n }\n})\n\nSocket.prototype.end = function (data, encoding) {\n stream.Duplex.prototype.end.call(this, data, encoding)\n this.writable = false\n}\n\nSocket.prototype._write = function (chunk, encoding, callback) {\n if (!callback) callback = () => {}\n\n if (this.connecting) {\n this._pendingData = chunk\n this.once('connect', () => this._write(chunk, encoding, callback))\n return\n }\n this._pendingData = null\n\n if (!this.id) {\n callback(new Error('This socket is closed'))\n return\n }\n\n // assuming buffer is browser implementation (`buffer` package on npm)\n var buffer = chunk.buffer\n if (chunk.byteLength !== buffer.byteLength) {\n buffer = buffer.slice(chunk.byteOffset, chunk.byteOffset + chunk.byteLength)\n }\n\n var idBefore = this.id\n chrome.sockets.tcp.send(this.id, buffer, (sendInfo) => {\n if (this.id !== idBefore) {\n ignoreLastError()\n return\n }\n\n if (sendInfo.resultCode < 0) {\n this._destroy(exceptionWithHostPort(sendInfo.resultCode, 'write', this.remoteAddress, this.remotePort), callback)\n } else {\n this._unrefTimer()\n callback(null)\n }\n })\n\n this._bytesDispatched += chunk.length\n}\n\nSocket.prototype._read = function (bufferSize) {\n if (this.connecting || !this.id) {\n this.once('connect', () => this._read(bufferSize))\n return\n }\n\n chrome.sockets.tcp.setPaused(this.id, false)\n\n var idBefore = this.id\n chrome.sockets.tcp.getInfo(this.id, (result) => {\n if (this.id !== idBefore) {\n ignoreLastError()\n return\n }\n if (chrome.runtime.lastError || !result.connected) {\n this._onReceiveError(-15) // workaround for https://crbug.com/518161\n }\n })\n}\n\nSocket.prototype._onReceive = function (data) {\n var buffer = Buffer.from(data)\n var offset = this.bytesRead\n\n this.bytesRead += buffer.length\n this._unrefTimer()\n\n if (this.ondata) {\n console.error('socket.ondata = func is non-standard, use socket.on(\\'data\\', func)')\n this.ondata(buffer, offset, this.bytesRead)\n }\n if (!this.push(buffer)) { // if returns false, then apply backpressure\n chrome.sockets.tcp.setPaused(this.id, true)\n }\n}\n\nSocket.prototype._onReceiveError = function (resultCode) {\n if (resultCode === -100) { // net::ERR_CONNECTION_CLOSED\n if (this.onend) {\n console.error('socket.onend = func is non-standard, use socket.on(\\'end\\', func)')\n this.once('end', this.onend)\n }\n this.push(null)\n this.destroy()\n } else if (resultCode < 0) {\n this.destroy(errnoException(resultCode, 'read'))\n }\n}\n\nfunction protoGetter (name, callback) {\n Object.defineProperty(Socket.prototype, name, {\n configurable: false,\n enumerable: true,\n get: callback\n })\n}\n\n/**\n * The amount of bytes sent.\n * @return {number}\n */\nprotoGetter('bytesWritten', function bytesWritten () {\n if (this.id) return this._bytesDispatched + this.bufferSize\n})\n\nSocket.prototype.destroy = function (exception) {\n this._destroy(exception)\n}\n\nSocket.prototype._destroy = function (exception, cb) {\n var fireErrorCallbacks = () => {\n if (cb) cb(exception)\n if (exception && !this._writableState.errorEmitted) {\n process.nextTick(emitErrorNT, this, exception)\n this._writableState.errorEmitted = true\n }\n }\n\n if (this.destroyed) {\n // already destroyed, fire error callbacks\n fireErrorCallbacks()\n return\n }\n\n if (this._server) {\n this._server._connections -= 1\n if (this._server._emitCloseIfDrained) this._server._emitCloseIfDrained()\n }\n\n this._reset()\n\n for (var s = this; s !== null; s = s._parent) timers.unenroll(s) // eslint-disable-line node/no-deprecated-api\n\n this.destroyed = true\n\n // If _destroy() has been called before chrome.sockets.tcp.create()\n // callback, we don't have an id. Therefore we don't need to close\n // or disconnect\n if (this.id) {\n delete sockets[this.id]\n chrome.sockets.tcp.close(this.id, () => {\n if (this.destroyed) {\n this.emit('close', !!exception)\n }\n })\n this.id = null\n }\n\n fireErrorCallbacks()\n}\n\nSocket.prototype.destroySoon = function () {\n if (this.writable) this.end()\n\n if (this._writableState.finished) this.destroy()\n}\n\n/**\n * Sets the socket to timeout after timeout milliseconds of inactivity on the socket.\n * By default net.Socket do not have a timeout. When an idle timeout is triggered the\n * socket will receive a 'timeout' event but the connection will not be severed. The\n * user must manually end() or destroy() the socket.\n *\n * If timeout is 0, then the existing idle timeout is disabled.\n *\n * The optional callback parameter will be added as a one time listener for the 'timeout' event.\n *\n * @param {number} timeout\n * @param {function} callback\n */\nSocket.prototype.setTimeout = function (timeout, callback) {\n if (timeout === 0) {\n timers.unenroll(this) // eslint-disable-line node/no-deprecated-api\n if (callback) {\n this.removeListener('timeout', callback)\n }\n } else {\n timers.enroll(this, timeout) // eslint-disable-line node/no-deprecated-api\n timers._unrefActive(this)\n if (callback) {\n this.once('timeout', callback)\n }\n }\n\n return this\n}\n\nSocket.prototype._onTimeout = function () {\n this.emit('timeout')\n}\n\nSocket.prototype._unrefTimer = function unrefTimer () {\n for (var s = this; s !== null; s = s._parent) {\n timers._unrefActive(s)\n }\n}\n\n/**\n * Disables the Nagle algorithm. By default TCP connections use the Nagle\n * algorithm, they buffer data before sending it off. Setting true for noDelay\n * will immediately fire off data each time socket.write() is called. noDelay\n * defaults to true.\n *\n * NOTE: The Chrome version of this function is async, whereas the node\n * version is sync. Keep this in mind.\n *\n * @param {boolean} [noDelay] Optional\n * @param {function} callback CHROME-SPECIFIC: Called when the configuration\n * operation is done.\n */\nSocket.prototype.setNoDelay = function (noDelay, callback) {\n if (!this.id) {\n this.once('connect', () => this.setNoDelay(noDelay, callback))\n return this\n }\n\n // backwards compatibility: assume true when `noDelay` is omitted\n noDelay = noDelay === undefined ? true : !!noDelay\n chrome.sockets.tcp.setNoDelay(this.id, noDelay, chromeCallbackWrap(callback))\n\n return this\n}\n\n/**\n * Enable/disable keep-alive functionality, and optionally set the initial\n * delay before the first keepalive probe is sent on an idle socket. enable\n * defaults to false.\n *\n * Set initialDelay (in milliseconds) to set the delay between the last data\n * packet received and the first keepalive probe. Setting 0 for initialDelay\n * will leave the value unchanged from the default (or previous) setting.\n * Defaults to 0.\n *\n * NOTE: The Chrome version of this function is async, whereas the node\n * version is sync. Keep this in mind.\n *\n * @param {boolean} [enable] Optional\n * @param {number} [initialDelay]\n * @param {function} callback CHROME-SPECIFIC: Called when the configuration\n * operation is done.\n */\nSocket.prototype.setKeepAlive = function (enable, initialDelay, callback) {\n if (!this.id) {\n this.once('connect', () => this.setKeepAlive(enable, initialDelay, callback))\n return this\n }\n\n chrome.sockets.tcp.setKeepAlive(this.id, !!enable, ~~(initialDelay / 1000),\n chromeCallbackWrap(callback))\n\n return this\n}\n\n/**\n * Returns the bound address, the address family name and port of the socket\n * as reported by the operating system. Returns an object with three\n * properties, e.g. { port: 12346, family: 'IPv4', address: '127.0.0.1' }\n *\n * @return {Object} information\n */\nSocket.prototype.address = function () {\n return {\n address: this.localAddress,\n port: this.localPort,\n family: this.localAddress &&\n this.localAddress.indexOf(':') !== -1 ? 'IPv6' : 'IPv4'\n }\n}\n\nObject.defineProperty(Socket.prototype, '_connecting', {\n get: function () {\n return this.connecting\n }\n})\n\nObject.defineProperty(Socket.prototype, 'readyState', {\n get: function () {\n if (this.connecting) {\n return 'opening'\n } else if (this.readable && this.writable) {\n return 'open'\n } else {\n return 'closed'\n }\n }\n})\n\nSocket.prototype.unref =\nSocket.prototype.ref = function () {\n // No chrome.socket equivalent\n return this\n}\n\n//\n// EXPORTED HELPERS\n//\n\n// Source: https://developers.google.com/web/fundamentals/input/form/provide-real-time-validation#use-these-attributes-to-validate-input\nvar IPv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/\nvar IPv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/\n\nexports.isIPv4 = IPv4Regex.test.bind(IPv4Regex)\nexports.isIPv6 = IPv6Regex.test.bind(IPv6Regex)\n\nexports.isIP = function (ip) {\n return exports.isIPv4(ip) ? 4 : exports.isIPv6(ip) ? 6 : 0\n}\n\n//\n// HELPERS\n//\n\n/**\n * Returns an array [options] or [options, cb]\n * It is the same as the argument of Socket.prototype.connect().\n */\nfunction normalizeConnectArgs (args) {\n var options = {}\n\n if (args[0] !== null && typeof args[0] === 'object') {\n // connect(options, [cb])\n options = args[0]\n } else if (isPipeName(args[0])) {\n // connect(path, [cb])\n throw new Error('Pipes are not supported in Chrome Apps.')\n } else {\n // connect(port, [host], [cb])\n options.port = args[0]\n if (typeof args[1] === 'string') {\n options.host = args[1]\n }\n }\n\n var cb = args[args.length - 1]\n return typeof cb === 'function' ? [options, cb] : [options]\n}\n\nfunction toNumber (x) {\n return (x = Number(x)) >= 0 ? x : false\n}\n\nfunction isPipeName (s) {\n return typeof s === 'string' && toNumber(s) === false\n}\n\n// Check that the port number is not NaN when coerced to a number,\n// is an integer and that it falls within the legal range of port numbers.\nfunction isLegalPort (port) {\n if ((typeof port !== 'number' && typeof port !== 'string') ||\n (typeof port === 'string' && port.trim().length === 0)) {\n return false\n }\n return +port === (+port >>> 0) && port <= 0xFFFF\n}\n\nfunction assertPort (port) {\n if (typeof port !== 'undefined' && !isLegalPort(port)) {\n throw new RangeError('\"port\" argument must be >= 0 and < 65536')\n }\n}\n\n// Call the getter function to prevent \"Unchecked runtime.lastError\" errors\nfunction ignoreLastError () {\n void chrome.runtime.lastError // eslint-disable-line no-void\n}\n\nfunction chromeCallbackWrap (callback) {\n return () => {\n var error\n if (chrome.runtime.lastError) {\n console.error(chrome.runtime.lastError.message)\n error = new Error(chrome.runtime.lastError.message)\n }\n if (callback) callback(error)\n }\n}\n\nfunction emitErrorNT (self, err) {\n self.emit('error', err)\n}\n\n// Full list of possible error codes: https://code.google.com/p/chrome-browser/source/browse/trunk/src/net/base/net_error_list.h\n// TODO: Try to reproduce errors in both node & Chrome Apps and extend this list\n// (what conditions lead to EPIPE?)\nvar errorChromeToUv = {\n '-10': 'EACCES',\n '-22': 'EACCES',\n '-138': 'EACCES',\n '-147': 'EADDRINUSE',\n '-108': 'EADDRNOTAVAIL',\n '-103': 'ECONNABORTED',\n '-102': 'ECONNREFUSED',\n '-101': 'ECONNRESET',\n '-16': 'EEXIST',\n '-8': 'EFBIG',\n '-109': 'EHOSTUNREACH',\n '-4': 'EINVAL',\n '-23': 'EISCONN',\n '-6': 'ENOENT',\n '-13': 'ENOMEM',\n '-106': 'ENONET',\n '-18': 'ENOSPC',\n '-11': 'ENOSYS',\n '-15': 'ENOTCONN',\n '-105': 'ENOTFOUND',\n '-118': 'ETIMEDOUT',\n '-100': 'EOF'\n}\nfunction errnoException (err, syscall, details) {\n var uvCode = errorChromeToUv[err] || 'UNKNOWN'\n var message = syscall + ' ' + err + ' ' + details\n if (chrome.runtime.lastError) {\n message += ' ' + chrome.runtime.lastError.message\n }\n message += ' (mapped uv code: ' + uvCode + ')'\n var e = new Error(message)\n e.code = e.errno = uvCode\n // TODO: expose chrome error code; what property name?\n e.syscall = syscall\n return e\n}\n\nfunction exceptionWithHostPort (err, syscall, address, port, additional) {\n var details\n if (port && port > 0) {\n details = address + ':' + port\n } else {\n details = address\n }\n\n if (additional) {\n details += ' - Local (' + additional + ')'\n }\n var ex = errnoException(err, syscall, details)\n ex.address = address\n if (port) {\n ex.port = port\n }\n return ex\n}\n","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","var ipaddr = require('ipaddr.js');\n\nvar compact2string = function (buf) {\n switch(buf.length) {\n case 6:\n return buf[0] + \".\" + buf[1] + \".\" + buf[2] + \".\" + buf[3] + \":\" + buf.readUInt16BE(4);\n break;\n case 18:\n var hexGroups = [];\n for(var i = 0; i < 8; i++) {\n hexGroups.push(buf.readUInt16BE(i * 2).toString(16));\n }\n var host = ipaddr.parse(hexGroups.join(\":\")).toString();\n return \"[\" + host + \"]:\" + buf.readUInt16BE(16);\n default:\n throw new Error(\"Invalid Compact IP/PORT, It should contain 6 or 18 bytes\");\n }\n};\n\ncompact2string.multi = function (buf) {\n if(buf.length % 6 !== 0)\n throw new Error(\"buf length isn't multiple of compact IP/PORTs (6 bytes)\");\n\n var output = [];\n for (var i = 0; i <= buf.length - 1; i = i + 6) {\n output.push(compact2string(buf.slice(i, i + 6)));\n }\n\n return output;\n};\n\ncompact2string.multi6 = function (buf) {\n if(buf.length % 18 !== 0)\n throw new Error(\"buf length isn't multiple of compact IP6/PORTs (18 bytes)\");\n\n var output = [];\n for (var i = 0; i <= buf.length - 1; i = i + 18) {\n output.push(compact2string(buf.slice(i, i + 18)));\n }\n\n return output;\n};\n\nmodule.exports = compact2string;\n","module.exports = function cpus () {\n var num = navigator.hardwareConcurrency || 1\n var cpus = []\n for (var i = 0; i < num; i++) {\n cpus.push({\n model: '',\n speed: 0,\n times: { user: 0, nice: 0, sys: 0, idle: 0, irq: 0 }\n })\n }\n return cpus\n}\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","'use strict';\nconst {Transform, PassThrough} = require('stream');\nconst zlib = require('zlib');\nconst mimicResponse = require('mimic-response');\n\nmodule.exports = response => {\n\tconst contentEncoding = (response.headers['content-encoding'] || '').toLowerCase();\n\n\tif (!['gzip', 'deflate', 'br'].includes(contentEncoding)) {\n\t\treturn response;\n\t}\n\n\t// TODO: Remove this when targeting Node.js 12.\n\tconst isBrotli = contentEncoding === 'br';\n\tif (isBrotli && typeof zlib.createBrotliDecompress !== 'function') {\n\t\tresponse.destroy(new Error('Brotli is not supported on Node.js < 12'));\n\t\treturn response;\n\t}\n\n\tlet isEmpty = true;\n\n\tconst checker = new Transform({\n\t\ttransform(data, _encoding, callback) {\n\t\t\tisEmpty = false;\n\n\t\t\tcallback(null, data);\n\t\t},\n\n\t\tflush(callback) {\n\t\t\tcallback();\n\t\t}\n\t});\n\n\tconst finalStream = new PassThrough({\n\t\tautoDestroy: false,\n\t\tdestroy(error, callback) {\n\t\t\tresponse.destroy();\n\n\t\t\tcallback(error);\n\t\t}\n\t});\n\n\tconst decompressStream = isBrotli ? zlib.createBrotliDecompress() : zlib.createUnzip();\n\n\tdecompressStream.once('error', error => {\n\t\tif (isEmpty && !response.readable) {\n\t\t\tfinalStream.end();\n\t\t\treturn;\n\t\t}\n\n\t\tfinalStream.destroy(error);\n\t});\n\n\tmimicResponse(response, finalStream);\n\tresponse.pipe(checker).pipe(decompressStream).pipe(finalStream);\n\n\treturn finalStream;\n};\n","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';\n\n/**\n * @typedef {{ [key: string]: any }} Extensions\n * @typedef {Error} Err\n * @property {string} message\n */\n\n/**\n *\n * @param {Error} obj\n * @param {Extensions} props\n * @returns {Error & Extensions}\n */\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\n/**\n *\n * @param {any} err - An Error\n * @param {string|Extensions} code - A string code or props to set on the error\n * @param {Extensions} [props] - Props to set on the error\n * @returns {Error & Extensions}\n */\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = '';\n }\n\n if (code) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n // @ts-ignore\n const output = assign(new ErrClass(), props);\n\n return output;\n }\n}\n\nmodule.exports = createError;\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\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\nvar objectCreate = Object.create || objectCreatePolyfill\nvar objectKeys = Object.keys || objectKeysPolyfill\nvar bind = Function.prototype.bind || functionBindPolyfill\n\nfunction EventEmitter() {\n if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nvar hasDefineProperty;\ntry {\n var o = {};\n if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });\n hasDefineProperty = o.x === 0;\n} catch (err) { hasDefineProperty = false }\nif (hasDefineProperty) {\n Object.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n // check whether the input is a positive number (whose value is zero or\n // greater and not a NaN).\n if (typeof arg !== 'number' || arg < 0 || arg !== arg)\n throw new TypeError('\"defaultMaxListeners\" must be a positive number');\n defaultMaxListeners = arg;\n }\n });\n} else {\n EventEmitter.defaultMaxListeners = defaultMaxListeners;\n}\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n if (arguments.length > 1)\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Unhandled \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = objectCreate(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' \"' + String(type) + '\" listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit.');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n if (typeof console === 'object' && console.warn) {\n console.warn('%s: %s', w.name, w.message);\n }\n }\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n switch (arguments.length) {\n case 0:\n return this.listener.call(this.target);\n case 1:\n return this.listener.call(this.target, arguments[0]);\n case 2:\n return this.listener.call(this.target, arguments[0], arguments[1]);\n case 3:\n return this.listener.call(this.target, arguments[0], arguments[1],\n arguments[2]);\n default:\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i)\n args[i] = arguments[i];\n this.listener.apply(this.target, args);\n }\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = bind.call(onceWrapper, state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else\n spliceOne(list, position);\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = objectKeys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = objectCreate(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (!events)\n return [];\n\n var evlistener = events[type];\n if (!evlistener)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction objectCreatePolyfill(proto) {\n var F = function() {};\n F.prototype = proto;\n return new F;\n}\nfunction objectKeysPolyfill(obj) {\n var keys = [];\n for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n return k;\n}\nfunction functionBindPolyfill(context) {\n var fn = this;\n return function () {\n return fn.apply(context, arguments);\n };\n}\n","module.exports = class FixedFIFO {\n constructor (hwm) {\n if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) throw new Error('Max size for a FixedFIFO should be a power of two')\n this.buffer = new Array(hwm)\n this.mask = hwm - 1\n this.top = 0\n this.btm = 0\n this.next = null\n }\n\n push (data) {\n if (this.buffer[this.top] !== undefined) return false\n this.buffer[this.top] = data\n this.top = (this.top + 1) & this.mask\n return true\n }\n\n shift () {\n const last = this.buffer[this.btm]\n if (last === undefined) return undefined\n this.buffer[this.btm] = undefined\n this.btm = (this.btm + 1) & this.mask\n return last\n }\n\n peek () {\n return this.buffer[this.btm]\n }\n\n isEmpty () {\n return this.buffer[this.btm] === undefined\n }\n}\n","const FixedFIFO = require('./fixed-size')\n\nmodule.exports = class FastFIFO {\n constructor (hwm) {\n this.hwm = hwm || 16\n this.head = new FixedFIFO(this.hwm)\n this.tail = this.head\n this.length = 0\n }\n\n push (val) {\n this.length++\n if (!this.head.push(val)) {\n const prev = this.head\n this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length)\n this.head.push(val)\n }\n }\n\n shift () {\n if (this.length !== 0) this.length--\n const val = this.tail.shift()\n if (val === undefined && this.tail.next) {\n const next = this.tail.next\n this.tail.next = null\n this.tail = next\n return this.tail.shift()\n }\n\n return val\n }\n\n peek () {\n return this.tail.peek()\n }\n\n isEmpty () {\n return this.head.isEmpty()\n }\n}\n","if (typeof ReadableStream !== 'undefined' && !ReadableStream.prototype[Symbol.asyncIterator]) {\r\n ReadableStream.prototype[Symbol.asyncIterator] = function () {\r\n const reader = this.getReader()\r\n let last = reader.read()\r\n return {\r\n next () {\r\n const temp = last\r\n last = reader.read()\r\n return temp\r\n },\r\n return () {\r\n last.then(() => reader.releaseLock())\r\n },\r\n throw (err) {\r\n this.return()\r\n throw err\r\n },\r\n [Symbol.asyncIterator] () {\r\n return this\r\n }\r\n }\r\n }\r\n}\r\n","var FreeList = (function() {\n\tfunction FreeList(name, max, constructor) {\n\t\tthis.name = name;\n\t\tthis.max = max;\n\t\tthis.constructor = constructor != null ? constructor : function() {};\n\t\tthis.list = [];\n\t}\n\n\tFreeList.prototype.alloc = function() {\n\t\tif (this.list.length) {\n\t\t\treturn this.list.shift();\n\t\t} else {\n\t\t\treturn this.constructor.apply(this, arguments);\n\t\t}\n\t};\n\n\tFreeList.prototype.free = function(obj) {\n\t\tif (this.list.length < this.max) {\n\t\t\tthis.list.push(obj);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\treturn FreeList;\n})();\n\n// remain backward compatible\nFreeList.FreeList = FreeList;\n\nmodule.exports = FreeList;\n","// originally pulled out of simple-peer\n\nmodule.exports = function getBrowserRTC () {\n if (typeof globalThis === 'undefined') return null\n var wrtc = {\n RTCPeerConnection: globalThis.RTCPeerConnection || globalThis.mozRTCPeerConnection ||\n globalThis.webkitRTCPeerConnection,\n RTCSessionDescription: globalThis.RTCSessionDescription ||\n globalThis.mozRTCSessionDescription || globalThis.webkitRTCSessionDescription,\n RTCIceCandidate: globalThis.RTCIceCandidate || globalThis.mozRTCIceCandidate ||\n globalThis.webkitRTCIceCandidate\n }\n if (!wrtc.RTCPeerConnection) return null\n return wrtc\n}\n","/*jshint node:true */\n\nvar assert = require('assert');\n\nexports.HTTPParser = HTTPParser;\nfunction HTTPParser(type) {\n assert.ok(type === HTTPParser.REQUEST || type === HTTPParser.RESPONSE);\n this.type = type;\n this.state = type + '_LINE';\n this.info = {\n headers: [],\n upgrade: false\n };\n this.trailers = [];\n this.line = '';\n this.isChunked = false;\n this.connection = '';\n this.headerSize = 0; // for preventing too big headers\n this.body_bytes = null;\n this.isUserCall = false;\n this.hadError = false;\n}\nHTTPParser.encoding = 'ascii';\nHTTPParser.maxHeaderSize = 80 * 1024; // maxHeaderSize (in bytes) is configurable, but 80kb by default;\nHTTPParser.REQUEST = 'REQUEST';\nHTTPParser.RESPONSE = 'RESPONSE';\nvar kOnHeaders = HTTPParser.kOnHeaders = 0;\nvar kOnHeadersComplete = HTTPParser.kOnHeadersComplete = 1;\nvar kOnBody = HTTPParser.kOnBody = 2;\nvar kOnMessageComplete = HTTPParser.kOnMessageComplete = 3;\n\n// Some handler stubs, needed for compatibility\nHTTPParser.prototype[kOnHeaders] =\nHTTPParser.prototype[kOnHeadersComplete] =\nHTTPParser.prototype[kOnBody] =\nHTTPParser.prototype[kOnMessageComplete] = function () {};\n\nvar compatMode0_12 = true;\nObject.defineProperty(HTTPParser, 'kOnExecute', {\n get: function () {\n // hack for backward compatibility\n compatMode0_12 = false;\n return 4;\n }\n });\n\nvar methods = exports.methods = HTTPParser.methods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'POST',\n 'PUT',\n 'CONNECT',\n 'OPTIONS',\n 'TRACE',\n 'COPY',\n 'LOCK',\n 'MKCOL',\n 'MOVE',\n 'PROPFIND',\n 'PROPPATCH',\n 'SEARCH',\n 'UNLOCK',\n 'BIND',\n 'REBIND',\n 'UNBIND',\n 'ACL',\n 'REPORT',\n 'MKACTIVITY',\n 'CHECKOUT',\n 'MERGE',\n 'M-SEARCH',\n 'NOTIFY',\n 'SUBSCRIBE',\n 'UNSUBSCRIBE',\n 'PATCH',\n 'PURGE',\n 'MKCALENDAR',\n 'LINK',\n 'UNLINK'\n];\nvar method_connect = methods.indexOf('CONNECT');\nHTTPParser.prototype.reinitialize = HTTPParser;\nHTTPParser.prototype.close =\nHTTPParser.prototype.pause =\nHTTPParser.prototype.resume =\nHTTPParser.prototype.free = function () {};\nHTTPParser.prototype._compatMode0_11 = false;\nHTTPParser.prototype.getAsyncId = function() { return 0; };\n\nvar headerState = {\n REQUEST_LINE: true,\n RESPONSE_LINE: true,\n HEADER: true\n};\nHTTPParser.prototype.execute = function (chunk, start, length) {\n if (!(this instanceof HTTPParser)) {\n throw new TypeError('not a HTTPParser');\n }\n\n // backward compat to node < 0.11.4\n // Note: the start and length params were removed in newer version\n start = start || 0;\n length = typeof length === 'number' ? length : chunk.length;\n\n this.chunk = chunk;\n this.offset = start;\n var end = this.end = start + length;\n try {\n while (this.offset < end) {\n if (this[this.state]()) {\n break;\n }\n }\n } catch (err) {\n if (this.isUserCall) {\n throw err;\n }\n this.hadError = true;\n return err;\n }\n this.chunk = null;\n length = this.offset - start;\n if (headerState[this.state]) {\n this.headerSize += length;\n if (this.headerSize > HTTPParser.maxHeaderSize) {\n return new Error('max header size exceeded');\n }\n }\n return length;\n};\n\nvar stateFinishAllowed = {\n REQUEST_LINE: true,\n RESPONSE_LINE: true,\n BODY_RAW: true\n};\nHTTPParser.prototype.finish = function () {\n if (this.hadError) {\n return;\n }\n if (!stateFinishAllowed[this.state]) {\n return new Error('invalid state for EOF');\n }\n if (this.state === 'BODY_RAW') {\n this.userCall()(this[kOnMessageComplete]());\n }\n};\n\n// These three methods are used for an internal speed optimization, and it also\n// works if theses are noops. Basically consume() asks us to read the bytes\n// ourselves, but if we don't do it we get them through execute().\nHTTPParser.prototype.consume =\nHTTPParser.prototype.unconsume =\nHTTPParser.prototype.getCurrentBuffer = function () {};\n\n//For correct error handling - see HTTPParser#execute\n//Usage: this.userCall()(userFunction('arg'));\nHTTPParser.prototype.userCall = function () {\n this.isUserCall = true;\n var self = this;\n return function (ret) {\n self.isUserCall = false;\n return ret;\n };\n};\n\nHTTPParser.prototype.nextRequest = function () {\n this.userCall()(this[kOnMessageComplete]());\n this.reinitialize(this.type);\n};\n\nHTTPParser.prototype.consumeLine = function () {\n var end = this.end,\n chunk = this.chunk;\n for (var i = this.offset; i < end; i++) {\n if (chunk[i] === 0x0a) { // \\n\n var line = this.line + chunk.toString(HTTPParser.encoding, this.offset, i);\n if (line.charAt(line.length - 1) === '\\r') {\n line = line.substr(0, line.length - 1);\n }\n this.line = '';\n this.offset = i + 1;\n return line;\n }\n }\n //line split over multiple chunks\n this.line += chunk.toString(HTTPParser.encoding, this.offset, this.end);\n this.offset = this.end;\n};\n\nvar headerExp = /^([^: \\t]+):[ \\t]*((?:.*[^ \\t])|)/;\nvar headerContinueExp = /^[ \\t]+(.*[^ \\t])/;\nHTTPParser.prototype.parseHeader = function (line, headers) {\n if (line.indexOf('\\r') !== -1) {\n throw parseErrorCode('HPE_LF_EXPECTED');\n }\n\n var match = headerExp.exec(line);\n var k = match && match[1];\n if (k) { // skip empty string (malformed header)\n headers.push(k);\n headers.push(match[2]);\n } else {\n var matchContinue = headerContinueExp.exec(line);\n if (matchContinue && headers.length) {\n if (headers[headers.length - 1]) {\n headers[headers.length - 1] += ' ';\n }\n headers[headers.length - 1] += matchContinue[1];\n }\n }\n};\n\nvar requestExp = /^([A-Z-]+) ([^ ]+) HTTP\\/(\\d)\\.(\\d)$/;\nHTTPParser.prototype.REQUEST_LINE = function () {\n var line = this.consumeLine();\n if (!line) {\n return;\n }\n var match = requestExp.exec(line);\n if (match === null) {\n throw parseErrorCode('HPE_INVALID_CONSTANT');\n }\n this.info.method = this._compatMode0_11 ? match[1] : methods.indexOf(match[1]);\n if (this.info.method === -1) {\n throw new Error('invalid request method');\n }\n this.info.url = match[2];\n this.info.versionMajor = +match[3];\n this.info.versionMinor = +match[4];\n this.body_bytes = 0;\n this.state = 'HEADER';\n};\n\nvar responseExp = /^HTTP\\/(\\d)\\.(\\d) (\\d{3}) ?(.*)$/;\nHTTPParser.prototype.RESPONSE_LINE = function () {\n var line = this.consumeLine();\n if (!line) {\n return;\n }\n var match = responseExp.exec(line);\n if (match === null) {\n throw parseErrorCode('HPE_INVALID_CONSTANT');\n }\n this.info.versionMajor = +match[1];\n this.info.versionMinor = +match[2];\n var statusCode = this.info.statusCode = +match[3];\n this.info.statusMessage = match[4];\n // Implied zero length.\n if ((statusCode / 100 | 0) === 1 || statusCode === 204 || statusCode === 304) {\n this.body_bytes = 0;\n }\n this.state = 'HEADER';\n};\n\nHTTPParser.prototype.shouldKeepAlive = function () {\n if (this.info.versionMajor > 0 && this.info.versionMinor > 0) {\n if (this.connection.indexOf('close') !== -1) {\n return false;\n }\n } else if (this.connection.indexOf('keep-alive') === -1) {\n return false;\n }\n if (this.body_bytes !== null || this.isChunked) { // || skipBody\n return true;\n }\n return false;\n};\n\nHTTPParser.prototype.HEADER = function () {\n var line = this.consumeLine();\n if (line === undefined) {\n return;\n }\n var info = this.info;\n if (line) {\n this.parseHeader(line, info.headers);\n } else {\n var headers = info.headers;\n var hasContentLength = false;\n var currentContentLengthValue;\n var hasUpgradeHeader = false;\n for (var i = 0; i < headers.length; i += 2) {\n switch (headers[i].toLowerCase()) {\n case 'transfer-encoding':\n this.isChunked = headers[i + 1].toLowerCase() === 'chunked';\n break;\n case 'content-length':\n currentContentLengthValue = +headers[i + 1];\n if (hasContentLength) {\n // Fix duplicate Content-Length header with same values.\n // Throw error only if values are different.\n // Known issues:\n // https://github.com/request/request/issues/2091#issuecomment-328715113\n // https://github.com/nodejs/node/issues/6517#issuecomment-216263771\n if (currentContentLengthValue !== this.body_bytes) {\n throw parseErrorCode('HPE_UNEXPECTED_CONTENT_LENGTH');\n }\n } else {\n hasContentLength = true;\n this.body_bytes = currentContentLengthValue;\n }\n break;\n case 'connection':\n this.connection += headers[i + 1].toLowerCase();\n break;\n case 'upgrade':\n hasUpgradeHeader = true;\n break;\n }\n }\n\n // See https://github.com/creationix/http-parser-js/pull/53\n // if both isChunked and hasContentLength, content length wins\n // because it has been verified to match the body length already\n if (this.isChunked && hasContentLength) {\n this.isChunked = false;\n }\n\n // Logic from https://github.com/nodejs/http-parser/blob/921d5585515a153fa00e411cf144280c59b41f90/http_parser.c#L1727-L1737\n // \"For responses, \"Upgrade: foo\" and \"Connection: upgrade\" are\n // mandatory only when it is a 101 Switching Protocols response,\n // otherwise it is purely informational, to announce support.\n if (hasUpgradeHeader && this.connection.indexOf('upgrade') != -1) {\n info.upgrade = this.type === HTTPParser.REQUEST || info.statusCode === 101;\n } else {\n info.upgrade = info.method === method_connect;\n }\n\n info.shouldKeepAlive = this.shouldKeepAlive();\n //problem which also exists in original node: we should know skipBody before calling onHeadersComplete\n var skipBody;\n if (compatMode0_12) {\n skipBody = this.userCall()(this[kOnHeadersComplete](info));\n } else {\n skipBody = this.userCall()(this[kOnHeadersComplete](info.versionMajor,\n info.versionMinor, info.headers, info.method, info.url, info.statusCode,\n info.statusMessage, info.upgrade, info.shouldKeepAlive));\n }\n if (skipBody === 2) {\n this.nextRequest();\n return true;\n } else if (this.isChunked && !skipBody) {\n this.state = 'BODY_CHUNKHEAD';\n } else if (skipBody || this.body_bytes === 0) {\n this.nextRequest();\n // For older versions of node (v6.x and older?), that return skipBody=1 or skipBody=true,\n // need this \"return true;\" if it's an upgrade request.\n return info.upgrade;\n } else if (this.body_bytes === null) {\n this.state = 'BODY_RAW';\n } else {\n this.state = 'BODY_SIZED';\n }\n }\n};\n\nHTTPParser.prototype.BODY_CHUNKHEAD = function () {\n var line = this.consumeLine();\n if (line === undefined) {\n return;\n }\n this.body_bytes = parseInt(line, 16);\n if (!this.body_bytes) {\n this.state = 'BODY_CHUNKTRAILERS';\n } else {\n this.state = 'BODY_CHUNK';\n }\n};\n\nHTTPParser.prototype.BODY_CHUNK = function () {\n var length = Math.min(this.end - this.offset, this.body_bytes);\n this.userCall()(this[kOnBody](this.chunk, this.offset, length));\n this.offset += length;\n this.body_bytes -= length;\n if (!this.body_bytes) {\n this.state = 'BODY_CHUNKEMPTYLINE';\n }\n};\n\nHTTPParser.prototype.BODY_CHUNKEMPTYLINE = function () {\n var line = this.consumeLine();\n if (line === undefined) {\n return;\n }\n assert.equal(line, '');\n this.state = 'BODY_CHUNKHEAD';\n};\n\nHTTPParser.prototype.BODY_CHUNKTRAILERS = function () {\n var line = this.consumeLine();\n if (line === undefined) {\n return;\n }\n if (line) {\n this.parseHeader(line, this.trailers);\n } else {\n if (this.trailers.length) {\n this.userCall()(this[kOnHeaders](this.trailers, ''));\n }\n this.nextRequest();\n }\n};\n\nHTTPParser.prototype.BODY_RAW = function () {\n var length = this.end - this.offset;\n this.userCall()(this[kOnBody](this.chunk, this.offset, length));\n this.offset = this.end;\n};\n\nHTTPParser.prototype.BODY_SIZED = function () {\n var length = Math.min(this.end - this.offset, this.body_bytes);\n this.userCall()(this[kOnBody](this.chunk, this.offset, length));\n this.offset += length;\n this.body_bytes -= length;\n if (!this.body_bytes) {\n this.nextRequest();\n }\n};\n\n// backward compat to node < 0.11.6\n['Headers', 'HeadersComplete', 'Body', 'MessageComplete'].forEach(function (name) {\n var k = HTTPParser['kOn' + name];\n Object.defineProperty(HTTPParser.prototype, 'on' + name, {\n get: function () {\n return this[k];\n },\n set: function (to) {\n // hack for backward compatibility\n this._compatMode0_11 = true;\n method_connect = 'CONNECT';\n return (this[k] = to);\n }\n });\n});\n\nfunction parseErrorCode(code) {\n var err = new Error('Parse Error');\n err.code = code;\n return err;\n}\n","'use strict'\nconst idb = require('idb')\n\nconst EventEmitter = require('events').EventEmitter\nconst queueMicrotask = require('queue-microtask')\n\nclass Storage extends EventEmitter {\n constructor (chunkLength, opts) {\n if (!opts) opts = {}\n super()\n\n this.chunkLength = Number(chunkLength)\n if (!this.chunkLength) throw new Error('First argument must be a chunk length')\n\n this.closed = false\n this.destroyed = false\n this.length = Number(opts.length) || Infinity\n this.name = opts.name || 'idb-chunk-store'\n\n if (this.length !== Infinity) {\n this.lastChunkLength = (this.length % this.chunkLength) || this.chunkLength\n this.lastChunkIndex = Math.ceil(this.length / this.chunkLength) - 1\n }\n\n this.dbPromise = idb.openDB(this.name, undefined, {\n upgrade: (db) => {\n db.createObjectStore('chunks')\n },\n blocking: () => {\n // Fires if the database is deleted from outside this Storage object\n this.close()\n },\n terminated: () => {\n this.closed = true\n this.emit('error', new Error('Database unexpectedly closed'))\n }\n })\n }\n\n put (index, buf, cb = () => {}) {\n if (this.closed) return queueMicrotask(() => cb(new Error('Storage is closed')))\n\n const isLastChunk = (index === this.lastChunkIndex)\n if (isLastChunk && buf.length !== this.lastChunkLength) {\n return queueMicrotask(() => cb(new Error('Last chunk length must be ' + this.lastChunkLength)))\n }\n if (!isLastChunk && buf.length !== this.chunkLength) {\n return queueMicrotask(() => cb(new Error('Chunk length must be ' + this.chunkLength)))\n }\n\n // Zero-copy coerce Buffer to Uint8Array\n buf = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n\n // If the backing buffer is larger, copy out only the relevant slice\n // so extra data doesn't get saved to indexeddb\n if (buf.byteOffset !== 0 || buf.byteLength !== buf.buffer.byteLength) {\n buf = buf.slice()\n }\n\n ;(async () => {\n try {\n const db = await this.dbPromise\n await db.put('chunks', buf, index)\n } catch (err) {\n cb(err)\n return\n }\n\n cb(null)\n })()\n }\n\n get (index, opts, cb = () => {}) {\n if (typeof opts === 'function') return this.get(index, {}, opts)\n if (!opts) opts = {}\n if (this.closed) return queueMicrotask(() => cb(new Error('Storage is closed')))\n\n ;(async () => {\n let rawResult\n try {\n const db = await this.dbPromise\n rawResult = await db.get('chunks', index)\n } catch (err) {\n cb(err)\n return\n }\n\n // rawResult should be undefined if the chunk is not found,\n // but some old browsers occasionally return null\n if (rawResult == null) {\n const err = new Error('Chunk not found')\n err.notFound = true\n cb(err)\n return\n }\n\n let buf = Buffer.from(rawResult.buffer, rawResult.byteOffset, rawResult.byteLength)\n\n const offset = opts.offset || 0\n const len = opts.length || (buf.length - offset)\n\n if (offset !== 0 || len !== buf.length) {\n buf = buf.slice(offset, len + offset)\n }\n\n cb(null, buf)\n })()\n }\n\n close (cb = () => {}) {\n if (this.closed) return queueMicrotask(() => cb(new Error('Storage is closed')))\n this.closed = true\n\n ;(async () => {\n try {\n const db = await this.dbPromise\n db.close()\n } catch (err) {\n cb(err)\n return\n }\n\n cb(null)\n })()\n }\n\n destroy (cb = () => {}) {\n if (this.closed) return queueMicrotask(() => cb(new Error('Storage is closed')))\n if (this.destroyed) return queueMicrotask(() => cb(new Error('Storage is destroyed')))\n this.destroyed = true\n\n this.close(async (err) => {\n if (err) {\n cb(err)\n return\n }\n\n try {\n await idb.deleteDB(this.name)\n } catch (err) {\n cb(err)\n return\n }\n\n cb(null)\n })\n }\n}\nmodule.exports = Storage\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*! immediate-chunk-store. MIT License. Feross Aboukhadijeh */\n// TODO: remove when window.queueMicrotask() is well supported\nconst queueMicrotask = require('queue-microtask')\n\nclass ImmediateStore {\n constructor (store) {\n this.store = store\n this.chunkLength = store.chunkLength\n\n if (!this.store || !this.store.get || !this.store.put) {\n throw new Error('First argument must be abstract-chunk-store compliant')\n }\n\n this.mem = []\n }\n\n put (index, buf, cb = () => {}) {\n this.mem[index] = buf\n this.store.put(index, buf, err => {\n this.mem[index] = null\n cb(err)\n })\n }\n\n get (index, opts, cb = () => {}) {\n if (typeof opts === 'function') return this.get(index, null, opts)\n\n let buf = this.mem[index]\n\n // if the chunk isn't in the immediate memory cache\n if (!buf) {\n return this.store.get(index, opts, cb)\n }\n\n if (!opts) opts = {}\n\n const offset = opts.offset || 0\n const len = opts.length || (buf.length - offset)\n\n if (offset !== 0 || len !== buf.length) {\n buf = buf.slice(offset, len + offset)\n }\n queueMicrotask(() => cb(null, buf))\n }\n\n close (cb = () => {}) {\n this.store.close(cb)\n }\n\n destroy (cb = () => {}) {\n this.store.destroy(cb)\n }\n}\n\nmodule.exports = ImmediateStore\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","(function (root) {\n 'use strict';\n // A list of regular expressions that match arbitrary IPv4 addresses,\n // for which a number of weird notations exist.\n // Note that an address like 0010.0xa5.1.1 is considered legal.\n const ipv4Part = '(0?\\\\d+|0x[a-f0-9]+)';\n const ipv4Regexes = {\n fourOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n threeOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n twoOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n longValue: new RegExp(`^${ipv4Part}$`, 'i')\n };\n\n // Regular Expression for checking Octal numbers\n const octalRegex = new RegExp(`^0[0-7]+$`, 'i');\n const hexRegex = new RegExp(`^0x[a-f0-9]+$`, 'i');\n\n const zoneIndex = '%[0-9a-z]{1,}';\n\n // IPv6-matching regular expressions.\n // For IPv6, the task is simpler: it is enough to match the colon-delimited\n // hexadecimal IPv6 and a transitional variant with dotted-decimal IPv4 at\n // the end.\n const ipv6Part = '(?:[0-9a-f]+::?)+';\n const ipv6Regexes = {\n zoneIndex: new RegExp(zoneIndex, 'i'),\n 'native': new RegExp(`^(::)?(${ipv6Part})?([0-9a-f]+)?(::)?(${zoneIndex})?$`, 'i'),\n deprecatedTransitional: new RegExp(`^(?:::)(${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}(${zoneIndex})?)$`, 'i'),\n transitional: new RegExp(`^((?:${ipv6Part})|(?:::)(?:${ipv6Part})?)${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}(${zoneIndex})?$`, 'i')\n };\n\n // Expand :: in an IPv6 address or address part consisting of `parts` groups.\n function expandIPv6 (string, parts) {\n // More than one '::' means invalid adddress\n if (string.indexOf('::') !== string.lastIndexOf('::')) {\n return null;\n }\n\n let colonCount = 0;\n let lastColon = -1;\n let zoneId = (string.match(ipv6Regexes.zoneIndex) || [])[0];\n let replacement, replacementCount;\n\n // Remove zone index and save it for later\n if (zoneId) {\n zoneId = zoneId.substring(1);\n string = string.replace(/%.+$/, '');\n }\n\n // How many parts do we already have?\n while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {\n colonCount++;\n }\n\n // 0::0 is two parts more than ::\n if (string.substr(0, 2) === '::') {\n colonCount--;\n }\n\n if (string.substr(-2, 2) === '::') {\n colonCount--;\n }\n\n // The following loop would hang if colonCount > parts\n if (colonCount > parts) {\n return null;\n }\n\n // replacement = ':' + '0:' * (parts - colonCount)\n replacementCount = parts - colonCount;\n replacement = ':';\n while (replacementCount--) {\n replacement += '0:';\n }\n\n // Insert the missing zeroes\n string = string.replace('::', replacement);\n\n // Trim any garbage which may be hanging around if :: was at the edge in\n // the source strin\n if (string[0] === ':') {\n string = string.slice(1);\n }\n\n if (string[string.length - 1] === ':') {\n string = string.slice(0, -1);\n }\n\n parts = (function () {\n const ref = string.split(':');\n const results = [];\n\n for (let i = 0; i < ref.length; i++) {\n results.push(parseInt(ref[i], 16));\n }\n\n return results;\n })();\n\n return {\n parts: parts,\n zoneId: zoneId\n };\n }\n\n // A generic CIDR (Classless Inter-Domain Routing) RFC1518 range matcher.\n function matchCIDR (first, second, partSize, cidrBits) {\n if (first.length !== second.length) {\n throw new Error('ipaddr: cannot match CIDR for objects with different lengths');\n }\n\n let part = 0;\n let shift;\n\n while (cidrBits > 0) {\n shift = partSize - cidrBits;\n if (shift < 0) {\n shift = 0;\n }\n\n if (first[part] >> shift !== second[part] >> shift) {\n return false;\n }\n\n cidrBits -= partSize;\n part += 1;\n }\n\n return true;\n }\n\n function parseIntAuto (string) {\n // Hexadedimal base 16 (0x#)\n if (hexRegex.test(string)) {\n return parseInt(string, 16);\n }\n // While octal representation is discouraged by ECMAScript 3\n // and forbidden by ECMAScript 5, we silently allow it to\n // work only if the rest of the string has numbers less than 8.\n if (string[0] === '0' && !isNaN(parseInt(string[1], 10))) {\n if (octalRegex.test(string)) {\n return parseInt(string, 8);\n }\n throw new Error(`ipaddr: cannot parse ${string} as octal`);\n }\n // Always include the base 10 radix!\n return parseInt(string, 10);\n }\n\n function padPart (part, length) {\n while (part.length < length) {\n part = `0${part}`;\n }\n\n return part;\n }\n\n const ipaddr = {};\n\n // An IPv4 address (RFC791).\n ipaddr.IPv4 = (function () {\n // Constructs a new IPv4 address from an array of four octets\n // in network order (MSB first)\n // Verifies the input.\n function IPv4 (octets) {\n if (octets.length !== 4) {\n throw new Error('ipaddr: ipv4 octet count should be 4');\n }\n\n let i, octet;\n\n for (i = 0; i < octets.length; i++) {\n octet = octets[i];\n if (!((0 <= octet && octet <= 255))) {\n throw new Error('ipaddr: ipv4 octet should fit in 8 bits');\n }\n }\n\n this.octets = octets;\n }\n\n // Special IPv4 address ranges.\n // See also https://en.wikipedia.org/wiki/Reserved_IP_addresses\n IPv4.prototype.SpecialRanges = {\n unspecified: [[new IPv4([0, 0, 0, 0]), 8]],\n broadcast: [[new IPv4([255, 255, 255, 255]), 32]],\n // RFC3171\n multicast: [[new IPv4([224, 0, 0, 0]), 4]],\n // RFC3927\n linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],\n // RFC5735\n loopback: [[new IPv4([127, 0, 0, 0]), 8]],\n // RFC6598\n carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],\n // RFC1918\n 'private': [\n [new IPv4([10, 0, 0, 0]), 8],\n [new IPv4([172, 16, 0, 0]), 12],\n [new IPv4([192, 168, 0, 0]), 16]\n ],\n // Reserved and testing-only ranges; RFCs 5735, 5737, 2544, 1700\n reserved: [\n [new IPv4([192, 0, 0, 0]), 24],\n [new IPv4([192, 0, 2, 0]), 24],\n [new IPv4([192, 88, 99, 0]), 24],\n [new IPv4([198, 18, 0, 0]), 15],\n [new IPv4([198, 51, 100, 0]), 24],\n [new IPv4([203, 0, 113, 0]), 24],\n [new IPv4([240, 0, 0, 0]), 4]\n ]\n };\n\n // The 'kind' method exists on both IPv4 and IPv6 classes.\n IPv4.prototype.kind = function () {\n return 'ipv4';\n };\n\n // Checks if this address matches other one within given CIDR range.\n IPv4.prototype.match = function (other, cidrRange) {\n let ref;\n if (cidrRange === undefined) {\n ref = other;\n other = ref[0];\n cidrRange = ref[1];\n }\n\n if (other.kind() !== 'ipv4') {\n throw new Error('ipaddr: cannot match ipv4 address with non-ipv4 one');\n }\n\n return matchCIDR(this.octets, other.octets, 8, cidrRange);\n };\n\n // returns a number of leading ones in IPv4 address, making sure that\n // the rest is a solid sequence of 0's (valid netmask)\n // returns either the CIDR length or null if mask is not valid\n IPv4.prototype.prefixLengthFromSubnetMask = function () {\n let cidr = 0;\n // non-zero encountered stop scanning for zeroes\n let stop = false;\n // number of zeroes in octet\n const zerotable = {\n 0: 8,\n 128: 7,\n 192: 6,\n 224: 5,\n 240: 4,\n 248: 3,\n 252: 2,\n 254: 1,\n 255: 0\n };\n let i, octet, zeros;\n\n for (i = 3; i >= 0; i -= 1) {\n octet = this.octets[i];\n if (octet in zerotable) {\n zeros = zerotable[octet];\n if (stop && zeros !== 0) {\n return null;\n }\n\n if (zeros !== 8) {\n stop = true;\n }\n\n cidr += zeros;\n } else {\n return null;\n }\n }\n\n return 32 - cidr;\n };\n\n // Checks if the address corresponds to one of the special ranges.\n IPv4.prototype.range = function () {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n // Returns an array of byte-sized values in network order (MSB first)\n IPv4.prototype.toByteArray = function () {\n return this.octets.slice(0);\n };\n\n // Converts this IPv4 address to an IPv4-mapped IPv6 address.\n IPv4.prototype.toIPv4MappedAddress = function () {\n return ipaddr.IPv6.parse(`::ffff:${this.toString()}`);\n };\n\n // Symmetrical method strictly for aligning with the IPv6 methods.\n IPv4.prototype.toNormalizedString = function () {\n return this.toString();\n };\n\n // Returns the address in convenient, decimal-dotted format.\n IPv4.prototype.toString = function () {\n return this.octets.join('.');\n };\n\n return IPv4;\n })();\n\n // A utility function to return broadcast address given the IPv4 interface and prefix length in CIDR notation\n ipaddr.IPv4.broadcastAddressFromCIDR = function (string) {\n\n try {\n const cidr = this.parseCIDR(string);\n const ipInterfaceOctets = cidr[0].toByteArray();\n const subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n const octets = [];\n let i = 0;\n while (i < 4) {\n // Broadcast address is bitwise OR between ip interface and inverted mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n // Checks if a given string is formatted like IPv4 address.\n ipaddr.IPv4.isIPv4 = function (string) {\n return this.parser(string) !== null;\n };\n\n // Checks if a given string is a valid IPv4 address.\n ipaddr.IPv4.isValid = function (string) {\n try {\n new this(this.parser(string));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // Checks if a given string is a full four-part IPv4 Address.\n ipaddr.IPv4.isValidFourPartDecimal = function (string) {\n if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$/)) {\n return true;\n } else {\n return false;\n }\n };\n\n // A utility function to return network address given the IPv4 interface and prefix length in CIDR notation\n ipaddr.IPv4.networkAddressFromCIDR = function (string) {\n let cidr, i, ipInterfaceOctets, octets, subnetMaskOctets;\n\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n // Network address is bitwise AND between ip interface and mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n // Tries to parse and validate a string with IPv4 address.\n // Throws an error if it fails.\n ipaddr.IPv4.parse = function (string) {\n const parts = this.parser(string);\n\n if (parts === null) {\n throw new Error('ipaddr: string is not formatted like an IPv4 Address');\n }\n\n return new this(parts);\n };\n\n // Parses the string as an IPv4 Address with CIDR Notation.\n ipaddr.IPv4.parseCIDR = function (string) {\n let match;\n\n if ((match = string.match(/^(.+)\\/(\\d+)$/))) {\n const maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 32) {\n const parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function () {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n\n throw new Error('ipaddr: string is not formatted like an IPv4 CIDR range');\n };\n\n // Classful variants (like a.b, where a is an octet, and b is a 24-bit\n // value representing last three octets; this corresponds to a class C\n // address) are omitted due to classless nature of modern Internet.\n ipaddr.IPv4.parser = function (string) {\n let match, part, value;\n\n // parseInt recognizes all that octal & hexadecimal weirdness for us\n if ((match = string.match(ipv4Regexes.fourOctet))) {\n return (function () {\n const ref = match.slice(1, 6);\n const results = [];\n\n for (let i = 0; i < ref.length; i++) {\n part = ref[i];\n results.push(parseIntAuto(part));\n }\n\n return results;\n })();\n } else if ((match = string.match(ipv4Regexes.longValue))) {\n value = parseIntAuto(match[1]);\n if (value > 0xffffffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n return ((function () {\n const results = [];\n let shift;\n\n for (shift = 0; shift <= 24; shift += 8) {\n results.push((value >> shift) & 0xff);\n }\n\n return results;\n })()).reverse();\n } else if ((match = string.match(ipv4Regexes.twoOctet))) {\n return (function () {\n const ref = match.slice(1, 4);\n const results = [];\n\n value = parseIntAuto(ref[1]);\n if (value > 0xffffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n results.push(parseIntAuto(ref[0]));\n results.push((value >> 16) & 0xff);\n results.push((value >> 8) & 0xff);\n results.push( value & 0xff);\n\n return results;\n })();\n } else if ((match = string.match(ipv4Regexes.threeOctet))) {\n return (function () {\n const ref = match.slice(1, 5);\n const results = [];\n\n value = parseIntAuto(ref[2]);\n if (value > 0xffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n results.push(parseIntAuto(ref[0]));\n results.push(parseIntAuto(ref[1]));\n results.push((value >> 8) & 0xff);\n results.push( value & 0xff);\n\n return results;\n })();\n } else {\n return null;\n }\n };\n\n // A utility function to return subnet mask in IPv4 format given the prefix length\n ipaddr.IPv4.subnetMaskFromPrefixLength = function (prefix) {\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 32) {\n throw new Error('ipaddr: invalid IPv4 prefix length');\n }\n\n const octets = [0, 0, 0, 0];\n let j = 0;\n const filledOctetCount = Math.floor(prefix / 8);\n\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n\n if (filledOctetCount < 4) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n\n return new this(octets);\n };\n\n // An IPv6 address (RFC2460)\n ipaddr.IPv6 = (function () {\n // Constructs an IPv6 address from an array of eight 16 - bit parts\n // or sixteen 8 - bit parts in network order(MSB first).\n // Throws an error if the input is invalid.\n function IPv6 (parts, zoneId) {\n let i, part;\n\n if (parts.length === 16) {\n this.parts = [];\n for (i = 0; i <= 14; i += 2) {\n this.parts.push((parts[i] << 8) | parts[i + 1]);\n }\n } else if (parts.length === 8) {\n this.parts = parts;\n } else {\n throw new Error('ipaddr: ipv6 part count should be 8 or 16');\n }\n\n for (i = 0; i < this.parts.length; i++) {\n part = this.parts[i];\n if (!((0 <= part && part <= 0xffff))) {\n throw new Error('ipaddr: ipv6 part should fit in 16 bits');\n }\n }\n\n if (zoneId) {\n this.zoneId = zoneId;\n }\n }\n\n // Special IPv6 ranges\n IPv6.prototype.SpecialRanges = {\n // RFC4291, here and after\n unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],\n linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],\n multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],\n loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],\n uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],\n ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],\n // RFC6145\n rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],\n // RFC6052\n rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],\n // RFC3056\n '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],\n // RFC6052, RFC6146\n teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],\n // RFC4291\n reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]],\n benchmarking: [new IPv6([0x2001, 0x2, 0, 0, 0, 0, 0, 0]), 48],\n amt: [new IPv6([0x2001, 0x3, 0, 0, 0, 0, 0, 0]), 32],\n as112v6: [new IPv6([0x2001, 0x4, 0x112, 0, 0, 0, 0, 0]), 48],\n deprecated: [new IPv6([0x2001, 0x10, 0, 0, 0, 0, 0, 0]), 28],\n orchid2: [new IPv6([0x2001, 0x20, 0, 0, 0, 0, 0, 0]), 28]\n };\n\n // Checks if this address is an IPv4-mapped IPv6 address.\n IPv6.prototype.isIPv4MappedAddress = function () {\n return this.range() === 'ipv4Mapped';\n };\n\n // The 'kind' method exists on both IPv4 and IPv6 classes.\n IPv6.prototype.kind = function () {\n return 'ipv6';\n };\n\n // Checks if this address matches other one within given CIDR range.\n IPv6.prototype.match = function (other, cidrRange) {\n let ref;\n\n if (cidrRange === undefined) {\n ref = other;\n other = ref[0];\n cidrRange = ref[1];\n }\n\n if (other.kind() !== 'ipv6') {\n throw new Error('ipaddr: cannot match ipv6 address with non-ipv6 one');\n }\n\n return matchCIDR(this.parts, other.parts, 16, cidrRange);\n };\n\n // returns a number of leading ones in IPv6 address, making sure that\n // the rest is a solid sequence of 0's (valid netmask)\n // returns either the CIDR length or null if mask is not valid\n IPv6.prototype.prefixLengthFromSubnetMask = function () {\n let cidr = 0;\n // non-zero encountered stop scanning for zeroes\n let stop = false;\n // number of zeroes in octet\n const zerotable = {\n 0: 16,\n 32768: 15,\n 49152: 14,\n 57344: 13,\n 61440: 12,\n 63488: 11,\n 64512: 10,\n 65024: 9,\n 65280: 8,\n 65408: 7,\n 65472: 6,\n 65504: 5,\n 65520: 4,\n 65528: 3,\n 65532: 2,\n 65534: 1,\n 65535: 0\n };\n let part, zeros;\n\n for (let i = 7; i >= 0; i -= 1) {\n part = this.parts[i];\n if (part in zerotable) {\n zeros = zerotable[part];\n if (stop && zeros !== 0) {\n return null;\n }\n\n if (zeros !== 16) {\n stop = true;\n }\n\n cidr += zeros;\n } else {\n return null;\n }\n }\n\n return 128 - cidr;\n };\n\n\n // Checks if the address corresponds to one of the special ranges.\n IPv6.prototype.range = function () {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n // Returns an array of byte-sized values in network order (MSB first)\n IPv6.prototype.toByteArray = function () {\n let part;\n const bytes = [];\n const ref = this.parts;\n for (let i = 0; i < ref.length; i++) {\n part = ref[i];\n bytes.push(part >> 8);\n bytes.push(part & 0xff);\n }\n\n return bytes;\n };\n\n // Returns the address in expanded format with all zeroes included, like\n // 2001:0db8:0008:0066:0000:0000:0000:0001\n IPv6.prototype.toFixedLengthString = function () {\n const addr = ((function () {\n const results = [];\n for (let i = 0; i < this.parts.length; i++) {\n results.push(padPart(this.parts[i].toString(16), 4));\n }\n\n return results;\n }).call(this)).join(':');\n\n let suffix = '';\n\n if (this.zoneId) {\n suffix = `%${this.zoneId}`;\n }\n\n return addr + suffix;\n };\n\n // Converts this address to IPv4 address if it is an IPv4-mapped IPv6 address.\n // Throws an error otherwise.\n IPv6.prototype.toIPv4Address = function () {\n if (!this.isIPv4MappedAddress()) {\n throw new Error('ipaddr: trying to convert a generic ipv6 address to ipv4');\n }\n\n const ref = this.parts.slice(-2);\n const high = ref[0];\n const low = ref[1];\n\n return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);\n };\n\n // Returns the address in expanded format with all zeroes included, like\n // 2001:db8:8:66:0:0:0:1\n //\n // Deprecated: use toFixedLengthString() instead.\n IPv6.prototype.toNormalizedString = function () {\n const addr = ((function () {\n const results = [];\n\n for (let i = 0; i < this.parts.length; i++) {\n results.push(this.parts[i].toString(16));\n }\n\n return results;\n }).call(this)).join(':');\n\n let suffix = '';\n\n if (this.zoneId) {\n suffix = `%${this.zoneId}`;\n }\n\n return addr + suffix;\n };\n\n // Returns the address in compact, human-readable format like\n // 2001:db8:8:66::1\n // in line with RFC 5952 (see https://tools.ietf.org/html/rfc5952#section-4)\n IPv6.prototype.toRFC5952String = function () {\n const regex = /((^|:)(0(:|$)){2,})/g;\n const string = this.toNormalizedString();\n let bestMatchIndex = 0;\n let bestMatchLength = -1;\n let match;\n\n while ((match = regex.exec(string))) {\n if (match[0].length > bestMatchLength) {\n bestMatchIndex = match.index;\n bestMatchLength = match[0].length;\n }\n }\n\n if (bestMatchLength < 0) {\n return string;\n }\n\n return `${string.substring(0, bestMatchIndex)}::${string.substring(bestMatchIndex + bestMatchLength)}`;\n };\n\n // Returns the address in compact, human-readable format like\n // 2001:db8:8:66::1\n // Calls toRFC5952String under the hood.\n IPv6.prototype.toString = function () {\n return this.toRFC5952String();\n };\n\n return IPv6;\n\n })();\n\n // A utility function to return broadcast address given the IPv6 interface and prefix length in CIDR notation\n ipaddr.IPv6.broadcastAddressFromCIDR = function (string) {\n try {\n const cidr = this.parseCIDR(string);\n const ipInterfaceOctets = cidr[0].toByteArray();\n const subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n const octets = [];\n let i = 0;\n while (i < 16) {\n // Broadcast address is bitwise OR between ip interface and inverted mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`);\n }\n };\n\n // Checks if a given string is formatted like IPv6 address.\n ipaddr.IPv6.isIPv6 = function (string) {\n return this.parser(string) !== null;\n };\n\n // Checks to see if string is a valid IPv6 Address\n ipaddr.IPv6.isValid = function (string) {\n\n // Since IPv6.isValid is always called first, this shortcut\n // provides a substantial performance gain.\n if (typeof string === 'string' && string.indexOf(':') === -1) {\n return false;\n }\n\n try {\n const addr = this.parser(string);\n new this(addr.parts, addr.zoneId);\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // A utility function to return network address given the IPv6 interface and prefix length in CIDR notation\n ipaddr.IPv6.networkAddressFromCIDR = function (string) {\n let cidr, i, ipInterfaceOctets, octets, subnetMaskOctets;\n\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 16) {\n // Network address is bitwise AND between ip interface and mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`);\n }\n };\n\n // Tries to parse and validate a string with IPv6 address.\n // Throws an error if it fails.\n ipaddr.IPv6.parse = function (string) {\n const addr = this.parser(string);\n\n if (addr.parts === null) {\n throw new Error('ipaddr: string is not formatted like an IPv6 Address');\n }\n\n return new this(addr.parts, addr.zoneId);\n };\n\n ipaddr.IPv6.parseCIDR = function (string) {\n let maskLength, match, parsed;\n\n if ((match = string.match(/^(.+)\\/(\\d+)$/))) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 128) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function () {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n\n throw new Error('ipaddr: string is not formatted like an IPv6 CIDR range');\n };\n\n // Parse an IPv6 address.\n ipaddr.IPv6.parser = function (string) {\n let addr, i, match, octet, octets, zoneId;\n\n if ((match = string.match(ipv6Regexes.deprecatedTransitional))) {\n return this.parser(`::ffff:${match[1]}`);\n }\n if (ipv6Regexes.native.test(string)) {\n return expandIPv6(string, 8);\n }\n if ((match = string.match(ipv6Regexes.transitional))) {\n zoneId = match[6] || '';\n addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6);\n if (addr.parts) {\n octets = [\n parseInt(match[2]),\n parseInt(match[3]),\n parseInt(match[4]),\n parseInt(match[5])\n ];\n for (i = 0; i < octets.length; i++) {\n octet = octets[i];\n if (!((0 <= octet && octet <= 255))) {\n return null;\n }\n }\n\n addr.parts.push(octets[0] << 8 | octets[1]);\n addr.parts.push(octets[2] << 8 | octets[3]);\n return {\n parts: addr.parts,\n zoneId: addr.zoneId\n };\n }\n }\n\n return null;\n };\n\n // A utility function to return subnet mask in IPv6 format given the prefix length\n ipaddr.IPv6.subnetMaskFromPrefixLength = function (prefix) {\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 128) {\n throw new Error('ipaddr: invalid IPv6 prefix length');\n }\n\n const octets = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n let j = 0;\n const filledOctetCount = Math.floor(prefix / 8);\n\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n\n if (filledOctetCount < 16) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n\n return new this(octets);\n };\n\n // Try to parse an array in network order (MSB first) for IPv4 and IPv6\n ipaddr.fromByteArray = function (bytes) {\n const length = bytes.length;\n\n if (length === 4) {\n return new ipaddr.IPv4(bytes);\n } else if (length === 16) {\n return new ipaddr.IPv6(bytes);\n } else {\n throw new Error('ipaddr: the binary input is neither an IPv6 nor IPv4 address');\n }\n };\n\n // Checks if the address is valid IP address\n ipaddr.isValid = function (string) {\n return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);\n };\n\n\n // Attempts to parse an IP Address, first through IPv6 then IPv4.\n // Throws an error if it could not be parsed.\n ipaddr.parse = function (string) {\n if (ipaddr.IPv6.isValid(string)) {\n return ipaddr.IPv6.parse(string);\n } else if (ipaddr.IPv4.isValid(string)) {\n return ipaddr.IPv4.parse(string);\n } else {\n throw new Error('ipaddr: the address has neither IPv6 nor IPv4 format');\n }\n };\n\n // Attempt to parse CIDR notation, first through IPv6 then IPv4.\n // Throws an error if it could not be parsed.\n ipaddr.parseCIDR = function (string) {\n try {\n return ipaddr.IPv6.parseCIDR(string);\n } catch (e) {\n try {\n return ipaddr.IPv4.parseCIDR(string);\n } catch (e2) {\n throw new Error('ipaddr: the address has neither IPv6 nor IPv4 CIDR format');\n }\n }\n };\n\n // Parse an address and return plain IPv4 address if it is an IPv4-mapped address\n ipaddr.process = function (string) {\n const addr = this.parse(string);\n\n if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {\n return addr.toIPv4Address();\n } else {\n return addr;\n }\n };\n\n // An utility function to ease named range matching. See examples below.\n // rangeList can contain both IPv4 and IPv6 subnet entries and will not throw errors\n // on matching IPv4 addresses to IPv6 ranges or vice versa.\n ipaddr.subnetMatch = function (address, rangeList, defaultName) {\n let i, rangeName, rangeSubnets, subnet;\n\n if (defaultName === undefined || defaultName === null) {\n defaultName = 'unicast';\n }\n\n for (rangeName in rangeList) {\n if (Object.prototype.hasOwnProperty.call(rangeList, rangeName)) {\n rangeSubnets = rangeList[rangeName];\n // ECMA5 Array.isArray isn't available everywhere\n if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {\n rangeSubnets = [rangeSubnets];\n }\n\n for (i = 0; i < rangeSubnets.length; i++) {\n subnet = rangeSubnets[i];\n if (address.kind() === subnet[0].kind() && address.match.apply(address, subnet)) {\n return rangeName;\n }\n }\n }\n }\n\n return defaultName;\n };\n\n // Export for both the CommonJS and browser-like environment\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = ipaddr;\n\n } else {\n root.ipaddr = ipaddr;\n }\n\n}(this));\n","'use strict';\n\nvar fs = require('fs');\n\nmodule.exports = function isFile(path, cb){\n if(!cb)return isFileSync(path);\n\n fs.stat(path, function(err, stats){\n if(err)return cb(err);\n return cb(null, stats.isFile());\n });\n};\n\nmodule.exports.sync = isFileSync;\n\nfunction isFileSync(path){\n return fs.existsSync(path) && fs.statSync(path).isFile();\n}\n","module.exports = async function * (iterators) {\r\n for (let iterator of iterators) {\r\n // can be lazy functions returning streams\r\n if (typeof iterator === 'function') iterator = iterator()\r\n yield * iterator\r\n }\r\n}\r\n","'use strict';\n\nconst blacklist = [\n\t// # All\n\t'^npm-debug\\\\.log$', // Error log for npm\n\t'^\\\\..*\\\\.swp$', // Swap file for vim state\n\n\t// # macOS\n\t'^\\\\.DS_Store$', // Stores custom folder attributes\n\t'^\\\\.AppleDouble$', // Stores additional file resources\n\t'^\\\\.LSOverride$', // Contains the absolute path to the app to be used\n\t'^Icon\\\\r$', // Custom Finder icon: http://superuser.com/questions/298785/icon-file-on-os-x-desktop\n\t'^\\\\._.*', // Thumbnail\n\t'^\\\\.Spotlight-V100(?:$|\\\\/)', // Directory that might appear on external disk\n\t'\\\\.Trashes', // File that might appear on external disk\n\t'^__MACOSX$', // Resource fork\n\n\t// # Linux\n\t'~$', // Backup file\n\n\t// # Windows\n\t'^Thumbs\\\\.db$', // Image file cache\n\t'^ehthumbs\\\\.db$', // Folder config file\n\t'^Desktop\\\\.ini$', // Stores custom folder attributes\n\t'@eaDir$' // Synology Diskstation \"hidden\" folder where the server stores thumbnails\n];\n\nexports.re = () => {\n\tthrow new Error('`junk.re` was renamed to `junk.regex`');\n};\n\nexports.regex = new RegExp(blacklist.join('|'));\n\nexports.is = filename => exports.regex.test(filename);\n\nexports.not = filename => !exports.is(filename);\n\n// TODO: Remove this for the next major release\nexports.default = module.exports;\n","/*\nindex.js - Kademlia DHT K-bucket implementation as a binary tree.\n\nThe MIT License (MIT)\n\nCopyright (c) 2013-2021 Tristan Slominski\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n*/\n'use strict'\n\nconst randomBytes = require('randombytes')\nconst { EventEmitter } = require('events')\n\n/**\n * @param {Uint8Array} array1\n * @param {Uint8Array} array2\n * @return {Boolean}\n */\nfunction arrayEquals (array1, array2) {\n if (array1 === array2) {\n return true\n }\n if (array1.length !== array2.length) {\n return false\n }\n for (let i = 0, length = array1.length; i < length; ++i) {\n if (array1[i] !== array2[i]) {\n return false\n }\n }\n return true\n}\n\nfunction createNode () {\n return { contacts: [], dontSplit: false, left: null, right: null }\n}\n\nfunction ensureInt8 (name, val) {\n if (!(val instanceof Uint8Array)) {\n throw new TypeError(name + ' is not a Uint8Array')\n }\n}\n\n/**\n * Implementation of a Kademlia DHT k-bucket used for storing\n * contact (peer node) information.\n *\n * @extends EventEmitter\n */\nclass KBucket extends EventEmitter {\n /**\n * `options`:\n * `distance`: _Function_\n * `function (firstId, secondId) { return distance }` An optional\n * `distance` function that gets two `id` Uint8Arrays\n * and return distance (as number) between them.\n * `arbiter`: _Function_ _(Default: vectorClock arbiter)_\n * `function (incumbent, candidate) { return contact; }` An optional\n * `arbiter` function that givent two `contact` objects with the same `id`\n * returns the desired object to be used for updating the k-bucket. For\n * more details, see [arbiter function](#arbiter-function).\n * `localNodeId`: _Uint8Array_ An optional Uint8Array representing the local node id.\n * If not provided, a local node id will be created via `randomBytes(20)`.\n * `metadata`: _Object_ _(Default: {})_ Optional satellite data to include\n * with the k-bucket. `metadata` property is guaranteed not be altered by,\n * it is provided as an explicit container for users of k-bucket to store\n * implementation-specific data.\n * `numberOfNodesPerKBucket`: _Integer_ _(Default: 20)_ The number of nodes\n * that a k-bucket can contain before being full or split.\n * `numberOfNodesToPing`: _Integer_ _(Default: 3)_ The number of nodes to\n * ping when a bucket that should not be split becomes full. KBucket will\n * emit a `ping` event that contains `numberOfNodesToPing` nodes that have\n * not been contacted the longest.\n *\n * @param {Object=} options optional\n */\n constructor (options = {}) {\n super()\n\n this.localNodeId = options.localNodeId || randomBytes(20)\n this.numberOfNodesPerKBucket = options.numberOfNodesPerKBucket || 20\n this.numberOfNodesToPing = options.numberOfNodesToPing || 3\n this.distance = options.distance || KBucket.distance\n // use an arbiter from options or vectorClock arbiter by default\n this.arbiter = options.arbiter || KBucket.arbiter\n this.metadata = Object.assign({}, options.metadata)\n\n ensureInt8('option.localNodeId as parameter 1', this.localNodeId)\n\n this.root = createNode()\n }\n\n /**\n * Default arbiter function for contacts with the same id. Uses\n * contact.vectorClock to select which contact to update the k-bucket with.\n * Contact with larger vectorClock field will be selected. If vectorClock is\n * the same, candidat will be selected.\n *\n * @param {Object} incumbent Contact currently stored in the k-bucket.\n * @param {Object} candidate Contact being added to the k-bucket.\n * @return {Object} Contact to updated the k-bucket with.\n */\n static arbiter (incumbent, candidate) {\n return incumbent.vectorClock > candidate.vectorClock ? incumbent : candidate\n }\n\n /**\n * Default distance function. Finds the XOR\n * distance between firstId and secondId.\n *\n * @param {Uint8Array} firstId Uint8Array containing first id.\n * @param {Uint8Array} secondId Uint8Array containing second id.\n * @return {Number} Integer The XOR distance between firstId\n * and secondId.\n */\n static distance (firstId, secondId) {\n let distance = 0\n let i = 0\n const min = Math.min(firstId.length, secondId.length)\n const max = Math.max(firstId.length, secondId.length)\n for (; i < min; ++i) {\n distance = distance * 256 + (firstId[i] ^ secondId[i])\n }\n for (; i < max; ++i) distance = distance * 256 + 255\n return distance\n }\n\n /**\n * Adds a contact to the k-bucket.\n *\n * @param {Object} contact the contact object to add\n */\n add (contact) {\n ensureInt8('contact.id', (contact || {}).id)\n\n let bitIndex = 0\n let node = this.root\n\n while (node.contacts === null) {\n // this is not a leaf node but an inner node with 'low' and 'high'\n // branches; we will check the appropriate bit of the identifier and\n // delegate to the appropriate node for further processing\n node = this._determineNode(node, contact.id, bitIndex++)\n }\n\n // check if the contact already exists\n const index = this._indexOf(node, contact.id)\n if (index >= 0) {\n this._update(node, index, contact)\n return this\n }\n\n if (node.contacts.length < this.numberOfNodesPerKBucket) {\n node.contacts.push(contact)\n this.emit('added', contact)\n return this\n }\n\n // the bucket is full\n if (node.dontSplit) {\n // we are not allowed to split the bucket\n // we need to ping the first this.numberOfNodesToPing\n // in order to determine if they are alive\n // only if one of the pinged nodes does not respond, can the new contact\n // be added (this prevents DoS flodding with new invalid contacts)\n this.emit('ping', node.contacts.slice(0, this.numberOfNodesToPing), contact)\n return this\n }\n\n this._split(node, bitIndex)\n return this.add(contact)\n }\n\n /**\n * Get the n closest contacts to the provided node id. \"Closest\" here means:\n * closest according to the XOR metric of the contact node id.\n *\n * @param {Uint8Array} id Contact node id\n * @param {Number=} n Integer (Default: Infinity) The maximum number of\n * closest contacts to return\n * @return {Array} Array Maximum of n closest contacts to the node id\n */\n closest (id, n = Infinity) {\n ensureInt8('id', id)\n\n if ((!Number.isInteger(n) && n !== Infinity) || n <= 0) {\n throw new TypeError('n is not positive number')\n }\n\n let contacts = []\n\n for (let nodes = [this.root], bitIndex = 0; nodes.length > 0 && contacts.length < n;) {\n const node = nodes.pop()\n if (node.contacts === null) {\n const detNode = this._determineNode(node, id, bitIndex++)\n nodes.push(node.left === detNode ? node.right : node.left)\n nodes.push(detNode)\n } else {\n contacts = contacts.concat(node.contacts)\n }\n }\n\n return contacts\n .map(a => [this.distance(a.id, id), a])\n .sort((a, b) => a[0] - b[0])\n .slice(0, n)\n .map(a => a[1])\n }\n\n /**\n * Counts the total number of contacts in the tree.\n *\n * @return {Number} The number of contacts held in the tree\n */\n count () {\n // return this.toArray().length\n let count = 0\n for (const nodes = [this.root]; nodes.length > 0;) {\n const node = nodes.pop()\n if (node.contacts === null) nodes.push(node.right, node.left)\n else count += node.contacts.length\n }\n return count\n }\n\n /**\n * Determines whether the id at the bitIndex is 0 or 1.\n * Return left leaf if `id` at `bitIndex` is 0, right leaf otherwise\n *\n * @param {Object} node internal object that has 2 leafs: left and right\n * @param {Uint8Array} id Id to compare localNodeId with.\n * @param {Number} bitIndex Integer (Default: 0) The bit index to which bit\n * to check in the id Uint8Array.\n * @return {Object} left leaf if id at bitIndex is 0, right leaf otherwise.\n */\n _determineNode (node, id, bitIndex) {\n // **NOTE** remember that id is a Uint8Array and has granularity of\n // bytes (8 bits), whereas the bitIndex is the _bit_ index (not byte)\n\n // id's that are too short are put in low bucket (1 byte = 8 bits)\n // (bitIndex >> 3) finds how many bytes the bitIndex describes\n // bitIndex % 8 checks if we have extra bits beyond byte multiples\n // if number of bytes is <= no. of bytes described by bitIndex and there\n // are extra bits to consider, this means id has less bits than what\n // bitIndex describes, id therefore is too short, and will be put in low\n // bucket\n const bytesDescribedByBitIndex = bitIndex >> 3\n const bitIndexWithinByte = bitIndex % 8\n if ((id.length <= bytesDescribedByBitIndex) && (bitIndexWithinByte !== 0)) {\n return node.left\n }\n\n const byteUnderConsideration = id[bytesDescribedByBitIndex]\n\n // byteUnderConsideration is an integer from 0 to 255 represented by 8 bits\n // where 255 is 11111111 and 0 is 00000000\n // in order to find out whether the bit at bitIndexWithinByte is set\n // we construct (1 << (7 - bitIndexWithinByte)) which will consist\n // of all bits being 0, with only one bit set to 1\n // for example, if bitIndexWithinByte is 3, we will construct 00010000 by\n // (1 << (7 - 3)) -> (1 << 4) -> 16\n if (byteUnderConsideration & (1 << (7 - bitIndexWithinByte))) {\n return node.right\n }\n\n return node.left\n }\n\n /**\n * Get a contact by its exact ID.\n * If this is a leaf, loop through the bucket contents and return the correct\n * contact if we have it or null if not. If this is an inner node, determine\n * which branch of the tree to traverse and repeat.\n *\n * @param {Uint8Array} id The ID of the contact to fetch.\n * @return {Object|Null} The contact if available, otherwise null\n */\n get (id) {\n ensureInt8('id', id)\n\n let bitIndex = 0\n\n let node = this.root\n while (node.contacts === null) {\n node = this._determineNode(node, id, bitIndex++)\n }\n\n // index of uses contact id for matching\n const index = this._indexOf(node, id)\n return index >= 0 ? node.contacts[index] : null\n }\n\n /**\n * Returns the index of the contact with provided\n * id if it exists, returns -1 otherwise.\n *\n * @param {Object} node internal object that has 2 leafs: left and right\n * @param {Uint8Array} id Contact node id.\n * @return {Number} Integer Index of contact with provided id if it\n * exists, -1 otherwise.\n */\n _indexOf (node, id) {\n for (let i = 0; i < node.contacts.length; ++i) {\n if (arrayEquals(node.contacts[i].id, id)) return i\n }\n\n return -1\n }\n\n /**\n * Removes contact with the provided id.\n *\n * @param {Uint8Array} id The ID of the contact to remove.\n * @return {Object} The k-bucket itself.\n */\n remove (id) {\n ensureInt8('the id as parameter 1', id)\n\n let bitIndex = 0\n let node = this.root\n\n while (node.contacts === null) {\n node = this._determineNode(node, id, bitIndex++)\n }\n\n const index = this._indexOf(node, id)\n if (index >= 0) {\n const contact = node.contacts.splice(index, 1)[0]\n this.emit('removed', contact)\n }\n\n return this\n }\n\n /**\n * Splits the node, redistributes contacts to the new nodes, and marks the\n * node that was split as an inner node of the binary tree of nodes by\n * setting this.root.contacts = null\n *\n * @param {Object} node node for splitting\n * @param {Number} bitIndex the bitIndex to which byte to check in the\n * Uint8Array for navigating the binary tree\n */\n _split (node, bitIndex) {\n node.left = createNode()\n node.right = createNode()\n\n // redistribute existing contacts amongst the two newly created nodes\n for (const contact of node.contacts) {\n this._determineNode(node, contact.id, bitIndex).contacts.push(contact)\n }\n\n node.contacts = null // mark as inner tree node\n\n // don't split the \"far away\" node\n // we check where the local node would end up and mark the other one as\n // \"dontSplit\" (i.e. \"far away\")\n const detNode = this._determineNode(node, this.localNodeId, bitIndex)\n const otherNode = node.left === detNode ? node.right : node.left\n otherNode.dontSplit = true\n }\n\n /**\n * Returns all the contacts contained in the tree as an array.\n * If this is a leaf, return a copy of the bucket. If this is not a leaf,\n * return the union of the low and high branches (themselves also as arrays).\n *\n * @return {Array} All of the contacts in the tree, as an array\n */\n toArray () {\n let result = []\n for (const nodes = [this.root]; nodes.length > 0;) {\n const node = nodes.pop()\n if (node.contacts === null) nodes.push(node.right, node.left)\n else result = result.concat(node.contacts)\n }\n return result\n }\n\n /**\n * Similar to `toArray()` but instead of buffering everything up into an\n * array before returning it, yields contacts as they are encountered while\n * walking the tree.\n *\n * @return {Iterable} All of the contacts in the tree, as an iterable\n */\n * toIterable () {\n for (const nodes = [this.root]; nodes.length > 0;) {\n const node = nodes.pop()\n if (node.contacts === null) {\n nodes.push(node.right, node.left)\n } else {\n yield * node.contacts\n }\n }\n }\n\n /**\n * Updates the contact selected by the arbiter.\n * If the selection is our old contact and the candidate is some new contact\n * then the new contact is abandoned (not added).\n * If the selection is our old contact and the candidate is our old contact\n * then we are refreshing the contact and it is marked as most recently\n * contacted (by being moved to the right/end of the bucket array).\n * If the selection is our new contact, the old contact is removed and the new\n * contact is marked as most recently contacted.\n *\n * @param {Object} node internal object that has 2 leafs: left and right\n * @param {Number} index the index in the bucket where contact exists\n * (index has already been computed in a previous\n * calculation)\n * @param {Object} contact The contact object to update.\n */\n _update (node, index, contact) {\n // sanity check\n if (!arrayEquals(node.contacts[index].id, contact.id)) {\n throw new Error('wrong index for _update')\n }\n\n const incumbent = node.contacts[index]\n const selection = this.arbiter(incumbent, contact)\n // if the selection is our old contact and the candidate is some new\n // contact, then there is nothing to do\n if (selection === incumbent && incumbent !== contact) return\n\n node.contacts.splice(index, 1) // remove old contact\n node.contacts.push(selection) // add more recent contact version\n this.emit('updated', incumbent, selection)\n }\n}\n\nmodule.exports = KBucket\n","var dgram = require('dgram')\nvar bencode = require('bencode')\nvar isIP = require('net').isIP\nvar dns = require('dns')\nvar util = require('util')\nvar events = require('events')\n\nvar ETIMEDOUT = new Error('Query timed out')\nETIMEDOUT.code = 'ETIMEDOUT'\n\nvar EUNEXPECTEDNODE = new Error('Unexpected node id')\nEUNEXPECTEDNODE.code = 'EUNEXPECTEDNODE'\n\nmodule.exports = RPC\n\nfunction RPC (opts) {\n if (!(this instanceof RPC)) return new RPC(opts)\n if (!opts) opts = {}\n\n var self = this\n\n this.timeout = opts.timeout || 2000\n this.inflight = 0\n this.destroyed = false\n this.isIP = opts.isIP || isIP\n this.socket = opts.socket || dgram.createSocket('udp4')\n this.socket.on('message', onmessage)\n this.socket.on('error', onerror)\n this.socket.on('listening', onlistening)\n\n this._tick = 0\n this._ids = []\n this._reqs = []\n this._timer = setInterval(check, Math.floor(this.timeout / 4))\n\n events.EventEmitter.call(this)\n\n function check () {\n var missing = self.inflight\n if (!missing) return\n for (var i = 0; i < self._reqs.length; i++) {\n var req = self._reqs[i]\n if (!req) continue\n if (req.ttl) req.ttl--\n else self._cancel(i, ETIMEDOUT)\n if (!--missing) return\n }\n }\n\n function onlistening () {\n self.emit('listening')\n }\n\n function onerror (err) {\n if (err.code === 'EACCES' || err.code === 'EADDRINUSE') self.emit('error', err)\n else self.emit('warning', err)\n }\n\n function onmessage (buf, rinfo) {\n if (self.destroyed) return\n if (!rinfo.port) return // seems like a node bug that this is nessesary?\n\n try {\n var message = bencode.decode(buf)\n } catch (e) {\n return self.emit('warning', e)\n }\n\n var type = message && message.y && message.y.toString()\n\n if (type === 'r' || type === 'e') {\n if (!Buffer.isBuffer(message.t)) return\n\n try {\n var tid = message.t.readUInt16BE(0)\n } catch (err) {\n return self.emit('warning', err)\n }\n\n var index = self._ids.indexOf(tid)\n if (index === -1 || tid === 0) {\n self.emit('response', message, rinfo)\n self.emit('warning', new Error('Unexpected transaction id: ' + tid))\n return\n }\n\n var req = self._reqs[index]\n if (req.peer.host !== rinfo.address) {\n self.emit('response', message, rinfo)\n self.emit('warning', new Error('Out of order response'))\n return\n }\n\n self._ids[index] = 0\n self._reqs[index] = null\n self.inflight--\n\n if (type === 'e') {\n var isArray = Array.isArray(message.e)\n var err = new Error(isArray ? message.e.join(' ') : 'Unknown error')\n err.code = isArray && message.e.length && typeof message.e[0] === 'number' ? message.e[0] : 0\n req.callback(err, message, rinfo, req.message)\n self.emit('update')\n self.emit('postupdate')\n return\n }\n\n var rid = message.r && message.r.id\n if (req.peer && req.peer.id && rid && !req.peer.id.equals(rid)) {\n req.callback(EUNEXPECTEDNODE, null, rinfo)\n self.emit('update')\n self.emit('postupdate')\n return\n }\n\n req.callback(null, message, rinfo, req.message)\n self.emit('update')\n self.emit('postupdate')\n self.emit('response', message, rinfo)\n } else if (type === 'q') {\n self.emit('query', message, rinfo)\n } else {\n self.emit('warning', new Error('Unknown type: ' + type))\n }\n }\n}\n\nutil.inherits(RPC, events.EventEmitter)\n\nRPC.prototype.address = function () {\n return this.socket.address()\n}\n\nRPC.prototype.response = function (peer, req, res, cb) {\n this.send(peer, { t: req.t, y: 'r', r: res }, cb)\n}\n\nRPC.prototype.error = function (peer, req, error, cb) {\n this.send(peer, { t: req.t, y: 'e', e: [].concat(error.message || error) }, cb)\n}\n\nRPC.prototype.send = function (peer, message, cb) {\n var buf = bencode.encode(message)\n this.socket.send(buf, 0, buf.length, peer.port, peer.address || peer.host, cb || noop)\n}\n\n// bind([port], [address], [callback])\nRPC.prototype.bind = function () {\n this.socket.bind.apply(this.socket, arguments)\n}\n\nRPC.prototype.destroy = function (cb) {\n this.destroyed = true\n clearInterval(this._timer)\n if (cb) this.socket.on('close', cb)\n for (var i = 0; i < this._ids.length; i++) this._cancel(i)\n this.socket.close()\n}\n\nRPC.prototype.query = function (peer, query, cb) {\n if (!cb) cb = noop\n if (!this.isIP(peer.host)) return this._resolveAndQuery(peer, query, cb)\n\n var message = {\n t: Buffer.allocUnsafe(2),\n y: 'q',\n q: query.q,\n a: query.a\n }\n\n var req = {\n ttl: 4,\n peer: peer,\n message: message,\n callback: cb\n }\n\n if (this._tick === 65535) this._tick = 0\n var tid = ++this._tick\n\n var free = this._ids.indexOf(0)\n if (free === -1) free = this._ids.push(0) - 1\n this._ids[free] = tid\n while (this._reqs.length < free) this._reqs.push(null)\n this._reqs[free] = req\n\n this.inflight++\n message.t.writeUInt16BE(tid, 0)\n this.send(peer, message)\n return tid\n}\n\nRPC.prototype.cancel = function (tid, err) {\n var index = this._ids.indexOf(tid)\n if (index > -1) this._cancel(index, err)\n}\n\nRPC.prototype._cancel = function (index, err) {\n var req = this._reqs[index]\n this._ids[index] = 0\n this._reqs[index] = null\n if (req) {\n this.inflight--\n req.callback(err || new Error('Query was cancelled'), null, req.peer)\n this.emit('update')\n this.emit('postupdate')\n }\n}\n\nRPC.prototype._resolveAndQuery = function (peer, query, cb) {\n var self = this\n\n dns.lookup(peer.host, function (err, ip) {\n if (err) return cb(err)\n if (self.destroyed) return cb(new Error('k-rpc-socket is destroyed'))\n self.query({ host: ip, port: peer.port }, query, cb)\n })\n}\n\nfunction noop () {}\n","const INTEGER_START = 0x69 // 'i'\nconst STRING_DELIM = 0x3A // ':'\nconst DICTIONARY_START = 0x64 // 'd'\nconst LIST_START = 0x6C // 'l'\nconst END_OF_TYPE = 0x65 // 'e'\n\n/**\n * replaces parseInt(buffer.toString('ascii', start, end)).\n * For strings with less then ~30 charachters, this is actually a lot faster.\n *\n * @param {Buffer} data\n * @param {Number} start\n * @param {Number} end\n * @return {Number} calculated number\n */\nfunction getIntFromBuffer (buffer, start, end) {\n let sum = 0\n let sign = 1\n\n for (let i = start; i < end; i++) {\n const num = buffer[i]\n\n if (num < 58 && num >= 48) {\n sum = sum * 10 + (num - 48)\n continue\n }\n\n if (i === start && num === 43) { // +\n continue\n }\n\n if (i === start && num === 45) { // -\n sign = -1\n continue\n }\n\n if (num === 46) { // .\n // its a float. break here.\n break\n }\n\n throw new Error('not a number: buffer[' + i + '] = ' + num)\n }\n\n return sum * sign\n}\n\n/**\n * Decodes bencoded data.\n *\n * @param {Buffer} data\n * @param {Number} start (optional)\n * @param {Number} end (optional)\n * @param {String} encoding (optional)\n * @return {Object|Array|Buffer|String|Number}\n */\nfunction decode (data, start, end, encoding) {\n if (data == null || data.length === 0) {\n return null\n }\n\n if (typeof start !== 'number' && encoding == null) {\n encoding = start\n start = undefined\n }\n\n if (typeof end !== 'number' && encoding == null) {\n encoding = end\n end = undefined\n }\n\n decode.position = 0\n decode.encoding = encoding || null\n\n decode.data = !(Buffer.isBuffer(data))\n ? Buffer.from(data)\n : data.slice(start, end)\n\n decode.bytes = decode.data.length\n\n return decode.next()\n}\n\ndecode.bytes = 0\ndecode.position = 0\ndecode.data = null\ndecode.encoding = null\n\ndecode.next = function () {\n switch (decode.data[decode.position]) {\n case DICTIONARY_START:\n return decode.dictionary()\n case LIST_START:\n return decode.list()\n case INTEGER_START:\n return decode.integer()\n default:\n return decode.buffer()\n }\n}\n\ndecode.find = function (chr) {\n let i = decode.position\n const c = decode.data.length\n const d = decode.data\n\n while (i < c) {\n if (d[i] === chr) return i\n i++\n }\n\n throw new Error(\n 'Invalid data: Missing delimiter \"' +\n String.fromCharCode(chr) + '\" [0x' +\n chr.toString(16) + ']'\n )\n}\n\ndecode.dictionary = function () {\n decode.position++\n\n const dict = {}\n\n while (decode.data[decode.position] !== END_OF_TYPE) {\n dict[decode.buffer()] = decode.next()\n }\n\n decode.position++\n\n return dict\n}\n\ndecode.list = function () {\n decode.position++\n\n const lst = []\n\n while (decode.data[decode.position] !== END_OF_TYPE) {\n lst.push(decode.next())\n }\n\n decode.position++\n\n return lst\n}\n\ndecode.integer = function () {\n const end = decode.find(END_OF_TYPE)\n const number = getIntFromBuffer(decode.data, decode.position + 1, end)\n\n decode.position += end + 1 - decode.position\n\n return number\n}\n\ndecode.buffer = function () {\n let sep = decode.find(STRING_DELIM)\n const length = getIntFromBuffer(decode.data, decode.position, sep)\n const end = ++sep + length\n\n decode.position = end\n\n return decode.encoding\n ? decode.data.toString(decode.encoding, sep, end)\n : decode.data.slice(sep, end)\n}\n\nmodule.exports = decode\n","const { getType } = require('./util.js')\n\n/**\n * Encodes data in bencode.\n *\n * @param {Buffer|Array|String|Object|Number|Boolean} data\n * @return {Buffer}\n */\nfunction encode (data, buffer, offset) {\n const buffers = []\n let result = null\n\n encode._encode(buffers, data)\n result = Buffer.concat(buffers)\n encode.bytes = result.length\n\n if (Buffer.isBuffer(buffer)) {\n result.copy(buffer, offset)\n return buffer\n }\n\n return result\n}\n\nencode.bytes = -1\nencode._floatConversionDetected = false\n\nencode._encode = function (buffers, data) {\n if (data == null) { return }\n\n switch (getType(data)) {\n case 'buffer': encode.buffer(buffers, data); break\n case 'object': encode.dict(buffers, data); break\n case 'map': encode.dictMap(buffers, data); break\n case 'array': encode.list(buffers, data); break\n case 'set': encode.listSet(buffers, data); break\n case 'string': encode.string(buffers, data); break\n case 'number': encode.number(buffers, data); break\n case 'boolean': encode.number(buffers, data); break\n case 'arraybufferview': encode.buffer(buffers, Buffer.from(data.buffer, data.byteOffset, data.byteLength)); break\n case 'arraybuffer': encode.buffer(buffers, Buffer.from(data)); break\n }\n}\n\nconst buffE = Buffer.from('e')\nconst buffD = Buffer.from('d')\nconst buffL = Buffer.from('l')\n\nencode.buffer = function (buffers, data) {\n buffers.push(Buffer.from(data.length + ':'), data)\n}\n\nencode.string = function (buffers, data) {\n buffers.push(Buffer.from(Buffer.byteLength(data) + ':' + data))\n}\n\nencode.number = function (buffers, data) {\n const maxLo = 0x80000000\n const hi = (data / maxLo) << 0\n const lo = (data % maxLo) << 0\n const val = hi * maxLo + lo\n\n buffers.push(Buffer.from('i' + val + 'e'))\n\n if (val !== data && !encode._floatConversionDetected) {\n encode._floatConversionDetected = true\n console.warn(\n 'WARNING: Possible data corruption detected with value \"' + data + '\":',\n 'Bencoding only defines support for integers, value was converted to \"' + val + '\"'\n )\n console.trace()\n }\n}\n\nencode.dict = function (buffers, data) {\n buffers.push(buffD)\n\n let j = 0\n let k\n // fix for issue #13 - sorted dicts\n const keys = Object.keys(data).sort()\n const kl = keys.length\n\n for (; j < kl; j++) {\n k = keys[j]\n if (data[k] == null) continue\n encode.string(buffers, k)\n encode._encode(buffers, data[k])\n }\n\n buffers.push(buffE)\n}\n\nencode.dictMap = function (buffers, data) {\n buffers.push(buffD)\n\n const keys = Array.from(data.keys()).sort()\n\n for (const key of keys) {\n if (data.get(key) == null) continue\n Buffer.isBuffer(key)\n ? encode._encode(buffers, key)\n : encode.string(buffers, String(key))\n encode._encode(buffers, data.get(key))\n }\n\n buffers.push(buffE)\n}\n\nencode.list = function (buffers, data) {\n let i = 0\n const c = data.length\n buffers.push(buffL)\n\n for (; i < c; i++) {\n if (data[i] == null) continue\n encode._encode(buffers, data[i])\n }\n\n buffers.push(buffE)\n}\n\nencode.listSet = function (buffers, data) {\n buffers.push(buffL)\n\n for (const item of data) {\n if (item == null) continue\n encode._encode(buffers, item)\n }\n\n buffers.push(buffE)\n}\n\nmodule.exports = encode\n","const { digitCount, getType } = require('./util.js')\n\nfunction listLength (list) {\n let length = 1 + 1 // type marker + end-of-type marker\n\n for (const value of list) {\n length += encodingLength(value)\n }\n\n return length\n}\n\nfunction mapLength (map) {\n let length = 1 + 1 // type marker + end-of-type marker\n\n for (const [key, value] of map) {\n const keyLength = Buffer.byteLength(key)\n length += digitCount(keyLength) + 1 + keyLength\n length += encodingLength(value)\n }\n\n return length\n}\n\nfunction objectLength (value) {\n let length = 1 + 1 // type marker + end-of-type marker\n const keys = Object.keys(value)\n\n for (let i = 0; i < keys.length; i++) {\n const keyLength = Buffer.byteLength(keys[i])\n length += digitCount(keyLength) + 1 + keyLength\n length += encodingLength(value[keys[i]])\n }\n\n return length\n}\n\nfunction stringLength (value) {\n const length = Buffer.byteLength(value)\n return digitCount(length) + 1 + length\n}\n\nfunction arrayBufferLength (value) {\n const length = value.byteLength - value.byteOffset\n return digitCount(length) + 1 + length\n}\n\nfunction encodingLength (value) {\n const length = 0\n\n if (value == null) return length\n\n const type = getType(value)\n\n switch (type) {\n case 'buffer': return digitCount(value.length) + 1 + value.length\n case 'arraybufferview': return arrayBufferLength(value)\n case 'string': return stringLength(value)\n case 'array': case 'set': return listLength(value)\n case 'number': return 1 + digitCount(Math.floor(value)) + 1\n case 'bigint': return 1 + value.toString().length + 1\n case 'object': return objectLength(value)\n case 'map': return mapLength(value)\n default:\n throw new TypeError(`Unsupported value of type \"${type}\"`)\n }\n}\n\nmodule.exports = encodingLength\n","const bencode = module.exports\n\nbencode.encode = require('./encode.js')\nbencode.decode = require('./decode.js')\n\n/**\n * Determines the amount of bytes\n * needed to encode the given value\n * @param {Object|Array|Buffer|String|Number|Boolean} value\n * @return {Number} byteCount\n */\nbencode.byteLength = bencode.encodingLength = require('./encoding-length.js')\n","const util = module.exports\n\nutil.digitCount = function digitCount (value) {\n // Add a digit for negative numbers, as the sign will be prefixed\n const sign = value < 0 ? 1 : 0\n // Guard against negative numbers & zero going into log10(),\n // as that would return -Infinity\n value = Math.abs(Number(value || 1))\n return Math.floor(Math.log10(value)) + 1 + sign\n}\n\nutil.getType = function getType (value) {\n if (Buffer.isBuffer(value)) return 'buffer'\n if (ArrayBuffer.isView(value)) return 'arraybufferview'\n if (Array.isArray(value)) return 'array'\n if (value instanceof Number) return 'number'\n if (value instanceof Boolean) return 'boolean'\n if (value instanceof Set) return 'set'\n if (value instanceof Map) return 'map'\n if (value instanceof String) return 'string'\n if (value instanceof ArrayBuffer) return 'arraybuffer'\n return typeof value\n}\n","var socket = require('k-rpc-socket')\nvar KBucket = require('k-bucket')\nvar events = require('events')\nvar randombytes = require('randombytes')\nvar util = require('util')\n\nvar K = 20\nvar MAX_CONCURRENCY = 16\nvar BOOTSTRAP_NODES = [\n { host: 'router.bittorrent.com', port: 6881 },\n { host: 'router.utorrent.com', port: 6881 },\n { host: 'dht.transmissionbt.com', port: 6881 }\n]\n\nmodule.exports = RPC\n\nfunction RPC (opts) {\n if (!(this instanceof RPC)) return new RPC(opts)\n if (!opts) opts = {}\n\n var self = this\n\n this._idLength = opts.idLength || 20\n this.id = toBuffer(opts.id || opts.nodeId || randombytes(this._idLength))\n this.socket = opts.krpcSocket || socket(opts)\n this.bootstrap = toBootstrapArray(opts.nodes || opts.bootstrap)\n this.concurrency = opts.concurrency || MAX_CONCURRENCY\n this.backgroundConcurrency = opts.backgroundConcurrency || (this.concurrency / 4) | 0\n this.k = opts.k || K\n this.destroyed = false\n\n this.pending = []\n this.nodes = null\n\n this.socket.setMaxListeners(0)\n this.socket.on('query', onquery)\n this.socket.on('response', onresponse)\n this.socket.on('warning', onwarning)\n this.socket.on('error', onerror)\n this.socket.on('update', onupdate)\n this.socket.on('listening', onlistening)\n\n events.EventEmitter.call(this)\n this.clear()\n\n function onupdate () {\n while (self.pending.length && self.socket.inflight < self.concurrency) {\n var next = self.pending.shift()\n self.query(next[0], next[1], next[2])\n }\n }\n\n function onerror (err) {\n self.emit('error', err)\n }\n\n function onlistening () {\n self.emit('listening')\n }\n\n function onwarning (err) {\n self.emit('warning', err)\n }\n\n function onquery (query, peer) {\n addNode(query.a, peer)\n self.emit('query', query, peer)\n }\n\n function onresponse (reply, peer) {\n addNode(reply.r, peer)\n }\n\n function addNode (data, peer) {\n if (data && isNodeId(data.id, self._idLength) && !data.id.equals(self.id)) {\n var old = self.nodes.get(data.id)\n if (old) {\n old.seen = Date.now()\n return\n }\n self._addNode({\n id: data.id,\n host: peer.address || peer.host,\n port: peer.port,\n distance: 0,\n seen: Date.now()\n })\n }\n }\n}\n\nutil.inherits(RPC, events.EventEmitter)\n\nRPC.prototype.response = function (node, query, response, nodes, cb) {\n if (typeof nodes === 'function') {\n cb = nodes\n nodes = null\n }\n\n if (!response.id) response.id = this.id\n if (nodes) response.nodes = encodeNodes(nodes, this._idLength)\n this.socket.response(node, query, response, cb)\n}\n\nRPC.prototype.error = function (node, query, error, cb) {\n this.socket.error(node, query, error, cb)\n}\n\n// bind([port], [address], [callback])\nRPC.prototype.bind = function () {\n this.socket.bind.apply(this.socket, arguments)\n}\n\nRPC.prototype.address = function () {\n return this.socket.address()\n}\n\nRPC.prototype.queryAll = function (nodes, message, visit, cb) {\n if (!message.a) message.a = {}\n if (!message.a.id) message.a.id = this.id\n\n var stop = false\n var missing = nodes.length\n var hits = 0\n var error = null\n\n if (!missing) return cb(new Error('No nodes to query'), 0)\n\n for (var i = 0; i < nodes.length; i++) {\n this.query(nodes[i], message, done)\n }\n\n function done (err, res, peer) {\n if (!err) hits++\n else if (err.code >= 300 && err.code < 400) error = err\n if (!err && !stop) {\n if (visit && visit(res, peer) === false) stop = true\n }\n if (!--missing) cb(hits ? null : error || new Error('All queries failed'), hits)\n }\n}\n\nRPC.prototype.query = function (node, message, cb) {\n if (this.socket.inflight >= this.concurrency) {\n this.pending.push([node, message, cb])\n } else {\n if (!message.a) message.a = {}\n if (!message.a.id) message.a.id = this.id\n if (node.token) message.a.token = node.token\n this.socket.query(node, message, cb)\n }\n}\n\nRPC.prototype.destroy = function (cb) {\n this.destroyed = true\n this.socket.destroy(cb)\n}\n\nRPC.prototype.clear = function () {\n var self = this\n\n this.nodes = new KBucket({\n localNodeId: this.id,\n numberOfNodesPerKBucket: this.k,\n numberOfNodesToPing: this.concurrency\n })\n\n this.nodes.on('ping', onping)\n\n function onping (older, newer) {\n self.emit('ping', older, function swap (deadNode) {\n if (!deadNode) return\n if (deadNode.id) self.nodes.remove(deadNode.id)\n self._addNode(newer)\n })\n }\n}\n\nRPC.prototype.populate = function (target, message, cb) {\n this._closest(target, message, true, null, cb)\n}\n\nRPC.prototype.closest = function (target, message, visit, cb) {\n this._closest(target, message, false, visit, cb)\n}\n\nRPC.prototype._addNode = function (node) {\n var old = this.nodes.get(node.id)\n this.nodes.add(node)\n if (!old) this.emit('node', node)\n}\n\nRPC.prototype._closest = function (target, message, background, visit, cb) {\n if (!cb) cb = noop\n\n var self = this\n var count = 0\n var queried = {}\n var pending = 0\n var once = true\n var stop = false\n\n if (!message.a) message.a = {}\n if (!message.a.id) message.a.id = this.id\n\n var table = new KBucket({\n localNodeId: target,\n numberOfNodesPerKBucket: this.k,\n numberOfNodesToPing: this.concurrency\n })\n\n var evt = background ? 'postupdate' : 'update'\n this.socket.on(evt, kick)\n kick()\n\n function kick () {\n if (self.destroyed || self.socket.inflight >= self.concurrency) return\n\n var otherInflight = self.pending.length + self.socket.inflight - pending\n if (background && self.socket.inflight >= self.backgroundConcurrency && otherInflight) return\n\n var closest = table.closest(target, self.k)\n if (!closest.length || closest.length < self.bootstrap.length) {\n closest = self.nodes.closest(target, self.k)\n if (!closest.length || closest.length < self.bootstrap.length) bootstrap()\n }\n\n for (var i = 0; i < closest.length; i++) {\n if (stop) break\n if (self.socket.inflight >= self.concurrency) return\n\n var peer = closest[i]\n var id = peer.host + ':' + peer.port\n if (queried[id]) continue\n queried[id] = true\n\n pending++\n self.socket.query(peer, message, afterQuery)\n }\n\n if (!pending) {\n self.socket.removeListener(evt, kick)\n process.nextTick(done)\n }\n }\n\n function done () {\n cb(null, count)\n }\n\n function bootstrap () {\n if (!once) return\n once = false\n self.bootstrap.forEach(function (peer) {\n pending++\n self.socket.query(peer, message, afterQuery)\n })\n }\n\n function afterQuery (err, res, peer) {\n pending--\n if (peer) queried[(peer.address || peer.host) + ':' + peer.port] = true // need this for bootstrap nodes\n\n if (peer && peer.id && self.nodes.get(peer.id)) {\n if (err && (err.code === 'EUNEXPECTEDNODE' || err.code === 'ETIMEDOUT')) {\n self.nodes.remove(peer.id)\n }\n }\n\n var r = res && res.r\n if (!r) return kick()\n\n if (!err && isNodeId(r.id, self._idLength)) {\n count++\n add({\n id: r.id,\n port: peer.port,\n host: peer.host || peer.address,\n distance: 0\n })\n }\n\n var nodes = r.nodes ? parseNodes(r.nodes, self._idLength) : []\n for (var i = 0; i < nodes.length; i++) add(nodes[i])\n\n if (visit && visit(res, peer) === false) stop = true\n\n kick()\n }\n\n function add (node) {\n if (node.id.equals(self.id)) return\n table.add(node)\n }\n}\n\nfunction toBootstrapArray (val) {\n if (val === false) return []\n if (val === true) return BOOTSTRAP_NODES\n return [].concat(val || BOOTSTRAP_NODES).map(parsePeer)\n}\n\nfunction isNodeId (id, idLength) {\n return id && Buffer.isBuffer(id) && id.length === idLength\n}\n\nfunction encodeNodes (nodes, idLength) {\n var buf = Buffer.allocUnsafe(nodes.length * (idLength + 6))\n var ptr = 0\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i]\n if (!isNodeId(node.id, idLength)) continue\n node.id.copy(buf, ptr)\n ptr += idLength\n var ip = (node.host || node.address).split('.')\n for (var j = 0; j < 4; j++) buf[ptr++] = parseInt(ip[j] || 0, 10)\n buf.writeUInt16BE(node.port, ptr)\n ptr += 2\n }\n\n if (ptr === buf.length) return buf\n return buf.slice(0, ptr)\n}\n\nfunction parseNodes (buf, idLength) {\n var contacts = []\n\n try {\n for (var i = 0; i < buf.length; i += (idLength + 6)) {\n var port = buf.readUInt16BE(i + (idLength + 4))\n if (!port) continue\n contacts.push({\n id: buf.slice(i, i + idLength),\n host: parseIp(buf, i + idLength),\n port: port,\n distance: 0,\n token: null\n })\n }\n } catch (err) {\n // do nothing\n }\n\n return contacts\n}\n\nfunction parseIp (buf, offset) {\n return buf[offset++] + '.' + buf[offset++] + '.' + buf[offset++] + '.' + buf[offset++]\n}\n\nfunction parsePeer (peer) {\n if (typeof peer === 'string') return { host: peer.split(':')[0], port: Number(peer.split(':')[1]) }\n return peer\n}\n\nfunction noop () {}\n\nfunction toBuffer (str) {\n if (Buffer.isBuffer(str)) return str\n if (ArrayBuffer.isView(str)) return Buffer.from(str.buffer, str.byteOffset, str.byteLength)\n if (typeof str === 'string') return Buffer.from(str, 'hex')\n throw new Error('Pass a buffer or a string')\n}\n","module.exports = function (work) {\n var pending = null\n var callback = null\n var callbacks = null\n var next = null\n\n return function (val, cb) {\n next = val\n update(cb || noop)\n }\n\n function update (cb) {\n if (callback) {\n if (!pending) pending = []\n pending.push(cb)\n return\n }\n\n var val = next\n next = null\n callback = cb\n work(val, done)\n }\n\n function done (err) {\n var cb = callback\n var cbs = callbacks\n callbacks = null\n callback = null\n\n if (pending) {\n callbacks = pending\n pending = null\n update(noop)\n }\n\n if (cbs) {\n for (var i = 0; i < cbs.length; i++) cbs[i](err)\n }\n cb(err)\n }\n}\n\nfunction noop (_) {}\n","\r\nexports.RateLimiter = require('./lib/rateLimiter');\r\nexports.TokenBucket = require('./lib/tokenBucket');\r\n","var getMilliseconds = function() {\r\n if (typeof process !== 'undefined' && process.hrtime) {\r\n var hrtime = process.hrtime();\r\n var seconds = hrtime[0];\r\n var nanoseconds = hrtime[1];\r\n\r\n return seconds * 1e3 + Math.floor(nanoseconds / 1e6);\r\n }\r\n\r\n return new Date().getTime();\r\n}\r\n\r\nmodule.exports = getMilliseconds;\r\n","var TokenBucket = require('./tokenBucket');\r\nvar getMilliseconds = require('./clock');\r\n\r\n/**\r\n * A generic rate limiter. Underneath the hood, this uses a token bucket plus\r\n * an additional check to limit how many tokens we can remove each interval.\r\n * @author John Hurliman \r\n *\r\n * @param {Number} tokensPerInterval Maximum number of tokens that can be\r\n * removed at any given moment and over the course of one interval.\r\n * @param {String|Number} interval The interval length in milliseconds, or as\r\n * one of the following strings: 'second', 'minute', 'hour', day'.\r\n * @param {Boolean} fireImmediately Optional. Whether or not the callback\r\n * will fire immediately when rate limiting is in effect (default is false).\r\n */\r\nvar RateLimiter = function(tokensPerInterval, interval, fireImmediately) {\r\n this.tokenBucket = new TokenBucket(tokensPerInterval, tokensPerInterval,\r\n interval, null);\r\n\r\n // Fill the token bucket to start\r\n this.tokenBucket.content = tokensPerInterval;\r\n\r\n this.curIntervalStart = getMilliseconds();\r\n this.tokensThisInterval = 0;\r\n this.fireImmediately = fireImmediately;\r\n};\r\n\r\nRateLimiter.prototype = {\r\n tokenBucket: null,\r\n curIntervalStart: 0,\r\n tokensThisInterval: 0,\r\n fireImmediately: false,\r\n\r\n /**\r\n * Remove the requested number of tokens and fire the given callback. If the\r\n * rate limiter contains enough tokens and we haven't spent too many tokens\r\n * in this interval already, this will happen immediately. Otherwise, the\r\n * removal and callback will happen when enough tokens become available.\r\n * @param {Number} count The number of tokens to remove.\r\n * @param {Function} callback(err, remainingTokens)\r\n * @returns {Boolean} True if the callback was fired immediately, otherwise\r\n * false.\r\n */\r\n removeTokens: function(count, callback) {\r\n // Make sure the request isn't for more than we can handle\r\n if (count > this.tokenBucket.bucketSize) {\r\n process.nextTick(callback.bind(null, 'Requested tokens ' + count +\r\n ' exceeds maximum tokens per interval ' + this.tokenBucket.bucketSize,\r\n null));\r\n return false;\r\n }\r\n\r\n var self = this;\r\n var now = getMilliseconds();\r\n\r\n // Advance the current interval and reset the current interval token count\r\n // if needed\r\n if (now < this.curIntervalStart\r\n || now - this.curIntervalStart >= this.tokenBucket.interval) {\r\n this.curIntervalStart = now;\r\n this.tokensThisInterval = 0;\r\n }\r\n\r\n // If we don't have enough tokens left in this interval, wait until the\r\n // next interval\r\n if (count > this.tokenBucket.tokensPerInterval - this.tokensThisInterval) {\r\n if (this.fireImmediately) {\r\n process.nextTick(callback.bind(null, null, -1));\r\n } else {\r\n var waitInterval = Math.ceil(\r\n this.curIntervalStart + this.tokenBucket.interval - now);\r\n\r\n setTimeout(function() {\r\n self.tokenBucket.removeTokens(count, afterTokensRemoved);\r\n }, waitInterval);\r\n }\r\n return false;\r\n }\r\n\r\n // Remove the requested number of tokens from the token bucket\r\n return this.tokenBucket.removeTokens(count, afterTokensRemoved);\r\n\r\n function afterTokensRemoved(err, tokensRemaining) {\r\n if (err) return callback(err, null);\r\n\r\n self.tokensThisInterval += count;\r\n callback(null, tokensRemaining);\r\n }\r\n },\r\n\r\n /**\r\n * Attempt to remove the requested number of tokens and return immediately.\r\n * If the bucket (and any parent buckets) contains enough tokens and we\r\n * haven't spent too many tokens in this interval already, this will return\r\n * true. Otherwise, false is returned.\r\n * @param {Number} count The number of tokens to remove.\r\n * @param {Boolean} True if the tokens were successfully removed, otherwise\r\n * false.\r\n */\r\n tryRemoveTokens: function(count) {\r\n // Make sure the request isn't for more than we can handle\r\n if (count > this.tokenBucket.bucketSize)\r\n return false;\r\n\r\n var now = getMilliseconds();\r\n\r\n // Advance the current interval and reset the current interval token count\r\n // if needed\r\n if (now < this.curIntervalStart\r\n || now - this.curIntervalStart >= this.tokenBucket.interval) {\r\n this.curIntervalStart = now;\r\n this.tokensThisInterval = 0;\r\n }\r\n\r\n // If we don't have enough tokens left in this interval, return false\r\n if (count > this.tokenBucket.tokensPerInterval - this.tokensThisInterval)\r\n return false;\r\n\r\n // Try to remove the requested number of tokens from the token bucket\r\n var removed = this.tokenBucket.tryRemoveTokens(count);\r\n if (removed) {\r\n this.tokensThisInterval += count;\r\n }\r\n return removed;\r\n },\r\n\r\n /**\r\n * Returns the number of tokens remaining in the TokenBucket.\r\n * @returns {Number} The number of tokens remaining.\r\n */\r\n getTokensRemaining: function () {\r\n this.tokenBucket.drip();\r\n return this.tokenBucket.content;\r\n }\r\n};\r\n\r\nmodule.exports = RateLimiter;\r\n","\r\n/**\r\n * A hierarchical token bucket for rate limiting. See\r\n * http://en.wikipedia.org/wiki/Token_bucket for more information.\r\n * @author John Hurliman \r\n *\r\n * @param {Number} bucketSize Maximum number of tokens to hold in the bucket.\r\n * Also known as the burst rate.\r\n * @param {Number} tokensPerInterval Number of tokens to drip into the bucket\r\n * over the course of one interval.\r\n * @param {String|Number} interval The interval length in milliseconds, or as\r\n * one of the following strings: 'second', 'minute', 'hour', day'.\r\n * @param {TokenBucket} parentBucket Optional. A token bucket that will act as\r\n * the parent of this bucket.\r\n */\r\nvar TokenBucket = function(bucketSize, tokensPerInterval, interval, parentBucket) {\r\n this.bucketSize = bucketSize;\r\n this.tokensPerInterval = tokensPerInterval;\r\n\r\n if (typeof interval === 'string') {\r\n switch (interval) {\r\n case 'sec': case 'second':\r\n this.interval = 1000; break;\r\n case 'min': case 'minute':\r\n this.interval = 1000 * 60; break;\r\n case 'hr': case 'hour':\r\n this.interval = 1000 * 60 * 60; break;\r\n case 'day':\r\n this.interval = 1000 * 60 * 60 * 24; break;\r\n default:\r\n throw new Error('Invaid interval ' + interval);\r\n }\r\n } else {\r\n this.interval = interval;\r\n }\r\n\r\n this.parentBucket = parentBucket;\r\n this.content = 0;\r\n this.lastDrip = +new Date();\r\n};\r\n\r\nTokenBucket.prototype = {\r\n bucketSize: 1,\r\n tokensPerInterval: 1,\r\n interval: 1000,\r\n parentBucket: null,\r\n content: 0,\r\n lastDrip: 0,\r\n\r\n /**\r\n * Remove the requested number of tokens and fire the given callback. If the\r\n * bucket (and any parent buckets) contains enough tokens this will happen\r\n * immediately. Otherwise, the removal and callback will happen when enough\r\n * tokens become available.\r\n * @param {Number} count The number of tokens to remove.\r\n * @param {Function} callback(err, remainingTokens)\r\n * @returns {Boolean} True if the callback was fired immediately, otherwise\r\n * false.\r\n */\r\n removeTokens: function(count, callback) {\r\n var self = this;\r\n\r\n // Is this an infinite size bucket?\r\n if (!this.bucketSize) {\r\n process.nextTick(callback.bind(null, null, count, Number.POSITIVE_INFINITY));\r\n return true;\r\n }\r\n\r\n // Make sure the bucket can hold the requested number of tokens\r\n if (count > this.bucketSize) {\r\n process.nextTick(callback.bind(null, 'Requested tokens ' + count + ' exceeds bucket size ' +\r\n this.bucketSize, null));\r\n return false;\r\n }\r\n\r\n // Drip new tokens into this bucket\r\n this.drip();\r\n\r\n // If we don't have enough tokens in this bucket, come back later\r\n if (count > this.content)\r\n return comeBackLater();\r\n\r\n if (this.parentBucket) {\r\n // Remove the requested from the parent bucket first\r\n return this.parentBucket.removeTokens(count, function(err, remainingTokens) {\r\n if (err) return callback(err, null);\r\n\r\n // Check that we still have enough tokens in this bucket\r\n if (count > self.content)\r\n return comeBackLater();\r\n\r\n // Tokens were removed from the parent bucket, now remove them from\r\n // this bucket and fire the callback. Note that we look at the current\r\n // bucket and parent bucket's remaining tokens and return the smaller\r\n // of the two values\r\n self.content -= count;\r\n callback(null, Math.min(remainingTokens, self.content));\r\n });\r\n } else {\r\n // Remove the requested tokens from this bucket and fire the callback\r\n this.content -= count;\r\n process.nextTick(callback.bind(null, null, this.content));\r\n return true;\r\n }\r\n\r\n function comeBackLater() {\r\n // How long do we need to wait to make up the difference in tokens?\r\n var waitInterval = Math.ceil(\r\n (count - self.content) * (self.interval / self.tokensPerInterval));\r\n setTimeout(function() { self.removeTokens(count, callback); }, waitInterval);\r\n return false;\r\n }\r\n },\r\n\r\n /**\r\n * Attempt to remove the requested number of tokens and return immediately.\r\n * If the bucket (and any parent buckets) contains enough tokens this will\r\n * return true, otherwise false is returned.\r\n * @param {Number} count The number of tokens to remove.\r\n * @param {Boolean} True if the tokens were successfully removed, otherwise\r\n * false.\r\n */\r\n tryRemoveTokens: function(count) {\r\n // Is this an infinite size bucket?\r\n if (!this.bucketSize)\r\n return true;\r\n\r\n // Make sure the bucket can hold the requested number of tokens\r\n if (count > this.bucketSize)\r\n return false;\r\n\r\n // Drip new tokens into this bucket\r\n this.drip();\r\n\r\n // If we don't have enough tokens in this bucket, return false\r\n if (count > this.content)\r\n return false;\r\n\r\n // Try to remove the requested tokens from the parent bucket\r\n if (this.parentBucket && !this.parentBucket.tryRemoveTokens(count))\r\n return false;\r\n\r\n // Remove the requested tokens from this bucket and return\r\n this.content -= count;\r\n return true;\r\n },\r\n\r\n /**\r\n * Add any new tokens to the bucket since the last drip.\r\n * @returns {Boolean} True if new tokens were added, otherwise false.\r\n */\r\n drip: function() {\r\n if (!this.tokensPerInterval) {\r\n this.content = this.bucketSize;\r\n return;\r\n }\r\n\r\n var now = +new Date();\r\n var deltaMS = Math.max(now - this.lastDrip, 0);\r\n this.lastDrip = now;\r\n\r\n var dripAmount = deltaMS * (this.tokensPerInterval / this.interval);\r\n this.content = Math.min(this.content + dripAmount, this.bucketSize);\r\n }\r\n};\r\n\r\nmodule.exports = TokenBucket;\r\n","var events = require('events')\nvar inherits = require('inherits')\n\nmodule.exports = LRU\n\nfunction LRU (opts) {\n if (!(this instanceof LRU)) return new LRU(opts)\n if (typeof opts === 'number') opts = {max: opts}\n if (!opts) opts = {}\n events.EventEmitter.call(this)\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n this.max = opts.max || 1000\n this.maxAge = opts.maxAge || 0\n}\n\ninherits(LRU, events.EventEmitter)\n\nObject.defineProperty(LRU.prototype, 'keys', {\n get: function () { return Object.keys(this.cache) }\n})\n\nLRU.prototype.clear = function () {\n this.cache = {}\n this.head = this.tail = null\n this.length = 0\n}\n\nLRU.prototype.remove = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n delete this.cache[key]\n this._unlink(key, element.prev, element.next)\n return element.value\n}\n\nLRU.prototype._unlink = function (key, prev, next) {\n this.length--\n\n if (this.length === 0) {\n this.head = this.tail = null\n } else {\n if (this.head === key) {\n this.head = prev\n this.cache[this.head].next = null\n } else if (this.tail === key) {\n this.tail = next\n this.cache[this.tail].prev = null\n } else {\n this.cache[prev].next = next\n this.cache[next].prev = prev\n }\n }\n}\n\nLRU.prototype.peek = function (key) {\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n return element.value\n}\n\nLRU.prototype.set = function (key, value) {\n if (typeof key !== 'string') key = '' + key\n\n var element\n\n if (this.cache.hasOwnProperty(key)) {\n element = this.cache[key]\n element.value = value\n if (this.maxAge) element.modified = Date.now()\n\n // If it's already the head, there's nothing more to do:\n if (key === this.head) return value\n this._unlink(key, element.prev, element.next)\n } else {\n element = {value: value, modified: 0, next: null, prev: null}\n if (this.maxAge) element.modified = Date.now()\n this.cache[key] = element\n\n // Eviction is only possible if the key didn't already exist:\n if (this.length === this.max) this.evict()\n }\n\n this.length++\n element.next = null\n element.prev = this.head\n\n if (this.head) this.cache[this.head].next = key\n this.head = key\n\n if (!this.tail) this.tail = key\n return value\n}\n\nLRU.prototype._checkAge = function (key, element) {\n if (this.maxAge && (Date.now() - element.modified) > this.maxAge) {\n this.remove(key)\n this.emit('evict', {key: key, value: element.value})\n return false\n }\n return true\n}\n\nLRU.prototype.get = function (key) {\n if (typeof key !== 'string') key = '' + key\n if (!this.cache.hasOwnProperty(key)) return\n\n var element = this.cache[key]\n\n if (!this._checkAge(key, element)) return\n\n if (this.head !== key) {\n if (key === this.tail) {\n this.tail = element.next\n this.cache[this.tail].prev = null\n } else {\n // Set prev.next -> element.next:\n this.cache[element.prev].next = element.next\n }\n\n // Set element.next.prev -> element.prev:\n this.cache[element.next].prev = element.prev\n\n // Element is the new head\n this.cache[this.head].next = key\n element.prev = this.head\n element.next = null\n this.head = key\n }\n\n return element.value\n}\n\nLRU.prototype.evict = function () {\n if (!this.tail) return\n var key = this.tail\n var value = this.remove(this.tail)\n this.emit('evict', {key: key, value: value})\n}\n","/*! lt_donthave. MIT License. WebTorrent LLC */\nconst arrayRemove = require('unordered-array-remove')\nconst { EventEmitter } = require('events')\nconst debug = require('debug')('lt_donthave')\n\nmodule.exports = () => {\n class ltDontHave extends EventEmitter {\n constructor (wire) {\n super()\n\n this._peerSupports = false\n this._wire = wire\n }\n\n onExtendedHandshake () {\n this._peerSupports = true\n }\n\n onMessage (buf) {\n let index\n try {\n index = buf.readUInt32BE()\n } catch (err) {\n // drop invalid messages\n return\n }\n\n if (!this._wire.peerPieces.get(index)) return\n debug('got donthave %d', index)\n this._wire.peerPieces.set(index, false)\n\n this.emit('donthave', index)\n this._failRequests(index)\n }\n\n donthave (index) {\n if (!this._peerSupports) return\n\n debug('donthave %d', index)\n const buf = Buffer.alloc(4)\n buf.writeUInt32BE(index)\n\n this._wire.extended('lt_donthave', buf)\n }\n\n _failRequests (index) {\n const requests = this._wire.requests\n for (let i = 0; i < requests.length; i++) {\n const req = requests[i]\n if (req.piece === index) {\n arrayRemove(requests, i)\n i -= 1 // Check the new value at the same slot\n this._wire._callback(req, new Error('peer sent donthave'), null)\n }\n }\n }\n }\n\n // Name of the bittorrent-protocol extension\n ltDontHave.prototype.name = 'lt_donthave'\n\n return ltDontHave\n}\n","module.exports = Storage\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction Storage (chunkLength, opts) {\n if (!(this instanceof Storage)) return new Storage(chunkLength, opts)\n if (!opts) opts = {}\n\n this.chunkLength = Number(chunkLength)\n if (!this.chunkLength) throw new Error('First argument must be a chunk length')\n\n this.chunks = []\n this.closed = false\n this.length = Number(opts.length) || Infinity\n\n if (this.length !== Infinity) {\n this.lastChunkLength = (this.length % this.chunkLength) || this.chunkLength\n this.lastChunkIndex = Math.ceil(this.length / this.chunkLength) - 1\n }\n}\n\nStorage.prototype.put = function (index, buf, cb = () => {}) {\n if (this.closed) return queueMicrotask(() => cb(new Error('Storage is closed')))\n\n const isLastChunk = (index === this.lastChunkIndex)\n if (isLastChunk && buf.length !== this.lastChunkLength) {\n return queueMicrotask(() => cb(new Error('Last chunk length must be ' + this.lastChunkLength)))\n }\n if (!isLastChunk && buf.length !== this.chunkLength) {\n return queueMicrotask(() => cb(new Error('Chunk length must be ' + this.chunkLength)))\n }\n this.chunks[index] = buf\n queueMicrotask(() => cb(null))\n}\n\nStorage.prototype.get = function (index, opts, cb = () => {}) {\n if (typeof opts === 'function') return this.get(index, null, opts)\n if (this.closed) return queueMicrotask(() => cb(new Error('Storage is closed')))\n\n let buf = this.chunks[index]\n\n if (!buf) {\n const err = new Error('Chunk not found')\n err.notFound = true\n return queueMicrotask(() => cb(err))\n }\n\n if (!opts) opts = {}\n\n const offset = opts.offset || 0\n const len = opts.length || (buf.length - offset)\n\n if (offset !== 0 || len !== buf.length) {\n buf = buf.slice(offset, len + offset)\n }\n\n queueMicrotask(() => cb(null, buf))\n}\n\nStorage.prototype.close = Storage.prototype.destroy = function (cb = () => {}) {\n if (this.closed) return queueMicrotask(() => cb(new Error('Storage is closed')))\n this.closed = true\n this.chunks = null\n queueMicrotask(() => cb(null))\n}\n","'use strict';\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nmodule.exports = Mime;\n","'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'));\n","module.exports = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"es\",\"ecma\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/express\":[\"exp\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/trig\":[\"trig\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/step+xml\":[\"stpx\"],\"model/step+zip\":[\"stpz\"],\"model/step-xml+zip\":[\"stpxz\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};","'use strict';\n\n// We define these manually to ensure they're always copied\n// even if they would move up the prototype chain\n// https://nodejs.org/api/http.html#http_class_http_incomingmessage\nconst knownProperties = [\n\t'aborted',\n\t'complete',\n\t'headers',\n\t'httpVersion',\n\t'httpVersionMinor',\n\t'httpVersionMajor',\n\t'method',\n\t'rawHeaders',\n\t'rawTrailers',\n\t'setTimeout',\n\t'socket',\n\t'statusCode',\n\t'statusMessage',\n\t'trailers',\n\t'url'\n];\n\nmodule.exports = (fromStream, toStream) => {\n\tif (toStream._readableState.autoDestroy) {\n\t\tthrow new Error('The second stream must have the `autoDestroy` option set to `false`');\n\t}\n\n\tconst fromProperties = new Set(Object.keys(fromStream).concat(knownProperties));\n\n\tconst properties = {};\n\n\tfor (const property of fromProperties) {\n\t\t// Don't overwrite existing properties.\n\t\tif (property in toStream) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tproperties[property] = {\n\t\t\tget() {\n\t\t\t\tconst value = fromStream[property];\n\t\t\t\tconst isFunction = typeof value === 'function';\n\n\t\t\t\treturn isFunction ? value.bind(fromStream) : value;\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tfromStream[property] = value;\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false\n\t\t};\n\t}\n\n\tObject.defineProperties(toStream, properties);\n\n\tfromStream.once('aborted', () => {\n\t\ttoStream.destroy();\n\n\t\ttoStream.emit('aborted');\n\t});\n\n\tfromStream.once('close', () => {\n\t\tif (fromStream.complete) {\n\t\t\tif (toStream.readable) {\n\t\t\t\ttoStream.once('end', () => {\n\t\t\t\t\ttoStream.emit('close');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttoStream.emit('close');\n\t\t\t}\n\t\t} else {\n\t\t\ttoStream.emit('close');\n\t\t}\n\t});\n\n\treturn toStream;\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","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","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\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'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","module.exports = length\n\nfunction length (bytes) {\n return Math.max(16384, 1 << Math.log2(bytes < 1024 ? 1 : bytes / 1024) + 0.5 | 0)\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","// 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// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\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'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","module.exports = typeof queueMicrotask === 'function' ? queueMicrotask : (fn) => Promise.resolve().then(fn)\n","var iterate = function (list) {\n var offset = 0\n return function () {\n if (offset === list.length) return null\n\n var len = list.length - offset\n var i = (Math.random() * len) | 0\n var el = list[offset + i]\n\n var tmp = list[offset]\n list[offset] = el\n list[offset + i] = tmp\n offset++\n\n return el\n }\n}\n\nmodule.exports = iterate\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","/*!\n * range-parser\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = rangeParser\n\n/**\n * Parse \"Range\" header `str` relative to the given file `size`.\n *\n * @param {Number} size\n * @param {String} str\n * @param {Object} [options]\n * @return {Array}\n * @public\n */\n\nfunction rangeParser (size, str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string')\n }\n\n var index = str.indexOf('=')\n\n if (index === -1) {\n return -2\n }\n\n // split the range string\n var arr = str.slice(index + 1).split(',')\n var ranges = []\n\n // add ranges type\n ranges.type = str.slice(0, index)\n\n // parse all ranges\n for (var i = 0; i < arr.length; i++) {\n var range = arr[i].split('-')\n var start = parseInt(range[0], 10)\n var end = parseInt(range[1], 10)\n\n // -nnn\n if (isNaN(start)) {\n start = size - end\n end = size - 1\n // nnn-\n } else if (isNaN(end)) {\n end = size - 1\n }\n\n // limit last-byte-pos to current length\n if (end > size - 1) {\n end = size - 1\n }\n\n // invalid or unsatisifiable\n if (isNaN(start) || isNaN(end) || start > end || start < 0) {\n continue\n }\n\n // add range\n ranges.push({\n start: start,\n end: end\n })\n }\n\n if (ranges.length < 1) {\n // unsatisifiable\n return -1\n }\n\n return options && options.combine\n ? combineRanges(ranges)\n : ranges\n}\n\n/**\n * Combine overlapping & adjacent ranges.\n * @private\n */\n\nfunction combineRanges (ranges) {\n var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart)\n\n for (var j = 0, i = 1; i < ordered.length; i++) {\n var range = ordered[i]\n var current = ordered[j]\n\n if (range.start > current.end + 1) {\n // next range\n ordered[++j] = range\n } else if (range.end > current.end) {\n // extend range\n current.end = range.end\n current.index = Math.min(current.index, range.index)\n }\n }\n\n // trim ordered array\n ordered.length = j + 1\n\n // generate combined range\n var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex)\n\n // copy ranges type\n combined.type = ranges.type\n\n return combined\n}\n\n/**\n * Map function to add index value to ranges.\n * @private\n */\n\nfunction mapWithIndex (range, index) {\n return {\n start: range.start,\n end: range.end,\n index: index\n }\n}\n\n/**\n * Map function to remove index value from ranges.\n * @private\n */\n\nfunction mapWithoutIndex (range) {\n return {\n start: range.start,\n end: range.end\n }\n}\n\n/**\n * Sort function to sort ranges by index.\n * @private\n */\n\nfunction sortByRangeIndex (a, b) {\n return a.index - b.index\n}\n\n/**\n * Sort function to sort ranges by start position.\n * @private\n */\n\nfunction sortByRangeStart (a, b) {\n return a.start - b.start\n}\n","\"use strict\";\n\n// Based on RC4 algorithm, as described in\n// http://en.wikipedia.org/wiki/RC4\n\nfunction isInteger(n) {\n return parseInt(n, 10) === n;\n}\n\nfunction createRC4(N) {\n function identityPermutation() {\n var s = new Array(N);\n for (var i = 0; i < N; i++) {\n s[i] = i;\n }\n return s;\n }\n\n // :: string | array integer -> array integer\n function seed(key) {\n if (key === undefined) {\n key = new Array(N);\n for (var k = 0; k < N; k++) {\n key[k] = Math.floor(Math.random() * N);\n }\n } else if (typeof key === \"string\") {\n // to string\n key = \"\" + key;\n key = key.split(\"\").map(function (c) { return c.charCodeAt(0) % N; });\n } else if (Array.isArray(key)) {\n if (!key.every(function (v) {\n return typeof v === \"number\" && v === (v | 0);\n })) {\n throw new TypeError(\"invalid seed key specified: not array of integers\");\n }\n } else {\n throw new TypeError(\"invalid seed key specified\");\n }\n\n var keylen = key.length;\n\n // resed state\n var s = identityPermutation();\n\n var j = 0;\n for (var i = 0; i < N; i++) {\n j = (j + s[i] + key[i % keylen]) % N;\n var tmp = s[i];\n s[i] = s[j];\n s[j] = tmp;\n }\n\n return s;\n }\n\n /* eslint-disable no-shadow */\n function RC4(key) {\n this.s = seed(key);\n this.i = 0;\n this.j = 0;\n }\n /* eslint-enable no-shadow */\n\n RC4.prototype.randomNative = function () {\n this.i = (this.i + 1) % N;\n this.j = (this.j + this.s[this.i]) % N;\n\n var tmp = this.s[this.i];\n this.s[this.i] = this.s[this.j];\n this.s[this.j] = tmp;\n\n var k = this.s[(this.s[this.i] + this.s[this.j]) % N];\n\n return k;\n };\n\n RC4.prototype.randomUInt32 = function () {\n var a = this.randomByte();\n var b = this.randomByte();\n var c = this.randomByte();\n var d = this.randomByte();\n\n return ((a * 256 + b) * 256 + c) * 256 + d;\n };\n\n RC4.prototype.randomFloat = function () {\n return this.randomUInt32() / 0x100000000;\n };\n\n RC4.prototype.random = function () {\n var a;\n var b;\n\n if (arguments.length === 1) {\n a = 0;\n b = arguments[0];\n } else if (arguments.length === 2) {\n a = arguments[0];\n b = arguments[1];\n } else {\n throw new TypeError(\"random takes one or two integer arguments\");\n }\n\n if (!isInteger(a) || !isInteger(b)) {\n throw new TypeError(\"random takes one or two integer arguments\");\n }\n\n return a + this.randomUInt32() % (b - a + 1);\n };\n\n RC4.prototype.currentState = function () {\n return {\n i: this.i,\n j: this.j,\n s: this.s.slice(), // copy\n };\n };\n\n RC4.prototype.setState = function (state) {\n var s = state.s;\n var i = state.i;\n var j = state.j;\n\n /* eslint-disable yoda */\n if (!(i === (i | 0) && 0 <= i && i < N)) {\n throw new Error(\"state.i should be integer [0, \" + (N - 1) + \"]\");\n }\n\n if (!(j === (j | 0) && 0 <= j && j < N)) {\n throw new Error(\"state.j should be integer [0, \" + (N - 1) + \"]\");\n }\n /* eslint-enable yoda */\n\n // check length\n if (!Array.isArray(s) || s.length !== N) {\n throw new Error(\"state should be array of length \" + N);\n }\n\n // check that all params are there\n for (var k = 0; k < N; k++) {\n if (s.indexOf(k) === -1) {\n throw new Error(\"state should be permutation of 0..\" + (N - 1) + \": \" + k + \" is missing\");\n }\n }\n\n this.i = i;\n this.j = j;\n this.s = s.slice(); // assign copy\n };\n\n return RC4;\n}\n\nvar RC4 = createRC4(256);\nRC4.prototype.randomByte = RC4.prototype.randomNative;\n\nvar RC4small = createRC4(16);\nRC4small.prototype.randomByte = function () {\n var a = this.randomNative();\n var b = this.randomNative();\n\n return a * 16 + b;\n};\n\nvar ordA = \"a\".charCodeAt(0);\nvar ord0 = \"0\".charCodeAt(0);\n\nfunction toHex(n) {\n return n < 10 ? String.fromCharCode(ord0 + n) : String.fromCharCode(ordA + n - 10);\n}\n\nfunction fromHex(c) {\n return parseInt(c, 16);\n}\n\nRC4small.prototype.currentStateString = function () {\n var state = this.currentState();\n\n var i = toHex(state.i);\n var j = toHex(state.j);\n\n var res = i + j + state.s.map(toHex).join(\"\");\n return res;\n};\n\nRC4small.prototype.setStateString = function (stateString) {\n if (!stateString.match(/^[0-9a-f]{18}$/)) {\n throw new TypeError(\"RC4small stateString should be 18 hex character string\");\n }\n\n var i = fromHex(stateString[0]);\n var j = fromHex(stateString[1]);\n var s = stateString.split(\"\").slice(2).map(fromHex);\n\n this.setState({\n i: i,\n j: j,\n s: s,\n });\n};\n\nRC4.RC4small = RC4small;\n\nmodule.exports = RC4;\n","'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n\n function getMessage (arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message\n } else {\n return message(arg1, arg2, arg3)\n }\n }\n\n class NodeError extends Base {\n constructor (arg1, arg2, arg3) {\n super(getMessage(arg1, arg2, arg3));\n }\n }\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n const len = expected.length;\n expected = expected.map((i) => String(i));\n if (len > 2) {\n return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n expected[len - 1];\n } else if (len === 2) {\n return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n } else {\n return `of ${thing} ${expected[0]}`;\n }\n } else {\n return `of ${thing} ${String(expected)}`;\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n let determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n let msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n } else {\n const type = includes(name, '.') ? 'property' : 'argument';\n msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n }\n\n msg += `. Received type ${typeof actual}`;\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\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 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/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (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 Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(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});","// 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;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\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'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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') return emitter.prependListener(event, fn);\n\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 (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\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 if (isDuplex) 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 this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\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 this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\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 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}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(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});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\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 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 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};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\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 errorOrDestroy(stream, 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 if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\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 maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\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 if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\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 var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\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 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.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || 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 = 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 var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\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 if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\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 if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\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 debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\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 process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\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 errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\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 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\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 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 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 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 src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\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', state.awaitDrain);\n state.awaitDrain++;\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) errorOrDestroy(dest, 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 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 return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\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}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\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 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 for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\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 state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\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 var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\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 // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\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 _this = this;\n var state = this._readableState;\n var paused = false;\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) _this.push(chunk);\n }\n _this.push(null);\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 var ret = _this.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 methodWrap(method) {\n return function methodWrapReturnFunction() {\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], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\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 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.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\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 if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\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}","// 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;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\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 if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\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.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\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 cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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 if (ts.writechunk !== null && !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};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\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\nmodule.exports = Writable;\n\n/* */\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 this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) 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 this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\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 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 // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\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}\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(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\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 value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\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\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(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 er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) 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 return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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 ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\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}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\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 state.length += len;\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 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 return ret;\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 (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, 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 errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\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) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\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 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 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 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 state.bufferedRequestCount = 0;\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 doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\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 if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\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 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) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\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 errorOrDestroy(stream, 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' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\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 if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\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\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(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});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: 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 key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\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 // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.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) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.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) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\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 this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\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 if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;\nfunction from(Readable, iterable, opts) {\n var iterator;\n if (iterable && typeof iterable.next === 'function') {\n iterator = iterable;\n } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);\n var readable = new Readable(_objectSpread({\n objectMode: true\n }, opts));\n // Reading boolean to protect against _read\n // being called before last iteration completion.\n var reading = false;\n readable._read = function () {\n if (!reading) {\n reading = true;\n next();\n }\n };\n function next() {\n return _next2.apply(this, arguments);\n }\n function _next2() {\n _next2 = _asyncToGenerator(function* () {\n try {\n var _yield$iterator$next = yield iterator.next(),\n value = _yield$iterator$next.value,\n done = _yield$iterator$next.done;\n if (done) {\n readable.push(null);\n } else if (readable.push(yield value)) {\n next();\n } else {\n reading = false;\n }\n } catch (err) {\n readable.destroy(err);\n }\n });\n return _next2.apply(this, arguments);\n }\n return readable;\n}\nmodule.exports = from;\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\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 return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('stream');\n","var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream.Readable;\n Object.assign(module.exports, Stream);\n module.exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n exports.finished = require('./lib/internal/streams/end-of-stream.js');\n exports.pipeline = require('./lib/internal/streams/pipeline.js');\n}\n","const b4a = require('b4a')\n\nvar EMPTY = []\n\nmodule.exports = RecordCache\n\nfunction RecordSet () {\n this.list = []\n this.map = new Map()\n}\n\nRecordSet.prototype.add = function (record, value) {\n var k = toString(record)\n var r = this.map.get(k)\n if (r) return false\n\n r = {index: this.list.length, record: value || record}\n this.list.push(r)\n this.map.set(k, r)\n return true\n}\n\nRecordSet.prototype.remove = function (record) {\n var k = toString(record)\n var r = this.map.get(k)\n if (!r) return false\n\n swap(this.list, r.index, this.list.length - 1)\n this.list.pop()\n this.map.delete(k)\n return true\n}\n\nfunction RecordStore () {\n this.records = new Map()\n this.size = 0\n}\n\nRecordStore.prototype.add = function (name, record, value) {\n var r = this.records.get(name)\n\n if (!r) {\n r = new RecordSet()\n this.records.set(name, r)\n }\n\n if (r.add(record, value)) {\n this.size++\n return true\n }\n\n return false\n}\n\nRecordStore.prototype.remove = function (name, record, value) {\n var r = this.records.get(name)\n if (!r) return false\n\n if (r.remove(record, value)) {\n this.size--\n if (!r.map.size) this.records.delete(name)\n return true\n }\n\n return false\n}\n\nRecordStore.prototype.get = function (name) {\n var r = this.records.get(name)\n return r ? r.list : EMPTY\n}\n\nfunction RecordCache (opts) {\n if (!(this instanceof RecordCache)) return new RecordCache(opts)\n if (!opts) opts = {}\n\n this.maxSize = opts.maxSize || Infinity\n this.maxAge = opts.maxAge || 0\n\n this._onstale = opts.onStale || opts.onstale || null\n this._fresh = new RecordStore()\n this._stale = new RecordStore()\n this._interval = null\n this._gced = false\n\n if (this.maxAge && this.maxAge < Infinity) {\n // 2/3 gives us a span of 0.66-1.33 maxAge or avg maxAge\n var tick = Math.ceil(2 / 3 * this.maxAge)\n this._interval = setInterval(this._gcAuto.bind(this), tick)\n if (this._interval.unref) this._interval.unref()\n }\n}\n\nObject.defineProperty(RecordCache.prototype, 'size', {\n get: function () {\n return this._fresh.size + this._stale.size\n }\n})\n\nRecordCache.prototype.add = function (name, record, value) {\n this._stale.remove(name, record, value)\n if (this._fresh.add(name, record, value) && this._fresh.size > this.maxSize) {\n this._gc()\n }\n}\n\nRecordCache.prototype.remove = function (name, record, value) {\n this._fresh.remove(name, record, value)\n this._stale.remove(name, record, value)\n}\n\nRecordCache.prototype.get = function (name, n) {\n var a = this._fresh.get(name)\n var b = this._stale.get(name)\n var aLen = a.length\n var bLen = b.length\n var len = aLen + bLen\n\n if (n > len || !n) n = len\n var result = new Array(n)\n\n for (var i = 0; i < n; i++) {\n var j = Math.floor(Math.random() * (aLen + bLen))\n if (j < aLen) {\n result[i] = a[j].record\n swap(a, j, --aLen)\n } else {\n j -= aLen\n result[i] = b[j].record\n swap(b, j, --bLen)\n }\n }\n\n return result\n}\n\nRecordCache.prototype._gcAuto = function () {\n if (!this._gced) this._gc()\n this._gced = false\n}\n\nRecordCache.prototype._gc = function () {\n if (this._onstale && this._stale.size > 0) this._onstale(this._stale)\n this._stale = this._fresh\n this._fresh = new RecordStore()\n this._gced = true\n}\n\nRecordCache.prototype.clear = function () {\n this._gc()\n this._gc()\n}\n\nRecordCache.prototype.destroy = function () {\n this.clear()\n clearInterval(this._interval)\n this._interval = null\n}\n\nfunction toString (record) {\n return b4a.isBuffer(record) ? b4a.toString(record, 'hex') : record\n}\n\nfunction swap (list, a, b) {\n var tmp = list[a]\n tmp.index = b\n list[b].index = a\n list[a] = list[b]\n list[b] = tmp\n}\n","/*! run-parallel-limit. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallelLimit\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallelLimit (tasks, limit, cb) {\n if (typeof limit !== 'number') throw new Error('second argument must be a Number')\n let results, len, pending, keys, isErrored\n let isSync = true\n let next\n\n if (Array.isArray(tasks)) {\n results = []\n pending = len = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = len = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (err) isErrored = true\n if (--pending === 0 || err) {\n done(err)\n } else if (!isErrored && next < len) {\n let key\n if (keys) {\n key = keys[next]\n next += 1\n tasks[key](function (err, result) { each(key, err, result) })\n } else {\n key = next\n next += 1\n tasks[key](function (err, result) { each(key, err, result) })\n }\n }\n }\n\n next = limit\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.some(function (key, i) {\n tasks[key](function (err, result) { each(key, err, result) })\n if (i === limit - 1) return true // early return\n return false\n })\n } else {\n // array\n tasks.some(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n if (i === limit - 1) return true // early return\n return false\n })\n }\n\n isSync = false\n}\n","/*! run-parallel. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n","/*! run-series. MIT License. Feross Aboukhadijeh */\nmodule.exports = runSeries\n\nfunction runSeries (tasks, cb) {\n var current = 0\n var results = []\n var isSync = true\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n }\n if (isSync) process.nextTick(end)\n else end()\n }\n\n function each (err, result) {\n results.push(result)\n if (++current >= tasks.length || err) done(err)\n else tasks[current](each)\n }\n\n if (tasks.length > 0) tasks[0](each)\n else done(null)\n\n isSync = false\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* 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\nSafeBuffer.prototype = Object.create(Buffer.prototype)\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","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a