UNPKG

cdnbye

Version:

Let your viewers become your unlimitedly scalable CDN.

1 lines 187 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.P2PEngine=t():e.P2PEngine=t()}(this,(()=>(()=>{"use strict";var e={648:e=>{var t,n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r="object"===("undefined"==typeof Reflect?"undefined":n(Reflect))?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(n,r){function i(n){e.removeListener(t,o),r(n)}function o(){"function"==typeof e.removeListener&&e.removeListener("error",i),n([].slice.call(arguments))}v(e,t,o,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&v(e,"error",t,n)}(e,i,{once:!0})}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var a=10;function u(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+(void 0===e?"undefined":n(e)))}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function c(e,t,n,r){var i,o,s,a;if(u(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),s=o[t]),void 0===s)s=o[t]=n,++e._eventsCount;else if("function"==typeof s?s=o[t]=r?[n,s]:[s,n]:r?s.unshift(n):s.push(n),(i=l(e))>0&&s.length>i&&!s.warned){s.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=s.length,a=c,console&&console.warn&&console.warn(a)}return e}function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=f.bind(r);return i.listener=n,r.wrapFn=i,i}function h(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):p(i,i.length)}function g(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function p(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}function v(e,t,r,i){if("function"==typeof e.on)i.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+(void 0===e?"undefined":n(e)));e.addEventListener(t,(function n(o){i.once&&e.removeEventListener(t,n),r(o)}))}}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");a=e}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return l(this)},s.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r="error"===e,o=this._events;if(void 0!==o)r=r&&void 0===o.error;else if(!r)return!1;if(r){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var u=o[e];if(void 0===u)return!1;if("function"==typeof u)i(u,this,t);else{var l=u.length,c=p(u,l);for(n=0;n<l;++n)i(c[n],this,t)}return!0},s.prototype.addListener=function(e,t){return c(this,e,t,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,t){return c(this,e,t,!0)},s.prototype.once=function(e,t){return u(t),this.on(e,d(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){return u(t),this.prependListener(e,d(this,e,t)),this},s.prototype.removeListener=function(e,t){var n,r,i,o,s;if(u(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,o=n.length-1;o>=0;o--)if(n[o]===t||n[o].listener===t){s=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",e,s||t)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var i,o=Object.keys(n);for(r=0;r<o.length;++r)"removeListener"!==(i=o[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},s.prototype.listeners=function(e){return h(this,e,!0)},s.prototype.rawListeners=function(e){return h(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):g.call(e,t)},s.prototype.listenerCount=g,s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},696:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},n(e,t)};function r(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function i(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}var o=function(e,t){this.target=t,this.type=e},s=function(e){function t(t,n){var r=e.call(this,"error",n)||this;return r.message=t.message,r.error=t,r}return r(t,e),t}(o),a=function(e){function t(t,n,r){void 0===t&&(t=1e3),void 0===n&&(n="");var i=e.call(this,"close",r)||this;return i.wasClean=!0,i.code=t,i.reason=n,i}return r(t,e),t}(o),u=function(){if("undefined"!=typeof WebSocket)return WebSocket},l={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+4e3*Math.random(),minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},c=function(){function e(e,t,n){var r=this;void 0===n&&(n={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(e){r._debug("open event");var t=r._options.minUptime,n=void 0===t?l.minUptime:t;clearTimeout(r._connectTimeout),r._uptimeTimeout=setTimeout((function(){return r._acceptOpen()}),n),r._ws.binaryType=r._binaryType,r._messageQueue.forEach((function(e){return r._ws.send(e)})),r._messageQueue=[],r.onopen&&r.onopen(e),r._listeners.open.forEach((function(t){return r._callEventListener(e,t)}))},this._handleMessage=function(e){r._debug("message event"),r.onmessage&&r.onmessage(e),r._listeners.message.forEach((function(t){return r._callEventListener(e,t)}))},this._handleError=function(e){r._debug("error event",e.message),r._disconnect(void 0,"TIMEOUT"===e.message?"timeout":void 0),r.onerror&&r.onerror(e),r._debug("exec error listeners"),r._listeners.error.forEach((function(t){return r._callEventListener(e,t)})),r._connect()},this._handleClose=function(e){r._debug("close event"),r._clearTimeouts(),r._shouldReconnect&&r._connect(),r.onclose&&r.onclose(e),r._listeners.close.forEach((function(t){return r._callEventListener(e,t)}))},this._url=e,this._protocols=t,this._options=n,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(e,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(e,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CONNECTING",{get:function(){return e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"OPEN",{get:function(){return e.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSING",{get:function(){return e.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSED",{get:function(){return e.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(e){this._binaryType=e,this._ws&&(this._ws.binaryType=e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bufferedAmount",{get:function(){return this._messageQueue.reduce((function(e,t){return"string"==typeof t?e+=t.length:t instanceof Blob?e+=t.size:e+=t.byteLength,e}),0)+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?e.CLOSED:e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),e.prototype.close=function(e,t){void 0===e&&(e=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),this._ws?this._ws.readyState!==this.CLOSED?this._ws.close(e,t):this._debug("close: already closed"):this._debug("close enqueued: no ws instance")},e.prototype.reconnect=function(e,t){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,this._ws&&this._ws.readyState!==this.CLOSED?(this._disconnect(e,t),this._connect()):this._connect()},e.prototype.send=function(e){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",e),this._ws.send(e);else{var t=this._options.maxEnqueuedMessages,n=void 0===t?l.maxEnqueuedMessages:t;this._messageQueue.length<n&&(this._debug("enqueue",e),this._messageQueue.push(e))}},e.prototype.addEventListener=function(e,t){this._listeners[e]&&this._listeners[e].push(t)},e.prototype.dispatchEvent=function(e){var t,n,r=this._listeners[e.type];if(r)try{for(var i=function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}(r),o=i.next();!o.done;o=i.next()){var s=o.value;this._callEventListener(e,s)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return!0},e.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter((function(e){return e!==t})))},e.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._options.debug&&console.log.apply(console,function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(i(arguments[t]));return e}(["RWS>"],e))},e.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,n=void 0===t?l.reconnectionDelayGrowFactor:t,r=e.minReconnectionDelay,i=void 0===r?l.minReconnectionDelay:r,o=e.maxReconnectionDelay,s=void 0===o?l.maxReconnectionDelay:o,a=0;return this._retryCount>0&&(a=i*Math.pow(n,this._retryCount-1))>s&&(a=s),this._debug("next delay",a),a},e.prototype._wait=function(){var e=this;return new Promise((function(t){setTimeout(t,e._getNextDelay())}))},e.prototype._getNextUrl=function(e){if("string"==typeof e)return Promise.resolve(e);if("function"==typeof e){var t=e();if("string"==typeof t)return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},e.prototype._connect=function(){var e=this;if(!this._connectLock&&this._shouldReconnect){this._connectLock=!0;var t=this._options,n=t.maxRetries,r=void 0===n?l.maxRetries:n,i=t.connectionTimeout,o=void 0===i?l.connectionTimeout:i,s=t.WebSocket,a=void 0===s?u():s;if(this._retryCount>=r)this._debug("max retries reached",this._retryCount,">=",r);else{if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),void 0===(c=a)||!c||2!==c.CLOSING)throw Error("No valid WebSocket class provided");var c;this._wait().then((function(){return e._getNextUrl(e._url)})).then((function(t){e._closeCalled||(e._debug("connect",{url:t,protocols:e._protocols}),e._ws=e._protocols?new a(t,e._protocols):new a(t),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout((function(){return e._handleTimeout()}),o))}))}}},e.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new s(Error("TIMEOUT"),this))},e.prototype._disconnect=function(e,t){if(void 0===e&&(e=1e3),this._clearTimeouts(),this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new a(e,t,this))}catch(e){}}},e.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},e.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},e.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},e.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},e.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},e}();t.default=c,e.exports=t.default},299:(e,t,n)=>{var r;e=n.nmd(e);var i,o,s,a,u,l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,o=/^(?=([^\/?#]*))\1([^]*)$/,s=/(?:\/|^)\.(?=\/)/g,a=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,u={buildAbsoluteURL:function(e,t,n){if(n=n||{},e=e.trim(),!(t=t.trim())){if(!n.alwaysNormalize)return e;var r=u.parseURL(e);if(!r)throw new Error("Error trying to parse base URL.");return r.path=u.normalizePath(r.path),u.buildURLFromParts(r)}var i=u.parseURL(t);if(!i)throw new Error("Error trying to parse relative URL.");if(i.scheme)return n.alwaysNormalize?(i.path=u.normalizePath(i.path),u.buildURLFromParts(i)):t;var s=u.parseURL(e);if(!s)throw new Error("Error trying to parse base URL.");if(!s.netLoc&&s.path&&"/"!==s.path[0]){var a=o.exec(s.path);s.netLoc=a[1],s.path=a[2]}s.netLoc&&!s.path&&(s.path="/");var l={scheme:s.scheme,netLoc:i.netLoc,path:null,params:i.params,query:i.query,fragment:i.fragment};if(!i.netLoc&&(l.netLoc=s.netLoc,"/"!==i.path[0]))if(i.path){var c=s.path,f=c.substring(0,c.lastIndexOf("/")+1)+i.path;l.path=u.normalizePath(f)}else l.path=s.path,i.params||(l.params=s.params,i.query||(l.query=s.query));return null===l.path&&(l.path=n.alwaysNormalize?u.normalizePath(i.path):i.path),u.buildURLFromParts(l)},parseURL:function(e){var t=i.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(s,"");e.length!==(e=e.replace(a,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},"object"===l(t)&&"object"===l(e)?e.exports=u:void 0===(r=function(){return u}.apply(t,[]))||(e.exports=r)},117:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.proxyIdentifier=void 0,t.parseRangeHeader=function(e){if(!e)return{};var t=e.trim().toLowerCase();if(!t.startsWith("bytes="))throw new Error("unit-must-be-bytes",{normalizedRangeHeader:t});if(t.includes(","))throw new Error("single-range-only",{normalizedRangeHeader:t});var n=/(\d*)-(\d*)/.exec(t);if(!n||!n[1]&&!n[2])throw new Error("invalid-range-values",{normalizedRangeHeader:t});return{start:""===n[1]?0:Number(n[1]),end:""===n[2]?void 0:Number(n[2])}},t.getUrlSuffix=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:".",n=r.parseURL(e);return n.path.substring(n.path.lastIndexOf(t)+1)},t.copyHeaders=i,t.makeHeadersWithRange=function(e,t){var n=i(e);t&&n.set("Range",t);return n},t.makeHeadersWithRangeOnly=function(e){var t=new Headers;e&&t.set("range",e);return t};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(299));t.proxyIdentifier="__PROXY_IDENTIFIER__";function i(e){return new Headers(e)}},99:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=a(n(540)),s=a(n(9));function a(e){return e&&e.__esModule?e:{default:e}}var u=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return r.requestingMap=new s.default,r.bitset=new Set,r.bitCounts=new Map,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"handshakePeer",value:function(e){this._setupDC(e);var t=this.engine.fetcher.announceInfo,n=t.asn,r=t.country;e.sendMetaData(Array.from(this.bitset),this.sequential,this.peersNum,{asn:n,country:r},this.isMobileNet)}},{key:"handleMetaData",value:function(e,t){var n=this;t.field&&(e.bitset=new Set(t.field),t.field.forEach((function(e){n.bitset.has(e)||n._increBitCounts(e)})),this.addPeer(e),this.downloadOnly&&this.chokePeerRequest(e))}},{key:"peersHas",value:function(e){return this.bitCounts.has(e)}},{key:"_decreBitCounts",value:function(e){if(this.bitCounts.has(e)){var t=this.bitCounts.get(e);1===t?this.bitCounts.delete(e):this.bitCounts.set(e,t-1)}}},{key:"_increBitCounts",value:function(e){if(this.bitCounts.has(e)){var t=this.bitCounts.get(e);this.bitCounts.set(e,t+1)}else this.bitCounts.set(e,1)}},{key:"reportDCTraffic",value:function(e,t,n){if(this.engine.fetcher){var r=this.engine.fetcher,i=t;this.bitset.has(e)||r.reportDCTraffic(i,n)}}},{key:"cleanRequestingMap",value:function(e){var t=this.peerManager.getPeer(e),n=!0,i=!1,o=void 0;try{for(var s,a=this.requestingMap.internalMap[Symbol.iterator]();!(n=(s=a.next()).done);n=!0){var u=r(s.value,2),l=u[0],c=u[1];c&&c.includes(e)&&(this.logger.info("delete "+l+" in requestingMap"),this.requestingMap.delete(l),this._decreBitCounts(l),t&&t.bitset.delete(l))}}catch(e){i=!0,o=e}finally{try{!n&&a.return&&a.return()}finally{if(i)throw o}}}},{key:"getPeerLoadedMore",value:function(e){if(!this.requestingMap.has(e))return null;var t=this.requestingMap.getAllPeerIds(e);if(0===t.length)return null;var n=this.peerManager.getPeer(t[0]);if(!n)return null;if(t.length>1)for(var r=1;r<t.length;r++){var i=this.peerManager.getPeer(t[r]);i&&i.bufArr.length>n.bufArr.length&&(n=i)}return n}}]),t}(o.default);t.default=u,e.exports=t.default},183:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n={wsMaxRetries:10,p2pEnabled:!0,wifiOnly:!1,memoryCacheLimit:{pc:419430400,mobile:104857600},dcDownloadTimeout:25,logLevel:"error",tag:"",webRTCConfig:{},token:void 0,appName:void 0,appId:void 0,prefetchNum:4,showSlogan:!0,trickleICE:!0,announceLocation:"eu",trackerZone:void 0,geoIpPreflight:!0,ICEPreflight:!0,useDiskCache:!0,startFromSegmentOffset:0,getStats:function(e,t,n){},getPeerId:function(e){},getPeersInfo:function(e){}};t.default=n,e.exports=t.default},745:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=g(n(648)),a=g(n(708)),u=g(n(299)),l=n(408),c=g(n(89)),f=g(n(524)),d=g(n(429)),h=g(n(816));function g(e){return e&&e.__esModule?e:{default:e}}function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v="nllL",y="d3NzJ",m="==",_="TNBLy9z",b="aWduY",P="mNvbQ",S="WwuY2RuY",w=(p(r={},h.default.EXCEPTION,"onException"),p(r,"serverConnected","onServerConnected"),p(r,"peerId","getPeerId"),p(r,"p2pDownloaded","onP2pDownloaded"),p(r,"p2pUploaded","onP2pUploaded"),p(r,"httpDownloaded","onHttpDownloaded"),p(r,"peers","getPeersInfo"),r),C=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));if(n.p2pEnabled=!(!1===e.p2pEnabled||"0"===(0,l.getQueryParam)("_p2p")),e.tag&&e.tag.length>20)throw new Error("Tag is too long");if(e.appName&&e.appName.length>30)throw new Error("appName is too long");if(e.appId&&e.appId.length>30)throw new Error("appId is too long");if(e.token&&e.token.length>20)throw new Error("Token is too long");return n.segmentLoadCount=0,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:"initLogger",value:function(){var e=this.config;e.showSlogan&&"en"===(0,l.navLang)()&&console.log("%cLet the browsers become your unlimitedly scalable CDN!\n%c"+(0,l.getHomeUrl)(),"color: dodgerblue; padding:20px 0; font-size: x-large","font-size: medium; padding-bottom:15px");var t=new a.default(e.logLevel);return e.logger=this.logger=t,t}},{key:"getExtraForStats",value:function(){return{}}},{key:"getExtraForPeersRequest",value:function(){var e={};return e.num_want=this._getNumWant(),e}},{key:"_getNumWant",value:function(){var e=this.tracker;if(e.scheduler){var t=e.scheduler.peersNum;return t>0&&e.maxConnsActive-t>0?e.maxConnsActive-t:void 0}}},{key:"makeChannelId",value:function(e,t){if(!e||"string"!=typeof e){var n="token is required while using customized channelId!";throw console.error(n),new Error(n)}return(0,l.isFunction)(t)?function(n,r){return e+"-"+t(n,r)}:function(){return e+"-"+t}}},{key:"makeSignalId",value:function(){var e="",t=this.config,n=decodeURIComponent(self.atob(y+_+b+S+v+P+m));t.signalConfig&&(t.wsSignalerAddr=t.signalConfig);var r=t.wsSignalerAddr;if(r){var o=void 0;"object"===(void 0===r?"undefined":i(r))?(r.main||(r.main=n),o=r.main):"string"==typeof r&&(o=r,t.wsSignalerAddr={main:o}),o===n&&(o=void 0),o&&!t.wsSignalerAddr.backup&&(e=u.default.parseURL(o).netLoc.substr(2))}else t.wsSignalerAddr={main:n,byDefault:!0};return e}},{key:"setupWindowListeners",value:function(e){var t=this,n=["iPad","iPhone"].indexOf(navigator.platform)>=0?"pagehide":"beforeunload",r=function e(){t.fetcher&&t.fetcher.postStatsWithBeacon(),t.p2pEnabled&&t.disableP2P(),self.removeEventListener(n,e)};e?self.removeEventListener(n,r):self.addEventListener(n,r)}},{key:"destroy",value:function(){this.disableP2P(!0),this.removeAllListeners(),this.setupWindowListeners(!0)}},{key:"enableP2P",value:function(){return this.p2pEnabled?null:(this.logger&&this.logger.info("enable P2P"),this.config.p2pEnabled=this.p2pEnabled=!0,this.browserInfo?(this._init(this.channel,this.browserInfo),this):null)}},{key:"determineHttpLoadTime",value:function(e,t){var n=3.5;return t<=2?n=1:t<=3?n=1.5:t<=4?n=2:t<=6?n=2.5:t<=8&&(n=3),n}},{key:"emitEvent",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];this.emit.apply(this,[e].concat(n));var i,o=w[e];o&&(0,l.isFunction)(this.config[o])&&(i=this.config)[o].apply(i,n)}},{key:"commonBrowserInfo",get:function(){var e=f.default.getPlatform(),t=f.default.getNetType()||"wifi";this.netType=t;var n=this.config.wsSignalerAddr||{},r=n.main,i=n.backup;return{signal:n.byDefault?void 0:r,signal2:i,device:e,netType:t,player:(0,d.default)()||void 0}}},{key:"isMobileNet",get:function(){return"wifi"!==this.netType&&"ethernet"!==this.netType}},{key:"version",get:function(){return t.version}}],[{key:"isSupported",value:function(){var e=(0,l.getBrowserRTC)();return!(!e||void 0===e.RTCPeerConnection.prototype.createDataChannel)}},{key:"TrackerZone",get:function(){return{EU:"eu",HK:"hk",USA:"us"}}}]),t}(s.default);C.version="1.22.1",C.protocolVersion=c.default.VERSION,t.default=C,e.exports=t.default},816:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default={DC_SIGNAL:"SIGNAL",DC_SIGNAL_BATCH:"SIGNAL_BATCH",DC_OPEN:"OPEN",DC_REQUEST:"REQUEST",DC_PIECE_NOT_FOUND:"PIECE_NOT_FOUND",DC_PIECE_ABORT:"PIECE_ABORT",DC_PIECE_CANCEL:"PIECE_CANCEL",DC_CLOSE:"CLOSE",DC_DISCONNECT:"DISCONNECT",DC_RESPONSE:"RESPONSE",DC_ERROR:"ERROR",DC_PIECE:"PIECE",DC_PIECE_DATA:"PIECE_DATA",DC_TIMEOUT:"TIMEOUT",DC_PIECE_ACK:"PIECE_ACK",DC_METADATA:"METADATA",DC_PLAT_ANDROID:"ANDROID",DC_PLAT_IOS:"IOS",DC_PLAT_WEB:"WEB",DC_CHOKE:"CHOKE",DC_UNCHOKE:"UNCHOKE",DC_HAVE:"HAVE",DC_HAVE_REVERSE:"HAVE_REVERSE",DC_LOST:"LOST",DC_GET_PEERS:"GET_PEERS",DC_PEERS:"PEERS",DC_STATS:"STATS",DC_PEER_SIGNAL:"PEER_SIGNAL",DC_PLAYLIST:"PLAYLIST",BM_LOST:"lost",BM_ADDED_SEG_:"BM_ADDED_SEG_",BM_ADDED_SN_:"BM_ADDED_SN_",BM_SEG_ADDED:"BM_SEG_ADDED",BM_FATAL_ERROR:"BM_FATAL_ERROR",FRAG_CHANGED:"FRAG_CHANGED",FRAG_LOADED:"FRAG_LOADED",FRAG_LOADING:"FRAG_LOADING",RESTART_P2P:"RESTART_P2P",EXCEPTION:"exception",SYN_OUTPUT:"SYN_OUTPUT",SYN_ERROR:"SYN_ERROR",SYN_PROGRESS:"SYN_PROGRESS",MEDIA_REBUFFER:"MEDIA_REBUFFER"},e.exports=t.default},911:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(408),s=l(n(648)),a=l(n(824)),u=n(921);function l(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var f=65536;function d(e){return e.replace(/a=ice-options:trickle\s\n/g,"")}var h=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=c(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));n.channelName=e.initiator?e.channelName:null,n.initiator=e.initiator||!1,n.channelConfig=e.channelConfig||t.channelConfig,n.channelNegotiated=n.channelConfig.negotiated,n.config=Object.assign({},t.config,e.config),n.offerOptions=e.offerOptions||{},n.answerOptions=e.answerOptions||{},n.sdpTransform=e.sdpTransform||function(e){return e},n.trickle=void 0===e.trickle||e.trickle,n.allowHalfTrickle=void 0!==e.allowHalfTrickle&&e.allowHalfTrickle,n.iceCompleteTimeout=e.iceCompleteTimeout||5e3,n.destroyed=!1,n.destroying=!1,n._connected=!1,n.remoteAddress=void 0,n.remoteFamily=void 0,n.remotePort=void 0,n.localAddress=void 0,n.localFamily=void 0,n.localPort=void 0,n._wrtc=e.wrtc&&"object"===r(e.wrtc)?e.wrtc:(0,o.getBrowserRTC)(),n._pcReady=!1,n._channelReady=!1,n._iceComplete=!1,n._iceCompleteTimer=null,n._channel=null,n._pendingCandidates=[],n._pendingData=[],n._isNegotiating=!1,n._firstNegotiation=!0,n._batchedNegotiation=!1,n._queuedNegotiation=!1,n._senderMap=new Map,n._closingInterval=null,n._chunk=null,n._cb=null,n._interval=null;try{n._pc=new n._wrtc.RTCPeerConnection(n.config)}catch(e){return(0,a.default)((function(){return n.destroy(e)})),c(n)}return n._pc.oniceconnectionstatechange=function(){n._onIceStateChange()},n._pc.onicegatheringstatechange=function(){n._onIceStateChange()},n._pc.onconnectionstatechange=function(){n._onConnectionStateChange()},n._pc.onsignalingstatechange=function(){n._onSignalingStateChange()},n._pc.onicecandidate=function(e){n._onIceCandidate(e)},n.initiator||n.channelNegotiated?n._setupData({channel:n._pc.createDataChannel(n.channelName,n.channelConfig)}):n._pc.ondatachannel=function(e){n._setupData(e)},n._needsNegotiation(),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"signal",value:function(e){var t=this;if(!this.destroyed&&this._pc){if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e={}}if(e.renegotiate&&this.initiator&&this._needsNegotiation(),e.candidate)if(this._pc.remoteDescription&&this._pc.remoteDescription.type)try{this._addIceCandidate(e.candidate)}catch(e){}else this._pendingCandidates.push(e.candidate);e.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(e)).then((function(){t.destroyed||(t._pendingCandidates.forEach((function(e){try{t._addIceCandidate(e)}catch(e){}})),t._pendingCandidates=[],"offer"===t._pc.remoteDescription.type&&t._createAnswer())})).catch((function(e){t.destroy(e)})),e.sdp||e.candidate||e.renegotiate||e.transceiverRequest||this.destroy(new Error("signal() called with invalid signal data"))}}},{key:"_addIceCandidate",value:function(e){var t=this,n=new this._wrtc.RTCIceCandidate(e);this._pc.addIceCandidate(n).catch((function(e){var r;!n.address||n.address.endsWith(".local")?(r="Ignoring unsupported ICE candidate.",console.warn(r)):t.destroy(e)}))}},{key:"send",value:function(e){"string"==typeof e?RTCDataChannel.prototype.send.toString().includes("[native code]")&&this._channel.send(e):this._channel.send(e)}},{key:"_needsNegotiation",value:function(){var e=this;this._batchedNegotiation||(this._batchedNegotiation=!0,(0,a.default)((function(){e._batchedNegotiation=!1,!e.initiator&&e._firstNegotiation||e.negotiate(),e._firstNegotiation=!1})))}},{key:"negotiate",value:function(){var e=this;this.initiator?this._isNegotiating?this._queuedNegotiation=!0:setTimeout((function(){e._createOffer()}),0):this._isNegotiating?this._queuedNegotiation=!0:this.emit("signal",{type:"renegotiate",renegotiate:!0}),this._isNegotiating=!0}},{key:"destroy",value:function(e){this._destroy(e)}},{key:"_destroy",value:function(e){var t=this;this.destroyed||this.destroying||(this.destroying=!0,(0,a.default)((function(){if(t.destroyed=!0,t.destroying=!1,t._connected=!1,t._pcReady=!1,t._channelReady=!1,t._senderMap=null,clearInterval(t._closingInterval),t._closingInterval=null,clearInterval(t._interval),t._interval=null,t._chunk=null,t._cb=null,t._channel){try{t._channel.close()}catch(e){}t._channel.onmessage=null,t._channel.onopen=null,t._channel.onclose=null,t._channel.onerror=null}if(t._pc){try{t._pc.close()}catch(e){}t._pc.oniceconnectionstatechange=null,t._pc.onicegatheringstatechange=null,t._pc.onsignalingstatechange=null,t._pc.onicecandidate=null,t._pc.ondatachannel=null}t._pc=null,t._channel=null,e&&t.emit("error",e),t.emit("close")})))}},{key:"_setupData",value:function(e){var t=this;if(!e.channel)return this.destroy(new Error("Data channel event is missing `channel` property"));this._channel=e.channel,this._channel.binaryType="arraybuffer","number"==typeof this._channel.bufferedAmountLowThreshold&&(this._channel.bufferedAmountLowThreshold=f),this.channelName=this._channel.label,this._channel.onmessage=function(e){t._onChannelMessage(e)},this._channel.onbufferedamountlow=function(){t._onChannelBufferedAmountLow()},this._channel.onopen=function(){t._onChannelOpen()},this._channel.onclose=function(){t._onChannelClose()},this._channel.onerror=function(e){t.destroy(e)};var n=!1;this._closingInterval=setInterval((function(){t._channel&&"closing"===t._channel.readyState?(n&&t._onChannelClose(),n=!0):n=!1}),5e3)}},{key:"write",value:function(e,t){if(this.destroyed)return t(new Error("cannot write after peer is destroyed"));if(this._connected){try{this.send(e)}catch(e){return this.destroy(e)}this.isBufferedAmountHigh?this._cb=t:t(null)}else this._chunk=e,this._cb=t}},{key:"_startIceCompleteTimeout",value:function(){var e=this;this.destroyed||this._iceCompleteTimer||(this._iceCompleteTimer=setTimeout((function(){e._iceComplete||(e._iceComplete=!0,e.emit("iceTimeout"),e.emit("_iceComplete"))}),this.iceCompleteTimeout))}},{key:"_createOffer",value:function(){var e=this;this.destroyed||this._pc.createOffer(this.offerOptions).then((function(t){if(!e.destroyed){e.trickle||e.allowHalfTrickle||(t.sdp=d(t.sdp)),t.sdp=e.sdpTransform(t.sdp);var n=function(){if(!e.destroyed){var n=e._pc.localDescription||t;e.emit("signal",{type:n.type,sdp:n.sdp})}};e._pc.setLocalDescription(t).then((function(){e.destroyed||(e.trickle||e._iceComplete?n():e.once("_iceComplete",n))})).catch((function(t){e.destroy(t)}))}})).catch((function(t){e.destroy(t)}))}},{key:"_createAnswer",value:function(){var e=this;this.destroyed||this._pc.createAnswer(this.answerOptions).then((function(t){if(!e.destroyed){e.trickle||e.allowHalfTrickle||(t.sdp=d(t.sdp)),t.sdp=e.sdpTransform(t.sdp);var n=function(){if(!e.destroyed){var n=e._pc.localDescription||t;e.emit("signal",{type:n.type,sdp:n.sdp})}};e._pc.setLocalDescription(t).then((function(){e.destroyed||(e.trickle||e._iceComplete?n():e.once("_iceComplete",n))})).catch((function(t){e.destroy(t)}))}})).catch((function(t){e.destroy(t)}))}},{key:"_onConnectionStateChange",value:function(){this.destroyed||"failed"===this._pc.connectionState&&this.destroy(new Error("Connection failed."))}},{key:"_onIceStateChange",value:function(){if(!this.destroyed){var e=this._pc.iceConnectionState,t=this._pc.iceGatheringState;this.emit("iceStateChange",e,t),"connected"!==e&&"completed"!==e||(this._pcReady=!0,this._maybeReady()),"failed"===e&&this.destroy(new Error("Ice connection failed.")),"closed"===e&&this.destroy(new Error("Ice connection closed."))}}},{key:"getStats",value:function(e){var t=this,n=function(e){return"[object Array]"===Object.prototype.toString.call(e.values)&&e.values.forEach((function(t){Object.assign(e,t)})),e};0===this._pc.getStats.length?this._pc.getStats().then((function(t){var r=[];t.forEach((function(e){r.push(n(e))})),e(null,r)}),(function(t){return e(t)})):this._pc.getStats.length>0?this._pc.getStats((function(r){if(!t.destroyed){var i=[];r.result().forEach((function(e){var t={};e.names().forEach((function(n){t[n]=e.stat(n)})),t.id=e.id,t.type=e.type,t.timestamp=e.timestamp,i.push(n(t))})),e(null,i)}}),(function(t){return e(t)})):e(null,[])}},{key:"_maybeReady",value:function(){var e=this;if(!this._connected&&!this._connecting&&this._pcReady&&this._channelReady){this._connecting=!0;!function t(){e.destroyed||e.getStats((function(n,r){if(!e.destroyed){n&&(r=[]);var i={},o={},s={},a=!1;r.forEach((function(e){"remotecandidate"!==e.type&&"remote-candidate"!==e.type||(i[e.id]=e),"localcandidate"!==e.type&&"local-candidate"!==e.type||(o[e.id]=e),"candidatepair"!==e.type&&"candidate-pair"!==e.type||(s[e.id]=e)}));var u=function(t){a=!0;var n=o[t.localCandidateId];n&&(n.ip||n.address)?(e.localAddress=n.ip||n.address,e.localPort=Number(n.port)):n&&n.ipAddress?(e.localAddress=n.ipAddress,e.localPort=Number(n.portNumber)):"string"==typeof t.googLocalAddress&&(n=t.googLocalAddress.split(":"),e.localAddress=n[0],e.localPort=Number(n[1])),e.localAddress&&(e.localFamily=e.localAddress.includes(":")?"IPv6":"IPv4");var r=i[t.remoteCandidateId];r&&(r.ip||r.address)?(e.remoteAddress=r.ip||r.address,e.remotePort=Number(r.port)):r&&r.ipAddress?(e.remoteAddress=r.ipAddress,e.remotePort=Number(r.portNumber)):"string"==typeof t.googRemoteAddress&&(r=t.googRemoteAddress.split(":"),e.remoteAddress=r[0],e.remotePort=Number(r[1])),e.remoteAddress&&(e.remoteFamily=e.remoteAddress.includes(":")?"IPv6":"IPv4")};if(r.forEach((function(e){"transport"===e.type&&e.selectedCandidatePairId&&u(s[e.selectedCandidatePairId]),("googCandidatePair"===e.type&&"true"===e.googActiveConnection||("candidatepair"===e.type||"candidate-pair"===e.type)&&e.selected)&&u(e)})),a||Object.keys(s).length&&!Object.keys(o).length){if(e._connecting=!1,e._connected=!0,e._chunk){try{e.send(e._chunk)}catch(n){return e.destroy(n)}e._chunk=null;var l=e._cb;e._cb=null,l(null)}"number"!=typeof e._channel.bufferedAmountLowThreshold&&(e._interval=setInterval((function(){return e._onInterval()}),150),e._interval.unref&&e._interval.unref()),e.emit("connect");var c=!0,f=!1,d=void 0;try{for(var h,g=e._pendingData[Symbol.iterator]();!(c=(h=g.next()).done);c=!0){var p=h.value;e.emit("data",p)}}catch(n){f=!0,d=n}finally{try{!c&&g.return&&g.return()}finally{if(f)throw d}}e._pendingData=[]}else setTimeout(t,100)}}))}()}}},{key:"_onInterval",value:function(){!this._cb||!this._channel||this._channel.bufferedAmount>f||this._onChannelBufferedAmountLow()}},{key:"_onSignalingStateChange",value:function(){this.destroyed||("stable"===this._pc.signalingState&&(this._isNegotiating=!1,this._queuedNegotiation?(this._queuedNegotiation=!1,this._needsNegotiation()):this.emit("negotiated")),this.emit("signalingStateChange",this._pc.signalingState))}},{key:"_onIceCandidate",value:function(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())}},{key:"_onChannelMessage",value:function(e){if(!this.destroyed){var t=e.data;t instanceof ArrayBuffer&&(t=u.Buffer.from(t)),this._connected?this.emit("data",t):this._pendingData.length<10&&this._pendingData.push(t)}}},{key:"_onChannelBufferedAmountLow",value:function(){if(!this.destroyed&&this._cb){var e=this._cb;this._cb=null,e(null)}}},{key:"_onChannelOpen",value:function(){this._connected||this.destroyed||(this._channelReady=!0,this._maybeReady())}},{key:"_onChannelClose",value:function(){this.destroyed||this.destroy()}},{key:"bufferSize",get:function(){return this._channel&&this._channel.bufferedAmount||0}},{key:"connected",get:function(){return this._connected&&"open"===this._channel.readyState}},{key:"isBufferedAmountHigh",get:function(){return this._channel.bufferedAmount>f}}]),t}(s.default);h.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},h.channelConfig={},t.default=h,e.exports=t.default},831:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.peerMap=new Map}return n(e,[{key:"isEmpty",value:function(){return 0===this.peerMap.size}},{key:"size",value:function(){return this.peerMap.size}},{key:"clear",value:function(){this.peerMap.clear()}},{key:"getPeers",value:function(){return[].concat(r(this.peerMap.values()))}},{key:"getPeerValues",value:function(){return this.peerMap.values()}},{key:"hasPeer",value:function(e){return this.peerMap.has(e)}},{key:"addPeer",value:function(e,t){this.peerMap.set(e,t)}},{key:"getPeerIds",value:function(){return[].concat(r(this.peerMap.keys()))}},{key:"removePeer",value:function(e){this.peerMap.delete(e)}},{key:"getPeersOrderByWeight",value:function(){var e=this.getAvailablePeers();return e.sort((function(e,t){return 0===t.weight?1:0===e.weight?-1:t.weight-e.weight})),e}},{key:"getPeer",value:function(e){return this.peerMap.get(e)}},{key:"getAvailablePeers",value:function(){return this.getPeers().filter((function(e){return e.isAvailableUrgently}))}}]),e}();t.default=i,e.exports=t.default},468:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r,i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(297),s=(r=o)&&r.__esModule?r:{default:r};var a=function(){function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.engine=t,this.config=n,this.trickle=n.trickleICE,this.poolSize=r,this.pool=[],n.ICEPreflight&&this.reset(),this.trickle=!1}return i(e,[{key:"reset",value:function(){this.destroy();for(var e=0;e<this.poolSize;e++)this.pool.push(this._createPeer())}},{key:"_createPeer",value:function(){return new s.default(this.engine,void 0,void 0,!0,this.config,{trickle:this.trickle})}},{key:"getPeer",value:function(){if(0===this.pool.length)return this._createPeer();var e=this.pool.shift();return this.pool.length<5&&this.pool.push(this._createPeer()),e}},{key:"destroy",value:function(){var e=!0,t=!1,n=void 0;try{for(var r,i=this.pool[Symbol.iterator]();!(e=(r=i.next()).done);e=!0){r.value.destroy(!0)}}catch(e){t=!0,n=e}finally{try{!e&&i.return&&i.return()}finally{if(t)throw n}}this.pool=[]}},{key:"available",get:function(){return 0!==this.pool.length&&this.pool[0].signalMsgs.length>0}}]),e}();t.default=a,e.exports=t.default},89:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=d(n(911)),s=d(n(648)),a=d(n(816)),u=n(408),l=d(n(308)),c=d(n(524)),f=n(921);function d(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(e,n,i,o,s){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var l=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));l.channel=e.fetcher.channelId,l.logger=e.logger,l.config=s,l.isInitiator=o,l.options=a,l.intermediator=a.intermediator||null,l.signalMsgs=[],l.assignPeerId(n,i),l.platform="unknown",l.super=!1,l.mobile=!1,l.mobileWeb=!1,l.mobileNet=!1,l.connected=!1,l.msgQueue=[],l.miss=0,l.notifySet=new Set,l.bufArr=[],l.packetSize=u.DEFAULT_PACKET_SIZE,l.sendReqQueue=[],l.downloading=!1,l.uploading=!1,l.choked=!1,l.streamListeners=[],l.pieceMsg={},l.datasToSend=[],l.bytesUploaded=0,l.dataWriting=!1,l.timeSendRequest=0,l.timeReceivePiece=0,l.timeSendPiece=0,l.weight=0,l.peersConnected=1,l.uploadSpeed=0,l.currentLevel=0,l.currentPos=0,l.useBackupSignal=!1,l.gotPeersTS=0,l.webRTCConfig={};var c=l.options.stuns;if(c&&c.length>0){var f=[];c.forEach((function(e){l.logger.info("use stun "+e),f.push({urls:e})})),l.webRTCConfig.iceServers=f}return l.config.webRTCConfig&&(l.webRTCConfig=r({},l.config.webRTCConfig,l.webRTCConfig)),l.playlistMap=new Map,l._initPeerChannel(),l.notFatalClosed=!1,l.startSN=Number.MAX_SAFE_INTEGER,l.endSN=-1,l._loadedBytes=0,l}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,null,[{key:"defaultPacketSize",get:function(){return u.DEFAULT_PACKET_SIZE}},{key:"VERSION",get:function(){return"5"}}]),i(t,[{key:"assignPeerId",value:function(e,t){var n=this;this.remotePeerId=t,this.channelId=this.isInitiator?e+"-"+t:t+"-"+e,t&&(this.timeJoin=(0,u.getCurrentTs)(),this.dataExchangeTs=this.timeJoin,this.gotStatsTs=this.timeJoin,this._startTimer()),setTimeout((function(){n.signalMsgs.length>0&&n.emit(a.default.DC_SIGNAL_BATCH,n.signalMsgs)}),0)}},{key:"_startTimer",value:function(){var e=this;this.connTimeout=setTimeout((function(){e.logger.warn("dc "+e.channelId+" connection timeout"),e.emit(a.default.DC_TIMEOUT)}),15e3)}},{key:"cancelDownload",value:function(e,t,n){return!(!n||!this.downloading)&&(!(this.bufSN>e)&&(!(this.streamListeners.length>0)&&(this.logger.info("cancel download "+n+" to "+this.remotePeerId+" remain packets "+this.remainAttachments),this.timeReceivePiece=0,this.sendJson({event:a.default.DC_PIECE_CANCEL,sn:e,level:t,seg_id:n}))))}},{key:"addStreamListener",value:function(e,t,n){this.streamListeners.push({handler:n,peerId:t})}},{key:"removeStreamListener",value:function(e){this.streamListeners=this.streamListeners.filter((function(t){return t.peerId!==e||(t.handler(void 0,void 0,!0,"aborted by cancel"),!1)}))}},{key:"_initPeerChannel",value:function(){var e=this,t=new o.default({initiator:this.isInitiator,trickle:this.options.trickle||!1,config:this.webRTCConfig});this._datachannel=t,t.on("error",(function(t){var n=!0;(e.connected||e.notFatalClosed)&&(n=!1),e.emit(a.default.DC_ERROR,n)})),t.on("signal",(function(t){!e.useBackupSignal&&e.signalMsgs.length<10&&e.signalMsgs.push(t),e.emit(a.default.DC_SIGNAL,t)}));t.on("connect",(function(){for(e.logger.info("datachannel CONNECTED from "+(e.intermediator?"peer":"server")+" to "+e.remotePeerId),e.connected=!0,clearTimeout(e.connTimeout),e.signalMsgs=[],e.emit(a.default.DC_OPEN);e.msgQueue.length>0;){var t=e.msgQueue.shift();e.emit(t.event,t)}})),t.on("data",(function(t){var n=e.logger;if("string"==typeof t){var r=JSON.parse(t);if(!r)return void n.error("dc received string is null");if(!e.connected)return void e.msgQueue.push(r);var i=r.event,o=void 0;switch(o=i!==a.default.DC_PLAYLIST&&i!==a.default.DC_PEER_SIGNAL?"string: "+t:"event: "+i,n.debug("datachannel receive "+o+" from "+e.remotePeerId),i){case a.default.DC_HAVE:if(e.emit(r.event,r),!r.sn)return;e.config.live||(r.sn<e.startSN&&(e.startSN=r.sn),r.sn>e.endSN&&(e.endSN=r.sn));break;case a.default.DC_PIECE:e.downloading=!0,e.dataExchangeTs=(0,u.getCurrentTs)(),e.timeReceivePiece=performance.now(),e.pieceMsg=r,e._prepareForBinary(r.attachments,r.seg_id,r.sn,r.size),e.emit(r.event,r);break;case a.default.DC_PIECE_CANCEL:n.info("send queue "+e.datasToSend.length+", uploading "+e.uploading),e.emit(r.event,r),e.sendMsgPieceAbort("transfer canceled",r.seg_id);break;case a.default.DC_PIECE_NOT_FOUND:e._sendNextReq()||(e.downloading=!1),e.emit(r.event,r);break;case a.default.DC_REQUEST:e._handleRequestMsg(r);break;case a.default.DC_PIECE_ACK:e._handlePieceAck(r.seg_id,r.size,r.miss);break;case a.default.DC_STATS:e._handleStats(r);break;case a.default.DC_PLAYLIST:e.config.sharePlaylist&&e._handlePlaylist(r);break;case a.default.DC_METADATA:e._handleMetadata(r);break;case a.default.DC_PIECE_ABORT:e.downloading&&(e._notifyDownloadListenersAbort("aborted by upstream peer"),e.emit(a.default.DC_PIECE_ABORT,r)),e.downloading=!1;break;case a.default.DC_CHOKE:n.info("choke peer "+e.remotePeerId),e.choked=!0;break;case a.default.DC_UNCHOKE:n.info("unchoke peer "+e.remotePeerId),e.choked=!1;break;case a.default.DC_CLOSE:e.emit(r.event,r.fatal||!1);break;default:e.emit(r.event,r)}}else{if(!t)return void n.error("datachannel on data is undefined!");if(!e.downloading)return void n.warn("peer "+e.remotePeerId+" not downloading, data size "+t.byteLength+" pieceMsg "+JSON.stringify(e.pieceMsg));e._handleBinaryMsg(t)}})),t.once("close",(function(){e.emit(a.default.DC_CLOSE,!1)})),t.on("iceStateChange",(function(t,n){e.connected&&"disconnected"===t&&(e.logger.warn(e.remotePeerId+" disconnected"),e.emit(a.default.DC_DISCONNECT))}))}},{key:"sendJson",value:function(e){if(!this.remotePeerId)return!1;e.event!==a.default.DC_PLAYLIST&&e.event!==a.default.DC_PEER_SIGNAL?this.logger.debug("dc bufferSize "+this._datachannel.bufferSize+" send "+JSON.stringify(e)+" to "+this.remotePeerId):this.logger.debug("dc send event "+e.event+" to "+this.remotePeerId);var t=JSON.stringify(e);return t.length>u.DEFAULT_PACKET_SIZE?(this.logger.error("string to send is too large"),!1):this.send(t,!1)}},{key:"send",value:function(e){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?(this.datasToSend.push(e),this.dataWriting||this._sendDataSync(),!0):this.sendImmediately(e)}},{key:"_sendDataSync",value:function(){var e=this;if(this._datachannel.connected&&0!==this.datasToSend.length){this.dataWriting=!0;var t=this.datasToSend.shift();t?("string"!=typeof t&&(this.bytesUploaded+=t.byteLength),this._datachannel.write(t,(function(t){if(t)return e.dataWriting=!1,e.logger.warn(t.message),void e.emit(a.default.DC_ERROR,!1);e._sendDataSync()}))):this.logger.error("sendDataSync data is undefined!")}else this.dataWriting=!1}},{key:"sendImmediately",value:function(e){if(this._datachannel.connected)try{return this._datachannel.send(e),!0}catch(e){this.logger.warn("datachannel "+this.channelId+" send data failed, close it"),this.emit(a.default.DC_ERROR,!1)}return!1}},{key:"sendMsgHave",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=n.reverse||void 0;delete n.reverse,this.sendJson(r({event:i?a.default.DC_HAVE_REVERSE:a.default.DC_HAVE,sn:e,seg_id:t},n))}},{key:"sendPieceNotFound",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.uploading=!1,this.sendJson(r({event:a.default.DC_PIECE_NOT_FOUND,seg_id:t||void 0,sn:e},n))}},{key:"sendPeers",value:function(e){this.sendJson({event:a.default.DC_PEERS,peers:e})}},{key:"sendPeersRequest",value:function(){this.sendJson({event:a.default.DC_GET_PEERS})}},{key:"sendMsgStats",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r({event:a.default.DC_STATS,total_conns:e},t);this.sendJson(n)}},{key:"sendMsgPlaylist",value:function(e,t,n){var r=this.playlistMap.get(e);if(!(r&&r.seq>=n)){var i={event:a.default.DC_PLAYLIST,url:e,data:t,seq:n};this.playlistMap.set(e,{data:t,seq:n}),this.sendJson(i)}}},{key:"sendMsgSignal",value:function(e,t,n){return this.sendJson({event:a.default.DC_PEER_SIGNAL,action:"signal",to_peer_id:e,from_peer_id:t,data:n})}},{key:"sendMsgSignalReject",value:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return this.sendJson({event:a.default.DC_PEER_SIGNAL,action:"reject",to_peer_id:e,from_peer_id:t,reason:n,fatal:r})}},{key:"sendMetaData",value:function(e,t,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];this.isInitiator&&(this.timeSendRequest=performance.now()),this.sendJson({event:a.default.DC_METADATA,field:e,platform:a.default.DC_PLAT_WEB,mobile:!!c.default.isMobile(),mobile_net:i,channel:this.channel,version:"1.22.1",sequential:t,peers:n,region:r})}},{key:"sendPartialBuffer",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sendMsgPiece(e,n);for(var r=0;r<t.length;r++)this.send(t[r])}},{key:"sendMsgPiece",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.uploading){this.datasToSend=[],this.bytesUploaded=0,e.ext||(e.ext={}),e.ext.from&&t.from&&(t.from=e.ext.from+"->"+t.from),t.incompletes&&e.ext.incompletes&&(t.incompletes+=e.ext.incompletes),t=Object.assign({},e.ext,t);var n=r({},e,{ext:t});this.sendJson(n)}}},{key:"sendBuffer",value:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=r.reverse||void 0;if(delete r.reverse,n){var o=n.byteLength,s=0,u=0;o%this.packetSize==0?u=o/this.packetSize:(u=Math.floor(o/this.packetSize)+1,s=o%this.packetSize);var l={event:a.default.DC_PIECE,attachments:u,seg_id:t,sn:e,level:r.level,size:o,reverse:i};delete r.level,this.sendMsgPiece(l,r);var c=function(e,t,n,r){var i=[];if(r){for(var o=void 0,s=0;s<n-1;s++)o=e.slice(s*t,(s+1)*t),i.push(o);o=e.slice(e.byteLength-r,e.byteLength),i.push(o)}else for(var a=void 0,u=0;u<n;u++)a=e.slice(u*t,(u+1)*t),i.push(a);return i}(n,this.packetSize,u,s);this._sendBufferArray(c,i),this.uploading=!1,this.timeSendPiece=performance.now()}else this.logger.error("sendBuffer payload is undefined!")}},{key:"requestDataById",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=r({event:a.default.DC_REQUEST,seg_id:e,sn:t},i,{urgent:n});this.downloading?(this.logger.info(this.remotePeerId+" add req "+e+" in queue"),n?this.sendReqQueue.unshift(o):this.sendReqQueue.push(o)):this._realRequestData(o)}},{key:"requestDataBySN",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r({event:a.default.DC_REQUEST,sn:e},n,{urgent:t});this.downloading?(this.logger.info("add req "+e+" in queue"),t?this.sendReqQueue.unshift(i):this.sendReqQueue.push(i)):this._realRequestData(i)}},{key:"_sendBufferArray",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1]?e.reverse():e,n=0;n<t.length;n++)this.send(t[n])}},{key:"_realRequestData",value:function(e){this.sendJson(e),this.timeSendRequest=performance.now(),this.downloading=!0}},{key:"shouldWaitForRemain",value:function(e){return 0!==this.bufArrSize&&(0!==this.timeReceivePiece&&this.currentLoadSpeed()>=this.minRequiredSpeed(e))}},{key:"close",value:function(e){e||(this.notFatalClosed=!0),this.emit(a.default.DC_CLOSE,e)}},{key:"receiveSignal",value:function(e){e&&this._datachannel.signal(e)}},{key:"_notifyDownloadListenersAbort",value:function(e){var t=!0,n=!1,r=void 0;try{for(var i,o=this.streamListeners[Symbol.iterator]();!(t=(i=o.next()).done);t=!0){(0,i.value.handler)(void 0,void 0,!0,e)}}catch(e){n=!0,r=e}finally{try{!t&&o.return&&o.return()}finally{if(n)throw r}}this.streamListeners=[]}},{key:"destroy",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.logger.info("destroy datachannel "+this.channelId),clearTimeout(this.chokeTimer),clearTimeout(this.connTimeout),this._notifyDownloadListenersAbort("upstream peer is closed");var t={event:a.default.DC_CLOSE,fatal:e};this.sendJson(t),this._datachannel.removeAllListeners(),this.removeAllListeners(),this._datachannel.destroy()}},{key:"_handleBinaryMsg",value:function(e){var t=this.pieceMsg,n=t.attachments,r=t.reverse;this.listenerCount(a.default.DC_RESPONSE)>0&&this.bufArr.push(e),this._loadedBytes+=e.byteLength,this.remainAttachments--;var i=r?this.remainAttachments+1:n-this.remainAttachments,o=0===this.remainAttachments;if(this.emit(a.default.DC_PIECE_DATA,this.bufSN,this.segId,e,i,o,this.pieceMsg),this.streamListeners.length>0){var s=!0,u=!1,l=void 0;try{for(var c,f=this.streamListeners[Symbol.iterator]();!(s=(c=f.next()).done);s=!0){(0,c.value.handler)(this.bufSN,this.segId,!1,e,o)}}catch(e){u=!0,l=e}finally{try{!s&&f.return&&f.return()}finally{if(u)throw l}}}if(o){if(this.streamListeners=[],this.timeSendRequest>0)if(this.super)this.weight=1;else{var d=this.expectedSize/(performance.now()-this.timeSendRequest);this.weight=this.weight>0?.6*this.weight+.4*d:d}this.sendJson({event:a.default.DC_PIECE_ACK,seg_id:this.segId,size:this.expectedSize,miss:this.miss||void 0}),this.timeSendRequest=0,this.timeReceivePiece=0,this._sendNextReq()||(this.downloading=!1),this._handleBinaryData(r)}}},{key:"_sendNextReq",value:function(){if(this.sendReqQueue.length>0){var e=this.sendReqQueue.shift();return this.logger.info("get msg from sendReqQueue "+JSON.stringify(e)),this._realRequestData(e),!0}return!1}},{key:"_handlePlaylist",value:function(e){var t=e.url,n=e.data,r=e.seq;this.playlistMap.set(t,{data:n,seq:r})}},{key:"getLatestPlaylist",value:function(e,t){if(!this.playlistMap.has(e))return null;var n=this.playlistMap.get(e);return n.seq<=t||n.seq>t+2?null:n}},{key:"_handleMetadata",value:function(e){var t=this.logger;if(this.isInitiator){var n=performance.now()-this.timeSendRequest;n>0&&(this.weight=1e5/n,t.info("handle Metadata from "+this.remotePeerId+" initial weight "+this.weight)),this.timeSendRequest=0}var r=e.channel;if(this.channel!==r)return t.error("peer channel "+r+" not matched!"),void this.emit(a.default.DC_ERROR,!0);if(e.super){t.info("got super peer "+this.remotePeerId),this.super=!0;var i=this.config.token;if(i&&e.token!==i)return t.warn("super peer token "+e.token+" not matched!"),void this.emit(a.default.DC_ERROR,!0)}switch(e.region&&(this.region=e.region),e.platform){case a.default.DC_PLAT_ANDROID:this.platform=a.default.DC_PLAT_ANDROID;break;case a.default.DC_PLAT_IOS:this.platform=a.default.DC_PLAT_IOS;break;case a.default.DC_PLAT_WEB:this.platform=a.default.DC_PLAT_WEB}if(this.mobile=e.mobile||!1,this.mobileNet=e.mobile_net||!1,this.mobileWeb=this.mobile&&this.platform===a.default.DC_PLAT_WEB||!1,this.sequential=e.sequential,t.info(this.remotePeerId+" platform "+this.platform+" sequential "+this.sequential),e.peers&&(this.peersConnected+=e.peers,t.info(this.remotePeerId+" now has "+this.peersConnected+" peers")),this.emit(a.default.DC_METADATA,e),e.field&&!this.config.live&&e.sequential){var o=e.field;if(Array.isArray(o))this._handleField(o);else for(var s in o)this._handleField(o[s])}}},{key:"_handleField",value:function(e){var t=this;e.forEach((function(e){e>=0&&(e<t.startSN&&(t.startSN=e),e>t.endSN&&(t.endSN=e))}))}},{key:"_handleStats",value:function(e){this.gotStatsTs=(0,u.getCurrentTs)();var t=e.total_conns;t>0&&this.peersConnected!==t&&(this.peersConnected=t,this.logger.info(this.remotePeerId+" now has "+this.peersConnected+" peers")),e.level&&(this.currentLevel=e.level),e.pos&&(this.currentPos=e.pos)}},{key:"_handleRequestMsg",value:function(e){if(this.dataExchangeTs=(0,u.getCurrentTs)(),this.uploading)return this.logger.warn(this.remotePeerId+" is uploading when receive request"),void this.sendPieceNotFound(e.sn,e.seg_id,{level:e.level});this.uploading=!0,this.emit(a.default.DC_REQUEST,e)}},{key:"_handlePieceAck",value:function(e,t,n){0!==this.timeSendPiece&&(this.uploadSpeed=Math.round(t/(performance.now()-this.timeSendPiece)*2),this.timeSendPiece=0,this.logger.info(this.remotePeerId+" uploadSpeed is "+this.uploadSpeed)),n>0&&this.logger.warn("peer "+this.remotePeerId+" miss "+n),this.bytesUploaded>0&&this.emit(a.default.DC_PIECE_ACK,{seg_id:e,size:t})}},{key:"_prepareForBinary",value:function(e,t,n,r){this.bufArr=[],this._loadedBytes=0,this.remainAttachments=e,this.segId=t,this.bufSN=n,this.expectedSize=r}},{key:"_handleBinaryData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.listenerCount(a.default.DC_RESPONSE)>0){e&&this.bufArr.reverse();var t=f.Buffer.concat(this.bufArr),n=t.byteLength;if(n===this.expectedSize){var r=t.buffer,i=new l.default(this.bufSN,this.segId,r,this.remotePeerId,this.pieceMsg.level);this.emit(a.default.DC_RESPONSE,i,this.weight)}else this.logger.error(this.segId+" expectedSize "+this.expectedSize+" != byteLength "+n)}this.bufArr=[]}},{key:"checkIfNeedChoke",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=this.logger,r=performance.now()-this.timeSendRequest;if((t||!(r<1500))&&(this.miss++,n.info(this.remotePeerId+" miss "+this.miss),this.miss>2&&!this.choked)){this.choked=!0;var i=30*this.miss;i<=150?(n.warn("datachannel "+this.channelId+" is choked"),this.chokeTimer=setTimeout((function(){e.choked=!1,n.warn("datachannel "+e.channelId+" is unchoked")}),1e3*i)):n.warn("datachannel "+this.channelId+" is choked permanently")}}},{key:"loadtimeout",value:function(){var e=this.logger,t=this.pieceMsg;return e.warn("timeout while downloading from "+this.remotePeerId+", "+this.bufArrSize+" of "+t.attachments+" packets loaded"),this.checkIfNeedChoke(),!0}},{key:"sendMsgPieceAbort",value:function(e,t){if(arguments.length>2&&void 0!==arguments[2]&&arguments[2]||this.uploading||0!==this.datasToSend.length){this.uploading=!1,this.datasToSend=[],this._handlePieceAck(t,this.bytesUploaded,0),this.bytesUploaded=0;var n={event:a.default.DC_PIECE_ABORT,reason:e};return this.sendJson(n)}}},{key:"loadedBytes",value:function(){return this._loadedBytes}},{key:"currentLoadSpeed",value:function(){return 0===this.timeReceivePiece?0:this.loadedBytes()/(performance.now()-this.timeReceivePiece)}},{key:"minRequiredSpeed",value:function(e){return(this.pieceMsg.size-this.loadedBytes())/e}},{key:"isAvailable",get:function(){return this.downloadNum<2&&!this.choked}},{key:"isAvailableUrgently",get:function(){return!this.downloading&&!this.choked}},{key:"downloadNum",get:function(){return this.downloading?this.sendReqQueue.length+1:0}},{key:"bufArrSize",get:function(){return this.downloading?this.pieceMsg.attachments-this.remainAttachments:0}}]),t}(s.default);t.default=h,e.exports=t.default},9:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.internalMap=new Map}return n(e,[{key:"has",value:function(e){return this.internalMap.has(e)}},{key:"set",value:function(e,t){if(this.internalMap.has(e)){var n=this.internalMap.get(e);if(n&&!n.includes(t))return void n.push(t)}this.internalMap.set(e,[t])}},{key:"setPeerUnknown",value:function(e){this.internalMap.set(e,null)}},{key:"checkIfPeerUnknown",value:function(e){return this.internalMap.has(e)&&!this.internalMap.get(e)}},{key:"getAllPeerIds",value:function(e){var t=this.internalMap.get(e);return t||[]}},{key:"get",value:function(e){return this.getOnePeerId(e)}},{key:"getOnePeerId",value:function(e){if(this.internalMap.has(e)&&this.internalMap.get(e))return this.internalMap.get(e)[0];return null}},{key:"delete",value:function(e){this.internalMap.delete(e)}},{key:"clear",value:function(){this.internalMap.clear()}}]),e}();t.default=r,e.exports=t.default},540:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=u(n(648)),o=u(n(816)),s=u(n(831)),a=n(408);function u(e){return e&&e.__esModule?e:{default:e}}var l=Symbol("shareOnly"),c=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.engine=e,r.config=n,r.logger=e.logger,r.bufMgr=null,r.peerManager=new s.default,r.fragLoading=!1,r._setupEngine&&r._setupEngine(),r.startCheckConnsTimer(),r.dcDownloadTimeout=n.dcDownloadTimeout,r[l]=!1,r.downloadOnly=!1,r.loadedPeerNum=0,r.minConns=5,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"startCheckConnsTimer",value:function(){var e=this;this.checkConnsTimer=setInterval((function(){e.logger.info("start check conns");var t=e.getStatsForPeer(),n=e.peersNum,r=(0,a.getCurrentTs)();e.getPeers().forEach((function(i){n>e.minConns+1&&(r-i.dataExchangeTs>120||r-i.gotStatsTs>=83)?(e.logger.warn("close dead peer "+i.remotePeerId+" level "+i.currentLevel),i.close(!1),n--):i.connected&&i.sendMsgStats(n,t)}))}),4e4)}},{key:"getStatsForPeer",value:function(){return{}}},{key:"_handlePieceAborted",value:function(){}},{key:"requestPeers",value:function(){var e=(0,a.getCurrentTs)(),t=0,n=!0,r=!1,i=void 0;try{for(var o,s=this.getPeers()[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var u=o.value;u.mobileNet||u.super||(e-u.gotPeersTS<60?this.logger.warn(u.remotePeerId+" just got peers, ignored"):(u.sendPeersRequest(),u.gotPeersTS=e,t++))}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}return t}},{key:"chokePeerRequest",value:function(e){var t={event:o.default.DC_CHOKE};e?e.sendJson(t):this._broadcastToPeers(t)}},{key:"unchokePeerRequest",value:function(e){var t={event:o.default.DC_UNCHOKE};e?e.sendJson(t):this._broadcastToPeers(t)}},{key:"stopRequestFromPeers",value:function(){var e=!0,t=!1,n=void 0;try{for(var r,i=this.getPeers()[Symbol.iterator]();!(e=(r=i.next()).done);e=!0){r.value.choked=!0}}catch(e){t=!0,n=e}finally{try{!e&&i.return&&i.return()}finally{if(t)throw n}}}},{key:"resumeRequestFromPeers",value:function(){var e=!0,t=!1,n=void 0;try{for(var r,i=this.getPeers()[Symbol.iterator]();!(e=(r=i.next()).done);e=!0){r.value.choked=!1}}catch(e){t=!0,n=e}finally{try{!e&&i.return&&i.return()}finally{if(t)throw n}}}},{key:"setShareOnly",value:function(){this[l]=!0}},{key:"deletePeer",value:function(e){e.downloading&&this._handlePieceAborted(e.remotePeerId),this.peerManager.hasPeer(e.remotePeerId)&&this.peerManager.removePeer(e.remotePeerId),this._peersStats(this.peerManager.getPeerIds())}},{key:"getPeers",value:function(){return[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(this.peerManager.getPeerValues()))}},{key:"addPeer",value:function(e){var t=this.logger;this.peerManager.addPeer(e.remotePeerId,e),this[l]&&(e.choked=!0);var n=this.peerManager.getPeerIds();this._peersStats(n);var r=e.region||{},i=r.asn,o=r.country;t.info("add peer "+e.remotePeerId+" country "+(o||"")+" asn "+(i||"")+", now has "+n.length+" peers")}},{key:"hasPeer",value:function(e){return this.peerManager.hasPeer(e)}},{key:"getIdlePeer",value:function(){return this.peerManager.getAvailablePeers()}},{key:"onBufferManagerSegAdded",value:function(e){}},{key:"_broadcastLost",value:function(e,t,n,r){this.config.live||this._broadcastToPeers({event:o.default.DC_LOST,sn:e,seg_id:t||void 0,level:n},r)}},{key:"destroy",value:function(){var e=this.logger;this.peersNum>0&&this.peerManager.clear(),this.removeAllListeners(),clearInterval(this.checkConnsTimer),clearTimeout(this.checkTimer),e.warn("destroy BtScheduler")}},{key:"notifyPeersLoaded",value:function(e){}},{key:"_setupDC",value:function(e){var t=this,n=this.logger;e.on(o.default.DC_PIECE_ACK,(function(r){r.size&&(t.engine.fetcher.reportUploaded(r.size),n.info("uploaded "+r.seg_id+" size "+r.size+" to "+e.remotePeerId))})).on(o.default.DC_PIECE_ABORT,(function(r){n.warn("peer "+e.remotePeerId+" download aborted, reason "+r.reason),t._handlePieceAborted(e.remotePeerId)})).on(o.default.DC_DISCONNECT,(function(){t.peersNum>=t.minConns&&(t.logger.warn("close disconnected peer "+e.remotePeerId),e.close(!1))}))}},{key:"_broadcastToPeers",value:function(e,t){var n=!0,r=!1,i=void 0;try{for(var o,s=this.getPeers()[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var a=o.value;t&&a===t||a.sendJson(e)}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}}},{key:"_peersStats",value:function(e){this.engine.emitEvent("peers",e);var t=this.engine.config.getPeersInfo;(0,a.isFunction)(t)&&t(e)}},{key:"startCheckPeersTimer",value:function(){var e=this;this.logger.info("startCheckPeersTimer");this.checkTimer=setTimeout((function t(){e.checkPeers();var n=1e3*(0,a.calCheckPeersDelay)(e.loadedPeerNum);e.loadedPeerNum=0,e.checkTimer=setTimeout(t,n)}),2e4)}},{key:"removeStreamListener",value:function(e,t){var n=this.requestingMap.get(e);if(n)n.removeStreamListener(t);else{var r=this.segmentBuilderMap.get(e);r&&r.removeStreamListener(t)}}},{key:"setTargetPeersFromGroup",value:function(e,t,n,r){if(e.hasReversePeer){if((n=t.concat(n)).length>0)return this.targetPeers.forwardPeer=n[0],!0}else if(e.hasForwardPeer&&(r=t.concat(r)).length>0)return this.targetPeers.reversePeer=r[0],!0;return t.length>0?(e.hasForwardBuffer?this.targetPeers.reversePeer=t[0]:this.targetPeers.forwardPeer=t[0],!0):(this.targetPeers=(0,a.getBestTargetPair)(t,n,r),this.targetPeers.some((function(e){return!!e})))}},{key:"isMobileNet",get:function(){return this.engine.isMobileNet}},{key:"hasPeers",get:function(){return this.peersNum>0}},{key:"peersNum",get:function(){return this.peerManager.size()}},{key:"hasIdlePeers",get:function(){var e=this.logger,t=this.getIdlePeer().length;if(e.info("peers: "+this.peersNum+" idle peers: "+t),t<this.peersNum){var n=this.peerManager.getPeers(),r=n.filter((function(e){return e.downloading}));e.warn("downloading: "+r.length+" choked: "+n.filter((function(e){return e.choked})).length);var i=!0,o=!1,s=void 0;try{for(var a,u=r[Symbol.iterator]();!(i=(a=u.next()).done);i=!0){var l=a.value;e.warn(l.remotePeerId+" loading "+l.segId+" remains "+l.remainAttachments+" total "+l.pieceMsg.attachments)}}catch(e){o=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(o)throw s}}}return t>0}},{key:"bufferManager",set:function(e){var t=this;this.bufMgr=e,e.on(o.default.BM_LOST,(function(e){var n=e.sn,r=e.segId,i=e.next,o=e.level;t._broadcastLost(n,r,o),t.onBufferManagerLost(n,r,i,o)})).on(o.default.BM_SEG_ADDED,(function(e){t.onBufferManagerSegAdded(e)}))}}]),t}(i.default);t.default=c,e.exports=t.default},555:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=a(n(648)),o=a(n(816)),s=a(n(524));function a(e){return e&&e.__esModule?e:{default:e}}function u(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var l=function(e){function t(e,n){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));i.isSequential=r,i.logger=n.logger;var o=e.browserInfo.device;return i.maxBufSize=o===s.default.device.PC_WEB||o===s.default.device.PC_NATIVE?n.memoryCacheLimit.pc:n.memoryCacheLimit.mobile,n.live&&(i.maxBufSize=36700160),i._segPool=new Map,i._currBufSize=0,i.id2Sn=new Map,i.overflowed=!1,i}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"hasSegOfId",value:function(e){if(this.isSequential){var t=this.id2Sn.get(e);return this._segPool.has(t)}return this._segPool.has(e)}},{key:"hasSegOfSN",value:function(e){return!!this.isSequential&&this._segPool.has(e)}},{key:"_calSegPoolSize",value:function(){var e=0;return this._segPool.forEach((function(t){e+=t.size})),e}},{key:"putSeg",value:function(e){if(this._currBufSize>=1.5*this.maxBufSize&&(this._currBufSize=this._calSegPoolSize(),this._currBufSize>=1.5*this.maxBufSize&&(this.clear(),this.overflowed=!1)),this.isSequential){if(this._segPool.has(e.sn))return;this._addSequentialSeg(e)}else{if(this._segPool.has(e.segId))return;this._addUnsequentialSeg(e)}}},{key:"_addSequentialSeg",value:function(e){var t=this.logger,n=e.segId,r=e.sn,i=e.size;this.id2Sn.set(n,r),this._segPool.set(r,e),this._currBufSize+=parseInt(i);var s=this._segPool.size;if(this.emit(""+o.default.BM_ADDED_SN_+e.sn,e),this.emit(o.default.BM_SEG_ADDED,e),!(this._currBufSize<this.maxBufSize||s<=5)){var a=Array.from(this._segPool.keys()).sort((function(e,t){return e-t})),u=0;do{if(u++>10){console.error("too much loops in SegmentCache");break}var l=a.shift();if(void 0!==l){var c=a[0],f=this._segPool.get(l);if(f){var d=f.size;this._currBufSize-=parseInt(d),this._segPool.delete(l),this.id2Sn.delete(f.segId),t.info("pop seg "+l+" size "+d+" currBufSize "+this._currBufSize),this.overflowed||(this.overflowed=!0),this.emit(o.default.BM_LOST,{sn:l,segId:f.segId,next:c,level:f.level})}else t.error("lastSeg not found")}else t.error("lastSN not found")}while(this._currBufSize>=this.maxBufSize&&this._segPool.size>5)}}},{key:"_addUnsequentialSeg",value:function(e){var t=this.logger,n=e.segId,r=e.size;this._segPool.set(n,e),this._currBufSize+=parseInt(r),this.emit(""+o.default.BM_ADDED_SEG_+e.segId,e),this.emit(o.default.BM_SEG_ADDED,e);for(var i=0;this._currBufSize>=this.maxBufSize&&this._segPool.size>5;){if(i++>10){console.error("too much loops in SegmentCache");break}var s=[].concat(u(this._segPool.values())).shift(),a=s.segId,l=s.size;this._currBufSize-=parseInt(l),t.info("pop seg "+a+" size "+l),this._segPool.delete(a),this.overflowed||(this.overflowed=!0),this.emit(o.default.BM_LOST,{sn:-1,segId:a,level:s.level})}}},{key:"getSegById",value:function(e){if(this.isSequential){var t=this.id2Sn.get(e);return this._segPool.get(t)}return this._segPool.get(e)}},{key:"getSegIdBySN",value:function(e){var t=this._segPool.get(e);return t?t.segId:null}},{key:"getSegBySN",value:function(e){if(this.isSequential)return this._segPool.get(e);throw new Error("fatal error in SegmentCache")}},{key:"clear",value:function(){this.logger.warn("clear segment cache"),this._segPool.clear(),this.id2Sn.clear(),this._currBufSize=0}},{key:"destroy",value:function(){this.clear(),this.removeAllListeners()}},{key:"currBufSize",get:function(){return this._currBufSize}}]),t}(i.default);t.default=l,e.exports=t.default},308:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var r=function(){function e(t,n,r,i){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.sn=t,this.segId=n,this.data=r,this.fromPeerId=i,this.level=o||0}return n(e,[{key:"size",get:function(){return this.data.byteLength}},{key:"isSequential",get:function(){return this.sn>=0}}],[{key:"fromSegment",value:function(t){var n=new e(t.sn,t.segId,t.data,t.fromPeerId,t.level);return n.from=t.from,n}}]),e}();t.default=r,e.exports=t.default},578:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=h(n(648)),s=h(n(431)),a=h(n(299)),u=h(n(816)),l=n(408),c=h(n(828)),f=n(406),d=h(n(148));function h(e){return e&&e.__esModule?e:{default:e}}var g="SW_GEOIP_KEY",p=2592e5,v=432e5,y="TRACKER_EXPT",m="IPAPI_ERROR",_="ZXU",b="uY2R",P="LmNv",S="uYnll",w="bQ==",C="aGsuc3d",E="hcm1j",k="bG91ZC",I="5uZXQ=",T=Symbol("httpDownloaded"),O=Symbol("p2pDownloaded"),R=Symbol("p2pUploaded"),A=function(e){function t(e,n,i,o,u){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var c=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)),f=void 0;c.config=e.config;var h=c.config.announceLocation;switch(c.config.trackerZone&&(h=c.config.trackerZone),h){case"hk":f=C+E+k+I;break;case"us":f="dXMuaGR0dmNsb3VkLmNvbQ==";break;default:f=_+b+S+P+w}c.engine=e,c.key=n||void 0,c.baseUrl=o||"https://"+self.atob(f)+"/v1",c.channelId=self.btoa(i),c.timestamp=(0,l.getCurrentTs)(),c.health=new d.default;var g=a.default.parseURL(c.baseUrl).netLoc;c.announce=g.replace(/\/\//,"");var p=function(e,t,n,r,i,o){var a=location.hostname;"localhost"===a&&o&&(a=o+"."+a);function u(e,t,n,r,i,o){return(0,s.default)(e+t+n+r+i,o)}var l=u(a,t,n,r,i,e).substr(0,8);return l}(c.timestamp,"1.22.1",c.announce,c.channelId,u.type,c.key);return c.native=!!u.bundle,c.announceInfo=r({},u,{channel:c.channelId,ts:c.timestamp,version:"1.22.1",v:p,announce:c.announce,k:L(c.key)}),c.announceURL=c.baseUrl+"/channel",c.reportFails=0,c.statsRequesting=!1,c.forbidden=!1,c.failConns=0,c.totalHTTPDownloaded=0,c.totalP2PDownloaded=0,c.totalP2PUploaded=0,c[T]=0,c[O]=0,c[R]=0,c.speed=0,c.offline=!1,c.errsBufStalled=0,c.mediaRequests=0,c.errsInternalExpt=0,c}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"geoipRequest",value:function(){var e=this.engine.logger;return new Promise((function(t,n){if((0,f.hasItemUnexpired)(g)){var r=(0,f.getItem)(g);e.info("found local geo data"),t(r)}else fetch(self.atob("aHR0cHM6Ly9wcm8uaXAtYXBpLmNvbS9qc29uP2ZpZWxkcz0yMTgxODI2JmtleT1YT3BpYW5zUmdZeEdUaG8=")).then((function(e){return e.json()})).then((function(e){if("success"!==e.status){var n=new Error("preflight status "+e.status);throw(0,c.default)(n,m)}var r=e.mobile?v:p;(0,f.setItemWithExpiration)(g,e,r),t(e)})).catch((function(e){n(e)}))}))}},{key:"btAnnouncePreflight",value:function(){var e=this,t=this.engine.logger;return this.announceInfo.asn?this.btAnnounce():(t.info("preflight ip-api"),Promise.race([this.geoipRequest(),new Promise((function(e,t){setTimeout((function(){t((0,c.default)(new Error("request timeout"),m))}),600)}))]).then((function(t){return e._parseGeoResponse(t),e.btAnnounce()})).catch((function(n){if(n.code!==y){var r=(0,f.getItem)(g);return r&&(t.info("use expired ipData"),e._parseGeoResponse(r)),e.btAnnounce()}throw n})))}},{key:"_parseGeoResponse",value:function(e){var t=e.lat,n=e.lon,i=e.isp,o=e.as,s=e.mobile,a=e.countryCode;e.continentCode;s&&(this.announceInfo.netType="cellular");var u=o.split(" ")[0].substr(2);this.announceInfo=r({},this.announceInfo,{lat:t,lon:n,isp:i,asn:u,country:a})}},{key:"btAnnounce",value:function(){var e=this,t=this.engine.logger;return new Promise((function(n,i){fetch(e.announceURL,{headers:e._requestHeader,method:"POST",body:JSON.stringify(e.announceInfo)}).then((function(e){if(!e.ok){var t=e.status>=500&&e.status<600;throw(0,c.default)(new Error("server response code is "+e.status),y,{retry:t})}return e.json()})).then((function(t){if(!e.engine)throw(0,c.default)(new Error("runtime error"),y,{retry:!1});var i=t.data;if(i.f&&(e.forbidden=!0),-1===t.ret){var o=t.data,s=o.code,a=o.msg;throw(0,c.default)(new Error(a),y,{retry:s>=5e3})}if(i.info&&console.info(""+i.info),i.warn&&console.warn(""+i.warn),i.min_conns||(i.min_conns=8),(!i.rejected||i.rejected&&i.share_only)&&i.id&&i.report_interval&&i.peers){if(e.peerId=e.id=i.id,i.report_interval<20&&(i.report_interval=20),e.btStats(i.report_interval),e.getPeersURL=e.baseUrl+"/channel/"+e.channelId+"/node/"+e.peerId+"/peers",e.statsURL=e.baseUrl+"/channel/"+e.channelId+"/node/"+e.peerId+"/stats",!e.announceInfo.asn&&i.asn){var u=i.country,l=i.asn,d=i.mobile,h=i.isp,m=i.lat,_=i.lon;e.announceInfo=r({},e.announceInfo,{country:u,asn:l}),(0,f.setItemWithExpiration)(g,{countryCode:u,as:"AS"+l,mobile:d,isp:h,lat:m,lon:_,status:"success"},d?v:p)}n(i)}else e.engine&&(e.engine.p2pEnabled=!1)})).catch((function(e){t.error("btAnnounce error "+e);var n=e.code||y,r=!e.code||e.retry;i((0,c.default)(e,n,{retry:r}))}))}))}},{key:"btStats",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;this.heartbeater=setInterval((function(){e.postStats()}),1e3*t)}},{key:"postStatsWithBeacon",value:function(){if(!this.offline){this.offline=!0;var e={off:!0};this.statsRequesting||(e=r({},e,this._makeStatsBody())),this.statsURL&&navigator.sendBeacon&&navigator.sendBeacon(this.statsURL,JSON.stringify(e))}}},{key:"postStats",value:function(){var e=this,t=this.engine.logger;this.statsRequesting=!0,fetch(this.statsURL,{method:"POST",body:JSON.stringify(this._makeStatsBody())}).then((function(t){return e.statsRequesting=!1,e.reportFails=0,t.text()})).then((function(n){var r=void 0;if(-1===(r=n?JSON.parse(n):{ret:0,data:{}}).ret)clearInterval(e.heartbeater),t.error(r.data.msg+" code "+r.data.code),e.engine.emit(u.default.RESTART_P2P);else{var i=e.lastStats||{},o=i.http,s=void 0===o?0:o,a=i.p2p,l=void 0===a?0:a,c=i.share,f=void 0===c?0:c,d=i.failConns,h=void 0===d?0:d,g=i.rebuffers,p=void 0===g?0:g,v=i.requests,y=void 0===v?0:v,m=i.errsInternalExpt,_=void 0===m?0:m;e[T]>=s&&(e[T]-=s),e[O]>=l&&(e[O]-=l),e[R]>=f&&(e[R]-=f),e.failConns>=h&&(e.failConns-=h),e.errsBufStalled>=p&&(e.errsBufStalled-=p),e.mediaRequests>=y&&(e.mediaRequests-=y),e.errsInternalExpt>=_&&(e.errsInternalExpt-=_),e.exptMsg&&(e.exptMsg=void 0)}})).catch((function(n){t.error("btStats error "+n),e.statsRequesting=!1,e.reportFails++,e.reportFails>=3&&clearInterval(e.heartbeater)}))}},{key:"btGetPeers",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.engine.logger,i=this.announceInfo,o={exclusions:e,asn:i.asn,country:i.country,ratio:this.health.healthRatio,urgent:n||void 0},s={};return this.engine.getExtraForPeersRequest&&(s=this.engine.getExtraForPeersRequest()),o=Object.assign({},o,s),new Promise((function(e,n){t.reportFails>=3?n(new Error("reportFails >= 3")):fetch(t.getPeersURL,{headers:t._requestHeader,method:"POST",body:JSON.stringify(o)}).then((function(e){return e.json()})).then((function(t){-1===t.ret?n(t.data.msg):e(t.data)})).catch((function(e){r.error("btGetPeers error "+e),n(e)})).finally((function(){t.health.resetTraffic()}))}))}},{key:"increFailConns",value:function(){this.failConns++}},{key:"increRebuffers",value:function(){this.errsBufStalled++}},{key:"increMediaRequests",value:function(){this.mediaRequests++,this.engine.emit(u.default.MEDIA_REBUFFER,this.errsBufStalled>=2)}},{key:"reportFlow",value:function(e){var t=Math.round(e/1024);this.engine.emitEvent("httpDownloaded",t),this[T]+=t,this.totalHTTPDownloaded+=t,this.health.recordHttp(t),this._emitStats()}},{key:"reportDCTraffic",value:function(e,t){var n=Math.round(e/1024);this[O]+=n,this.totalP2PDownloaded+=n,this.health.recordP2p(n),this.speed=Math.round(t),this.engine.emitEvent("p2pDownloaded",n,this.speed),this._emitStats()}},{key:"reportUploaded",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=Math.round(e/1024);this.engine.emitEvent("p2pUploaded",t),this.totalP2PUploaded+=t,this.health.recordShare(t),this[R]+=t,this._emitStats()}},{key:"destroy",value:function(){this.engine.logger.warn("destroy fetcher"),this.removeAllListeners(),clearInterval(this.heartbeater)}},{key:"_emitStats",value:function(){var e=this.totalHTTPDownloaded,t=this.totalP2PDownloaded,n=this.totalP2PUploaded;this.engine.emit("stats",{totalHTTPDownloaded:e,totalP2PDownloaded:t,totalP2PUploaded:n,p2pDownloadSpeed:this.speed});var r=this.config.getStats;(0,l.isFunction)(r)&&r(t,n,e,this.speed)}},{key:"_makeStatsBody",value:function(){var e=this.announceInfo,t=e.asn,n=e.country,r={totalConns:this.engine.tracker.totalConns,failConns:this.failConns,rebuffers:this.errsBufStalled||void 0,requests:this.mediaRequests||void 0,errsInternalExpt:this.errsInternalExpt,http:Math.round(this[T])||0,p2p:Math.round(this[O])||0,share:Math.round(this[R])||0,asn:t,country:n},i={};this.engine.getExtraForStats&&(i=this.engine.getExtraForStats()),r=Object.assign({},r,i),this.lastStats=JSON.parse(JSON.stringify(r)),Object.keys(r).forEach((function(e){0===r[e]&&delete r[e]}));var o=this.engine.logger;return o.isDebugLevel&&o.info("report "+JSON.stringify(r)),this.exptMsg&&(r.exptMsg="1.22.1 "+this.exptMsg),r}},{key:"_requestHeader",get:function(){var e={};return this.native&&(e=r({},e,{"X-SW-Key":L(this.key),"User-Agent":"electron","X-SW-ID":this.announceInfo.bundle})),e}}]),t}(o.default);function L(e){if(e){for(var t="C@K<#q",n="",r=0;r<e.length;r++){var i=e.charCodeAt(r)^t.charCodeAt(r%6);n+=String.fromCharCode(i)}return self.btoa(n)}}t.default=A,e.exports=t.default},935:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r,i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(56),s=(r=o)&&r.__esModule?r:{default:r};var a=function(){function e(t,n,r,i){var o=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.logger=t,this.config=n,this.mainAddr=r,this.backupAddr=i,this.mainWS=this._init(r),this.backupTimer=setTimeout((function(){o.destroyed||(o.backupWS=o._init(i,"backup"))}),900),this._connected=!1,this.destroyed=!1,this.normalClosed=!1}return i(e,[{key:"_init",value:function(e,t){var n=this;if(!e)return null;var r=new s.default(this.logger,this.config,e,t);return r.onopen=function(){n.normalClosed=!1,!n._connected&&n.onopen&&(n._connected=!0,n.onopen())},r.onmessage=function(e){n.onmessage&&n.onmessage(e,r.name)},r.onclose=function(){n._connected&&!n.connected&&n.onclose&&(n._connected=!1,n.onclose())},r.onerror=function(e){n.onerror&&n.onerror(e)},r}},{key:"sendSignalBatch",value:function(e,t,n){if(n){var r=this._getWSByName(n);r&&r.sendSignalBatch(e,t)}else this.mainConnected?this.mainWS.sendSignalBatch(e,t):this.backupConnected&&this.backupWS.sendSignalBatch(e,t)}},{key:"sendSignal",value:function(e,t,n){this.sendSignalBatch(e,[t],n)}},{key:"sendReject",value:function(e,t,n,r){if(r){var i=this._getWSByName(r);if(i)return void i.sendReject(e,t,n)}this.mainConnected?this.mainWS.sendReject(e,t,n):this.backupConnected?this.backupWS.sendReject(e,t,n):this.logger.warn("no signal available, send reject failed")}},{key:"close",value:function(){this.mainWS&&this.mainWS.close(),this.backupWS&&this.backupWS.close(),this.normalClosed=!0}},{key:"_getWSByName",value:function(e){return this.mainWS&&this.mainWS.name===e?this.mainWS:this.backupWS&&this.backupWS.name===e?this.backupWS:null}},{key:"reconnect",value:function(){this.mainWS&&this.mainWS.reconnect(),this.backupWS&&this.backupWS.reconnect()}},{key:"destroy",value:function(){this.close(),clearTimeout(this.backupTimer),this.mainWS=null,this.backupWS=null,this.destroyed=!0}},{key:"connected",get:function(){return this.mainConnected||this.backupConnected}},{key:"mainConnected",get:function(){return this.mainWS&&this.mainWS.connected}},{key:"backupConnected",get:function(){return this.backupWS&&this.backupWS.connected}}]),e}();t.default=a,e.exports=t.default},277:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=v(n(648)),s=v(n(56)),a=v(n(935)),u=v(n(828)),l=n(408),c=v(n(816)),f=v(n(998)),d=v(n(297)),h=v(n(524)),g=v(n(468)),p=v(n(212));function v(e){return e&&e.__esModule?e:{default:e}}function y(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var m=function(e){function t(e,n,r,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));o.engine=e,o.logger=e.logger,o.config=i,o.connected=!1,o.scheduler=r,o.sequential=o.scheduler.sequential,o.DCMap=new Map,o.failedDCSet=new Set,o.notFoundDCSet=new Set;var s=h.default.isMobile();return o.peerPool=new g.default(e,i,15),o.signalerWs=null,o.fetcher=n,o.peers=[],o.requestPeersQueue=[],o.minConns=5,o.stuns=[],o.requestMorePeers=(0,f.default)(o._requestMorePeers,o),o.maxConns=s?15:22,o.maxConnsActive=s?10:13,o.peersIncrement=0,o.gotPeersFromTracker=!1,o.requestPeersWaitCount=0,o.fuseRate=-1,o.overloaded=!1,o}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"resumeP2P",value:function(){var e=this;if(this.fetcher){var t=this.engine,n=this.config,r=this.fetcher,i=r.btAnnounce,o=r.btAnnouncePreflight,s=n.wsSignalerAddr,a=n.wifiOnly;(n.geoIpPreflight?o:i).call(r).then((function(n){if(e.scheduler){t.peerId=e.peerId=n.id,e.minConns=n.min_conns,e.scheduler.minConns=e.minConns;var i=n.peers;e.scheduler.notifyPeersLoaded(i.length),t.netType=r.announceInfo.netType,(n.wifi_only||a)&&t.isMobileNet&&(e.scheduler.downloadOnly=!0,e.logger.info("downloadOnly mode"));var o=s.main,u=s.backup;n.signal&&!n.signal2&&(u=void 0),e.signalerWs=e._initSignalerWs(n.signal||o,n.signal2||u,n.token,n.token2),0===i.length?e.requestMorePeers():e.peers=e._filterPeers(i),t.emitEvent("peerId",e.peerId),n.stun&&n.stun.length>0&&(e.stuns=n.stun),n.debug&&(e.logger.enableDebug(),n.log_url&&(e.logUploader=new p.default(n.log_url,e.fetcher.key||location.hostname,e.peerId,"1.22.1"),e.logger.setUploader(e.logUploader))),t.onTrackerResume&&t.onTrackerResume(n),n.fuse_rate&&(e.fuseRate=n.fuse_rate),n.overload&&(e.overloaded=!0,e.logger.warn("server overloaded, degrade signaling")),e.logger.info("announce request response "+JSON.stringify(n,null,2))}})).catch((function(n){if(e.scheduler&&("TRACKER_EXPT"===n.code&&t.emitEvent(c.default.EXCEPTION,n),e.scheduler.notifyPeersLoaded(0),n.retry)){var r=(0,l.randomNum)(15e3,4e4);e.logger.warn("announce retry after "+r+"ms"),e.announceTimer=setTimeout((function(){e.resumeP2P()}),r)}}))}}},{key:"stopP2P",value:function(){this.fetcher.postStatsWithBeacon(),this.fetcher.destroy(),this.fetcher=null,this.requestMorePeers(!0),this.scheduler.destroy(),this.scheduler=null,this.signalerWs&&(this.signalerWs.destroy(),this.signalerWs=null),this.peers=[];var e=!0,t=!1,n=void 0;try{for(var r,i=this.DCMap.values()[Symbol.iterator]();!(e=(r=i.next()).done);e=!0){r.value.destroy(!0)}}catch(e){t=!0,n=e}finally{try{!e&&i.return&&i.return()}finally{if(t)throw n}}this.DCMap.clear(),this.peerPool.destroy(),this.peerPool=null,this.failedDCSet.clear(),this.notFoundDCSet.clear(),this.logUploader&&(this.logUploader.destroy(),this.logUploader=null),this.logger.warn("tracker stop p2p")}},{key:"destroy",value:function(){this.stopP2P(),this.removeAllListeners(),clearTimeout(this.announceTimer),clearTimeout(this.requestPeersTimer);var e=this.config;e.getStats=e.getPeerId=e.getPeersInfo=null,this.logger.warn("destroy tracker")}},{key:"_filterPeers",value:function(e){var t=[],n=[].concat(y(this.DCMap.keys()),y(this.failedDCSet.keys()),[this.peerId]);return e.filter((function(e){return!n.includes(e.id)})).forEach((function(e){t.push({id:e.id,intermediator:e.intermediator})})),t}},{key:"_tryConnectToAllPeers",value:function(){var e=this.logger;if(0!==this.peers.length)for(e.info("try connect to "+this.peers.length+" peers, map size "+this.DCMap.size+" limit "+this.maxConnsActive+" peersNum "+this.scheduler.peersNum);this.peers.length>0&&!(this.DCMap.size>=this.maxConnsActive);){var t=this.peers.shift(),n=t.intermediator;this.signalerWs.connected||n&&this.DCMap.has(n)?(e.debug("create DataChannel "+t.id+" intermediator "+n),this._createDatachannel(t.id,!0,n)):e.info("skip peer "+t.id+" without intermediator")}else e.info("no peers after filter")}},{key:"_handleSendSignal",value:function(e,t){var n=e.remotePeerId;if(e.intermediator){var r=this.DCMap.get(e.intermediator);if(r){var i=!0,o=!0,s=!1,a=void 0;try{for(var u,l=t[Symbol.iterator]();!(o=(u=l.next()).done);o=!0){var c=u.value;r.sendMsgSignal(n,this.peerId,c)||(i=!1)}}catch(e){s=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(s)throw a}}if(i)return;this.logger.warn("intermediator "+e.intermediator+" relay failed")}}e.intermediator=void 0,this.signalerWs.sendSignalBatch(n,t,e.signalName)}},{key:"_setupDC",value:function(e){var t=this;e.on(c.default.DC_SIGNAL,(function(n){t._handleSendSignal(e,[n])})).on(c.default.DC_SIGNAL_BATCH,(function(n){t._handleSendSignal(e,n)})).on(c.default.DC_PEER_SIGNAL,(function(n){var r=n.to_peer_id,i=n.from_peer_id,o=n.action;if(r&&i&&o)if(r!==t.peerId){t.logger.info("relay signal for "+i);var s=t.DCMap.get(r);if(s){if("signal"!==o)return void s.sendMsgSignalReject(r,i,n.reason,n.fatal);if(s.sendMsgSignal(r,i,n.data))return}e.sendMsgSignal(i,r)}else"signal"===o?t._handleSignalMsg(i,n,e.remotePeerId):t._handSignalRejected(i,n)})).on(c.default.DC_GET_PEERS,(function(){var n=(0,l.getCurrentTs)(),i=t.scheduler.getPeers().filter((function(e){return e.peersConnected<(e.mobileWeb?15:22)&&!e.super}));if(i&&i.length>0){var o=[];i.forEach((function(i){i.remotePeerId!==e.remotePeerId&&i.remotePeerId!==t.peerId&&(!t.config.live&&(i.currentPos-e.currentPos>600||i.currentPos<e.currentPos)||n-i.timeJoin>50&&o.push(r({id:i.remotePeerId},i.region)))})),t.logger.info("send "+o.length+" peers to "+e.remotePeerId),e.sendPeers(o)}})).on(c.default.DC_PEERS,(function(n){var r,i=n.peers;(t.logger.info("receive "+i.length+" peers from "+e.remotePeerId),i&&i.length>0)&&(i.forEach((function(t){t.intermediator=e.remotePeerId,t.region||(t.region={})})),(r=t.requestPeersQueue).push.apply(r,y(i)));t.requestPeersWaitCount--,t.requestPeersWaitCount<=0&&t._handleRequestedPeers()})).once(c.default.DC_ERROR,(function(n){t.logger.info("datachannel "+e.channelId+" failed fatal "+n),t.scheduler&&(t.scheduler.deletePeer(e),t._destroyAndDeletePeer(e.remotePeerId,n),t.fetcher&&(e.connected||n&&t.fetcher.increFailConns(),n&&t.failedDCSet.add(e.remotePeerId),t._doSignalFusing(t.scheduler.peersNum),t._doPeersRequest()))})).once(c.default.DC_TIMEOUT,(function(){e.intermediator||(t.failedDCSet.add(e.remotePeerId),t.fetcher&&t.fetcher.increFailConns()),t._destroyAndDeletePeer(e.remotePeerId,!1),t._doPeersRequest()})).once(c.default.DC_CLOSE,(function(n){t.logger.info("datachannel "+e.channelId+" closed fatal "+n),t.scheduler&&(t.scheduler.deletePeer(e),t._doSignalFusing(t.scheduler.peersNum)),t._destroyAndDeletePeer(e.remotePeerId,n),n&&t.failedDCSet.add(e.remotePeerId),t._doPeersRequest()})).once(c.default.DC_OPEN,(function(){e.isInitiator&&t.scheduler.handshakePeer(e)})).once(c.default.DC_METADATA,(function(n){var r=t.scheduler;e.isInitiator||r.handshakePeer(e),r.handleMetaData(e,n);var i=t.DCMap.size>=t.maxConnsActive;t.requestMorePeers(i),e.intermediator&&t.peersIncrement++,t._doSignalFusing(r.peersNum)}))}},{key:"_doPeersRequest",value:function(){var e=this.scheduler.peersNum;!this.signalerWs.connected||this.overloaded&&e>this.minConns?this._requestPeersFromPeers(e):this.requestMorePeers(),this._tryConnectToAllPeers()}},{key:"_doSignalFusing",value:function(e){if(!(this.fuseRate<=0)){var t=this.signalerWs.connected;t&&e>=this.fuseRate?(this.logger.warn("reach fuseRate, report stats close signaler"),this.totalConns-1>0&&this.fetcher.postStats(),this.signalerWs.close()):!t&&e<=this.minConns&&this.signalerWs.normalClosed&&(this.logger.warn("low conns "+e+", reconnect signaler"),this.signalerWs.reconnect())}}},{key:"_initSignalerWs",value:function(e,t,n,r){var i=this,o=function(e,t){var n=e+"?id="+i.peerId+"&p=web&v=1.22.1";return t&&(n=n+"&token="+t),n},l=void 0,f=o(e,n);if(t&&t!==e){var d=o(t,r);l=new a.default(this.logger,this.config,f,d)}else l=new s.default(this.logger,this.config,f);return l.onopen=function(){i.connected=!0,i.engine.emitEvent("serverConnected",!0),i._tryConnectToAllPeers()},l.onmessage=function(e,t){var n=e.action,r=e.from_peer_id||e.from;if(r)switch(n){case"signal":i._handleSignalMsg(r,e,null,t);break;case"reject":i._handSignalRejected(r,e);break;default:i.logger.warn("Signal websocket unknown action "+n)}else i.logger.warn("fromPeerId is missed")},l.onclose=function(){i.connected=!1,i.engine.emitEvent("serverConnected",!1)},l.onerror=function(e){e.message&&i.logger.warn("signal err: "+e.message),e.message&&i.engine.emitEvent(c.default.EXCEPTION,(0,u.default)(e,"SIGNAL_EXPT"))},l}},{key:"_handSignalRejected",value:function(e,t){this.logger.warn("signaling "+e+" rejected, reason "+t.reason);var n=this.DCMap.get(e);n&&!n.connected&&(n.destroy(t.fatal),this.DCMap.delete(e)),this.requestMorePeers(),t.fatal&&this.failedDCSet.add(e),this._tryConnectToAllPeers()}},{key:"_handleSignalMsg",value:function(e,t,n,r){if(this.scheduler){var i=this.logger;if(t.data){if(this.failedDCSet.has(e))return void this._sendSignalReject(e,e+" blocked",n,r,!0);this._handleSignal(e,t.data,n,r)}else{var o=this.DCMap.get(e);if(!o)return;if(this.signalerWs.backupConnected&&o&&o.signalMsgs.length>0&&"main"===r&&!o.useBackupSignal)return o.useBackupSignal=!0,o.signalName="backup",i.warn(e+" not found from main, try backup signal"),o.intermediator=void 0,void this.signalerWs.sendSignalBatch(e,o.signalMsgs,"backup");if(o.useBackupSignal)return;this._destroyAndDeletePeer(e),i.info("signaling "+e+" not found");var s=this.scheduler;s.waitForPeer&&(s.waitingPeers--,0===s.waitingPeers&&s.notifyPeersLoaded(0)),this.requestMorePeers(),this._tryConnectToAllPeers(),n||this.notFoundDCSet.add(e)}}}},{key:"_handleSignal",value:function(e,t,n,r){var i=t.type,o=this.logger,s=this.DCMap.get(e);if(s){if(s.connected)return void o.info("datachannel had connected, signal ignored");if("offer"===i){if(!(this.peerId>e))return void o.warn("signal type wrong "+i+", ignored");this._destroyAndDeletePeer(e,!1),o.warn("signal type wrong "+i+", convert to non initiator"),s=this._createDatachannel(e,!1,n)}}else{if("answer"===i){var a="type wrong "+i;return o.warn(a),this._sendSignalReject(e,a,n,r),void this._destroyAndDeletePeer(e,!1)}if(o.debug("receive node "+e+" connection request"),this.DCMap.size>=this.maxConns){var u="reach limit "+this.maxConns;return o.warn(u),void this._sendSignalReject(e,u,n,r)}s=this._createDatachannel(e,!1,n)}s&&(r&&(s.signalName=r),s.receiveSignal(t))}},{key:"_createDatachannel",value:function(e,t,n){if(this.fetcher){var r=void 0;if(t&&this.peerPool.available)r=this.peerPool.getPeer(),this.logger.info("get peer from pool, signal size "+r.signalMsgs.length),r.intermediator=n,r.assignPeerId(this.peerId,e);else{var i=this.config.trickleICE;this.overloaded&&(i=!1),r=new d.default(this.engine,this.peerId,e,t,this.config,{stuns:this.stuns,intermediator:n,trickle:!n&&i})}return this.DCMap.set(e,r),this._setupDC(r),r}}},{key:"_sendSignalReject",value:function(e,t,n,r,i){if(n){var o=this.DCMap.get(n);if(o&&o.sendMsgSignalReject(e,this.peerId,t,i))return}this.signalerWs.sendReject(e,t,i,r)}},{key:"_requestMorePeers",value:function(e){if(this.fetcher){var t=this.logger,n=this.scheduler.peersNum;n>=this.maxConnsActive||(t.info("requestMorePeers after delay "+e+", peersIncrement "+this.peersIncrement),n<3||this.peersIncrement<=3&&!this.gotPeersFromTracker?this._requestPeersFromServer(n):this._requestPeersFromPeers(n)||this._requestPeersFromServer(n),this.peersIncrement=0)}}},{key:"_requestPeersFromServer",value:function(e){var t=this,n=this.logger;this.failedDCSet.size>50&&(this.failedDCSet=new Set([].concat(y(this.failedDCSet)).slice(-50))),this.notFoundDCSet.size>20&&(this.notFoundDCSet=new Set([].concat(y(this.notFoundDCSet)).slice(-20))),this.fetcher.btGetPeers([].concat(y(this.DCMap.keys()),y(this.failedDCSet.keys()),y(this.notFoundDCSet.keys())),0===e).then((function(e){e&&e.peers&&(n.info("requestMorePeers resp "+JSON.stringify(e,null,2)),t.peers=t._filterPeers(e.peers),t._tryConnectToAllPeers())})).catch((function(e){n.error("requestMorePeers error "+e)})),this.gotPeersFromTracker=!0}},{key:"_requestPeersFromPeers",value:function(e){var t=this;return!!this.requestPeersTimer||(e>=this.maxConnsActive||(this.requestPeersWaitCount=this.scheduler.requestPeers(),0!==this.requestPeersWaitCount&&(this.gotPeersFromTracker=!1,this.requestPeersTimer=setTimeout((function(){t.logger.warn("requestPeersTimer timeout"),t._handleRequestedPeers()}),1e4),!0)))}},{key:"_handleRequestedPeers",value:function(){if(clearTimeout(this.requestPeersTimer),this.requestPeersTimer=void 0,this.fetcher){if(this.requestPeersQueue.length>0){var e=(0,l.sortPeersWithRegion)(this.requestPeersQueue,this.fetcher.announceInfo);this.peers=this._filterPeers(e),this.requestPeersQueue=[]}this._tryConnectToAllPeers()}}},{key:"_destroyAndDeletePeer",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.DCMap.get(e);return!!n&&(n.destroy(t),this.DCMap.delete(e),!0)}},{key:"totalConns",get:function(){return this.scheduler.peersNum+1}}]),t}(o.default);t.default=m,e.exports=t.default},921:(e,t)=>{var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.Buffer=o;var r=2147483647;function i(e){if(e>r)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=o.prototype,t}function o(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 s(e,t,n)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!o.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|f(e,t),r=i(n),s=r.write(e,t);s!==n&&(r=r.slice(0,s));return r}(e,t);if(ArrayBuffer.isView(e))return l(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+(void 0===e?"undefined":n(e)));if(m(e,ArrayBuffer)||e&&m(e.buffer,ArrayBuffer))return function(e,t,n){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(n||0))throw new RangeError('"length" is outside of buffer bounds');var r;r=void 0===t&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,t):new Uint8Array(e,t,n);return r.__proto__=o.prototype,r}(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var s=e.valueOf&&e.valueOf();if(null!=s&&s!==e)return o.from(s,t,r);var a=function(e){if(o.isBuffer(e)){var t=0|c(e.length),n=i(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||_(e.length)?i(0):l(e);if("Buffer"===e.type&&Array.isArray(e.data))return l(e.data)}(e);if(a)return a;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return o.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+(void 0===e?"undefined":n(e)))}function a(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 a(e),i(e<0?0:0|c(e))}function l(e){for(var t=e.length<0?0:0|c(e.length),n=i(t),r=0;r<t;r+=1)n[r]=255&e[r];return n}function c(e){if(e>=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|e}function f(e,t){if(o.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||m(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 '+(void 0===e?"undefined":n(e)));var r=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;for(var s=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return y(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;default:if(s)return i?-1:y(e).length;t=(""+t).toLowerCase(),s=!0}}function d(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r))>i&&(r=i):r=i;var o=t.length;r>o/2&&(r=o/2);var s=void 0;for(s=0;s<r;++s){var a=parseInt(t.substr(2*s,2),16);if(_(a))return s;e[n+s]=a}return s}function h(e,t,n,r){return v(y(t,e.length-n),e,n,r)}function g(e,t,n,r){return v(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function p(e,t,n,r){return v(function(e,t){for(var n=void 0,r=void 0,i=void 0,o=[],s=0;s<e.length&&!((t-=2)<0);++s)r=(n=e.charCodeAt(s))>>8,i=n%256,o.push(i),o.push(r);return o}(t,e.length-n),e,n,r)}function v(e,t,n,r){var i=void 0;for(i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function y(e,t){var n;t=t||1/0;for(var r=e.length,i=null,o=[],s=0;s<r;++s){if((n=e.charCodeAt(s))>55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.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;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function m(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function _(e){return e!=e}t.kMaxLength=r,"undefined"!=typeof Symbol&&null!=Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.from=function(e,t,n){return s(e,t,n)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(e,t,n){return function(e,t,n){return a(e),e<=0?i(e):void 0!==t?"string"==typeof n?i(e).fill(t,n):i(e).fill(t):i(e)}(e,t,n)},o.allocUnsafe=function(e){return u(e)},o.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==o.prototype},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=o.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var s=e[n];if(m(s,Uint8Array)&&(s=o.from(s)),!o.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(r,i),i+=s.length}return r},o.byteLength=f,o.prototype._isBuffer=!0,o.prototype.copy=function(e,t,n,r){if(!o.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<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=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<r-n&&(r=e.length-t+n);var i=r-n;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,n,r);else if(this===e&&n<t&&t<r)for(var s=i-1;s>=0;--s)e[s+t]=this[s+n];else Uint8Array.prototype.set.call(e,this.subarray(n,r),t);return i},o.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var 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");for(var o=!1;;)switch(r){case"hex":return d(this,e,t,n);case"utf8":case"utf-8":return h(this,e,t,n);case"ascii":case"latin1":case"binary":return g(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return p(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}}},828:e=>{var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function n(e,t){for(var n in t)Object.defineProperty(e,n,{value:t[n],enumerable:!0,configurable:!0});return e}e.exports=function(e,r,i){if(!e||"string"==typeof e)throw new TypeError("Please pass an Error to err-code");i||(i={}),"object"===(void 0===r?"undefined":t(r))&&(i=r,r=void 0),null!=r&&(i.code=r);try{return n(e,i)}catch(t){i.message=e.message,i.stack=e.stack;var o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(e)),n(new o,i)}}},998:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=null,r=!1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:40;return function(){if(arguments.length>0&&void 0!==arguments[0]&&arguments[0])return clearTimeout(n),void(r=!1);r||(r=!0,n=setTimeout((function(){e.call(t,i),r=!1,n=null}),1e3*i),i*=1.1)}},e.exports=t.default},148:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.p2p=0,this.share=0,this.http=0}return n(e,[{key:"recordP2p",value:function(e){this.p2p+=e}},{key:"recordShare",value:function(e){this.share+=e}},{key:"recordHttp",value:function(e){this.http+=e}},{key:"resetTraffic",value:function(){this.p2p=0,this.share=0,this.http=0}},{key:"healthRatio",get:function(){if(0===this.http)return 1e3;var e=Math.round((this.p2p+this.share)/this.http*100);return e<=0&&(e=1),e}}]),e}();t.default=r,e.exports=t.default},569:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r,i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(648),s=(r=o)&&r.__esModule?r:{default:r};function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var u=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.logger=e,n.startsWith("wss")?r.addr=n.replace("wss","https"):n.startsWith("ws")&&(r.addr=n.replace("ws","http")),r.connected=!1,r.retryCount=0,r.closed=!1,r.msgQueue=[],r.posting=!1,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"start",value:function(){var e=this;this.closed=!1,this._hello((function(){e._longPolling()}))}},{key:"_hello",value:function(e){var t=this;fetch(this.addr+"&hello",{method:"POST"}).then((function(e){if(!e.ok)throw new Error("hello response was not ok");return e.json()})).then((function(n){t.connected=!0,e(),t.onopen&&t.onopen(n.ver)})).catch((function(e){t.closed=!0,t.onerror&&t.onerror(e)}))}},{key:"send",value:function(e){this.msgQueue.push(e),this.posting||this._realSend([].concat(a(this.msgQueue)))}},{key:"_realSend",value:function(e){var t=this;0!==e.length&&(this.posting=!0,this.msgQueue=[],fetch(this.addr,{method:"POST",body:JSON.stringify(e)}).then((function(){t.posting=!1,t.msgQueue.length>0&&t._realSend([].concat(a(t.msgQueue)))})).catch((function(e){t.logger.error(e),t.posting=!1})))}},{key:"close",value:function(){this.connected&&(this.closed=!0,this.connected=!1,this.abortController&&(this.abortController.abort(),this.abortController=null),this.onclose&&this.onclose())}},{key:"destroy",value:function(){this.close(),this.removeAllListeners()}},{key:"_longPolling",value:function(){var e=this;if(!this.closed){this.abortController=new AbortController;var t=this.abortController.signal;fetch(this.addr,{signal:t}).then((function(e){if(!e.ok)throw new Error("polling response was not ok");return e.text()})).then((function(t){t&&e.onmessage&&e.onmessage(JSON.parse(t)),e.retryCount=0,e._longPolling()})).catch((function(t){e.connected&&(e.retryCount<=3?(e.retryCount++,e._longPolling()):(e.connected=!1,e.onerror&&e.onerror(t)))}))}}}]),t}(s.default);t.default=u,e.exports=t.default},212:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r,i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(696),s=(r=o)&&r.__esModule?r:{default:r},a=n(408);var u={debug:3,info:4,warn:5,error:6},l=function(){function e(t,n,r,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.wsAddr=t+"?app="+n+"&id="+r+"&v="+i,this.destroyed=!1;try{this._ws=this._init()}catch(e){console.error(e)}}return i(e,[{key:"_init",value:function(){var e={maxRetries:3,minReconnectionDelay:(0,a.randomNum)(5e3,15e3),maxReconnectionDelay:6e5,maxEnqueuedMessages:200};return new s.default(this.wsAddr,void 0,e)}},{key:"send",value:function(e,t){if(!this.destroyed){var n=u[e];this._ws.send(JSON.stringify({records:[{level:n,text:(0,a.getFormattedTime)()+": "+t}]}))}}},{key:"sendBatch",value:function(e){var t=[],n=!0,r=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var a=o.value;t.push({level:u[a.levelKey],text:a.message})}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}this._ws.send(JSON.stringify({records:t}))}},{key:"destroy",value:function(){this._ws&&(this._ws.close(1e3,"normal close"),this._ws=null,this.destroyed=!0)}}]),e}();t.default=l,e.exports=t.default},708:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r,i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(408),s=n(212),a=(r=s)&&r.__esModule?r:{default:r},u=n(406);var l={debug:0,info:1,warn:2,error:3,none:4},c=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.logLevel=t,this.onlineDebug=!1,this.logCache=[];try{console.debug=console.log}catch(e){}"debug"!==t&&"info"!==t||(this.logLevel="warn"),(0,u.getItem)("SW_DEBUG")&&(this.logLevel="debug"),!0===t?this.logLevel="warn":!1===t?this.logLevel="none":t in l||(this.logLevel="error"),this.resetLogger()}return i(e,[{key:"enableDebug",value:function(){var e=this;for(var t in this.onlineDebug=!0,l)this[t]=console[t];this._hookLogFunc((function(t,n){e.logUploader&&e.logUploader.send(t,n)}))}},{key:"enableReport",value:function(e){var t=this;this.reportUrl=e,this._hookLogFunc((function(e,n){t.reportUrl?(t.logCache.push({levelKey:e,message:(0,o.getFormattedTime)()+": "+n}),t.logCache.length>250&&t.logCache.shift()):t.reporter&&t.reporter.send(e,n)}))}},{key:"report",value:function(e,t,n,r){var i=this,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:5e3;e&&this.logCache.unshift({levelKey:"info",message:e}),this.reporter=new a.default(this.reportUrl,t,n,r),this.reporter._ws.addEventListener("open",(function(){i.reportUrl=void 0,i.reporter.sendBatch(i.logCache),setTimeout((function(){i.reporter.destroy(),i.reporter=null}),o)}),{once:!0})}},{key:"_hookLogFunc",value:function(e){var t=this,n=function(n){var r=t[n];t[n]=function(t){e(n,t),r(t)}};for(var r in l)n(r)}},{key:"setUploader",value:function(e){this.logUploader=e}},{key:"resetLogger",value:function(){for(var e in this.onlineDebug=!1,l)l[e]<l[this.logLevel]?this[e]=o.noop:this[e]=console[e]}},{key:"isDebugLevel",get:function(){return l[this.logLevel]<=2||this.onlineDebug}}]),e}();t.default=c,e.exports=t.default},431:(e,t,n)=>{var r;"function"==typeof Symbol&&Symbol.iterator;!function(i){function o(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function s(e,t,n,r,i,s){return o((a=o(o(t,e),o(r,s)))<<(u=i)|a>>>32-u,n);var a,u}function a(e,t,n,r,i,o,a){return s(t&n|~t&r,e,t,i,o,a)}function u(e,t,n,r,i,o,a){return s(t&r|n&~r,e,t,i,o,a)}function l(e,t,n,r,i,o,a){return s(t^n^r,e,t,i,o,a)}function c(e,t,n,r,i,o,a){return s(n^(t|~r),e,t,i,o,a)}function f(e,t){var n,r,i,s,f;e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;var d=1732584193,h=-271733879,g=-1732584194,p=271733878;for(n=0;n<e.length;n+=16)r=d,i=h,s=g,f=p,d=a(d,h,g,p,e[n],7,-680876936),p=a(p,d,h,g,e[n+1],12,-389564586),g=a(g,p,d,h,e[n+2],17,606105819),h=a(h,g,p,d,e[n+3],22,-1044525330),d=a(d,h,g,p,e[n+4],7,-176418897),p=a(p,d,h,g,e[n+5],12,1200080426),g=a(g,p,d,h,e[n+6],17,-1473231341),h=a(h,g,p,d,e[n+7],22,-45705983),d=a(d,h,g,p,e[n+8],7,1770035416),p=a(p,d,h,g,e[n+9],12,-1958414417),g=a(g,p,d,h,e[n+10],17,-42063),h=a(h,g,p,d,e[n+11],22,-1990404162),d=a(d,h,g,p,e[n+12],7,1804603682),p=a(p,d,h,g,e[n+13],12,-40341101),g=a(g,p,d,h,e[n+14],17,-1502002290),d=u(d,h=a(h,g,p,d,e[n+15],22,1236535329),g,p,e[n+1],5,-165796510),p=u(p,d,h,g,e[n+6],9,-1069501632),g=u(g,p,d,h,e[n+11],14,643717713),h=u(h,g,p,d,e[n],20,-373897302),d=u(d,h,g,p,e[n+5],5,-701558691),p=u(p,d,h,g,e[n+10],9,38016083),g=u(g,p,d,h,e[n+15],14,-660478335),h=u(h,g,p,d,e[n+4],20,-405537848),d=u(d,h,g,p,e[n+9],5,568446438),p=u(p,d,h,g,e[n+14],9,-1019803690),g=u(g,p,d,h,e[n+3],14,-187363961),h=u(h,g,p,d,e[n+8],20,1163531501),d=u(d,h,g,p,e[n+13],5,-1444681467),p=u(p,d,h,g,e[n+2],9,-51403784),g=u(g,p,d,h,e[n+7],14,1735328473),d=l(d,h=u(h,g,p,d,e[n+12],20,-1926607734),g,p,e[n+5],4,-378558),p=l(p,d,h,g,e[n+8],11,-2022574463),g=l(g,p,d,h,e[n+11],16,1839030562),h=l(h,g,p,d,e[n+14],23,-35309556),d=l(d,h,g,p,e[n+1],4,-1530992060),p=l(p,d,h,g,e[n+4],11,1272893353),g=l(g,p,d,h,e[n+7],16,-155497632),h=l(h,g,p,d,e[n+10],23,-1094730640),d=l(d,h,g,p,e[n+13],4,681279174),p=l(p,d,h,g,e[n],11,-358537222),g=l(g,p,d,h,e[n+3],16,-722521979),h=l(h,g,p,d,e[n+6],23,76029189),d=l(d,h,g,p,e[n+9],4,-640364487),p=l(p,d,h,g,e[n+12],11,-421815835),g=l(g,p,d,h,e[n+15],16,530742520),d=c(d,h=l(h,g,p,d,e[n+2],23,-995338651),g,p,e[n],6,-198630844),p=c(p,d,h,g,e[n+7],10,1126891415),g=c(g,p,d,h,e[n+14],15,-1416354905),h=c(h,g,p,d,e[n+5],21,-57434055),d=c(d,h,g,p,e[n+12],6,1700485571),p=c(p,d,h,g,e[n+3],10,-1894986606),g=c(g,p,d,h,e[n+10],15,-1051523),h=c(h,g,p,d,e[n+1],21,-2054922799),d=c(d,h,g,p,e[n+8],6,1873313359),p=c(p,d,h,g,e[n+15],10,-30611744),g=c(g,p,d,h,e[n+6],15,-1560198380),h=c(h,g,p,d,e[n+13],21,1309151649),d=c(d,h,g,p,e[n+4],6,-145523070),p=c(p,d,h,g,e[n+11],10,-1120210379),g=c(g,p,d,h,e[n+2],15,718787259),h=c(h,g,p,d,e[n+9],21,-343485551),d=o(d,r),h=o(h,i),g=o(g,s),p=o(p,f);return[d,h,g,p]}function d(e){var t,n="",r=32*e.length;for(t=0;t<r;t+=8)n+=String.fromCharCode(e[t>>5]>>>t%32&255);return n}function h(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t<n.length;t+=1)n[t]=0;var r=8*e.length;for(t=0;t<r;t+=8)n[t>>5]|=(255&e.charCodeAt(t/8))<<t%32;return n}function g(e){var t,n,r="0123456789abcdef",i="";for(n=0;n<e.length;n+=1)t=e.charCodeAt(n),i+=r.charAt(t>>>4&15)+r.charAt(15&t);return i}function p(e){return unescape(encodeURIComponent(e))}function v(e){return function(e){return d(f(h(e),8*e.length))}(p(e))}function y(e,t){return function(e,t){var n,r,i=h(e),o=[],s=[];for(o[15]=s[15]=void 0,i.length>16&&(i=f(i,8*e.length)),n=0;n<16;n+=1)o[n]=909522486^i[n],s[n]=1549556828^i[n];return r=f(o.concat(h(t)),512+8*t.length),d(f(s.concat(r),640))}(p(e),p(t))}function m(e,t,n){return t?n?y(t,e):g(y(t,e)):n?v(e):g(v(e))}void 0===(r=function(){return m}.call(t,n,t,e))||(e.exports=r)}()},524:e=>{var t={ANDROID_WEB:"android-web",IOS_WEB:"iOS-web",PC_NATIVE:"PC-native",PC_WEB:"PC-web"},n={getNetType:function(){var e=(new RegExp("nettype\\/(\\w*)").exec(r())||[,""])[1].toLowerCase();if(!e&&navigator.connection)switch(navigator.connection.type){case"ethernet":e="ethernet";break;case"cellular":e="cellular";break;default:e="wifi"}return e},getPlatform:function(){return n.isAndroid()?t.ANDROID_WEB:n.isIOS()||n.isIpad()?t.IOS_WEB:n.isElectron()?t.PC_NATIVE:t.PC_WEB},isX5:function(){return this.isAndroid()&&/\s(TBS|X5Core)\/[\w\.\-]+/i.test(r())},isPC:function(){return!o(i("os "))&&!o(i("android[/ ]"))},isIOS:function(){return o(i("os "))},isIpad:function(){return navigator.userAgent.match(/(iPad)/)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1},isAndroid:function(){return o(i("android[/ ]"))},isIOSSafari:function(){return this.isIOS()&&this.isSafari()},isIpadSafari:function(){return this.isIpad()&&this.isSafari()},isElectron:function(){return/electron/i.test(r())},isMobile:function(){return n.isAndroid()||n.isIOS()},isSafari:function(){return/^((?!chrome|android).)*safari/i.test(r())},isFirefox:function(){return/firefox/i.test(r())},isChrome:function(){return/chrome/i.test(r())},isLocalHost:function(){return"localhost"===location.hostname},device:t,getBrowser:function(){return n.isX5()?"X5":n.isChrome()?"Chrome":n.isFirefox()?"Firefox":n.isIpadSafari()?"iPad-Safari":n.isIOSSafari()?"iPhone-Safari":n.isSafari()?"Mac-Safari":"Unknown"}};function r(){return navigator.userAgent.toLowerCase()}function i(e){return""+(new RegExp(e+"(\\d+((\\.|_)\\d+)*)").exec(r())||[,0])[1]||void 0}function o(e){return parseFloat((e||"").replace(/\_/g,"."))||0}e.exports=n},429:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=void 0;for(var t in n)if(self[t]){e=n[t];break}return e};var n={DPlayer:"dplayer",CBPlayer:"cbplayer",jwplayer:"jwplayer",videojs:"videojs",Clappr:"clappr",ckplayer:"ckplayer",MediaElementPlayer:"mediaelement",MediaElement:"mediaelement",TcPlayer:"tcplayer",flowplayer:"flowplayer",Chimee:"chimee",ChimeePlayer:"chimee",HlsJsPlayer:"xgplayer",fluidPlayer:"fluidplayer",OpenPlayer:"openplayer",Plyr:"plyr",Playerjs:"playerjs",Aliplayer:"aliplayer",shaka:"shakaplayer",RadiantMP:"rmp",bitmovin:"bitmovin"};e.exports=t.default},824:e=>{var t=void 0;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind(globalThis):function(e){return(t||(t=Promise.resolve())).then(e).catch((function(e){return setTimeout((function(){throw e}),0)}))}},406:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=t.setItem=function(e,t){"object"===(void 0===t?"undefined":n(t))&&(t=JSON.stringify(t)),localStorage.setItem(e,t)};t.hasItemUnexpired=function(e){var t=localStorage.getItem(e);try{var n=JSON.parse(t);return!(!n.duration||!n.startTime)&&Date.now()-n.startTime<n.duration}catch(e){return!1}},t.getItem=function(e){var t=localStorage.getItem(e);try{var n=JSON.parse(t);return n.value?n.value:n}catch(e){return t}},t.removeItem=function(e){localStorage.removeItem(e)},t.removeAllItem=function(){localStorage.clear()},t.setItemWithExpiration=function(e,t,n){var i={value:t,duration:n,startTime:Date.now()};r(e,i)}},408:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.randomTargetPair=t.EmptyClass=t.DEFAULT_PACKET_SIZE=t.HEADER_SW_PROXY=void 0,t.noop=function(){return!0},t.getQueryParam=function(e){return new URL(location.href).searchParams.get(e)},t.getQueryParamOfUrl=function(e,t){return new URL(e).searchParams.get(t)},t.appendQueryParamOfUrl=l,t.removeUrlParameter=function(e,t){var n=new URL(e);return n.searchParams.delete(t),n.href},t.getAndRemoveQueryParamOfUrl=function(e,t){var n=new URL(e);if(n.searchParams.get(t))return n.searchParams.delete(t),n.href;return""},t.updateQueryStringParam=function(e,t,n){var r=new RegExp("([?&])"+t+"=.*?(&|$)","i"),i=-1!==e.indexOf("?")?"&":"?";return e.match(r)?e.replace(r,"$1"+t+"="+n+"$2"):e+i+t+"="+n},t.getCurrentTs=function(){return Date.parse(new Date)/1e3},t.randomNum=c,t.calCheckPeersDelay=function(e){return 0===e?a:.5*e+1.67},t.performRangeRequest=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2e3,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=new XMLHttpRequest,a=e;o&&(a=l(e,i.proxyIdentifier,!0));return t=t||"bytes=0-0",new Promise((function(i,o){s.open("GET",a,!0),s.responseType="arraybuffer",s.timeout=r,s.onreadystatechange=function(e){if(4===s.readyState){var n=s.status;206===n||200===n&&t?i(s.response):o("status "+n+" url "+a+" range "+t)}},s.onerror=function(e){o("request error")},s.ontimeout=function(e){o("timeout")},s.setRequestHeader("Range",t),n&&n(s,e),s.send()}))},t.navLang=function(){return"zh-CN"===(navigator.language||navigator.userLanguage)?"cn":"en"},t.dontWaitFor=function(e){e.then((function(){}))},t.timeout=function(e){return new Promise((function(t){return setTimeout(t,e)}))},t.timeoutReject=function(e,t){return new Promise((function(n,r){return setTimeout((function(){r(t)}),e)}))},t.getBrowserRTC=function(){if("undefined"==typeof self)return null;var e={RTCPeerConnection:self.RTCPeerConnection||self.mozRTCPeerConnection||self.webkitRTCPeerConnection,RTCSessionDescription:self.RTCSessionDescription||self.mozRTCSessionDescription||self.webkitRTCSessionDescription,RTCIceCandidate:self.RTCIceCandidate||self.mozRTCIceCandidate||self.webkitRTCIceCandidate};return e.RTCPeerConnection&&e.RTCPeerConnection.prototype?e:null},t.copyBuffer=function(e){var t=r.Buffer.from(e),n=new r.Buffer(e.byteLength);return t.copy(n),n},t.getMaxSequence=function(e){var t=e.split("\n"),n=0,r=0,i=!0,o=!1,s=void 0;try{for(var a,u=t[Symbol.iterator]();!(i=(a=u.next()).done);i=!0){var l=a.value,c=/^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(l);if(c&&c[1]){n=parseInt(c[1],10);break}}}catch(e){o=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(o)throw s}}var f=!0,d=!1,h=void 0;try{for(var g,p=t[Symbol.iterator]();!(f=(g=p.next()).done);f=!0){g.value.startsWith("#EXTINF")&&r++}}catch(e){d=!0,h=e}finally{try{!f&&p.return&&p.return()}finally{if(d)throw h}}return n+r-1},t.isHttps=function(){return location.protocol.startsWith("https")},t.isInteger=function(e){return"number"==typeof e&&e%1==0},t.getHomeUrl=function(){return self.atob("aHR0cHM6Ly9zd2FybWNsb3VkLm5ldA==")},t.splitBytes=function(e,t){for(var n=e.byteLength-t,i=[],o=t,s=Math.floor(n/u),a=n%u,l=0;l<s;l++){var c=(0,r.Buffer)(u);e.copy(c,0,o,o+u),i.push(c),o+=u}if(a>0){var f=(0,r.Buffer)(a);e.copy(f,0,o,o+a),i.push(f)}return i},t.getAvailableMemory=function(){var e=performance.memory;return e?e.jsHeapSizeLimit-e.usedJSHeapSize:-1},t.trimMap=function(e,t,n){if(e.size<=t)return;var r=[].concat(s(e.keys()));do{var i=r.shift();n&&n(e.get(i)),e.delete(i)}while(e.size>t)},t.trimSet=function(e,t){if(e.size<=t)return;var n=[].concat(s(e.values()));do{e.delete(n.shift())}while(e.size>t)},t.isArrayBuffer=function(e){return e instanceof ArrayBuffer&&0!==e.byteLength},t.getRangeFromRangeStr=function(e){if(!e)return{};var t=(e=e.substring(6)).split("-");if(2!==t.length)return{};var n=Number(t[0]),r=t[1]?Number(t[1]):-1;return{rangeStart:n,rangeEnd:r>=0?r+1:void 0}},t.compareVersions=function(e,t){for(var n=e.split("."),r=t.split("."),i=0;i<Math.max(n.length,r.length);i++){var o=parseInt(n[i]||0),s=parseInt(r[i]||0);if(o<s)return-1;if(o>s)return 1}return 0},t.swRegisterPromise=function(e){return new Promise((function(t,n){var r=e.installing||e.waiting||e.active,i=function n(){return"activated"===r.state&&(r.removeEventListener("statechange",n),t(e),!0)};i()||r.addEventListener("statechange",i)}))},t.isConstructor=function(e){try{new e}catch(e){return!1}return!0},t.proxyKeepalive=function(e){return new Promise((function(t,n){fetch(e+"/keepalive/").then((function(e){if(e.ok)return e.text();throw new Error("keepalive failed")})).then((function(e){if(""!==e.trim())throw new Error("not valid keepalive response");t()})).catch((function(e){n(e)}))}))},t.getNetUrl=function(e){return e.split("?")[0]},t.getUrlSuffix=function(e){var t=o.parseURL(e),n=t.path.substring(t.path.lastIndexOf(".")+1);n.endsWith("/")&&(n=n.substring(0,n.length-1));return n},t.getFormattedTime=function(){var e=new Date,t=e.getHours(),n=e.getMinutes(),r=e.getSeconds(),i=e.getMilliseconds();return t.toString().padStart(2,"0")+":"+n.toString().padStart(2,"0")+":"+r.toString().padStart(2,"0")+"."+i},t.sortPeersWithRegion=function(e,t){var n=[],r=new Set,i=!0,o=!1,s=void 0;try{for(var a,u=e[Symbol.iterator]();!(i=(a=u.next()).done);i=!0){var l=a.value;r.has(l.id)||(r.add(l.id),n.push(l))}}catch(e){o=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(o)throw s}}var c=t.asn,f=t.country;if(!c||!f||n.length<2)return n;var d=n.filter((function(e){return!e.asn&&!e.country})),h=n.filter((function(e){return e.country===f&&e.asn!==c})),g=n.filter((function(e){return e.asn===c&&e.country===f})),p=n.filter((function(e){return!d.includes(e)&&!g.includes(e)&&!h.includes(e)}));return g.concat(h).concat(d).concat(p)},t.isFunction=function(e){return e&&"function"==typeof e},t.streamFromUpstream=function(e,t,n,r,i,o){e.sendPartialBuffer(n,r,{from:i,incompletes:o}),r.length<n.attachments?function(e,t,n){e.addStreamListener(n,t.remotePeerId,(function(e,n,r,i,o){r?t.sendMsgPieceAbort(i,n,!0):t.uploading&&t.send(i),o&&(t.uploading=!1)}))}(t,e,!!n.reverse):e.uploading=!1},t.getBestTargetPair=function(e,t,n){if(1===e.length)return t.length>=1&&n.length>=1?t[0].weight>n[0].weight?[t[0],e[0]]:[e[0],n[0]]:t.length>=1?[t[0],e[0]]:n.length>=1?[e[0],n[0]]:f(e[0]);return[t.length>=1?t[0]:null,n.length>=1?n[0]:null]};var r=n(921),i=n(117),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(299));function s(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}t.HEADER_SW_PROXY="__sw_proxy__";var a=3,u=t.DEFAULT_PACKET_SIZE=64e3;function l(e,t,n){var r=new URL(e);return r.searchParams.append(t,n),r.href}function c(e,t){return parseInt(Math.random()*(t-e+1)+e,10)}t.EmptyClass=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)};var f=t.randomTargetPair=function(e){return 0===c(0,1)?[null,e]:[e,null]}},56:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=a(n(696)),o=n(408),s=a(n(569));function a(e){return e&&e.__esModule?e:{default:e}}var u=function(){function e(t,n,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"main";!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.logger=t,this.config=n,this.wsAddr=r,this.serverVersion=0,this.pingInterval=95e3,this.name=i,this.normalClosed=!1,this.lastSendTs=performance.now(),this.pollingClient=new s.default(t,r);try{this._ws=this._init()}catch(e){t.error(e),this._startPolling()}}return r(e,[{key:"_init",value:function(){var e=this,t={maxRetries:this.config.wsMaxRetries,minReconnectionDelay:(0,o.randomNum)(1e4,6e4),maxReconnectionDelay:6e5,maxEnqueuedMessages:20,connectionTimeout:7e3},n=new i.default(this.wsAddr,void 0,t);return n.addEventListener("open",(function(){e.logger.info("signal "+e.name+" "+e.wsAddr+" connection opened"),e.normalClosed=!1,e.pollingClient.connected?e.pollingClient.close():e.onopen&&e.onopen(),e._startPing(e.pingInterval)})),n.push=n.send,n.send=function(t){e.lastSendTs=performance.now();var r=JSON.stringify(t);n.push(r)},n.addEventListener("message",(function(t){var n=t.data,r=JSON.parse(n),i=r.action;if("pong"!==i){if("ver"!==i)return"close"===i?(e.logger.warn("server close signal "+e.name+" reason "+r.reason),void e.close()):void(e.onmessage&&e.onmessage(r,e.name));e.serverVersion=r.ver}else clearTimeout(e.pongTimer)})),n.addEventListener("close",(function(t){e.logger.warn("signal "+e.name+" "+e.wsAddr+" closed "+t.code+" "+t.reason),t.code>=5e3||t.code<4e3?(e.onclose&&e.onclose(),e._stopPing()):e.close()})),n.addEventListener("error",(function(t){e._stopPing(),e.onerror&&e.onerror(t),e._startPolling()})),n}},{key:"_startPolling",value:function(){this.pollingClient.connected||(this.logger.info("start polling"),this.pollingClient.start(),this._setupPolling(this.pollingClient))}},{key:"sendSignal",value:function(e,t){var n={action:"signal",to_peer_id:e,data:t};this._send(n)}},{key:"sendSignalBatch",value:function(e,t){if(this.batchSupported&&t.length>1)this._send({action:"signals",to_peer_id:e,data:t});else{var n=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var a=o.value;this.sendSignal(e,a)}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}}}},{key:"sendReject",value:function(e,t,n){var r={action:"reject",to_peer_id:e,reason:t,fatal:n};this._send(r)}},{key:"_send",value:function(e){this.pollingClient.connected?this.pollingClient.send(e):this._ws&&this._ws.send(e)}},{key:"_startPing",value:function(e){var t=this;this.connected&&(this.pingTimer=setTimeout((function(){var e=95e3-(performance.now()-t.lastSendTs);if(e>=0)return t._startPing(e);t._ws&&t._ws.push(JSON.stringify({action:"ping"})),t.serverVersion>=22&&t._waitForPong(),t._startPing(t.pingInterval)}),e))}},{key:"_waitForPong",value:function(){var e=this;this.pongTimer=setTimeout((function(){e.logger.warn("signal "+e.name+" wait for pong timeout, reconnect"),e.close(),e.reconnect()}),15e3)}},{key:"_stopPing",value:function(){clearTimeout(this.pingTimer),clearTimeout(this.pongTimer)}},{key:"close",value:function(){var e=this;this.logger.info("close signal "+this.name),this._stopPing(),e._ws&&e._ws.close(1e3,"normal close"),this.pollingClient.close(),this.normalClosed=!0}},{key:"reconnect",value:function(){this._ws&&(this.logger.info("reconnect signal "+this.name),this._ws.reconnect())}},{key:"destroy",value:function(){this.close(),this._ws=null,this.pollingClient.destroy()}},{key:"_setupPolling",value:function(e){var t=this;e.onopen=function(e){e&&(t.serverVersion=e),t.logger.info("polling opened"),t.onopen&&t.onopen()},e.onerror=function(e){t._connected||t.onerror&&t.onerror(e)},e.onclose=function(){t._connected||t.onclose&&t.onclose()},e.onmessage=function(e){if(t.onmessage){var n=!0,r=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var a=o.value;t.onmessage(a,t.name)}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}}}}},{key:"batchSupported",get:function(){return this.serverVersion>=50}},{key:"connected",get:function(){return!!this.pollingClient.connected||this._connected}},{key:"_connected",get:function(){return!!this._ws&&this._ws.readyState===i.default.OPEN}}]),e}();t.default=u,e.exports=t.default},680:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r,i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=n(183);var s=i({},((r=o)&&r.__esModule?r:{default:r}).default,{p2pBlackList:["aac","mp3","vtt","webvtt","key"],scheduledBySegId:!1,simultaneousTargetPeers:2,maxSubscribeLevel:3,live:!0,waitForPeer:!1,waitForPeerTimeout:4.5,httpLoadTime:2.5,sharePlaylist:!1,useHttpRange:!0});s.validateSegment=function(e,t){return!0},t.default=s,e.exports=t.default},327:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r,i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=n(816),s=(r=o)&&r.__esModule?r:{default:r};t.default=i({},s.default,{SCH_DCHAVE:"SCH_DCHAVE",DC_SUBSCRIBE:"SUBSCRIBE",DC_UNSUBSCRIBE:"UNSUBSCRIBE",DC_SUBSCRIBE_ACCEPT:"SUBSCRIBE_ACCEPT",DC_SUBSCRIBE_REJECT:"SUBSCRIBE_REJECT",DC_SUBSCRIBE_LEVEL:"SUBSCRIBE_LEVEL"}),e.exports=t.default},788:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=f(n(648)),o=n(389),s=f(n(308)),a=f(n(91)),u=f(n(824)),l=f(n(327)),c=n(408);function f(e){return e&&e.__esModule?e:{default:e}}var d=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));n.logger=e.logger;var r=window.__p2p_loader__,i=r.scheduler,s=r.fetcher,u=r.p2pBlackList,l=r.isHlsV0;return n.isHlsV0=l,n.bufMgr=e.bufMgr,n.xhrLoader=new e.loader(e),n.p2pEnabled=e.p2pEnabled,n.isLive=e.live,n.scheduler=i,n.fetcher=s,n.segmentId=e.segmentId,n.blockTypes=u,n.forbidden=s.forbidden,n.multiBitrate=n.scheduler instanceof a.default,n.stats=n.xhrLoader.stats||(0,o.createLoadStats)(),n.waitTimer=null,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"destroy",value:function(){this.xhrLoader.destroy()}},{key:"abort",value:function(){this.xhrLoader.abort()}},{key:"load",value:function(e,t,n){var r=this,i=this.logger,s=this.scheduler,a=e.frag;this.isHlsV0||(a.stats=this.stats);var f=e.frag.segId;if(!f){var d=void 0;e.rangeEnd&&(d="bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),f=e.frag.segId=this.segmentId(String(a.level),a.sn,a.url,d)}if(!a.url||(0,o.isBlockType)(a.url,this.blockTypes))return i.info("HTTP load blockType "+a.url),e.frag.loadByHTTP=!0,this.xhrLoader.load(e,t,n);if(!this.forbidden)if(this.fetcher.increMediaRequests(),t.maxRetry=2,this.p2pEnabled&&this.bufMgr.hasSegOfId(f)){i.info("bufMgr found seg sn "+a.sn+" segId "+f);var h=this.bufMgr.getSegById(f),g=(0,c.copyBuffer)(h.data),p=new Uint8Array(g).buffer,v={url:e.url,data:p};(0,o.updateLoadStats)(this.stats,h.size),a.loaded=h.size,a.loadByP2P=!0,e.frag.fromPeerId=h.fromPeerId,(0,u.default)((function(){!r.isHlsV0&&n.onProgress&&n.onProgress(r.stats,e,v.data),n.onSuccess(v,r.stats,e)}))}else if(this.p2pEnabled&&s.hasAndSetTargetPeer(this.multiBitrate?a.segId:a.sn))this.loadFragByP2p(e,t,n,f);else{var y=s.mBufferedDuration;if(i.info("fragLoader load "+f+" at "+a.sn+" level "+a.level+" buffered "+y),this.isLive&&s.hasIdlePeers&&y>6.5&&s.shouldWaitForNextSeg()){var m=y-6.5;m>5.5&&(m=5.5);var _=function i(o){f===o&&(s.off(l.default.SCH_DCHAVE,i),clearTimeout(r.waitTimer),s.hasAndSetTargetPeer(r.multiBitrate?a.segId:a.sn)?r.loadFragByP2p(e,t,n,f):r.loadFragByHttp(e,t,n,f))};i.info("wait peer have for "+m+"s"),s.on(l.default.SCH_DCHAVE,_),this.waitTimer=setTimeout((function(){s.notifyAllPeers(a.sn,f),r.loadFragByHttp(e,t,n,f),s.off(l.default.SCH_DCHAVE,_)}),1e3*m)}else this.loadFragByHttp(e,t,n,f)}}},{key:"loadFragByHttp",value:function(e,t,n,r){var i=this;this.scheduler.isReceiver=!1;var o=this.logger,a=e.frag;if(this.isHlsV0){var u=n.onSuccess;n.onSuccess=function(e,t,n){if(!i.bufMgr.hasSegOfId(r)){var l=(0,c.copyBuffer)(e.data),f=new s.default(a.sn,r,l,i.fetcher.peerId);i.bufMgr.putSeg(f)}i.fetcher.reportFlow(t.total);var d=t.tload-t.trequest;o.info("HTTP loaded "+r+" time "+d+"ms"),u(e,t,n)}}else if(n.onProgress){var l=n.onProgress;n.onProgress=function(e,t,n){if(!i.bufMgr.hasSegOfId(r)){var u=(0,c.copyBuffer)(n),f=new s.default(a.sn,r,u,i.fetcher.peerId);i.bufMgr.putSeg(f)}i.fetcher.reportFlow(e.total),a.loaded=e.total;var d=e.loading.end-e.loading.start;o.info("HTTP loaded "+r+" time "+d+"ms"),l(e,t,n)}}e.frag.loadByHTTP=!0,this.xhrLoader.load(e,t,n)}},{key:"loadFragByP2p",value:function(e,t,n,r){var i=this,o=this.logger,a=e.frag;this.scheduler.load(e,t,n);var u=n.onSuccess,l=n.onTimeout;n.onTimeout=function(e,s){o.warn("P2P timeout switched to HTTP load "+a.relurl+" at "+a.sn),n.onSuccess=u,i.loadFragByHttp(s,t,n,r),n.onTimeout=l},n.onSuccess=function(e,t,l){if(!i.bufMgr.hasSegOfId(r)){var f=(0,c.copyBuffer)(e.data),d=new s.default(a.sn,r,f,a.fromPeerId||i.fetcher.peerId);i.bufMgr.putSeg(d)}a.loadByP2P||i.fetcher.reportFlow(t.total),a.loaded=t.loaded,o.info((a.loadByP2P?"P2P":"HTTP")+" loaded segment id "+r),!i.isHlsV0&&n.onProgress&&n.onProgress(t,l,e.data),u(e,t,l)}}}]),t}(i.default);t.default=d,e.exports=t.default},91:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=function e(t,n,r){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,n);if(void 0===i){var o=Object.getPrototypeOf(t);return null===o?void 0:e(o,n,r)}if("value"in i)return i.value;var s=i.get;return void 0!==s?s.call(r):void 0},o=c(n(308)),s=c(n(327)),a=c(n(461)),u=n(389),l=n(408);function c(e){return e&&e.__esModule?e:{default:e}}function f(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var d=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return r.logger.info("use IdScheduler"),r.sequential=!1,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"load",value:function(e,t,n){this.isReceiver=!0;var r=this.logger;this.context=e;var i=e.frag,o=i.segId,s=i.sn;this.callbacks=n,this.stats=(0,u.createLoadStats)(),this.criticalSeg={sn:s,segId:o,targetPeers:[].concat(f(this.targetPeers.map((function(e){return e.remotePeerId}))))};var a=this.mBufferedDuration-this.config.httpLoadTime;a>this.dcDownloadTimeout&&(a=this.dcDownloadTimeout);var l=!0,c=!1,d=void 0;try{for(var h,g=this.targetPeers[Symbol.iterator]();!(l=(h=g.next()).done);l=!0){var p=h.value;p.downloading||(r.info("request criticalSeg segId "+o+" at "+s+" from "+p.remotePeerId+" timeout "+a),p.requestDataById(o,s,!0)),this.requestingMap.set(o,p.remotePeerId)}}catch(e){c=!0,d=e}finally{try{!l&&g.return&&g.return()}finally{if(c)throw d}}this.criticaltimeouter=setTimeout(this.criticaltimeout.bind(this,!0),1e3*a),this.targetPeers=[]}},{key:"onBufferManagerLost",value:function(e,t,n){this.bitset.delete(t),this.bitCounts.delete(t)}},{key:"destroy",value:function(){i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this),this.logger.warn("destroy IdScheduler")}},{key:"_setupDC",value:function(e){var n=this;i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"_setupDC",this).call(this,e);var r=this.logger,a=this.config;e.on(s.default.DC_HAVE,(function(t){if(t.seg_id&&e.bitset){var r=t.seg_id;e.bitset.has(r)||(e.bitset.add(r),n.bitset.has(r)||n._increBitCounts(r)),a.live&&(0,l.trimSet)(e.bitset,20),n.emit(s.default.SCH_DCHAVE,t.seg_id)}})).on(s.default.DC_LOST,(function(t){if(t.seg_id&&e.bitset){var r=t.seg_id;e.bitset.has(r)&&(e.bitset.delete(r),n._decreBitCounts(r))}})).on(s.default.DC_PIECE,(function(e){e.ext&&e.ext.incompletes>=2||n.notifyAllPeers(e.sn,e.seg_id)})).on(s.default.DC_PIECE_NOT_FOUND,(function(t){var i=t.seg_id;n.criticalSeg&&n.criticalSeg.segId===i&&(1===n.criticalSeg.targetPeers.length?(clearTimeout(n.criticaltimeouter),r.info("DC_PIECE_NOT_FOUND"),n.criticalSeg=null,n.callbacks.onTimeout(n.stats,n.context,null)):n.criticalSeg.targetPeers=n.criticalSeg.targetPeers.filter((function(t){return t!==e.remotePeerId}))),e.bitset.delete(i),n.requestingMap.delete(i),n._decreBitCounts(i),e.checkIfNeedChoke(!0)})).on(s.default.DC_RESPONSE,(function(s,a){var u=s.segId,l=s.sn,c=s.data,f=n.criticalSeg&&n.criticalSeg.segId===u;if(n.config.validateSegment(u,c))if(n.notifyAllPeers(l,u),i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"reportDCTraffic",n).call(n,u,s.size,a),f){r.info("receive criticalSeg seg_id "+u),clearTimeout(n.criticaltimeouter),n.criticaltimeouter=null,e.miss=0;var d=n.stats;d.tfirst=d.loading.first=Math.max(d.trequest,performance.now()),d.tload=d.loading.end=d.tfirst,d.loaded=d.total=c.byteLength,n.criticalSeg=null;var h=n.context.frag;h.fromPeerId=e.remotePeerId,h.loadByP2P=!0,n.callbacks.onSuccess({data:c},d,n.context)}else{if(n.bitset.has(u))return;var g=new o.default(l,u,c,e.remotePeerId);n.bufMgr.putSeg(g),n.updateLoaded(u)}else r.warn("segment "+u+" validate failed"),f&&(clearTimeout(n.criticaltimeouter),n.criticaltimeout());n.requestingMap.delete(u)})).on(s.default.DC_REQUEST,(function(t){n.isUploader=!0;var i=t.seg_id,o=null;if(n.requestingMap.has(i)&&(o=n.getPeerLoadedMore(i)),n.bufMgr.hasSegOfId(i)){r.info("found seg from bufMgr");var a=n.bufMgr.getSegById(i);e.sendBuffer(a.sn,a.segId,a.data)}else o&&o.downloading&&o.pieceMsg.seg_id===i?(r.info("target had partial buffer, wait for remain"),e.sendPartialBuffer(o.pieceMsg,o.bufArr,{from:"WaitForPartial",incompletes:1}),function(t,n){t.addStreamListener(!1,n.remotePeerId,(function(t,r,i,o,s){i?n.sendMsgPieceAbort(o,r,!0):n.send(o),s&&(e.uploading=!1)}))}(o,e)):(r.info("peer request "+i+" wait for seg"),n.bufMgr.once(""+s.default.BM_ADDED_SEG_+i,(function(n){n?(r.info("peer request notify seg "+i),e.sendBuffer(n.sn,n.segId,n.data)):e.sendPieceNotFound(t.sn,i)})))}))}},{key:"_setupEngine",value:function(){var e=this;this.engine.on(s.default.FRAG_LOADING,(function(t,n,r){e.loadingSegId=n,e.isHlsV0&&r&&e.notifyAllPeers(t,n)})).on(s.default.FRAG_LOADED,(function(t,n,r,i,o){n&&(!e.isHlsV0&&o&&e.notifyAllPeers(t,n),e.updateLoaded(n))}))}}]),t}(a.default);t.default=d,e.exports=t.default},461:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=function e(t,n,r){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,n);if(void 0===i){var o=Object.getPrototypeOf(t);return null===o?void 0:e(o,n,r)}if("value"in i)return i.value;var s=i.get;return void 0!==s?s.call(r):void 0},o=l(n(99)),s=l(n(327)),a=n(408),u=n(921);function l(e){return e&&e.__esModule?e:{default:e}}var c=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return r.targetPeers=[],r.mBufferedDuration=0,r.loadingSegId="",r.allowP2pLimit=n.httpLoadTime+2,r.playlistInfo=new Map,r.subscribeMode=!1,r.subscribeLevel=0,r.subscribers=[],r.subscribeParent=null,r.subscriberEdgeSN=0,r.isUploader=!1,r.isReceiver=!1,r.isHlsV0=n.isHlsV0,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"hasAndSetTargetPeer",value:function(e){var t=this.logger,n=this.config;if(this.criticalSeg&&t.warn("scheduler still loading "+JSON.stringify(this.criticalSeg)),this.waitForPeer){if(this.peersHas(e)){var r=!0,i=!1,o=void 0;try{for(var s,a=this.peerManager.getAvailablePeers()[Symbol.iterator]();!(r=(s=a.next()).done);r=!0){var u=s.value;if(u.bitset.has(e))return t.info("found "+e+" from peer "+u.remotePeerId),this.targetPeers.push(u),!0}}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}}return 0!==this.waitingPeers&&this.waitingPeers===this.peersNum?(t.info("all connected no need wait"),!1):(t.warn("wait for peer to load "+e),this.requestingMap.setPeerUnknown(e),!0)}var l=this.bufferedDuration;if(this.subscribeMode){var c=this.subscribeParent,f=c.remotePeerId;return c.bitset.has(e)?c.downloading?this._searchAvailablePeers(e):(t.info("found "+e+" from parent "+f),this.targetPeers.push(this.subscribeParent),!0):!(l<=3.5)&&(t.info("under subscribe to "+f),this.requestingMap.set(e,f),!0)}if(l<=this.allowP2pLimit)return!1;if(this.requestingMap.has(e)){var d=this.requestingMap.getOnePeerId(e),h=this.peerManager.getPeer(d);return h?!(performance.now()-h.timeSendRequest>3e3&&!h.shouldWaitForRemain(1e3*(l-n.httpLoadTime)))||!!this._searchAvailablePeers(e,1)&&(t.warn(d+" prefetch timeout at "+e),this.targetPeers.push(h),this.requestingMap.delete(e),!0):this._searchAvailablePeers(e)}return this._searchAvailablePeers(e)}},{key:"_searchAvailablePeers",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;if(!this.hasIdlePeers||!this.peersHas(e))return!1;var n=0,r=!0,i=!1,o=void 0;try{for(var s,a=this.peerManager.getPeersOrderByWeight()[Symbol.iterator]();!(r=(s=a.next()).done);r=!0){var u=s.value;if(u.bitset.has(e)&&(this.logger.info("found "+e+" from peer "+u.remotePeerId),this.targetPeers.push(u),++n===t||n===this.config.simultaneousTargetPeers))return!0}}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return this.targetPeers.length>0}},{key:"notifyAllPeers",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(!this.downloadOnly){var r=this.config.live,i=t;if(this.sequential&&(i=e),!this.bitset.has(i)){var o=!0,s=!1,u=void 0;try{for(var l,c=this.getPeers()[Symbol.iterator]();!(o=(l=c.next()).done);o=!0){var f=l.value;if(!f.notifySet.has(i)&&!f.bitset.has(i)){if(r&&(this.subscribers.includes(f.remotePeerId)||this.subscribeParent&&f.remotePeerId===this.subscribeParent.remotePeerId))continue;if(!n.includes(f.remotePeerId)&&(f.sendMsgHave(e,t),f.notifySet.add(i),r)){if(this.sequential){var d=e-20;d>0&&f.notifySet.delete(d)}else(0,a.trimSet)(f.notifySet,20)}}}}catch(e){s=!0,u=e}finally{try{!o&&c.return&&c.return()}finally{if(s)throw u}}}}}},{key:"updateLoaded",value:function(e){this.bitset.has(e)||(this.bitset.add(e),this.bitCounts.has(e)&&this.bitCounts.delete(e))}},{key:"deletePeer",value:function(e){var n=this;this.peerManager.hasPeer(e.remotePeerId)&&e.bitset.forEach((function(e){n._decreBitCounts(e)})),this.cleanRequestingMap(e.remotePeerId),i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"deletePeer",this).call(this,e)}},{key:"_setupDC",value:function(e){var n=this;i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"_setupDC",this).call(this,e);this.logger;e.on(s.default.DC_PIECE,(function(e){n.criticalSeg&&n.criticalSeg.segId===e.seg_id&&(n.stats.tfirst=Math.max(performance.now(),n.stats.trequest))})).on(s.default.DC_PIECE_DATA,(function(t,r,i,o,s){1===o&&e.pieceMsg.ext&&e.pieceMsg.ext.incompletes>=2&&n.notifyAllPeers(t,r)}))}},{key:"loadRemainBufferByHttp",value:function(e,n){var r=this,o=this.context.frag.url,s=this.config.xhrSetup,l=u.Buffer.concat(e.bufArr);i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"reportDCTraffic",this).call(this,n,l.byteLength,0);var c="bytes=";if(this.context.rangeEnd){var f=Number(this.context.rangeStart),d=Number(this.context.rangeEnd);c=""+c+(f+l.byteLength)+"-"+(d-1)}else c=""+c+l.byteLength+"-";this.logger.info("continue download from "+o+" range: "+c),(0,a.performRangeRequest)(o,c,s).then((function(t){var n=u.Buffer.from(t);r.engine.fetcher.reportFlow(n.byteLength);var i=u.Buffer.concat([l,n]),o=new Uint8Array(i).buffer,s=r.stats;s.tfirst=s.loading.first=Math.max(s.trequest,performance.now()),s.tload=s.loading.end=s.tfirst,s.loaded=s.total=i.byteLength;var a=r.context.frag;a.fromPeerId=e.remotePeerId,a.loadByP2P=!0,r.callbacks.onSuccess({data:o},s,r.context)})).catch((function(e){r.logger.error("http partial download error "+e),r.callbacks.onTimeout(r.stats,r.context,null)}))}},{key:"broadcastPlaylist",value:function(e,t){if(this.config.live){var n=(0,a.getMaxSequence)(t),r=!0,i=!1,o=void 0;try{for(var s,u=this.getPeers()[Symbol.iterator]();!(r=(s=u.next()).done);r=!0){s.value.sendMsgPlaylist(e,t,n)}}catch(e){i=!0,o=e}finally{try{!r&&u.return&&u.return()}finally{if(i)throw o}}this.playlistInfo.set(e,{seq:n})}}},{key:"getPlaylistFromPeer",value:function(e){if(!this.config.live)return null;var t=this.playlistInfo.get(e).seq,n=!0,r=!1,i=void 0;try{for(var o,s=this.getPeers()[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var a=o.value.getLatestPlaylist(e,t);if(a)return a}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}return null}},{key:"_handlePieceAborted",value:function(e){this.criticalSeg&&this.criticalSeg.targetPeers.includes(e)?1===this.criticalSeg.targetPeers.length?(clearTimeout(this.criticaltimeouter),this.criticaltimeout(),this.cleanRequestingMap(e)):this.criticalSeg.targetPeers=this.criticalSeg.targetPeers.filter((function(t){return t!==e})):this.cleanRequestingMap(e)}},{key:"criticaltimeout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.logger,n=this.config;if(this.waitForPeer&&(this.waitForPeer=!1),this.criticalSeg){var r=this.criticalSeg.sn,i=this.criticalSeg.segId;this.sequential&&(i=r),t.info("critical request sn "+i+" timeout");var o=void 0;this.subscribeMode?o=this.subscribeParent:this.requestingMap.has(i)&&(o=this.getPeerLoadedMore(i));var s=!1;if(o&&(s=!o.loadtimeout()),s)t.info("p2p download completed");else{var a=1e3*n.httpLoadTime-500;if(e&&o&&o.shouldWaitForRemain(a))return t.info("wait for peer load remain of "+r),void(this.criticaltimeouter=setTimeout(this.criticaltimeout.bind(this),a+200));n.httpRangeSupported&&o&&o.bufArr.length>0&&o.segId===this.criticalSeg.segId?this.loadRemainBufferByHttp(o,i):this.callbacks.onTimeout(this.stats,this.context,null),this.requestingMap.delete(i),n.live&&o&&o.resetContinuousHits(),this.subscribeParent&&this._unsubscribe("subscribe timeout for "+r),this.criticalSeg=null,this.criticaltimeouter=null}}}},{key:"shouldWaitForNextSeg",value:function(){var e=void 0;return e=!(this.subscribers.length>0||this.isUploader)&&(!!this.isReceiver||(0,a.randomNum)(0,100)>20),this.isReceiver=this.isUploader=!1,e}},{key:"getStatsForPeer",value:function(){var e=this.subscribers,t=e.length>0?e.length:void 0,n=this.engine.currentLevel,r=this.engine.media.currentTime;return{children:t,pos:this.config.live?void 0:Math.round(r),level:n}}},{key:"bufferedDuration",get:function(){for(var e=this.engine.media,t=0,n=e.currentTime,r=e.buffered,i=r.length-1;i>=0;i--)if(n>=r.start(i)&&n<=r.end(i)){t=r.end(i)-n;break}return this.logger.info("bufferedDuration "+t),this.mBufferedDuration=t,t>0?t:0}}]),t}(o.default);t.default=c,e.exports=t.default},39:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=function e(t,n,r){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,n);if(void 0===i){var o=Object.getPrototypeOf(t);return null===o?void 0:e(o,n,r)}if("value"in i)return i.value;var s=i.get;return void 0!==s?s.call(r):void 0},o=f(n(308)),s=f(n(327)),a=f(n(461)),u=f(n(140)),l=n(389),c=f(n(824));function f(e){return e&&e.__esModule?e:{default:e}}function d(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var h=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return r.logger.info("use SnScheduler"),r.sequential=!0,r.currPlaySN=0,r.currLostSN=-1,r.nextLostSN=-1,r.config.live?r.maxPrefetchCount=3:(r.maxPrefetchCount=150,r.startCheckPeersTimer()),r.waitForPeer=n.waitForPeer||!1,r.waitingPeers=0,r.waitForPeer&&(r.waitForPeerTimer=setTimeout((function(){r.waitForPeer=!1}),1e3*(n.waitForPeerTimeout+2))),r.estimatedSize=1e6,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"notifySubscribeLevel",value:function(){var e=this;this.subscribers.forEach((function(t){var n=e.peerManager.getPeer(t);n&&n.sendSubscribeLevel(e.subscribeLevel)}))}},{key:"updatePlaySN",value:function(e){this.currPlaySN=e}},{key:"checkPeers",value:function(){var e=this.logger,t=this.config,n=t.live;if(!this.waitForPeer&&0!==this.bitCounts.size&&!(!n&&this.nextLostSN>=0&&this.nextLostSN>=this.currPlaySN-10)&&this.hasPeers)if(this.mBufferedDuration<this.allowP2pLimit)e.info("low buffer time, skip prefetch");else{var r=this.peerManager.getPeersOrderByWeight();if(0!==r.length){var i=[],o=t.prefetchNum,s=t.endSN,a=t.startSN;n&&(o=1);var u=0,l=n?this.loadingSN+1:this.loadingSN+2;if(!n)if(this.loadingSN>=s&&!this.bufMgr.overflowed)l=a;else{var c=Math.min.apply(Math,d(r.filter((function(e){return e.endSN>=l})).map((function(e){return e?e.startSN:1/0}))));if(!isFinite(c))return;l<c&&(l=c)}for(;i.length<o&&i.length<r.length&&u<this.maxPrefetchCount;){if(!n&&l>s)return;if(this.bitset.has(l))l++;else{if(l!==this.loadingSN&&this.bitCounts.has(l)&&!this.requestingMap.has(l)){var f=!0,h=!1,g=void 0;try{for(var p,v=r[Symbol.iterator]();!(f=(p=v.next()).done);f=!0){var y=p.value;if(!i.includes(y)&&y.bitset.has(l)){y.requestDataBySN(l,!1),e.info("request prefetch "+l+" from peer "+y.remotePeerId+" downloadNum "+y.downloadNum),i.push(y),this.requestingMap.set(l,y.remotePeerId);break}}}catch(e){h=!0,g=e}finally{try{!f&&v.return&&v.return()}finally{if(h)throw g}}}u++,l++}}this.loadedPeerNum=i.length}}}},{key:"addPeer",value:function(e){if(i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"addPeer",this).call(this,e),this.waitForPeer&&this.criticalSeg){var n=this.criticalSeg.segId,r=this.criticalSeg.sn,o=e.remotePeerId,s=this.requestingMap;s.checkIfPeerUnknown(r)&&(e.bitset.has(r)?(this.logger.info("found initial seg "+r+" from peer "+o),s.set(r,o),e.requestDataById(n,r,!0)):this.waitingPeers===this.peersNum&&this.criticaltimeout())}}},{key:"deletePeer",value:function(e){if(i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"deletePeer",this).call(this,e),this.subscribeMode&&e.remotePeerId===this.subscribeParent.remotePeerId){var n="subscribe parent is leaved";this.logger.warn(n),this._unsubscribe(n),this.criticaltimeout()}}},{key:"load",value:function(e,t,n){this.isReceiver=!0;var r=this.logger,i=this.config;this.context=e;var o=e.frag,s=o.segId,a=o.sn;this.callbacks=n,this.stats=(0,l.createLoadStats)(),this.criticalSeg={sn:a,segId:s},this.targetPeers.length>0?this.criticalSeg.targetPeers=[].concat(d(this.targetPeers.map((function(e){return e.remotePeerId})))):this.criticalSeg.targetPeers=[].concat(d(this.requestingMap.getAllPeerIds(a)));var u=this.mBufferedDuration-i.httpLoadTime;if(this.waitForPeer?u=i.waitForPeerTimeout:u>this.dcDownloadTimeout&&(u=this.dcDownloadTimeout),this.requestingMap.has(a))r.info("wait for criticalSeg segId "+s+" at "+a+" timeout "+u);else{var c=!0,f=!1,h=void 0;try{for(var g,p=this.targetPeers[Symbol.iterator]();!(c=(g=p.next()).done);c=!0){var v=g.value;v.downloading||(r.info("request criticalSeg segId "+s+" at "+a+" from "+v.remotePeerId+" timeout "+u),v.requestDataById(s,a,!0)),this.requestingMap.set(a,v.remotePeerId)}}catch(e){f=!0,h=e}finally{try{!c&&p.return&&p.return()}finally{if(f)throw h}}}this.criticaltimeouter=setTimeout(this.criticaltimeout.bind(this,!0),1e3*u),this.targetPeers=[]}},{key:"onBufferManagerSegAdded",value:function(e){this._sendSegmentToSubscribers(e)}},{key:"onBufferManagerLost",value:function(e,t,n){this.currLostSN=e,n&&(this.nextLostSN=n),this.bitset.delete(e),this.bitCounts.delete(e)}},{key:"destroy",value:function(){i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this),clearTimeout(this.waitForPeerTimer),this.logger.warn("destroy SnScheduler")}},{key:"_setupDC",value:function(e){var n=this;i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"_setupDC",this).call(this,e);var r=this.logger,a=this.config;e.on(s.default.DC_HAVE,(function(t){if(t.sn&&e.bitset&&t.sn&&t.sn>=0){var r=t.sn;if(e.bitset.has(r)||(e.bitset.add(r),n.bitset.has(r)||n._increBitCounts(r)),a.live){var i=r-20;i>0&&e.bitset.delete(i)}n.emit(s.default.SCH_DCHAVE,t.seg_id),(0,c.default)((function(){!a.live||n.criticalSeg||n.subscribeMode||n.checkPeers()}))}})).on(s.default.DC_LOST,(function(t){if(t.sn&&e.bitset){var r=t.sn;e.bitset.has(r)&&(e.bitset.delete(r),n._decreBitCounts(r))}})).on(s.default.DC_PIECE,(function(t){n.subscribers.length>0&&t.sn>n.subscriberEdgeSN&&(n._sendPieceToSubscribers(t.sn,t.seg_id,!1,!1,t),e.addStreamListener(!1,void 0,(function(e,t,r,i,o){r?n._sendPieceToSubscribers(e,t,!1,!0,i):n._sendPieceToSubscribers(e,t,!0,!1,i,o)})),n.subscriberEdgeSN=t.sn),t.ext&&t.ext.incompletes>=2||n.notifyAllPeers(t.sn,t.seg_id)})).on(s.default.DC_PIECE_NOT_FOUND,(function(t){var i=t.sn;n.criticalSeg&&n.criticalSeg.sn===i&&(1===n.criticalSeg.targetPeers.length?(clearTimeout(n.criticaltimeouter),r.info("DC_PIECE_NOT_FOUND "+i),n.criticalSeg=null,n.callbacks.onTimeout(n.stats,n.context,null)):n.criticalSeg.targetPeers=n.criticalSeg.targetPeers.filter((function(t){return t!==e.remotePeerId}))),e.bitset.delete(i),a.live&&e.resetContinuousHits(),n.requestingMap.delete(i),n._decreBitCounts(i),e.checkIfNeedChoke(!0)})).on(s.default.DC_RESPONSE,(function(s,a){var u=n.config,l=s.segId,c=s.sn,f=s.data,d=n.criticalSeg&&n.criticalSeg.segId===l;if(u.validateSegment(l,f))if(n.notifyAllPeers(c,l),i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"reportDCTraffic",n).call(n,c,s.size,a),d){r.info("receive criticalSeg seg_id "+l),clearTimeout(n.criticaltimeouter),n.criticaltimeouter=null,e.miss=0;var h=n.stats;h.tfirst=h.loading.first=Math.max(h.trequest,performance.now()),h.tload=h.loading.end=h.tfirst,h.loaded=h.total=f.byteLength,n.criticalSeg=null;var g=n.context.frag;g.fromPeerId=e.remotePeerId,g.loadByP2P=!0,n.callbacks.onSuccess({data:f,url:n.context.url},h,n.context),e.increContinuousHits(),u.maxSubscribeLevel&&u.live&&!n.subscribeMode&&e.continuousHits>7&&e.sendSubscribe()}else{if(n.bitset.has(c))return;var p=new o.default(c,l,f,e.remotePeerId);n.bufMgr.putSeg(p),n.updateLoaded(c)}else r.warn("segment "+l+" validate failed"),d&&(clearTimeout(n.criticaltimeouter),n.criticaltimeout());n.requestingMap.delete(c),!u.live||n.criticalSeg||n.subscribeMode||n.checkPeers()})).on(s.default.DC_REQUEST,(function(t){var i=t.sn;n.isUploader=!0,n.subscribers.includes(e.remotePeerId)&&(e.subscribeEdgeSN=i);var o=t.seg_id;o||(o=n.bufMgr.getSegIdBySN(i));var a=null;if(n.requestingMap.has(i)?a=n.getPeerLoadedMore(i):n.subscribeMode&&(a=n.subscribeParent),n.bufMgr.hasSegOfId(o)){r.info("found seg from bufMgr");var u=n.bufMgr.getSegById(o);e.sendBuffer(u.sn,u.segId,u.data,{from:"SegmentFromCache"})}else a&&a.downloading&&a.pieceMsg.sn===i?(r.info("target had "+a.bufArr.length+" packets, wait for remain from upstream "+a.remotePeerId),e.sendPartialBuffer(a.pieceMsg,a.bufArr,{from:"WaitForPartial",incompletes:1}),function(e,t){e.addStreamListener(!1,t.remotePeerId,(function(e,n,r,i,o){r?t.sendMsgPieceAbort(i,n,!0):t.send(i),o&&(t.uploading=!1)}))}(a,e)):i>=n.loadingSN?(r.info("peer request "+i+" wait for seg"),n.bufMgr.once(""+s.default.BM_ADDED_SN_+i,(function(t){t?(r.info("peer request notify seg "+t.sn),e.sendBuffer(t.sn,t.segId,t.data,{from:"NotifySegment"})):e.sendPieceNotFound(i,o)}))):e.sendPieceNotFound(i,o)})).on(s.default.DC_SUBSCRIBE,(function(){if(n.config.live){var t=n.subscribers.length,i=n.config.maxSubscribeLevel;if(0===i)e.sendSubscribeReject("subscribe disabled");else if(t>=25)e.sendSubscribeReject("too many subscribers");else if(n.subscribeLevel>=i)e.sendSubscribeReject("subscribe level reach "+n.subscribeLevel);else if(n.subscribers.indexOf(e.remotePeerId)>=0)e.sendSubscribeReject("subscriber already exist");else{if(t>=2){var o=[];if(n.subscribers.forEach((function(e){var t=n.peerManager.getPeer(e).uploadSpeed;t&&o.push(t)})),!u.default.evaluatePeersSpeed(o,n.estimatedSize))return void e.sendSubscribeReject("Insufficient upload capability")}n.subscribers.push(e.remotePeerId),r.info("subscribers add "+e.remotePeerId),e.sendSubscribeAccept(n.subscribeLevel)}}})).on(s.default.DC_UNSUBSCRIBE,(function(t){var i=n.subscribers.indexOf(e.remotePeerId);-1!==i&&(r.info("subscribers remove "+e.remotePeerId+" reason "+t.reason),n.subscribers.splice(i,1))})).on(s.default.DC_SUBSCRIBE_ACCEPT,(function(t){if(!n.subscribeMode){var r=t.level||0;n.subscribeMode=!0,n.subscribeLevel=r+1,n.subscribeParent=e,n.notifySubscribeLevel()}})).on(s.default.DC_SUBSCRIBE_REJECT,(function(t){r.warn("subscribe rejected, reason "+t.reason),e.resetContinuousHits()})).on(s.default.DC_SUBSCRIBE_LEVEL,(function(e){if(n.subscribeMode){var t=e.level||0;n.subscribeLevel=t+1,r.info("set subscribe level to "+n.subscribeLevel),n.notifySubscribeLevel()}}))}},{key:"_setupEngine",value:function(){var e=this;this.engine.on(s.default.FRAG_LOADING,(function(t,n,r){e.loadingSN=t,e.loadingSegId=n,e.isHlsV0&&r&&e.notifyAllPeers(t,n)})).on(s.default.FRAG_LOADED,(function(t,n,r,i,o){e.config.live&&(e.estimatedSize=r),!e.isHlsV0&&o&&e.notifyAllPeers(t,n),e.updateLoaded(t)})).on(s.default.FRAG_CHANGED,(function(t,n){e.updatePlaySN(t)}))}},{key:"notifyPeersLoaded",value:function(e){this.logger.info("notifyPeersLoaded "+e),this.waitForPeer&&(0===e?this.criticaltimeout():this.waitingPeers=e)}},{key:"_unsubscribe",value:function(e){this.logger.warn("unsubscribe to "+this.subscribeParent.remotePeerId),this.subscribeParent.sendUnsubscribe(e),this.subscribeParent=null,this.subscribeLevel=0,this.subscribeMode=!1,this.notifySubscribeLevel()}},{key:"_sendSegmentToSubscribers",value:function(e){var t=this,n=e.sn,r=e.segId,i=e.data;this.subscribers=this.subscribers.filter((function(e){var o=t.peerManager.getPeer(e);return o?(o.uploading||o.bitset.has(n)||(t.logger.info("send seg "+r+" to subscriber "+e),o.uploading=!0,o.sendBuffer(n,r,i,{from:"SegmentToSubscribers"}),o.bitset.add(n)),!0):(t.logger.info("subscribers remove "+e),!1)}))}},{key:"_sendPieceToSubscribers",value:function(e,t,n,r,i,o){var s=this;this.subscribers=this.subscribers.filter((function(a){var u=s.peerManager.getPeer(a);if(u){if(n&&e===u.pieceMsg.sn)u.send(i),o&&(u.uploading=!1,u.bitset.add(e));else if(!n)if(r)u.sendMsgPieceAbort(i,t,!0);else{if(u.uploading||e<=u.subscribeEdgeSN)return!0;u.subscribeEdgeSN=e,u.uploading=!0,u.pieceMsg=i,s.logger.info("downstream msg "+JSON.stringify(i)+" to subscriber "+a),u.sendMsgPiece(i,{from:"PieceToSubscribers",incompletes:1})}return!0}return s.logger.info("subscribers remove "+a),!1}))}}]),t}(a.default);t.default=h,e.exports=t.default},478:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function e(t,n,r){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,n);if(void 0===i){var o=Object.getPrototypeOf(t);return null===o?void 0:e(o,n,r)}if("value"in i)return i.value;var s=i.get;return void 0!==s?s.call(r):void 0},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=S(n(299)),a=S(n(680)),u=S(n(788)),l=S(n(946)),c=S(n(277)),f=S(n(555)),d=S(n(327)),h=S(n(89)),g=S(n(578)),p=S(n(745)),v=S(n(828)),y=n(524),m=n(408),_=n(389),b=S(n(39)),P=S(n(91));function S(e){return e&&e.__esModule?e:{default:e}}if(window){if(window.p2ploadedHls)throw new Error("You are loading the p2p library multiple times. Please load it only once.");window.p2ploadedHls=!0}var w=function(e){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n));i.config=Object.assign({},a.default,n),i.rangeTested=!1,i.lastLevel=0,i.hlsjs=e,i.config.waitForPeer&&(i.config.trickleICE=!0),i.HLSEvents=e.constructor.Events,i.config.isHlsV0="0"===e.constructor.version.split(".")[0],i.config.xhrSetup=e.config.xhrSetup;var o=i.config,u=o.token,l=o.channelId,c=o.segmentId,f=function(e){var t=s.default.parseURL(e);return""+(t.netLoc.substr(2)+t.path.substring(0,t.path.lastIndexOf(".")))},d=function(e,t,n,r){var i=n.split("?")[0];return i.startsWith("http")&&(i=i.split("://")[1]),r?i+"|"+r:""+i};l&&(f=i.makeChannelId(u,l),c||(d=function(e,t,n,r){return e+"-"+t})),c||(i.config.segmentId=d),e.config.segmentId=i.config.segmentId;var g=i.makeSignalId();e.on(i.HLSEvents.LEVEL_LOADED,(function t(n,o){var s=i.config,a=o.details,u=a.live;s.live=i.hlsjs.config.live=u,i.browserInfo=r({},i.commonBrowserInfo,{abr:i.multiBitrate||void 0,tag:s.tag||void 0,live:u,type:"hls"}),i.channel=f(e.url)+"|"+g+"["+h.default.VERSION+"]",i.browserInfo.device===y.device.PC_NATIVE&&(i.browserInfo=r({},i.browserInfo,{app:s.appName,bundle:s.appId}));var l=i.initLogger();i.hlsjs.config.logger=l,l.info("channel "+i.channel),u||(s.startSN=a.startSN,s.endSN=a.endSN,l.info("startSN "+a.startSN+" endSN "+a.endSN)),i.eventListened=!1,i._init(i.channel,i.browserInfo),e.off(i.HLSEvents.LEVEL_LOADED,t)}));return e.on(i.HLSEvents.MANIFEST_PARSED,(function t(n,r){var o=r.levels.length;i.multiBitrate=o>1,e.off(i.HLSEvents.MANIFEST_PARSED,t)})),i}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,null,[{key:"Events",get:function(){return d.default}}]),o(t,[{key:"_init",value:function(e,t){if(this.p2pEnabled){var n=this.multiBitrate||this.config.scheduledBySegId;this.hlsjs.config.p2pEnabled=this.p2pEnabled,this.hlsjs.config.sharePlaylist=this.config.sharePlaylist,this.bufMgr=new f.default(this,this.config,!n),this.hlsjs.config.bufMgr=this.bufMgr,this.media=this.hlsjs.media;var r=new g.default(this,this.config.token,encodeURIComponent(e),this.config.announce||"",t);this.fetcher=r;var i=void 0;i=n?new P.default(this,this.config):new b.default(this,this.config),this.tracker=new c.default(this,r,i,this.config),i.bufferManager=this.bufMgr,this.hlsjs.config.fLoader=u.default,this.config.sharePlaylist&&(this.hlsjs.config.pLoader=l.default),window.__p2p_loader__={scheduler:this.tracker.scheduler,fetcher:r,p2pBlackList:this.config.p2pBlackList,isHlsV0:this.config.isHlsV0},this.trackerTried=!1,this.eventListened||(this.hlsjs.on(this.HLSEvents.FRAG_LOADING,this._onFragLoading.bind(this)),this.hlsjs.on(this.HLSEvents.FRAG_LOADED,this._onFragLoaded.bind(this)),this.hlsjs.on(this.HLSEvents.FRAG_CHANGED,this._onFragChanged.bind(this)),this.hlsjs.on(this.HLSEvents.ERROR,this._onHlsError.bind(this)),this.eventListened=!0),this.setupWindowListeners(),this.trackerTried||this.tracker.connected||!this.config.p2pEnabled||(this.tracker.resumeP2P(),this.trackerTried=!0)}}},{key:"_onFragLoading",value:function(e,t){var n=t.frag,r=n.sn,i=n.segId;if(!(0,_.isBlockType)(n.url,this.config.p2pBlackList)){if(this.logger.debug("loading frag "+r),!i){var o=void 0;n._byteRange&&(o="bytes="+n._byteRange[0]+"-"+n._byteRange[1]);var s=n.url;i=t.frag.segId=this.config.segmentId(String(n.level),n.sn,s,o)}this.emit(d.default.FRAG_LOADING,r,i,t.frag.loadByHTTP)}}},{key:"_onFragLoaded",value:function(e,t){var n=t.frag,r=n.sn,i=n.level,o=n.segId,s=n.loaded,a=n.duration,u=this.config,l=this.logger;(0,_.isBlockType)(t.frag.url,u.p2pBlackList)||(this.emit(d.default.FRAG_LOADED,r,o,s,a,t.frag.loadByHTTP,i),!this.rangeTested&&u.useHttpRange&&((0,m.performRangeRequest)(t.frag.url,"bytes=0-0",u.xhrSetup).then((function(){u.httpRangeSupported=!0,l.info("http range is supported"),u.httpLoadTime-=1.5,u.httpLoadTime<1.5&&(u.httpLoadTime=1.5),u.simultaneousTargetPeers=1})).catch((function(){u.httpRangeSupported=!1,l.warn("http range is not supported")})),this.rangeTested=!0))}},{key:"_onFragChanged",value:function(e,t){if(!(0,_.isBlockType)(t.frag.url,this.config.p2pBlackList)){this.logger.debug("frag changed: "+t.frag.sn);var n=t.frag,r=n.sn,i=n.duration;this.emit(d.default.FRAG_CHANGED,r,i)}}},{key:"_onHlsError",value:function(e,t){var n=this.logger;t.fatal?n.error(t.type+" details "+t.details+" reason "+t.reason):n.warn(t.type+" details "+t.details+" reason "+t.reason);var r=this.hlsjs.constructor.ErrorDetails;switch(t.details){case r.BUFFER_STALLED_ERROR:this.fetcher&&this.fetcher.increRebuffers();break;case r.BUFFER_INCOMPATIBLE_CODECS_ERROR:case r.BUFFER_ADD_CODEC_ERROR:case r.FRAG_PARSING_ERROR:case r.BUFFER_APPENDING_ERROR:case r.BUFFER_APPEND_ERROR:this.fetcher&&(this.fetcher.exptMsg=t.details+" "+t.err+" fatal "+t.fatal+" ua "+navigator.userAgent);break;case r.INTERNAL_EXCEPTION:t.error||(t.error={}),this.fetcher&&(this.fetcher.errsInternalExpt++,this.fetcher.exptMsg=t.error.message+" event "+t.event+" ua "+navigator.userAgent),n.error("INTERNAL_EXCEPTION event "+t.event+" err "+t.error.message),this.emit(d.default.EXCEPTION,(0,v.default)(t.error,"HLSJS_EXPT"))}}},{key:"getExtraForStats",value:function(){var e=i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"getExtraForStats",this).call(this);return this.config.live||(e.pos=Math.round(this.media.currentTime)),this.multiBitrate&&this.currentLevel!==this.lastLevel&&(e.level=this.currentLevel+"",this.lastLevel=this.currentLevel),e}},{key:"getExtraForPeersRequest",value:function(){var e=i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"getExtraForPeersRequest",this).call(this);return this.multiBitrate&&(e.level=this.currentLevel+""),e}},{key:"disableP2P",value:function(){this.logger&&this.logger.warn("disable P2P"),this.p2pEnabled&&(this.p2pEnabled=!1,this.config.p2pEnabled=this.hlsjs.config.p2pEnabled=this.p2pEnabled,this.tracker&&(this.tracker.stopP2P(),this.tracker={},this.fetcher=null,this.bufMgr.destroy(),this.bufMgr=null,this.hlsjs.config.fLoader=this.hlsjs.config.pLoader=this.hlsjs.constructor.DefaultConfig.loader))}},{key:"currentLevel",get:function(){var e=this.hlsjs.currentLevel;return e>=0?e:0}}]),t}(p.default);window&&(window.P2pEngine=window.P2pEngineHls=window.P2PEngineHls=w),t.default=w,e.exports=t.default},946:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=u(n(648)),o=u(n(91)),s=u(n(824)),a=n(389);function u(e){return e&&e.__esModule?e:{default:e}}var l=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));n.logger=e.logger;var r=window.__p2p_loader__.scheduler;return n.isHlsV0=e.isHlsV0,n.xhrLoader=new e.loader(e),n.p2pEnabled=e.p2pEnabled,n.scheduler=r,n.multiBitrate=n.scheduler instanceof o.default,n.stats=n.xhrLoader.stats||(0,a.createLoadStats)(),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"destroy",value:function(){this.xhrLoader.destroy()}},{key:"abort",value:function(){this.xhrLoader.abort()}},{key:"load",value:function(e,t,n){var r=this,i=this.logger,o=e.url,u=o.split("?")[0],l=n.onSuccess;if(n.onSuccess=function(e,t,n){r.scheduler.broadcastPlaylist(u,e.data),l(e,t,n)},this.scheduler.playlistInfo.has(u)){var c=this.scheduler.getPlaylistFromPeer(u);if(c&&c.data){var f=c.data,d=c.seq;i.info("got playlist from peer seq "+d),(0,a.updateLoadStats)(this.stats,f.length);var h={url:o,data:f};return void(0,s.default)((function(){n.onSuccess(h,r.stats,e)}))}}this.xhrLoader.load(e,t,n)}}]),t}(i.default);t.default=l,e.exports=t.default},297:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=s(n(89)),o=s(n(327));function s(e){return e&&e.__esModule?e:{default:e}}var a=function(e){function t(e,n,r,i,o){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,r,i,o,s));return a.continuousHits=0,a.subscribeEdgeSN=0,a}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"resetContinuousHits",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.logger.info("reset "+this.remotePeerId+" continuousHits"),this.continuousHits=e}},{key:"increContinuousHits",value:function(){this.continuousHits++}},{key:"sendSubscribe",value:function(){this.sendJson({event:o.default.DC_SUBSCRIBE})}},{key:"sendUnsubscribe",value:function(e){this.resetContinuousHits(),this.sendJson({event:o.default.DC_UNSUBSCRIBE,reason:e})}},{key:"sendSubscribeReject",value:function(e){this.sendJson({event:o.default.DC_SUBSCRIBE_REJECT,reason:e})}},{key:"sendSubscribeAccept",value:function(e){this.sendJson({event:o.default.DC_SUBSCRIBE_ACCEPT,level:e})}},{key:"sendSubscribeLevel",value:function(e){this.sendJson({event:o.default.DC_SUBSCRIBE_LEVEL,level:e})}}]),t}(i.default);t.default=a,e.exports=t.default},140:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return n(e,null,[{key:"evaluatePeersSpeed",value:function(e,t){var n=t/3500,r=n,i=1.05*n,o=0;return e.forEach((function(e){if(e){if(e<r)return!1;o+=e}})),o/e.length>=i}}]),e}();t.default=r,e.exports=t.default},389:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBlockType=function(e,t){var n=o.default.parseURL(e),r=n.path.substring(n.path.lastIndexOf(".")+1);return-1!==t.indexOf(r)},t.createLoadStats=function(){var e=performance.now();return{trequest:e,tfirst:0,tload:0,aborted:!1,loaded:0,retry:0,total:0,chunkCount:0,bwEstimate:0,loading:{start:e,first:0,end:0},parsing:{start:0,end:0},buffering:{start:0,first:0,end:0}}},t.updateLoadStats=function(e,t){var n,r,i,o,s,a=performance.now();n=a-300,r=a-200,i=a,e.trequest=n,e.tfirst=r,e.tload=i,e.loading={first:n,start:r,end:i},o=s=t,e.loaded=o,e.total=s};var r,i=n(299),o=(r=i)&&r.__esModule?r:{default:r}}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={id:r,loaded:!1,exports:{}};return e[r](o,o.exports,n),o.loaded=!0,o.exports}return n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n(478)})()));