@livedigital/client 2.0.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -12,4 +12,4 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */function r(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}c((i=i.apply(e,t||[])).next())}))}function i(e,t,r,i){if("a"===r&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?i:"a"===r?i.call(e):i?i.value:t.get(e)}class s extends t{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(e){return Boolean(r)}}}var n,a,o;!function(e){e.VIDEO="video",e.AUDIO="audio"}(n||(n={})),function(e){e[e.BAD=1]="BAD",e[e.MEDIUM=2]="MEDIUM",e[e.GOOD=3]="GOOD"}(a||(a={})),function(e){e.Camera="camera",e.Microphone="microphone",e.ScreenVideo="screen-video",e.ScreenAudio="screen-audio",e.Unknown="unknown"}(o||(o={}));const c="channel.event",d="channel.join",p="channel.getPeers",l="peer.disconnected",u="channel-event",h="peer-joined",f="peer-left",m="channel-rejoin-required",g="devices-list-updated",y="media-published",v="media-unpublished",b="connection-quality-changed",_="track-start",w="track-end";var S;!function(e){e.Connected="connected",e.Reconnecting="reconnecting",e.Reconnected="reconnected",e.Disconnected="disconnected",e.Reconnect="reconnect",e.Error="error"}(S||(S={}));const R="peer.newProducer",P="producer.close",k="producer.pause",T="producer.scoreChanged",C="consumer.create",E="consumer.close",D="consumer.pause",O="consumer.resume",x="consumer.scoreChanged",M="consumer.changeConsumerPreferredLayers",j="consumer.setConsumerPriority",I="transport.create",L="transport.close",A="transport.connect",F="transport.produce",N="connectionstatechange",B="getIceParameters",U="connect",q="produce";var z="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function $(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})})),t}var V={exports:{}},G=1e3,W=60*G,H=60*W,K=24*H,Q=7*K,J=365.25*K,Y=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return r*J;case"weeks":case"week":case"w":return r*Q;case"days":case"day":case"d":return r*K;case"hours":case"hour":case"hrs":case"hr":case"h":return r*H;case"minutes":case"minute":case"mins":case"min":case"m":return r*W;case"seconds":case"second":case"secs":case"sec":case"s":return r*G;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===r&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=K)return X(e,t,K,"day");if(t>=H)return X(e,t,H,"hour");if(t>=W)return X(e,t,W,"minute");if(t>=G)return X(e,t,G,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=K)return Math.round(e/K)+"d";if(t>=H)return Math.round(e/H)+"h";if(t>=W)return Math.round(e/W)+"m";if(t>=G)return Math.round(e/G)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function X(e,t,r,i){var s=t>=1.5*r;return Math.round(e/r)+" "+i+(s?"s":"")}var Z=function(e){function t(e){let i,s,n,a=null;function o(...e){if(!o.enabled)return;const r=o,s=Number(new Date),n=s-(i||s);r.diff=n,r.prev=i,r.curr=s,i=s,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((i,s)=>{if("%%"===i)return"%";a++;const n=t.formatters[s];if("function"==typeof n){const t=e[a];i=n.call(r,t),e.splice(a,1),a--}return i})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return o.namespace=e,o.useColors=t.useColors(),o.color=t.selectColor(e),o.extend=r,o.destroy=t.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(s!==t.namespaces&&(s=t.namespaces,n=t.enabled(e)),n),set:e=>{a=e}}),"function"==typeof t.init&&t.init(o),o}function r(e,r){const i=t(this.namespace+(void 0===r?":":r)+e);return i.log=this.log,i}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),s=i.length;for(r=0;r<s;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,i;for(r=0,i=t.skips.length;r<i;r++)if(t.skips[r].test(e))return!1;for(r=0,i=t.names.length;r<i;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=Y,t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let i=0,s=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(s=i))})),t.splice(s,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Z(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(V,V.exports);var ee=V.exports;class te{constructor(e){e?(this._debug=ee(`LiveDigital:${e}`),this._warn=ee(`LiveDigital:WARN:${e}`),this._error=ee(`LiveDigital:ERROR:${e}`)):(this._debug=ee("LiveDigital"),this._warn=ee("LiveDigital:WARN"),this._error=ee("LiveDigital:ERROR")),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}}class re{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[],this.isMediaDevicesAccessGranted=!1;const{clientEventEmitter:t}=e;this.clientEventEmitter=t,this.logger=new te("System"),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(){return r(this,void 0,void 0,(function*(){try{(yield navigator.mediaDevices.getUserMedia({video:!0,audio:!0})).getTracks().forEach((e=>e.stop())),this.isMediaDevicesAccessGranted=!0}catch(e){if(this.logger.error("getUserMedia()",{error:e}),"NotReadableError"===e.name)throw new Error("DeviceIsBusy")}}))}refreshAvailableMediaDevicesList(){return r(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&"default"!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r),this.logger.debug("Devices list updated")}))}detectDevices(){return r(this,void 0,void 0,(function*(){this.isDevicesDetected||(this.isMediaDevicesAccessGranted||(yield this.requestMediaDevicesAccess()),navigator.mediaDevices.addEventListener("devicechange",(()=>{this.refreshAvailableMediaDevicesList()})),yield this.refreshAvailableMediaDevicesList(),this.isDevicesDetected=!0)}))}listenDevices(){navigator.mediaDevices.ondevicechange=()=>r(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(g,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}}var ie={},se={},ne={exports:{}};ne.exports=function(e){var t={};function r(i){if(t[i])return t[i].exports;var s=t[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(i,s,function(t){return e[t]}.bind(null,s));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){t.__esModule=!0,t.default=void 0;var i=r(18),s=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,i){void 0===i&&(i=!1);var s=e.getVersionPrecision(t),n=e.getVersionPrecision(r),a=Math.max(s,n),o=0,c=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),i=t+new Array(r+1).join(".0");return e.map(i.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(i&&(o=a-Math.min(s,n)),a-=1;a>=o;){if(c[0][a]>c[1][a])return 1;if(c[0][a]===c[1][a]){if(a===o)return 0;a-=1}else if(c[0][a]<c[1][a])return-1}},e.map=function(e,t){var r,i=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)i.push(t(e[r]));return i},e.find=function(e,t){var r,i;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,i=e.length;r<i;r+=1){var s=e[r];if(t(s,r))return s}},e.assign=function(e){for(var t,r,i=e,s=arguments.length,n=new Array(s>1?s-1:0),a=1;a<s;a++)n[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(n));var o=function(){var e=n[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){i[t]=e[t]}))};for(t=0,r=n.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return i.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return i.BROWSER_MAP[e]||""},e}();t.default=s,e.exports=t.default},18:function(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"}},90:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(91))&&i.__esModule?i:{default:i},n=r(18);function a(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var o=function(){function e(){}var t,r,i;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new s.default(e,t)},e.parse=function(e){return new s.default(e).getResult()},t=e,i=[{key:"BROWSER_MAP",get:function(){return n.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return n.ENGINE_MAP}},{key:"OS_MAP",get:function(){return n.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return n.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),i&&a(t,i),e}();t.default=o,e.exports=t.default},91:function(e,t,r){t.__esModule=!0,t.default=void 0;var i=c(r(92)),s=c(r(93)),n=c(r(94)),a=c(r(95)),o=c(r(17));function c(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(s.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(n.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},i=0,s={},n=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(s[t]=a,n+=1):"object"==typeof a&&(r[t]=a,i+=1)})),i>0){var a=Object.keys(r),c=o.default.find(a,(function(e){return t.isOS(e)}));if(c){var d=this.satisfies(r[c]);if(void 0!==d)return d}var p=o.default.find(a,(function(e){return t.isPlatform(e)}));if(p){var l=this.satisfies(r[p]);if(void 0!==l)return l}}if(n>0){var u=Object.keys(s),h=o.default.find(u,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(s[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),s=o.default.getBrowserTypeByAlias(i);return t&&s&&(i=s.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,s=this.getBrowserVersion();if("string"==typeof s)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(i=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(i=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(s,r,i))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},n=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=s.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=s.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=s.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=s.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=s.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=s.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=s.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=s.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=s.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=s.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=s.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=s.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=s.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=s.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=s.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=s.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=s.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=s.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=s.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=s.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=s.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=s.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=s.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=s.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=s.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=s.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=s.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:s.default.getFirstMatch(t,e),version:s.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},n=r(18),a=[{test:[/Roku\/DVP/],describe:function(e){var t=s.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:n.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=s.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:n.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=s.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=s.default.getWindowsVersionName(t);return{name:n.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:n.OS_MAP.iOS},r=s.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=s.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=s.default.getMacOSVersionName(t),i={name:n.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=s.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:n.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=s.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=s.default.getAndroidVersionName(t),i={name:n.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=s.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:n.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=s.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||s.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||s.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:n.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=s.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:n.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=s.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:n.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:n.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:n.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=s.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:n.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},n=r(18),a=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=s.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:n.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=s.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:n.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:n.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:n.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:n.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:n.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},n=r(18),a=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:n.ENGINE_MAP.Blink};var t=s.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:n.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:n.ENGINE_MAP.Trident},r=s.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:n.ENGINE_MAP.Presto},r=s.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:n.ENGINE_MAP.Gecko},r=s.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:n.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:n.ENGINE_MAP.WebKit},r=s.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}});var ae={},oe=z&&z.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ae,"__esModule",{value:!0}),ae.Logger=void 0;const ce=oe(V.exports),de="mediasoup-client";ae.Logger=class{constructor(e){e?(this._debug=ce.default(`${de}:${e}`),this._warn=ce.default(`${de}:WARN:${e}`),this._error=ce.default(`${de}:ERROR:${e}`)):(this._debug=ce.default(de),this._warn=ce.default(`${de}:WARN`),this._error=ce.default(`${de}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};var pe={};Object.defineProperty(pe,"__esModule",{value:!0}),pe.EnhancedEventEmitter=void 0;const le=e,ue=new ae.Logger("EnhancedEventEmitter");class he extends le.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(t){return ue.error("safeEmit() | event listener threw an error [event:%s]:%o",e,t),Boolean(r)}}async safeEmitAsPromise(e,...t){return new Promise(((r,i)=>{try{this.emit(e,...t,r,i)}catch(t){ue.error("safeEmitAsPromise() | event listener threw an error [event:%s]:%o",e,t),i(t)}}))}}pe.EnhancedEventEmitter=he;var fe={};Object.defineProperty(fe,"__esModule",{value:!0}),fe.InvalidStateError=fe.UnsupportedError=void 0;class me extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,me):this.stack=new Error(e).stack}}fe.UnsupportedError=me;class ge extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,ge):this.stack=new Error(e).stack}}fe.InvalidStateError=ge;var ye={};Object.defineProperty(ye,"__esModule",{value:!0}),ye.generateRandomNumber=ye.clone=void 0,ye.clone=function(e,t){return void 0===e?t:JSON.parse(JSON.stringify(e))},ye.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var ve={},be={};!function(e){const t=V.exports("h264-profile-level-id");t.log=console.info.bind(console);e.ProfileConstrainedBaseline=1,e.ProfileBaseline=2,e.ProfileMain=3,e.ProfileConstrainedHigh=4,e.ProfileHigh=5;const r=10;e.Level1_b=0,e.Level1=10,e.Level1_1=11,e.Level1_2=12,e.Level1_3=13,e.Level2=20,e.Level2_1=21,e.Level2_2=22,e.Level3=30,e.Level3_1=31,e.Level3_2=32,e.Level4=40,e.Level4_1=41,e.Level4_2=42,e.Level5=50,e.Level5_1=51,e.Level5_2=52;class i{constructor(e,t){this.profile=e,this.level=t}}e.ProfileLevelId=i;const s=new i(1,31);class n{constructor(e){this._mask=~c("x",e),this._maskedValue=c("1",e)}isMatch(e){return this._maskedValue===(e&this._mask)}}class a{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const o=[new a(66,new n("x1xx0000"),1),new a(77,new n("1xxx0000"),1),new a(88,new n("11xx0000"),1),new a(66,new n("x0xx0000"),2),new a(88,new n("10xx0000"),2),new a(77,new n("0x0x0000"),3),new a(100,new n("00000000"),5),new a(100,new n("00001100"),4)];function c(e,t){return(t[0]===e)<<7|(t[1]===e)<<6|(t[2]===e)<<5|(t[3]===e)<<4|(t[4]===e)<<3|(t[5]===e)<<2|(t[6]===e)<<1|(t[7]===e)<<0}function d(e={}){const t=e["level-asymmetry-allowed"];return 1===t||"1"===t}e.parseProfileLevelId=function(e){if("string"!=typeof e||6!==e.length)return null;const r=parseInt(e,16);if(0===r)return null;const s=255&r,n=r>>8&255,a=r>>16&255;let c;switch(s){case 11:c=0!=(16&n)?0:11;break;case 10:case 12:case 13:case 20:case 21:case 22:case 30:case 31:case 32:case 40:case 41:case 42:case 50:case 51:case 52:c=s;break;default:return t("parseProfileLevelId() | unrecognized level_idc:%s",s),null}for(const e of o)if(a===e.profile_idc&&e.profile_iop.isMatch(n))return new i(e.profile,c);return t("parseProfileLevelId() | unrecognized profile_idc/profile_iop combination"),null},e.profileLevelIdToString=function(e){if(0==e.level)switch(e.profile){case 1:return"42f00b";case 2:return"42100b";case 3:return"4d100b";default:return t("profileLevelIdToString() | Level 1_b not is allowed for profile:%s",e.profile),null}let r;switch(e.profile){case 1:r="42e0";break;case 2:r="4200";break;case 3:r="4d00";break;case 4:r="640c";break;case 5:r="6400";break;default:return t("profileLevelIdToString() | unrecognized profile:%s",e.profile),null}let i=e.level.toString(16);return 1===i.length&&(i=`0${i}`),`${r}${i}`},e.parseSdpProfileLevelId=function(t={}){const r=t["profile-level-id"];return r?e.parseProfileLevelId(r):s},e.isSameProfile=function(t={},r={}){const i=e.parseSdpProfileLevelId(t),s=e.parseSdpProfileLevelId(r);return Boolean(i&&s&&i.profile===s.profile)},e.generateProfileLevelIdForAnswer=function(s={},n={}){if(!s["profile-level-id"]&&!n["profile-level-id"])return t("generateProfileLevelIdForAnswer() | no profile-level-id in local and remote params"),null;const a=e.parseSdpProfileLevelId(s),o=e.parseSdpProfileLevelId(n);if(!a)throw new TypeError("invalid local_profile_level_id");if(!o)throw new TypeError("invalid remote_profile_level_id");if(a.profile!==o.profile)throw new TypeError("H264 Profile mismatch");const c=d(s)&&d(n),p=a.level,l=o.level,u=function(e,t){return 0===e?t!==r&&0!==t:0===t?e!==r:e<t}(h=p,f=l)?h:f;var h,f;const m=c?p:u;return t("generateProfileLevelIdForAnswer() | result: [profile:%s, level:%s]",a.profile,m),e.profileLevelIdToString(new i(a.profile,m))}}(be);var _e=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),we=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Se=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&_e(t,e,r);return we(t,e),t};Object.defineProperty(ve,"__esModule",{value:!0}),ve.canReceive=ve.canSend=ve.generateProbatorRtpParameters=ve.reduceCodecs=ve.getSendingRemoteRtpParameters=ve.getSendingRtpParameters=ve.getRecvRtpCapabilities=ve.getExtendedRtpCapabilities=ve.validateSctpStreamParameters=ve.validateSctpParameters=ve.validateNumSctpStreams=ve.validateSctpCapabilities=ve.validateRtcpParameters=ve.validateRtpEncodingParameters=ve.validateRtpHeaderExtensionParameters=ve.validateRtpCodecParameters=ve.validateRtpParameters=ve.validateRtpHeaderExtension=ve.validateRtcpFeedback=ve.validateRtpCodecCapability=ve.validateRtpCapabilities=void 0;const Re=Se(be),Pe=Se(ye);function ke(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if(e.kind=r[1].toLowerCase(),e.preferredPayloadType&&"number"!=typeof e.preferredPayloadType)throw new TypeError("invalid codec.preferredPayloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===e.kind?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)Te(t)}function Te(e){if("object"!=typeof e)throw new TypeError("fb is not an object");if(!e.type||"string"!=typeof e.type)throw new TypeError("missing fb.type");e.parameter&&"string"==typeof e.parameter||(e.parameter="")}function Ce(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if("audio"!==e.kind&&"video"!==e.kind)throw new TypeError("invalid ext.kind");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.preferredId)throw new TypeError("missing ext.preferredId");if(e.preferredEncrypt&&"boolean"!=typeof e.preferredEncrypt)throw new TypeError("invalid ext.preferredEncrypt");if(e.preferredEncrypt||(e.preferredEncrypt=!1),e.direction&&"string"!=typeof e.direction)throw new TypeError("invalid ext.direction");e.direction||(e.direction="sendrecv")}function Ee(e){if("object"!=typeof e)throw new TypeError("params is not an object");if(e.mid&&"string"!=typeof e.mid)throw new TypeError("params.mid is not a string");if(!Array.isArray(e.codecs))throw new TypeError("missing params.codecs");for(const t of e.codecs)De(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("params.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)Oe(t);if(e.encodings&&!Array.isArray(e.encodings))throw new TypeError("params.encodings is not an array");e.encodings||(e.encodings=[]);for(const t of e.encodings)xe(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),Me(e.rtcp)}function De(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if("number"!=typeof e.payloadType)throw new TypeError("missing codec.payloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===r[1].toLowerCase()?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)Te(t)}function Oe(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.id)throw new TypeError("missing ext.id");if(e.encrypt&&"boolean"!=typeof e.encrypt)throw new TypeError("invalid ext.encrypt");e.encrypt||(e.encrypt=!1),e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError("invalid header extension parameter")}}function xe(e){if("object"!=typeof e)throw new TypeError("encoding is not an object");if(e.ssrc&&"number"!=typeof e.ssrc)throw new TypeError("invalid encoding.ssrc");if(e.rid&&"string"!=typeof e.rid)throw new TypeError("invalid encoding.rid");if(e.rtx&&"object"!=typeof e.rtx)throw new TypeError("invalid encoding.rtx");if(e.rtx&&"number"!=typeof e.rtx.ssrc)throw new TypeError("missing encoding.rtx.ssrc");if(e.dtx&&"boolean"==typeof e.dtx||(e.dtx=!1),e.scalabilityMode&&"string"!=typeof e.scalabilityMode)throw new TypeError("invalid encoding.scalabilityMode")}function Me(e){if("object"!=typeof e)throw new TypeError("rtcp is not an object");if(e.cname&&"string"!=typeof e.cname)throw new TypeError("invalid rtcp.cname");e.reducedSize&&"boolean"==typeof e.reducedSize||(e.reducedSize=!0)}function je(e){if("object"!=typeof e)throw new TypeError("numStreams is not an object");if("number"!=typeof e.OS)throw new TypeError("missing numStreams.OS");if("number"!=typeof e.MIS)throw new TypeError("missing numStreams.MIS")}function Ie(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Le(e,t,{strict:r=!1,modify:i=!1}={}){const s=e.mimeType.toLowerCase();if(s!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(s){case"video/h264":if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(r){if(!Re.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Re.generateProfileLevelIdForAnswer(e.parameters,t.parameters)}catch(e){return!1}i&&(r?(e.parameters["profile-level-id"]=r,t.parameters["profile-level-id"]=r):(delete e.parameters["profile-level-id"],delete t.parameters["profile-level-id"]))}break;case"video/vp9":if(r){if((e.parameters["profile-id"]||0)!==(t.parameters["profile-id"]||0))return!1}}return!0}function Ae(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Fe(e,t){const r=[];for(const i of e.rtcpFeedback||[]){const e=(t.rtcpFeedback||[]).find((e=>e.type===i.type&&(e.parameter===i.parameter||!e.parameter&&!i.parameter)));e&&r.push(e)}return r}ve.validateRtpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(e.codecs&&!Array.isArray(e.codecs))throw new TypeError("caps.codecs is not an array");e.codecs||(e.codecs=[]);for(const t of e.codecs)ke(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("caps.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)Ce(t)},ve.validateRtpCodecCapability=ke,ve.validateRtcpFeedback=Te,ve.validateRtpHeaderExtension=Ce,ve.validateRtpParameters=Ee,ve.validateRtpCodecParameters=De,ve.validateRtpHeaderExtensionParameters=Oe,ve.validateRtpEncodingParameters=xe,ve.validateRtcpParameters=Me,ve.validateSctpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(!e.numStreams||"object"!=typeof e.numStreams)throw new TypeError("missing caps.numStreams");je(e.numStreams)},ve.validateNumSctpStreams=je,ve.validateSctpParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.port)throw new TypeError("missing params.port");if("number"!=typeof e.OS)throw new TypeError("missing params.OS");if("number"!=typeof e.MIS)throw new TypeError("missing params.MIS");if("number"!=typeof e.maxMessageSize)throw new TypeError("missing params.maxMessageSize")},ve.validateSctpStreamParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.streamId)throw new TypeError("missing params.streamId");let t=!1;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,e.maxPacketLifeTime&&"number"!=typeof e.maxPacketLifeTime)throw new TypeError("invalid params.maxPacketLifeTime");if(e.maxRetransmits&&"number"!=typeof e.maxRetransmits)throw new TypeError("invalid params.maxRetransmits");if(e.maxPacketLifeTime&&e.maxRetransmits)throw new TypeError("cannot provide both maxPacketLifeTime and maxRetransmits");if(t&&e.ordered&&(e.maxPacketLifeTime||e.maxRetransmits))throw new TypeError("cannot be ordered with maxPacketLifeTime or maxRetransmits");if(t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1),e.label&&"string"!=typeof e.label)throw new TypeError("invalid params.label");if(e.protocol&&"string"!=typeof e.protocol)throw new TypeError("invalid params.protocol")},ve.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(Ie(i))continue;const t=(e.codecs||[]).find((e=>Le(e,i,{strict:!0,modify:!0})));if(!t)continue;const s={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:i.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:i.parameters,rtcpFeedback:Fe(t,i)};r.codecs.push(s)}for(const i of r.codecs){const r=e.codecs.find((e=>Ie(e)&&e.parameters.apt===i.localPayloadType)),s=t.codecs.find((e=>Ie(e)&&e.parameters.apt===i.remotePayloadType));r&&s&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=s.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>Ae(e,i)));if(!t)continue;const s={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":s.direction="sendrecv";break;case"recvonly":s.direction="sendonly";break;case"sendonly":s.direction="recvonly";break;case"inactive":s.direction="inactive"}r.headerExtensions.push(s)}return r},ve.getRecvRtpCapabilities=function(e){const t={codecs:[],headerExtensions:[]};for(const r of e.codecs){const e={mimeType:r.mimeType,kind:r.kind,preferredPayloadType:r.remotePayloadType,clockRate:r.clockRate,channels:r.channels,parameters:r.localParameters,rtcpFeedback:r.rtcpFeedback};if(t.codecs.push(e),!r.remoteRtxPayloadType)continue;const i={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(i)}for(const r of e.headerExtensions){if("sendrecv"!==r.direction&&"recvonly"!==r.direction)continue;const e={kind:r.kind,uri:r.uri,preferredId:r.recvId,preferredEncrypt:r.encrypt,direction:r.direction};t.headerExtensions.push(e)}return t},ve.getSendingRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.localParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},ve.getSendingRemoteRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.remoteParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}if(r.headerExtensions.some((e=>"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"goog-remb"!==e.type));else if(r.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type));else for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type&&"goog-remb"!==e.type));return r},ve.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Le(e[i],t)){r.push(e[i]),Ie(e[i+1])&&r.push(e[i+1]);break}if(0===r.length)throw new TypeError("no matching codec found")}else r.push(e[0]),Ie(e[1])&&r.push(e[1]);return r},ve.generateProbatorRtpParameters=function(e){Ee(e=Pe.clone(e,{}));const t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},ve.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},ve.canReceive=function(e,t){if(Ee(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Ne={},Be={},Ue=z&&z.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(Be,"__esModule",{value:!0});Be.AwaitQueue=class{constructor({ClosedErrorClass:e=Error,StoppedErrorClass:t=Error}={ClosedErrorClass:Error,StoppedErrorClass:Error}){this.closed=!1,this.pendingTasks=[],this.ClosedErrorClass=Error,this.StoppedErrorClass=Error,this.ClosedErrorClass=e,this.StoppedErrorClass=t}get size(){return this.pendingTasks.length}close(){if(!this.closed){this.closed=!0;for(const e of this.pendingTasks)e.stopped=!0,e.reject(new this.ClosedErrorClass("AwaitQueue closed"));this.pendingTasks.length=0}}push(e,t){return Ue(this,void 0,void 0,(function*(){if(this.closed)throw new this.ClosedErrorClass("AwaitQueue closed");if("function"!=typeof e)throw new TypeError("given task is not a function");if(!e.name&&t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const s={task:e,name:t,resolve:r,reject:i,stopped:!1,enqueuedAt:new Date,executedAt:void 0};this.pendingTasks.push(s),1===this.pendingTasks.length&&this.next()}))}))}stop(){if(!this.closed){for(const e of this.pendingTasks)e.stopped=!0,e.reject(new this.StoppedErrorClass("AwaitQueue stopped"));this.pendingTasks.length=0}}dump(){const e=new Date;return this.pendingTasks.map((t=>({task:t.task,name:t.name,enqueuedTime:t.executedAt?t.executedAt.getTime()-t.enqueuedAt.getTime():e.getTime()-t.enqueuedAt.getTime(),executingTime:t.executedAt?e.getTime()-t.executedAt.getTime():0})))}next(){return Ue(this,void 0,void 0,(function*(){const e=this.pendingTasks[0];e&&(yield this.executeTask(e),this.pendingTasks.shift(),this.next())}))}executeTask(e){return Ue(this,void 0,void 0,(function*(){if(!e.stopped){e.executedAt=new Date;try{const t=yield e.task();if(e.stopped)return;e.resolve(t)}catch(t){if(e.stopped)return;e.reject(t)}}}))}};var qe={};Object.defineProperty(qe,"__esModule",{value:!0}),qe.Producer=void 0;const ze=pe,$e=fe,Ve=new ae.Logger("Producer");class Ge extends ze.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:s,stopTracks:n,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new ze.EnhancedEventEmitter,Ve.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=s,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=n,this._disableTrackOnPause=a,this._zeroRtpOnPause=o,this._appData=c,this._onTrackEnded=this._onTrackEnded.bind(this),this._handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(Ve.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ve.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new $e.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){Ve.debug("pause()"),this._closed?Ve.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&this.safeEmitAsPromise("@replacetrack",null).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){Ve.debug("resume()"),this._closed?Ve.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&this.safeEmitAsPromise("@replacetrack",this._track).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(Ve.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new $e.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new $e.InvalidStateError("track ended");e!==this._track?(this._zeroRtpOnPause&&this._paused||await this.safeEmitAsPromise("@replacetrack",e),this._destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this._handleTrack()):Ve.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new $e.InvalidStateError("closed");if("video"!==this._kind)throw new $e.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await this.safeEmitAsPromise("@setmaxspatiallayer",e),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new $e.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await this.safeEmitAsPromise("@setrtpencodingparameters",e)}_onTrackEnded(){Ve.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}_handleTrack(){this._track&&this._track.addEventListener("ended",this._onTrackEnded)}_destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this._onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}qe.Producer=Ge;var We={};Object.defineProperty(We,"__esModule",{value:!0}),We.Consumer=void 0;const He=pe,Ke=fe,Qe=new ae.Logger("Consumer");class Je extends He.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:s,rtpParameters:n,appData:a}){super(),this._closed=!1,this._observer=new He.EnhancedEventEmitter,Qe.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=s,this._rtpParameters=n,this._paused=!s.enabled,this._appData=a,this._onTrackEnded=this._onTrackEnded.bind(this),this._handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(Qe.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Qe.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Ke.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){Qe.debug("pause()"),this._closed?Qe.error("pause() | Consumer closed"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){Qe.debug("resume()"),this._closed?Qe.error("resume() | Consumer closed"):(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume"))}_onTrackEnded(){Qe.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}_handleTrack(){this._track.addEventListener("ended",this._onTrackEnded)}_destroyTrack(){try{this._track.removeEventListener("ended",this._onTrackEnded),this._track.stop()}catch(e){}}}We.Consumer=Je;var Ye={};Object.defineProperty(Ye,"__esModule",{value:!0}),Ye.DataProducer=void 0;const Xe=pe,Ze=fe,et=new ae.Logger("DataProducer");class tt extends Xe.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new Xe.EnhancedEventEmitter,et.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=i,this._handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(et.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(et.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(et.debug("send()"),this._closed)throw new Ze.InvalidStateError("closed");this._dataChannel.send(e)}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(et.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?et.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):et.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(et.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||et.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Ye.DataProducer=tt;var rt={};Object.defineProperty(rt,"__esModule",{value:!0}),rt.DataConsumer=void 0;const it=pe,st=new ae.Logger("DataConsumer");class nt extends it.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:s}){super(),this._closed=!1,this._observer=new it.EnhancedEventEmitter,st.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=s,this._handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(st.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(st.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(st.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?st.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):st.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(st.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}rt.DataConsumer=nt;var at=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ot=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ct=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&at(t,e,r);return ot(t,e),t};Object.defineProperty(Ne,"__esModule",{value:!0}),Ne.Transport=void 0;const dt=Be,pt=ae,lt=pe,ut=fe,ht=ct(ye),ft=ct(ve),mt=qe,gt=We,yt=Ye,vt=rt,bt=new pt.Logger("Transport");class _t extends lt.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p,handlerFactory:l,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new dt.AwaitQueue({ClosedErrorClass:ut.InvalidStateError}),this._observer=new lt.EnhancedEventEmitter,bt.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=n?n.maxMessageSize:null,delete(c=ht.clone(c,{})).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=l(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:u}),this._appData=p,this._handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){if(!this._closed){bt.debug("close()"),this._closed=!0,this._awaitQueue.close(),this._handler.close();for(const e of this._producers.values())e.transportClosed();this._producers.clear();for(const e of this._consumers.values())e.transportClosed();this._consumers.clear();for(const e of this._dataProducers.values())e.transportClosed();this._dataProducers.clear();for(const e of this._dataConsumers.values())e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new ut.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(bt.debug("restartIce()"),this._closed)throw new ut.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(bt.debug("updateIceServers()"),this._closed)throw new ut.InvalidStateError("closed");if(!Array.isArray(e))throw new TypeError("missing iceServers");return this._awaitQueue.push((async()=>this._handler.updateIceServers(e)),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:i,stopTracks:s=!0,disableTrackOnPause:n=!0,zeroRtpOnPause:a=!1,appData:o={}}={}){if(bt.debug("produce() [track:%o]",e),!e)throw new TypeError("missing track");if("send"!==this._direction)throw new ut.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new ut.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new ut.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw new TypeError('no "produce" listener set into this transport');if(o&&"object"!=typeof o)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=t.map((e=>{const t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t})));const{localId:d,rtpParameters:p,rtpSender:l}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{ft.validateRtpParameters(p);const{id:t}=await this.safeEmitAsPromise("produce",{kind:e.kind,rtpParameters:p,appData:o}),r=new mt.Producer({id:t,localId:d,rtpSender:l,track:e,rtpParameters:p,stopTracks:s,disableTrackOnPause:n,zeroRtpOnPause:a,appData:o});return this._producers.set(r.id,r),this._handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(s)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,appData:s={}}){if(bt.debug("consume()"),i=ht.clone(i,void 0),this._closed)throw new ut.InvalidStateError("closed");if("recv"!==this._direction)throw new ut.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{if(!ft.canReceive(i,this._extendedRtpCapabilities))throw new ut.UnsupportedError("cannot consume this Producer");const{localId:n,rtpReceiver:a,track:o}=await this._handler.receive({trackId:e,kind:r,rtpParameters:i}),c=new gt.Consumer({id:e,localId:n,producerId:t,rtpReceiver:a,track:o,rtpParameters:i,appData:s});if(this._consumers.set(c.id,c),this._handleConsumer(c),!this._probatorConsumerCreated&&"video"===r)try{const e=ft.generateProbatorRtpParameters(c.rtpParameters);await this._handler.receive({trackId:"probator",kind:"video",rtpParameters:e}),bt.debug("consume() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){bt.error("consume() | failed to create Consumer for RTP probation:%o",e)}return this._observer.safeEmit("newconsumer",c),c}),"transport.consume()")}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:s="",appData:n={}}={}){if(bt.debug("produceData()"),"send"!==this._direction)throw new ut.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new ut.UnsupportedError("SCTP not enabled by remote Transport");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw new TypeError('no "producedata" listener set into this transport');if(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");return(t||r)&&(e=!1),this._awaitQueue.push((async()=>{const{dataChannel:a,sctpStreamParameters:o}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s});ft.validateSctpStreamParameters(o);const{id:c}=await this.safeEmitAsPromise("producedata",{sctpStreamParameters:o,label:i,protocol:s,appData:n}),d=new yt.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:n});return this._dataProducers.set(d.id,d),this._handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d}),"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:i="",protocol:s="",appData:n={}}){if(bt.debug("consumeData()"),r=ht.clone(r,void 0),this._closed)throw new ut.InvalidStateError("closed");if("recv"!==this._direction)throw new ut.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new ut.UnsupportedError("SCTP not enabled by remote Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");return ft.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:s}),o=new vt.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,appData:n});return this._dataConsumers.set(o.id,o),this._handleDataConsumer(o),this._observer.safeEmit("newdataconsumer",o),o}),"transport.consumeData()")}_handleHandler(){const e=this._handler;e.on("@connect",(({dtlsParameters:e},t,r)=>{this._closed?r(new ut.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(bt.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))}))}_handleProducer(e){e.on("@close",(()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push((async()=>this._handler.stopSending(e.localId)),"producer @close event").catch((e=>bt.warn("producer.close() failed:%o",e)))})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new ut.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}_handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._closed||this._awaitQueue.push((async()=>this._handler.stopReceiving(e.localId)),"consumer @close event").catch((()=>{}))})),e.on("@pause",(()=>{this._awaitQueue.push((async()=>this._handler.pauseReceiving(e.localId)),"consumer @pause event").catch((()=>{}))})),e.on("@resume",(()=>{this._awaitQueue.push((async()=>this._handler.resumeReceiving(e.localId)),"consumer @resume event").catch((()=>{}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new ut.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)}))}_handleDataProducer(e){e.on("@close",(()=>{this._dataProducers.delete(e.id)}))}_handleDataConsumer(e){e.on("@close",(()=>{this._dataConsumers.delete(e.id)}))}}Ne.Transport=_t;var wt={},St={},Rt={},Pt={exports:{}},kt=Pt.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(kt).forEach((function(e){kt[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))})),function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var s=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:s&&!r[e.name]&&(r[e.name]={});var n=e.push?{}:s?r[e.name]:r;!function(e,r,i,s){if(s&&!i)r[s]=t(e[1]);else for(var n=0;n<i.length;n+=1)null!=e[n+1]&&(r[i[n]]=t(e[n+1]))}(i.match(e.reg),n,e.names,e.name),e.push&&r[e.push].push(n)},i=Pt.exports,s=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},n=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(s).forEach((function(e){var t=e[0],s=e.slice(2);"m"===t&&(n.push({rtp:[],fmtp:[]}),a=n[n.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(s))return r(c,a,s)}})),t.media=n,t};var n=function(e,r){var i=r.split(/=(.+)/,2);return 2===i.length?e[i[0]]=t(i[1]):1===i.length&&r.length>1&&(e[i[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(n,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],i=e.split(" ").map(t),s=0;s<i.length;s+=3)r.push({component:i[s],ip:i[s+1],port:i[s+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(n,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,i=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),i=!0),{scid:r,paused:i}}))}))}}(Rt);var Tt=Pt.exports,Ct=/%[sdv%]/g,Et=function(e){var t=1,r=arguments,i=r.length;return e.replace(Ct,(function(e){if(t>=i)return e;var s=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}}))},Dt=function(e,t,r){var i=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?i.push(r[t.name][n]):i.push(r[t.names[s]])}else i.push(r[t.name]);return Et.apply(null,i)},Ot=["v","o","s","i","u","e","p","c","b","t","r","z","a"],xt=["i","c","b","a"],Mt=Rt,jt=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var r=t.outerOrder||Ot,i=t.innerOrder||xt,s=[];return r.forEach((function(t){Tt[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Dt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Dt(t,r,e))}))}))})),e.media.forEach((function(e){s.push(Dt("m",Tt.m[0],e)),i.forEach((function(t){Tt[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Dt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Dt(t,r,e))}))}))}))})),s.join("\r\n")+"\r\n"};St.write=jt,St.parse=Mt.parse,St.parseParams=Mt.parseParams,St.parseFmtpConfig=Mt.parseFmtpConfig,St.parsePayloads=Mt.parsePayloads,St.parseRemoteCandidates=Mt.parseRemoteCandidates,St.parseImageAttributes=Mt.parseImageAttributes,St.parseSimulcastStreamList=Mt.parseSimulcastStreamList;var It={},Lt=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),At=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ft=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Lt(t,e,r);return At(t,e),t};Object.defineProperty(It,"__esModule",{value:!0}),It.applyCodecParameters=It.getCname=It.extractDtlsParameters=It.extractRtpCapabilities=void 0;const Nt=Ft(St);It.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,s=!1;for(const n of e.media){const e=n.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(s)continue;s=!0;break;default:continue}for(const r of n.rtp){const i={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(i.preferredPayloadType,i)}for(const e of n.fmtp||[]){const r=Nt.parseParams(e.config),i=t.get(e.payload);i&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),i.parameters=r)}for(const e of n.rtcpFb||[]){const r=t.get(e.payload);if(!r)continue;const i={type:e.type,parameter:e.subtype};i.parameter||delete i.parameter,r.rtcpFeedback.push(i)}for(const t of n.ext||[]){if(t["encrypt-uri"])continue;const i={kind:e,uri:t.uri,preferredId:t.value};r.push(i)}}return{codecs:Array.from(t.values()),headerExtensions:r}},It.extractDtlsParameters=function({sdpObject:e}){const t=(e.media||[]).find((e=>e.iceUfrag&&0!==e.port));if(!t)throw new Error("no active media section found");const r=t.fingerprint||e.fingerprint;let i;switch(t.setup){case"active":i="client";break;case"passive":i="server";break;case"actpass":i="auto"}return{role:i,fingerprints:[{algorithm:r.type,value:r.hash}]}},It.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},It.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(const r of e.codecs){const e=r.mimeType.toLowerCase();if("audio/opus"!==e)continue;if(!(t.rtp||[]).find((e=>e.payload===r.payloadType)))continue;t.fmtp=t.fmtp||[];let i=t.fmtp.find((e=>e.payload===r.payloadType));i||(i={payload:r.payloadType,config:""},t.fmtp.push(i));const s=Nt.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(s.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(s))i.config&&(i.config+=";"),i.config+=`${e}=${s[e]}`}};var Bt={};Object.defineProperty(Bt,"__esModule",{value:!0}),Bt.addLegacySimulcast=Bt.getRtpEncodings=void 0,Bt.getRtpEncodings=function({offerMediaObject:e}){const t=new Set;for(const r of e.ssrcs||[]){const e=r.id;t.add(e)}if(0===t.size)throw new Error("no a=ssrc lines found");const r=new Map;for(const i of e.ssrcGroups||[]){if("FID"!==i.semantics)continue;let[e,s]=i.ssrcs.split(/\s+/);e=Number(e),s=Number(s),t.has(e)&&(t.delete(e),t.delete(s),r.set(e,s))}for(const e of t)r.set(e,null);const i=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},Bt.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){if(t<=1)throw new TypeError("numStreams must be greater than 1");const r=(e.ssrcs||[]).find((e=>"msid"===e.attribute));if(!r)throw new Error("a=ssrc line with msid information not found");const[i,s]=r.value.split(" "),n=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===n&&(a=Number(t[1]),!0)}));const o=e.ssrcs.find((e=>"cname"===e.attribute));if(!o)throw new Error("a=ssrc line with cname information not found");const c=o.value,d=[],p=[];for(let e=0;e<t;++e)d.push(n+e),a&&p.push(a+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){const r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${i} ${s}`})}for(let t=0;t<p.length;++t){const r=d[t],n=p[t];e.ssrcs.push({id:n,attribute:"cname",value:c}),e.ssrcs.push({id:n,attribute:"msid",value:`${i} ${s}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${n}`})}};var Ut={};Object.defineProperty(Ut,"__esModule",{value:!0}),Ut.HandlerInterface=void 0;const qt=pe;class zt extends qt.EnhancedEventEmitter{constructor(){super()}}Ut.HandlerInterface=zt;var $t={},Vt={},Gt=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Wt=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ht=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Gt(t,e,r);return Wt(t,e),t};Object.defineProperty(Vt,"__esModule",{value:!0}),Vt.OfferMediaSection=Vt.AnswerMediaSection=Vt.MediaSection=void 0;const Kt=Ht(ye);class Qt{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:i=!1}){if(this._mediaObject={},this._planB=i,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}disable(){this._mediaObject.direction="inactive",delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids}close(){this._mediaObject.direction="inactive",this._mediaObject.port=0,delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}}Vt.MediaSection=Qt;Vt.AnswerMediaSection=class extends Qt{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.port=s.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),a.type){case"audio":case"video":this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[];for(const e of c.codecs){const t={payload:e.payloadType,codec:Jt(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Kt.clone(e.parameters,{});if(d){const{opusStereo:t,opusFec:i,opusDtx:s,opusMaxPlaybackRate:n,opusMaxAverageBitrate:a,opusPtime:c,videoGoogleStartBitrate:p,videoGoogleMaxBitrate:l,videoGoogleMinBitrate:u}=d,h=o.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":void 0!==t&&(h.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==i&&(h.parameters.useinbandfec=i?1:0,r.useinbandfec=i?1:0),void 0!==s&&(h.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==n&&(r.maxplaybackrate=n),void 0!==a&&(r.maxaveragebitrate=a),void 0!==c&&(h.parameters.ptime=c,r.ptime=c);break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==p&&(r["x-google-start-bitrate"]=p),void 0!==l&&(r["x-google-max-bitrate"]=l),void 0!==u&&(r["x-google-min-bitrate"]=u)}}const i={payload:e.payloadType,config:""};for(const e of Object.keys(r))i.config&&(i.config+=";"),i.config+=`${e}=${r[e]}`;i.config&&this._mediaObject.fmtp.push(i);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions){(a.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(p&&"extmap-allow-mixed"===a.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),a.simulcast){this._mediaObject.simulcast={dir1:"recv",list1:a.simulcast.list1},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}else if(a.simulcast_03){this._mediaObject.simulcast_03={value:a.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof a.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize):a.sctpmap&&(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}};function Jt(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Vt.OfferMediaSection=class extends Qt{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:p,oldDataChannelSpec:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a),this._mediaObject.type=o,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=s.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=i?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),o){case"audio":case"video":{this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${d||"-"} ${p}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:Jt(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r={payload:e.payloadType,config:""};for(const t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;r.config&&this._mediaObject.fmtp.push(r);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions)this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";const e=c.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],c.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${d||"-"} ${p}`}),r&&(c.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${d||"-"} ${p}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":l?(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const i=e.encodings[0],s=i.ssrc,n=i.rtx&&i.rtx.ssrc?i.rtx.ssrc:void 0,a=this._mediaObject.payloads.split(" ");for(const t of e.codecs){if(a.includes(String(t.payloadType)))continue;const e={payload:t.payloadType,codec:Jt(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);const r={payload:t.payloadType,config:""};for(const e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;r.config&&this._mediaObject.fmtp.push(r);for(const e of t.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter((e=>!this._mediaObject.payloads.includes(e.payloadType))).map((e=>e.payloadType)).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),n&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${s} ${n}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,i=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==i)),i&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${i}`)))}};var Yt=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Xt=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Zt=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Yt(t,e,r);return Xt(t,e),t};Object.defineProperty($t,"__esModule",{value:!0}),$t.RemoteSdp=void 0;const er=Zt(St),tr=Vt,rr=new ae.Logger("RemoteSdp");$t.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=s,this._planB=n,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};const e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}s&&(this._sdpObject.origin.address=s.ip,this._sdpObject.origin.ipVer=s.ipVersion)}updateIceParameters(e){rr.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0;for(const t of this._mediaSections)t.setIceParameters(e)}updateDtlsRole(e){rr.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e;for(const t of this._mediaSections)t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){const t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:n=!1}){const a=new tr.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:n});t?this._replaceMediaSection(a,t):this._midToIndex.has(a.mid)?this._replaceMediaSection(a):this._addMediaSection(a)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:s}){const n=this._midToIndex.get(e);let a;if(void 0!==n&&(a=this._mediaSections[n]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:s}),this._replaceMediaSection(a);else{a=new tr.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:s});const n=this._mediaSections.find((e=>e.closed));n?this._replaceMediaSection(a,n.mid):this._addMediaSection(a)}}disableMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);this._mediaSections[t].disable()}closeMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);const r=this._mediaSections[t];if(e===this._firstMid)return rr.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),void this.disableMediaSection(e);r.close(),this._regenerateBundleMids()}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._midToIndex.get(e);if(void 0===r)throw new Error(`no media section found with mid '${e}'`);const i=this._mediaSections[r];i.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(i)}sendSctpAssociation({offerMediaObject:e}){const t=new tr.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){const t=new tr.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,er.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){const r=this._midToIndex.get(t);if(void 0===r)throw new Error(`no media section found for reuseMid '${t}'`);const i=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(i.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{const t=this._midToIndex.get(e.mid);if(void 0===t)throw new Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var ir={};Object.defineProperty(ir,"__esModule",{value:!0}),ir.parse=void 0;const sr=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");ir.parse=function(e){const t=sr.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var nr=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ar=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),or=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&nr(t,e,r);return ar(t,e),t};Object.defineProperty(wt,"__esModule",{value:!0}),wt.Chrome74=void 0;const cr=or(St),dr=ae,pr=or(ye),lr=or(ve),ur=or(It),hr=or(Bt),fr=Ut,mr=$t,gr=ir,yr=new dr.Logger("Chrome74"),vr={OS:1024,MIS:1024};class br extends fr.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new br}get name(){return"Chrome74"}close(){if(yr.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){yr.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=cr.parse(t.sdp);return ur.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return yr.debug("getNativeSctpCapabilities()"),{numStreams:vr}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){yr.debug("run()"),this._direction=e,this._remoteSdp=new mr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:lr.getSendingRtpParameters("audio",d),video:lr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:lr.getSendingRemoteRtpParameters("audio",d),video:lr.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection(Object.assign({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"},o),c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){yr.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(yr.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});yr.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};yr.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};yr.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();yr.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this._assertSendDirection(),yr.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const s=pr.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=lr.reduceCodecs(s.codecs,i);const n=pr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});n.codecs=lr.reduceCodecs(n.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),p=cr.parse(d.sdp);this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:p});let l=!1;const u=gr.parse((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(yr.debug("send() | enabling legacy simulcast for VP9 SVC"),l=!0,p=cr.parse(d.sdp),c=p.media[a.idx],hr.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:cr.write(p)}),yr.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(s.mid=h,p=cr.parse(this._pc.localDescription.sdp),c=p.media[a.idx],s.rtcp.cname=ur.getCname({offerMediaObject:c}),t)if(1===t.length){let e=hr.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),l&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=hr.getRtpEncodings({offerMediaObject:c});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return yr.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){this._assertSendDirection(),yr.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();yr.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};yr.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?yr.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):yr.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),yr.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),yr.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]=Object.assign(Object.assign({},e),t)})),await r.sender.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this._assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};yr.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%vr.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=cr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:t}),yr.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};yr.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive({trackId:e,kind:t,rtpParameters:r}){this._assertRecvDirection(),yr.debug("receive() [trackId:%s, kind:%s]",e,t);const i=r.mid||String(this._mapMidTransceiver.size);this._remoteSdp.receive({mid:i,kind:t,offerRtpParameters:r,streamId:r.rtcp.cname,trackId:e});const s={type:"offer",sdp:this._remoteSdp.getSdp()};yr.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",s),await this._pc.setRemoteDescription(s);let n=await this._pc.createAnswer();const a=cr.parse(n.sdp),o=a.media.find((e=>String(e.mid)===i));ur.applyCodecParameters({offerRtpParameters:r,answerMediaObject:o}),n={type:"answer",sdp:cr.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:a}),yr.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);const c=this._pc.getTransceivers().find((e=>e.mid===i));if(!c)throw new Error("new RTCRtpTransceiver not found");return this._mapMidTransceiver.set(i,c),{localId:i,track:c.receiver.track,rtpReceiver:c.receiver}}async stopReceiving(e){this._assertRecvDirection(),yr.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};yr.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();yr.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async pauseReceiving(e){this._assertRecvDirection(),yr.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};yr.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();yr.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),yr.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};yr.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();yr.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async getReceiverStats(e){this._assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};yr.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};yr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=cr.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}yr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=cr.parse(this._pc.localDescription.sdp));const r=ur.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}wt.Chrome74=br;var _r={},wr=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Sr=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Rr=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&wr(t,e,r);return Sr(t,e),t};Object.defineProperty(_r,"__esModule",{value:!0}),_r.Chrome70=void 0;const Pr=Rr(St),kr=ae,Tr=Rr(ye),Cr=Rr(ve),Er=Rr(It),Dr=Rr(Bt),Or=Ut,xr=$t,Mr=ir,jr=new kr.Logger("Chrome70"),Ir={OS:1024,MIS:1024};class Lr extends Or.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Lr}get name(){return"Chrome70"}close(){if(jr.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){jr.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Pr.parse(t.sdp);return Er.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return jr.debug("getNativeSctpCapabilities()"),{numStreams:Ir}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){jr.debug("run()"),this._direction=e,this._remoteSdp=new xr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Cr.getSendingRtpParameters("audio",d),video:Cr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Cr.getSendingRemoteRtpParameters("audio",d),video:Cr.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection(Object.assign({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"},o),c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){jr.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(jr.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});jr.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};jr.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};jr.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();jr.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this._assertSendDirection(),jr.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=Tr.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Cr.reduceCodecs(s.codecs,i);const n=Tr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});n.codecs=Cr.reduceCodecs(n.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),p=Pr.parse(d.sdp);this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:p}),t&&t.length>1&&(jr.debug("send() | enabling legacy simulcast"),p=Pr.parse(d.sdp),c=p.media[a.idx],Dr.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Pr.write(p)});let l=!1;const u=Mr.parse((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(jr.debug("send() | enabling legacy simulcast for VP9 SVC"),l=!0,p=Pr.parse(d.sdp),c=p.media[a.idx],Dr.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Pr.write(p)}),jr.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){jr.debug("send() | applying given encodings");const e=o.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],s=t[r];if(!s)break;e.encodings[r]=Object.assign(i,s)}await o.sender.setParameters(e)}const h=o.mid;if(s.mid=h,p=Pr.parse(this._pc.localDescription.sdp),c=p.media[a.idx],s.rtcp.cname=Er.getCname({offerMediaObject:c}),s.encodings=Dr.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);if(l&&(s.encodings=[s.encodings[0]]),s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return jr.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){this._assertSendDirection(),jr.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();jr.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};jr.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?jr.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):jr.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),jr.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),jr.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]=Object.assign(Object.assign({},e),t)})),await r.sender.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this._assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};jr.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ir.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Pr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:t}),jr.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};jr.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive({trackId:e,kind:t,rtpParameters:r}){this._assertRecvDirection(),jr.debug("receive() [trackId:%s, kind:%s]",e,t);const i=r.mid||String(this._mapMidTransceiver.size);this._remoteSdp.receive({mid:i,kind:t,offerRtpParameters:r,streamId:r.rtcp.cname,trackId:e});const s={type:"offer",sdp:this._remoteSdp.getSdp()};jr.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",s),await this._pc.setRemoteDescription(s);let n=await this._pc.createAnswer();const a=Pr.parse(n.sdp),o=a.media.find((e=>String(e.mid)===i));Er.applyCodecParameters({offerRtpParameters:r,answerMediaObject:o}),n={type:"answer",sdp:Pr.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:a}),jr.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);const c=this._pc.getTransceivers().find((e=>e.mid===i));if(!c)throw new Error("new RTCRtpTransceiver not found");return this._mapMidTransceiver.set(i,c),{localId:i,track:c.receiver.track,rtpReceiver:c.receiver}}async stopReceiving(e){this._assertRecvDirection(),jr.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};jr.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();jr.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this._assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};jr.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};jr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Pr.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}jr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Pr.parse(this._pc.localDescription.sdp));const r=Er.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}_r.Chrome70=Lr;var Ar={},Fr={};Object.defineProperty(Fr,"__esModule",{value:!0}),Fr.addLegacySimulcast=Fr.getRtpEncodings=void 0,Fr.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const i of e.ssrcs||[]){if("msid"!==i.attribute)continue;if(i.value.split(" ")[1]===t.id){const e=i.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const i=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,s]=t.ssrcs.split(/\s+/);e=Number(e),s=Number(s),r.has(e)&&(r.delete(e),r.delete(s),i.set(e,s))}for(const e of r)i.set(e,null);const s=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),s.push(r)}return s},Fr.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,s,n;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,n=e.value.split(" ")[0],!0)})))throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===i&&(s=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===i));if(!a)throw new Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);const o=a.value,c=[],d=[];for(let e=0;e<r;++e)c.push(i+e),s&&d.push(s+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){const i=c[r];e.ssrcs.push({id:i,attribute:"cname",value:o}),e.ssrcs.push({id:i,attribute:"msid",value:`${n} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],s=d[r];e.ssrcs.push({id:s,attribute:"cname",value:o}),e.ssrcs.push({id:s,attribute:"msid",value:`${n} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${s}`})}};var Nr=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Br=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ur=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Nr(t,e,r);return Br(t,e),t};Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.Chrome67=void 0;const qr=Ur(St),zr=ae,$r=Ur(ye),Vr=Ur(ve),Gr=Ur(It),Wr=Ur(Fr),Hr=Ut,Kr=$t,Qr=new zr.Logger("Chrome67"),Jr={OS:1024,MIS:1024};class Yr extends Hr.HandlerInterface{constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Yr}get name(){return"Chrome67"}close(){if(Qr.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Qr.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=qr.parse(t.sdp);return Gr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Qr.debug("getNativeSctpCapabilities()"),{numStreams:Jr}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Qr.debug("run()"),this._direction=e,this._remoteSdp=new Kr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Vr.getSendingRtpParameters("audio",d),video:Vr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Vr.getSendingRemoteRtpParameters("audio",d),video:Vr.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection(Object.assign({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"},o),c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Qr.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Qr.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Qr.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Qr.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Qr.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Qr.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this._assertSendDirection(),Qr.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Qr.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,n=await this._pc.createOffer(),a=qr.parse(n.sdp);const o=$r.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=Vr.reduceCodecs(o.codecs);const c=$r.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=Vr.reduceCodecs(c.codecs),this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Qr.debug("send() | enabling simulcast"),a=qr.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Wr.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:qr.write(a)}),Qr.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=qr.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Gr.getCname({offerMediaObject:s}),o.encodings=Wr.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Qr.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const p=String(this._nextSendLocalId);this._nextSendLocalId++;const l=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(p,l),{localId:p,rtpParameters:o,rtpSender:l}}async stopSending(e){this._assertSendDirection(),Qr.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();Qr.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Qr.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};Qr.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?Qr.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Qr.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),Qr.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Qr.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]=Object.assign(Object.assign({},e),t)})),await r.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this._assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};Qr.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Jr.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=qr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:t}),Qr.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Qr.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive({trackId:e,kind:t,rtpParameters:r}){this._assertRecvDirection(),Qr.debug("receive() [trackId:%s, kind:%s]",e,t);const i=e,s=t;this._remoteSdp.receive({mid:s,kind:t,offerRtpParameters:r,streamId:r.rtcp.cname,trackId:e});const n={type:"offer",sdp:this._remoteSdp.getSdp()};Qr.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let a=await this._pc.createAnswer();const o=qr.parse(a.sdp),c=o.media.find((e=>String(e.mid)===s));Gr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:c}),a={type:"answer",sdp:qr.write(o)},this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:o}),Qr.debug("receive() | calling pc.setLocalDescription() [answer:%o]",a),await this._pc.setLocalDescription(a);const d=this._pc.getReceivers().find((e=>e.track&&e.track.id===i));if(!d)throw new Error("new RTCRtpReceiver not");return this._mapRecvLocalIdInfo.set(i,{mid:s,rtpParameters:r,rtpReceiver:d}),{localId:i,track:d.track,rtpReceiver:d}}async stopReceiving(e){this._assertRecvDirection(),Qr.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};Qr.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const s=await this._pc.createAnswer();Qr.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this._assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};Qr.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Qr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=qr.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}Qr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=qr.parse(this._pc.localDescription.sdp));const r=Gr.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Ar.Chrome67=Yr;var Xr={},Zr=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ei=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ti=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Zr(t,e,r);return ei(t,e),t};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.Chrome55=void 0;const ri=ti(St),ii=ae,si=fe,ni=ti(ye),ai=ti(ve),oi=ti(It),ci=ti(Fr),di=Ut,pi=$t,li=new ii.Logger("Chrome55"),ui={OS:1024,MIS:1024};class hi extends di.HandlerInterface{constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new hi}get name(){return"Chrome55"}close(){if(li.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){li.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=ri.parse(t.sdp);return oi.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return li.debug("getNativeSctpCapabilities()"),{numStreams:ui}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){li.debug("run()"),this._direction=e,this._remoteSdp=new pi.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:ai.getSendingRtpParameters("audio",d),video:ai.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ai.getSendingRemoteRtpParameters("audio",d),video:ai.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection(Object.assign({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"},o),c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){li.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(li.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});li.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};li.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};li.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();li.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this._assertSendDirection(),li.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&li.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,n=await this._pc.createOffer(),a=ri.parse(n.sdp);const o=ni.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=ai.reduceCodecs(o.codecs);const c=ni.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=ai.reduceCodecs(c.codecs),this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(li.debug("send() | enabling simulcast"),a=ri.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),ci.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:ri.write(a)}),li.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=ri.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=oi.getCname({offerMediaObject:s}),o.encodings=ci.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};li.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const p=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(p,e),{localId:p,rtpParameters:o}}async stopSending(e){this._assertSendDirection(),li.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();li.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void li.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};li.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new si.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new si.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new si.UnsupportedError("not supported")}async getSenderStats(e){throw new si.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this._assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};li.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ui.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ri.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:t}),li.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};li.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive({trackId:e,kind:t,rtpParameters:r}){this._assertRecvDirection(),li.debug("receive() [trackId:%s, kind:%s]",e,t);const i=e,s=t,n=r.rtcp.cname;this._remoteSdp.receive({mid:s,kind:t,offerRtpParameters:r,streamId:n,trackId:e});const a={type:"offer",sdp:this._remoteSdp.getSdp()};li.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",a),await this._pc.setRemoteDescription(a);let o=await this._pc.createAnswer();const c=ri.parse(o.sdp),d=c.media.find((e=>String(e.mid)===s));oi.applyCodecParameters({offerRtpParameters:r,answerMediaObject:d}),o={type:"answer",sdp:ri.write(c)},this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:c}),li.debug("receive() | calling pc.setLocalDescription() [answer:%o]",o),await this._pc.setLocalDescription(o);const p=this._pc.getRemoteStreams().find((e=>e.id===n)),l=p.getTrackById(i);if(!l)throw new Error("remote track not found");return this._mapRecvLocalIdInfo.set(i,{mid:s,rtpParameters:r}),{localId:i,track:l}}async stopReceiving(e){this._assertRecvDirection(),li.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};li.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const s=await this._pc.createAnswer();li.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new si.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};li.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};li.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ri.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}li.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ri.parse(this._pc.localDescription.sdp));const r=oi.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Xr.Chrome55=hi;var fi={},mi=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),gi=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),yi=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&mi(t,e,r);return gi(t,e),t};Object.defineProperty(fi,"__esModule",{value:!0}),fi.Firefox60=void 0;const vi=yi(St),bi=ae,_i=fe,wi=yi(ye),Si=yi(ve),Ri=yi(It),Pi=yi(Bt),ki=Ut,Ti=$t,Ci=new bi.Logger("Firefox60"),Ei={OS:16,MIS:2048};class Di extends ki.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Di}get name(){return"Firefox60"}close(){if(Ci.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Ci.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});const i=e.addTransceiver(r,{direction:"sendrecv"}),s=i.sender.getParameters(),n=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];s.encodings=n,await i.sender.setParameters(s);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=vi.parse(a.sdp);return Ri.extractRtpCapabilities({sdpObject:o})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return Ci.debug("getNativeSctpCapabilities()"),{numStreams:Ei}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ci.debug("run()"),this._direction=e,this._remoteSdp=new Ti.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Si.getSendingRtpParameters("audio",d),video:Si.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Si.getSendingRemoteRtpParameters("audio",d),video:Si.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection(Object.assign({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"},o),c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw new _i.UnsupportedError("not supported")}async restartIce(e){if(Ci.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ci.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ci.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ci.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ci.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this._assertSendDirection(),Ci.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=wi.clone(t,[])).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const s=wi.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Si.reduceCodecs(s.codecs,i);const n=wi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});n.codecs=Si.reduceCodecs(n.codecs,i);const a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){const e=a.sender.getParameters();e.encodings=t,await a.sender.setParameters(e)}const o=await this._pc.createOffer();let c=vi.parse(o.sdp);this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:c}),Ci.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const d=a.mid;s.mid=d,c=vi.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(s.rtcp.cname=Ri.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Pi.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t.reverse();else s.encodings=Pi.getRtpEncodings({offerMediaObject:p});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const l={type:"answer",sdp:this._remoteSdp.getSdp()};return Ci.debug("send() | calling pc.setRemoteDescription() [answer:%o]",l),await this._pc.setRemoteDescription(l),this._mapMidTransceiver.set(d,a),{localId:d,rtpParameters:s,rtpSender:a.sender}}async stopSending(e){Ci.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();Ci.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ci.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?Ci.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ci.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),Ci.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const i=r.sender.getParameters();t=i.encodings.length-1-t,i.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Ci.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]=Object.assign(Object.assign({},e),t)})),await r.sender.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this._assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Ci.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ei.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=vi.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:t}),Ci.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ci.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive({trackId:e,kind:t,rtpParameters:r}){this._assertRecvDirection(),Ci.debug("receive() [trackId:%s, kind:%s]",e,t);const i=r.mid||String(this._mapMidTransceiver.size);this._remoteSdp.receive({mid:i,kind:t,offerRtpParameters:r,streamId:r.rtcp.cname,trackId:e});const s={type:"offer",sdp:this._remoteSdp.getSdp()};Ci.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",s),await this._pc.setRemoteDescription(s);let n=await this._pc.createAnswer();const a=vi.parse(n.sdp),o=a.media.find((e=>String(e.mid)===i));Ri.applyCodecParameters({offerRtpParameters:r,answerMediaObject:o}),n={type:"answer",sdp:vi.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:a}),Ci.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);const c=this._pc.getTransceivers().find((e=>e.mid===i));if(!c)throw new Error("new RTCRtpTransceiver not found");return this._mapMidTransceiver.set(i,c),{localId:i,track:c.receiver.track,rtpReceiver:c.receiver}}async stopReceiving(e){this._assertRecvDirection(),Ci.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ci.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Ci.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async pauseReceiving(e){this._assertRecvDirection(),Ci.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ci.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Ci.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),Ci.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ci.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Ci.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async getReceiverStats(e){this._assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Ci.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ci.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=vi.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}Ci.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=vi.parse(this._pc.localDescription.sdp));const r=Ri.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}fi.Firefox60=Di;var Oi={},xi=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Mi=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ji=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&xi(t,e,r);return Mi(t,e),t};Object.defineProperty(Oi,"__esModule",{value:!0}),Oi.Safari12=void 0;const Ii=ji(St),Li=ae,Ai=ji(ye),Fi=ji(ve),Ni=ji(It),Bi=ji(Bt),Ui=Ut,qi=$t,zi=new Li.Logger("Safari12"),$i={OS:1024,MIS:1024};class Vi extends Ui.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Vi}get name(){return"Safari12"}close(){if(zi.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){zi.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Ii.parse(t.sdp);return Ni.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return zi.debug("getNativeSctpCapabilities()"),{numStreams:$i}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){zi.debug("run()"),this._direction=e,this._remoteSdp=new qi.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Fi.getSendingRtpParameters("audio",d),video:Fi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Fi.getSendingRemoteRtpParameters("audio",d),video:Fi.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection(Object.assign({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"},o),c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){zi.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(zi.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});zi.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};zi.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();zi.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this._assertSendDirection(),zi.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=Ai.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Fi.reduceCodecs(s.codecs,i);const n=Ai.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});n.codecs=Fi.reduceCodecs(n.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),p=Ii.parse(d.sdp);this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:p}),t&&t.length>1&&(zi.debug("send() | enabling legacy simulcast"),p=Ii.parse(d.sdp),c=p.media[a.idx],Bi.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Ii.write(p)}),zi.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const l=o.mid;if(s.mid=l,p=Ii.parse(this._pc.localDescription.sdp),c=p.media[a.idx],s.rtcp.cname=Ni.getCname({offerMediaObject:c}),s.encodings=Bi.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return zi.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){this._assertSendDirection(),zi.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();zi.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};zi.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?zi.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):zi.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),zi.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),zi.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]=Object.assign(Object.assign({},e),t)})),await r.sender.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this._assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};zi.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%$i.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ii.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:t}),zi.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};zi.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive({trackId:e,kind:t,rtpParameters:r}){this._assertRecvDirection(),zi.debug("receive() [trackId:%s, kind:%s]",e,t);const i=r.mid||String(this._mapMidTransceiver.size);this._remoteSdp.receive({mid:i,kind:t,offerRtpParameters:r,streamId:r.rtcp.cname,trackId:e});const s={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",s),await this._pc.setRemoteDescription(s);let n=await this._pc.createAnswer();const a=Ii.parse(n.sdp),o=a.media.find((e=>String(e.mid)===i));Ni.applyCodecParameters({offerRtpParameters:r,answerMediaObject:o}),n={type:"answer",sdp:Ii.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:a}),zi.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);const c=this._pc.getTransceivers().find((e=>e.mid===i));if(!c)throw new Error("new RTCRtpTransceiver not found");return this._mapMidTransceiver.set(i,c),{localId:i,track:c.receiver.track,rtpReceiver:c.receiver}}async stopReceiving(e){this._assertRecvDirection(),zi.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();zi.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async pauseReceiving(e){this._assertRecvDirection(),zi.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();zi.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),zi.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();zi.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async getReceiverStats(e){this._assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};zi.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ii.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}zi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ii.parse(this._pc.localDescription.sdp));const r=Ni.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Oi.Safari12=Vi;var Gi={},Wi=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Hi=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ki=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Wi(t,e,r);return Hi(t,e),t};Object.defineProperty(Gi,"__esModule",{value:!0}),Gi.Safari11=void 0;const Qi=Ki(St),Ji=ae,Yi=Ki(ye),Xi=Ki(ve),Zi=Ki(It),es=Ki(Fr),ts=Ut,rs=$t,is=new Ji.Logger("Safari11"),ss={OS:1024,MIS:1024};class ns extends ts.HandlerInterface{constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new ns}get name(){return"Safari11"}close(){if(is.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){is.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Qi.parse(t.sdp);return Zi.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return is.debug("getNativeSctpCapabilities()"),{numStreams:ss}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){is.debug("run()"),this._direction=e,this._remoteSdp=new rs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Xi.getSendingRtpParameters("audio",d),video:Xi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Xi.getSendingRemoteRtpParameters("audio",d),video:Xi.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection(Object.assign({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"},o),c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){is.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(is.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});is.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};is.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};is.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();is.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this._assertSendDirection(),is.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&is.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,n=await this._pc.createOffer(),a=Qi.parse(n.sdp);const o=Yi.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=Xi.reduceCodecs(o.codecs);const c=Yi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=Xi.reduceCodecs(c.codecs),this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(is.debug("send() | enabling simulcast"),a=Qi.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),es.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:Qi.write(a)}),is.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=Qi.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Zi.getCname({offerMediaObject:s}),o.encodings=es.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};is.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const p=String(this._nextSendLocalId);this._nextSendLocalId++;const l=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(p,l),{localId:p,rtpParameters:o,rtpSender:l}}async stopSending(e){this._assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();is.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void is.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};is.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?is.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):is.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),is.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),is.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]=Object.assign(Object.assign({},e),t)})),await r.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this._assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};is.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ss.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Qi.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:t}),is.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};is.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive({trackId:e,kind:t,rtpParameters:r}){this._assertRecvDirection(),is.debug("receive() [trackId:%s, kind:%s]",e,t);const i=e,s=t;this._remoteSdp.receive({mid:s,kind:t,offerRtpParameters:r,streamId:r.rtcp.cname,trackId:e});const n={type:"offer",sdp:this._remoteSdp.getSdp()};is.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let a=await this._pc.createAnswer();const o=Qi.parse(a.sdp),c=o.media.find((e=>String(e.mid)===s));Zi.applyCodecParameters({offerRtpParameters:r,answerMediaObject:c}),a={type:"answer",sdp:Qi.write(o)},this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:o}),is.debug("receive() | calling pc.setLocalDescription() [answer:%o]",a),await this._pc.setLocalDescription(a);const d=this._pc.getReceivers().find((e=>e.track&&e.track.id===i));if(!d)throw new Error("new RTCRtpReceiver not");return this._mapRecvLocalIdInfo.set(i,{mid:s,rtpParameters:r,rtpReceiver:d}),{localId:i,track:d.track,rtpReceiver:d}}async stopReceiving(e){this._assertRecvDirection(),is.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};is.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const s=await this._pc.createAnswer();is.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s)}async getReceiverStats(e){this._assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};is.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};is.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Qi.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}is.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Qi.parse(this._pc.localDescription.sdp));const r=Zi.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Gi.Safari11=ns;var as={},os={},cs=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ds=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ps=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&cs(t,e,r);return ds(t,e),t};Object.defineProperty(os,"__esModule",{value:!0}),os.mangleRtpParameters=os.getCapabilities=void 0;const ls=ps(ye);os.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=ls.clone(e,{});for(const e of t.codecs){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){const t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(const t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},os.mangleRtpParameters=function(e){const t=ls.clone(e,{});t.mid&&(t.muxId=t.mid,delete t.mid);for(const e of t.codecs)e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t};var us=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),hs=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),fs=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&us(t,e,r);return hs(t,e),t};Object.defineProperty(as,"__esModule",{value:!0}),as.Edge11=void 0;const ms=ae,gs=fe,ys=fs(ye),vs=fs(ve),bs=fs(os),_s=Ut,ws=new ms.Logger("Edge11");class Ss extends _s.HandlerInterface{constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}static createFactory(){return()=>new Ss}get name(){return"Edge11"}close(){ws.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(const e of this._rtpSenders.values())try{e.stop()}catch(e){}for(const e of this._rtpReceivers.values())try{e.stop()}catch(e){}}async getNativeRtpCapabilities(){return ws.debug("getNativeRtpCapabilities()"),bs.getCapabilities()}async getNativeSctpCapabilities(){return ws.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ws.debug("run()"),this._sendingRtpParametersByKind={audio:vs.getSendingRtpParameters("audio",d),video:vs.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${ys.generateRandomNumber()}`,this._setIceGatherer({iceServers:n,iceTransportPolicy:a}),this._setIceTransport(),this._setDtlsTransport()}async updateIceServers(e){throw new gs.UnsupportedError("not supported")}async restartIce(e){if(ws.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){ws.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){ws.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this._setupTransport({localDtlsRole:"server"}),ws.debug("send() | calling new RTCRtpSender()");const s=new RTCRtpSender(e,this._dtlsTransport),n=ys.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=vs.reduceCodecs(n.codecs,i);const a=n.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=ys.generateRandomNumber(),a&&(e.rtx={ssrc:ys.generateRandomNumber()});n.encodings=t,n.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=bs.mangleRtpParameters(n);ws.debug("send() | calling rtpSender.send() [params:%o]",o),await s.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,s),{localId:c,rtpParameters:n,rtpSender:s}}async stopSending(e){ws.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{ws.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw ws.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async replaceTrack(e,t){t?ws.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ws.debug("replaceTrack() [localId:%s, no track]",e);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){ws.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){ws.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]=Object.assign(Object.assign({},e),t)})),await r.setParameters(i)}async getSenderStats(e){const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new gs.UnsupportedError("not implemented")}async receive({trackId:e,kind:t,rtpParameters:r}){ws.debug("receive() [trackId:%s, kind:%s]",e,t),this._transportReady||await this._setupTransport({localDtlsRole:"server"}),ws.debug("receive() | calling new RTCRtpReceiver()");const i=new RTCRtpReceiver(this._dtlsTransport,t);i.addEventListener("error",(e=>{ws.error('rtpReceiver "error" event [event:%o]',e)}));const s=bs.mangleRtpParameters(r);ws.debug("receive() | calling rtpReceiver.receive() [params:%o]",s),await i.receive(s);const n=e;return this._rtpReceivers.set(n,i),{localId:n,track:i.track,rtpReceiver:i}}async stopReceiving(e){ws.debug("stopReceiving() [localId:%s]",e);const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(e);try{ws.debug("stopReceiving() | calling rtpReceiver.stop()"),t.stop()}catch(e){ws.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new gs.UnsupportedError("not implemented")}_setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{ws.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){ws.debug("_setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}_setIceTransport(){const e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("icestatechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("candidatepairchange",(e=>{ws.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}_setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{ws.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{ws.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{ws.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async _setupTransport({localDtlsRole:e}){ws.debug("_setupTransport()");const t=this._dtlsTransport.getLocalParameters();t.role=e,await this.safeEmitAsPromise("@connect",{dtlsParameters:t}),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter((e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm)),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}as.Edge11=Ss;var Rs={},Ps=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ks=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ts=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Ps(t,e,r);return ks(t,e),t};Object.defineProperty(Rs,"__esModule",{value:!0}),Rs.ReactNative=void 0;const Cs=Ts(St),Es=ae,Ds=fe,Os=Ts(ye),xs=Ts(ve),Ms=Ts(It),js=Ts(Fr),Is=Ut,Ls=$t,As=new Es.Logger("ReactNative"),Fs={OS:1024,MIS:1024};class Ns extends Is.HandlerInterface{constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Ns}get name(){return"ReactNative"}close(){if(As.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){As.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Cs.parse(t.sdp);return Ms.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return As.debug("getNativeSctpCapabilities()"),{numStreams:Fs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){As.debug("run()"),this._direction=e,this._remoteSdp=new Ls.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:xs.getSendingRtpParameters("audio",d),video:xs.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:xs.getSendingRemoteRtpParameters("audio",d),video:xs.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection(Object.assign({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"},o),c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){As.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(As.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});As.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};As.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};As.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();As.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this._assertSendDirection(),As.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&As.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,n=await this._pc.createOffer(),a=Cs.parse(n.sdp);const o=Os.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=xs.reduceCodecs(o.codecs);const c=Os.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=xs.reduceCodecs(c.codecs),this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(As.debug("send() | enabling simulcast"),a=Cs.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),js.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:Cs.write(a)}),As.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=Cs.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Ms.getCname({offerMediaObject:s}),o.encodings=js.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&("video/vp8"===o.codecs[0].mimeType.toLowerCase()||"video/h264"===o.codecs[0].mimeType.toLowerCase()))for(const e of o.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};As.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const p=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(p,e),{localId:p,rtpParameters:o}}async stopSending(e){this._assertSendDirection(),As.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();As.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void As.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};As.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new Ds.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Ds.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Ds.UnsupportedError("not implemented")}async getSenderStats(e){throw new Ds.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this._assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};As.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Fs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Cs.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"server",localSdpObject:t}),As.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};As.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive({trackId:e,kind:t,rtpParameters:r}){this._assertRecvDirection(),As.debug("receive() [trackId:%s, kind:%s]",e,t);const i=e,s=t;let n=r.rtcp.cname;As.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),n+=`-hack-${Os.generateRandomNumber()}`,this._remoteSdp.receive({mid:s,kind:t,offerRtpParameters:r,streamId:n,trackId:e});const a={type:"offer",sdp:this._remoteSdp.getSdp()};As.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",a),await this._pc.setRemoteDescription(a);let o=await this._pc.createAnswer();const c=Cs.parse(o.sdp),d=c.media.find((e=>String(e.mid)===s));Ms.applyCodecParameters({offerRtpParameters:r,answerMediaObject:d}),o={type:"answer",sdp:Cs.write(c)},this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:c}),As.debug("receive() | calling pc.setLocalDescription() [answer:%o]",o),await this._pc.setLocalDescription(o);const p=this._pc.getRemoteStreams().find((e=>e.id===n)),l=p.getTrackById(i);if(!l)throw new Error("remote track not found");return this._mapRecvLocalIdInfo.set(i,{mid:s,rtpParameters:r}),{localId:i,track:l}}async stopReceiving(e){this._assertRecvDirection(),As.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};As.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const s=await this._pc.createAnswer();As.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Ds.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};As.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};As.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Cs.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}As.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Cs.parse(this._pc.localDescription.sdp));const r=Ms.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Rs.ReactNative=Ns;var Bs=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Us=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),qs=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Bs(t,e,r);return Us(t,e),t},zs=z&&z.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(se,"__esModule",{value:!0}),se.Device=se.detectDevice=void 0;const $s=zs(ne.exports),Vs=ae,Gs=pe,Ws=fe,Hs=qs(ye),Ks=qs(ve),Qs=Ne,Js=wt,Ys=_r,Xs=Ar,Zs=Xr,en=fi,tn=Oi,rn=Gi,sn=as,nn=Rs,an=new Vs.Logger("Device");function on(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return"undefined"==typeof RTCPeerConnection?void an.warn("this._detectDevice() | unsupported ReactNative without RTCPeerConnection"):(an.debug("this._detectDevice() | ReactNative handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)an.warn("this._detectDevice() | unknown device");else{const e=navigator.userAgent,t=$s.default.getParser(e),r=t.getEngine();if(t.satisfies({chrome:">=74",chromium:">=74"}))return"Chrome74";if(t.satisfies({chrome:">=70",chromium:">=70"}))return"Chrome70";if(t.satisfies({chrome:">=67",chromium:">=67"}))return"Chrome67";if(t.satisfies({chrome:">=55",chromium:">=55"}))return"Chrome55";if(t.satisfies({firefox:">=60"}))return"Firefox60";if(t.satisfies({safari:">=12.0"})&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(t.satisfies({safari:">=11"}))return"Safari11";if(t.satisfies({"microsoft edge":">=11"})&&t.satisfies({"microsoft edge":"<=18"}))return"Edge11";if(r.name&&"blink"===r.name.toLowerCase()){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome74"}an.warn("this._detectDevice() | browser not supported [name:%s, version:%s]",t.getBrowserName(),t.getBrowserVersion())}}se.detectDevice=on;se.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new Gs.EnhancedEventEmitter,an.debug("constructor()"),r){if(an.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"!=typeof r)throw new TypeError("non string Handler option no longer supported, use handlerFactory instead");e=r}if(e&&t)throw new TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)an.debug("constructor() | handler given: %s",e);else{if(!(e=on()))throw new Ws.UnsupportedError("device not supported");an.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome74":this._handlerFactory=Js.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=Ys.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=Xs.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=Zs.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=en.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=tn.Safari12.createFactory();break;case"Safari11":this._handlerFactory=rn.Safari11.createFactory();break;case"Edge11":this._handlerFactory=sn.Edge11.createFactory();break;case"ReactNative":this._handlerFactory=nn.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const i=this._handlerFactory();this._handlerName=i.name,i.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new Ws.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new Ws.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;an.debug("load() [routerRtpCapabilities:%o]",e),e=Hs.clone(e,void 0);try{if(this._loaded)throw new Ws.InvalidStateError("already loaded");Ks.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();an.debug("load() | got native RTP capabilities:%o",r),Ks.validateRtpCapabilities(r),this._extendedRtpCapabilities=Ks.getExtendedRtpCapabilities(r,e),an.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=Ks.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=Ks.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=Ks.getRecvRtpCapabilities(this._extendedRtpCapabilities),Ks.validateRtpCapabilities(this._recvRtpCapabilities),an.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),an.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),Ks.validateSctpCapabilities(this._sctpCapabilities),an.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new Ws.InvalidStateError("not loaded");if("audio"!==e&&"video"!==e)throw new TypeError(`invalid kind "${e}"`);return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return an.debug("createSendTransport()"),this._createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return an.debug("createRecvTransport()"),this._createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}_createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p={}}){if(!this._loaded)throw new Ws.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(i))throw new TypeError("missing iceCandidates");if("object"!=typeof s)throw new TypeError("missing dtlsParameters");if(n&&"object"!=typeof n)throw new TypeError("wrong sctpParameters");if(p&&"object"!=typeof p)throw new TypeError("if given, appData must be an object");const l=new Qs.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",l),l}};var cn={};Object.defineProperty(cn,"__esModule",{value:!0});var dn={};Object.defineProperty(dn,"__esModule",{value:!0}),function(e){var t=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=z&&z.__exportStar||function(e,r){for(var i in e)"default"===i||r.hasOwnProperty(i)||t(r,e,i)};Object.defineProperty(e,"__esModule",{value:!0}),r(se,e),r(Ne,e),r(qe,e),r(We,e),r(Ye,e),r(rt,e),r(cn,e),r(dn,e),r(Ut,e),r(fe,e)}(ie);class pn extends ie.Consumer{constructor(){super(...arguments),this.score=10,this.producerScore=10}}var ln,un={};!function(e){var t=z&&z.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=z&&z.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=z&&z.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var s in e)"default"!==s&&Object.hasOwnProperty.call(e,s)&&t(i,e,s);return r(i,e),i},s=z&&z.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.debug=e.detectDevice=e.Device=e.version=e.types=void 0;const n=s(V.exports);e.debug=n.default;const a=se;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return a.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return a.detectDevice}});const o=i(ie);e.types=o,e.version="3.6.42";var c=ir;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(un);class hn extends pn{constructor(e){super(e),this.spatialLayers=0,this.temporalLayers=0,this.currentSpatialLayer=0,this.currentTemporalLayer=0,this.logger=new te("VideoConsumer"),this.parseScalabilityMode()}parseScalabilityMode(){if(this.rtpParameters.encodings){const{scalabilityMode:e}=this.rtpParameters.encodings[0],{spatialLayers:t,temporalLayers:r}=un.parseScalabilityMode(e);this.spatialLayers=t,this.temporalLayers=r,this.logger.debug("parseScalabilityMode()",{scalabilityMode:e,spatialLayers:t,temporalLayers:r})}}setCurrentSpatialLayer(e){this.currentSpatialLayer=e,this.logger.debug("setCurrentSpatialLayer()",{currentSpatialLayer:e})}setCurrentTemporalLayer(e){this.currentTemporalLayer=e,this.logger.debug("setCurrentTemporalLayer()",{currentTemporalLayer:e})}}class fn{constructor(e){this.score=10;const{id:t,kind:r,peerId:i,label:s}=e;this.id=t,this.kind=r,this.peerId=i,this.label=s}}!function(e){e[e.BAD=4]="BAD",e[e.MEDIUM=6]="MEDIUM",e[e.GOOD=10]="GOOD"}(ln||(ln={}));class mn{constructor({id:e,channelIds:t,appId:r,loginDate:i=new Date,producers:n=[],engine:o,appData:c,uid:d,role:p}){this.producers=new Map,this.consumers=new Map,this._observer=new s,this.incomingConnectionQuality=a.GOOD,this.outgoingConnectionQuality=a.GOOD,this.id=e,this.channelIds=t,this.appId=r,this.loginDate=i,this.appData=c||{},this.uid=d,this.role=p,this.engine=o,this.logger=new te("Peer"),n.forEach(this.handleNewProducer.bind(this)),this.handlePeerEvents()}get observer(){return this._observer}get isMe(){return this.id===this.engine.mySocketId}get publishedMedia(){return Array.from(this.producers.values()).map((e=>({producerId:e.id,kind:e.kind,label:e.label})))}subscribe(e){return r(this,void 0,void 0,(function*(){const t=this.producers.get(e);if(!t)return void this.logger.warn("subscribe()",{message:"Peer does not have a producer",peer:this,producerId:e});this.getAllConsumers().find((t=>t.producerId===e))?this.logger.warn("subscribe()",{message:"Already subscribed to producer",peer:this,producerId:e}):yield this.createConsumer(t)}))}setMinResolution(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);t instanceof hn&&0!==t.spatialLayers&&(yield this.changeConsumerPreferredLayers(t,{spatialLayer:0}))}))}setMediumResolution(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);if(!(t instanceof hn)||0===t.spatialLayers)return;const r=t.spatialLayers>2?t.spatialLayers-2:t.spatialLayers;yield this.changeConsumerPreferredLayers(t,{spatialLayer:r})}))}setMaxResolution(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);t instanceof hn&&0!==t.spatialLayers&&(yield this.changeConsumerPreferredLayers(t,{spatialLayer:t.spatialLayers-1}))}))}pause(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);if(t)if(t.paused)this.logger.warn("pause()",{message:"Already paused",peer:this,consumerId:e});else try{yield this.pauseRemoteConsumer(t.id),t.pause(),this.logger.debug("pause()",{peer:this,consumerId:e})}catch(e){this.logger.error("pause()",e)}else this.logger.warn("pause()",{message:"This peer has no consumer to pause",peer:this,consumerId:e})}))}resume(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);if(t)if(t.paused)try{yield this.resumeRemoteConsumer(t.id),t.resume(),this.logger.debug("resume()",{peer:this})}catch(e){this.logger.error("resume()",e)}else this.logger.warn("resume()",{message:"Already playing",peer:this,consumerId:e});else this.logger.warn("resume()",{message:"This peer has no consumer to resume",peer:this,consumerId:e})}))}setPriority(e,t){return r(this,void 0,void 0,(function*(){this.consumers.get(e)?yield this.setConsumerPriority({consumerId:e,priority:t}):this.logger.warn("setPriority()",{message:"This peer has no consumer to change priority",peer:this,consumerId:e})}))}setConsumerPriority(e){return r(this,void 0,void 0,(function*(){try{yield this.engine.network.socket.request(j,e),this.logger.debug("setConsumerPriority()",{peer:this,params:e})}catch(t){throw this.logger.error("setConsumerPriority()",{peer:this,params:e}),new Error("Can`t change stream priority")}}))}createConsumer(e){return r(this,void 0,void 0,(function*(){const t=this.engine.network.receiveTransport;if(!t)throw this.logger.error("createConsumer()","missing receiveTransport"),new Error("Client not initialized");try{const r=yield this.engine.network.socket.request(C,{producerId:e.id,transportId:t.id,rtpCapabilities:this.engine.media.mediasoupDevice.rtpCapabilities,appData:{peerId:this.engine.mySocketId,appId:this.engine.appId,channelId:this.engine.channelId},producerPeerId:this.id}),i=yield t.consume(r);yield this.engine.network.socket.request(O,{consumerId:i.id}),"audio"===e.kind&&this.consumers.set(i.id,new pn(i)),"video"===e.kind&&this.consumers.set(i.id,new hn(i)),this.logger.debug(`Subscribed for ${e.kind}`,{peer:this}),this.observer.safeEmit(_,{producerId:e.id,consumerId:i.id,track:i.track,label:e.label})}catch(t){throw this.logger.error("createConsumer()",e,t),new Error("Error subscribe media")}}))}changeConsumerPreferredLayers(e,{spatialLayer:t,temporalLayer:i}){return r(this,void 0,void 0,(function*(){try{yield this.engine.network.socket.request(M,{consumerId:e.id,spatialLayer:t,temporalLayer:i}),this.logger.debug("changeConsumerPreferredLayers()",{peer:this,consumer:e,spatialLayer:t,temporalLayer:i})}catch(t){throw this.logger.error("changeConsumerPreferredLayers()",{peer:this,consumer:e,error:t}),new Error("Error change preferred layer")}}))}pauseRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.engine.network.socket.request(D,{consumerId:e})}))}resumeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.engine.network.socket.request(O,{consumerId:e})}))}handleNewProducer(e){if(this.producers.get(e.id))return;const t=new fn(e);this.producers.set(t.id,t),this.logger.debug("Peer published media:",{peer:this,producer:t}),this.observer.safeEmit(y,{producerId:t.id,kind:t.kind,label:t.label})}handlePeerEvents(){this.observer.on(R,this.handleNewProducer.bind(this)),this.observer.on(P,(e=>{this.producers.delete(e.id),this.logger.debug("Peer unpublished media:",{peer:this,producer:e}),this.observer.safeEmit(v,{producerId:e.id,kind:e.kind,label:e.label})})),this.observer.on(E,(e=>{const t=this.consumers.get(e);t&&(t.close(),this.consumers.delete(e),this.observer.safeEmit(w,{producerId:t.producerId,kind:t.kind,label:t.appData.producerData.label}),this.logger.debug("Peer video track was ended:",{peer:this}))})),this.observer.on(D,(e=>{const t=this.consumers.get(e);t&&(t.pause(),this.logger.debug("Peer video track was paused:",{peer:this}))})),this.observer.on(O,(e=>{const t=this.consumers.get(e);t&&(t.resume(),this.logger.debug("Peer video track was paused:",{peer:this}))})),this.observer.on(x,(e=>{if(this.isMe)return;const t=this.consumers.get(e.consumerId);if(!t)return;const{score:r,producerScore:i}=e;t.score=r,t.producerScore=i;const s=this.getAllConsumers().map((e=>e.producerScore)),n=Math.min(...s);this.outgoingConnectionQuality=mn.getConnectionQualityByScore(n),this.emitConnectionQuality()})),this.observer.on(x,(()=>{if(!this.isMe)return;const e=[];if(this.engine.peers.forEach((t=>{t.getAllConsumers().forEach((t=>{t.score<t.producerScore&&e.push(t.score)}))}),[]),0===e.length)this.incomingConnectionQuality=a.GOOD;else{const t=e.map((e=>e)).reduce(((e,t)=>e+t),0),r=Math.floor(t/e.length);this.incomingConnectionQuality=mn.getConnectionQualityByScore(r)}this.emitConnectionQuality()})),this.observer.on(T,(e=>{if(!this.isMe)return;const{scores:t}=e;if(0===t.length)return;let{score:r}=t[0];if(t.length>1){const i=t.map((({score:e})=>e)).reduce(((e,t)=>e+t),0);r=Math.floor(i/e.scores.length)}this.outgoingConnectionQuality=mn.getConnectionQualityByScore(r),this.emitConnectionQuality()})),this.observer.on(M,(e=>{const t=this.consumers.get(e.consumerId);t instanceof hn&&(t.setCurrentTemporalLayer(e.temporalLayer),t.setCurrentSpatialLayer(e.spatialLayer))}))}emitConnectionQuality(){const e=Math.min(this.outgoingConnectionQuality,this.incomingConnectionQuality);this.observer.safeEmit(b,{connectionQuality:e})}static getConnectionQualityByScore(e){return e<ln.BAD?a.BAD:e<ln.MEDIUM?a.MEDIUM:a.GOOD}getAllConsumers(){return Array.from(this.consumers.values())}getAllProducers(){return Array.from(this.producers.values())}}var gn=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,yn=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],vn=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var s,n,a=gn.exec(e||""),o={},c=14;c--;)o[yn[c]]=a[c]||"";return-1!=r&&-1!=i&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=function(e,t){var r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||i.splice(0,1);"/"==t.substr(t.length-1,1)&&i.splice(i.length-1,1);return i}(0,o.path),o.queryKey=(s=o.query,n={},s.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n),o};var bn={exports:{}};try{bn.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){bn.exports=!1}var _n=bn.exports,wn="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Sn(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||_n))return new XMLHttpRequest}catch(e){}if(!t)try{return new(wn[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Rn(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Pn=setTimeout,kn=clearTimeout;function Tn(e,t){t.useNativeTimers?(e.setTimeoutFn=Pn.bind(wn),e.clearTimeoutFn=kn.bind(wn)):(e.setTimeoutFn=setTimeout.bind(wn),e.clearTimeoutFn=clearTimeout.bind(wn))}var Cn=En;function En(e){if(e)return function(e){for(var t in En.prototype)e[t]=En.prototype[t];return e}(e)}En.prototype.on=En.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},En.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},En.prototype.off=En.prototype.removeListener=En.prototype.removeAllListeners=En.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},En.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},En.prototype.emitReserved=En.prototype.emit,En.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},En.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Dn=Object.create(null);Dn.open="0",Dn.close="1",Dn.ping="2",Dn.pong="3",Dn.message="4",Dn.upgrade="5",Dn.noop="6";const On=Object.create(null);Object.keys(Dn).forEach((e=>{On[Dn[e]]=e}));const xn={type:"error",data:"parser error"},Mn="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),jn="function"==typeof ArrayBuffer,In=({type:e,data:t},r,i)=>{return Mn&&t instanceof Blob?r?i(t):Ln(t,i):jn&&(t instanceof ArrayBuffer||(s=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer))?r?i(t):Ln(new Blob([t]),i):i(Dn[e]+(t||""));var s},Ln=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var An="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Fn="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Nn=0;Nn<An.length;Nn++)Fn[An.charCodeAt(Nn)]=Nn;const Bn="function"==typeof ArrayBuffer,Un=(e,t)=>{if("string"!=typeof e)return{type:"message",data:zn(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:qn(e.substring(1),t)};return On[r]?e.length>1?{type:On[r],data:e.substring(1)}:{type:On[r]}:xn},qn=(e,t)=>{if(Bn){const r=function(e){var t,r,i,s,n,a=.75*e.length,o=e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var d=new ArrayBuffer(a),p=new Uint8Array(d);for(t=0;t<o;t+=4)r=Fn[e.charCodeAt(t)],i=Fn[e.charCodeAt(t+1)],s=Fn[e.charCodeAt(t+2)],n=Fn[e.charCodeAt(t+3)],p[c++]=r<<2|i>>4,p[c++]=(15&i)<<4|s>>2,p[c++]=(3&s)<<6|63&n;return d}(e);return zn(r,t)}return{base64:!0,data:e}},zn=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,$n=String.fromCharCode(30);class Vn extends Cn{constructor(e){super(),this.writable=!1,Tn(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emit("open")}onData(e){const t=Un(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var Gn,Wn="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Hn={},Kn=0,Qn=0;function Jn(e){var t="";do{t=Wn[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function Yn(){var e=Jn(+new Date);return e!==Gn?(Kn=0,Gn=e):e+"."+Jn(Kn++)}for(;Qn<64;Qn++)Hn[Wn[Qn]]=Qn;Yn.encode=Jn,Yn.decode=function(e){var t=0;for(Qn=0;Qn<e.length;Qn++)t=64*t+Hn[e.charAt(Qn)];return t};var Xn=Yn,Zn={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),i=0,s=r.length;i<s;i++){var n=r[i].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}};class ea extends Vn{constructor(){super(...arguments),this.polling=!1}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emit("poll")}onData(e){((e,t)=>{const r=e.split($n),i=[];for(let e=0;e<r.length;e++){const s=Un(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{In(e,!1,(e=>{i[n]=e,++s===r&&t(i.join($n))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=Xn()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const i=Zn.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function ta(){}const ra=null!=new Sn({xdomain:!1}).responseType;class ia extends Cn{constructor(e,t){super(),Tn(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=Rn(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new Sn(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=ia.requestsCount++,ia.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=ta,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete ia.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(ia.requestsCount=0,ia.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",sa);else if("function"==typeof addEventListener){addEventListener("onpagehide"in wn?"pagehide":"unload",sa,!1)}function sa(){for(let e in ia.requests)ia.requests.hasOwnProperty(e)&&ia.requests[e].abort()}const na="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),aa=wn.WebSocket||wn.MozWebSocket,oa="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class ca extends Vn{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=oa?{}:Rn(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=oa?new aa(e,t,r):t?new aa(e,t):new aa(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;In(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&na((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=Xn()),this.supportsBinary||(e.b64=1);const i=Zn.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!aa||"__initialize"in aa&&this.name===ca.prototype.name)}}const da={websocket:ca,polling:class extends ea{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=ra&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new ia(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class pa extends Cn{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=vn(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=vn(t.host).host),Tn(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=Zn.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new da[e](r)}open(){let e;if(this.opts.rememberUpgrade&&pa.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;pa.priorWebsocketSuccess=!1;const i=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;pa.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function s(){r||(r=!0,d(),t.close(),t=null)}const n=e=>{const r=new Error("probe error: "+e);r.transport=t.name,s(),this.emitReserved("upgradeError",r)};function a(){n("transport closed")}function o(){n("socket closed")}function c(e){t&&e.name!==t.name&&s()}const d=()=>{t.removeListener("open",i),t.removeListener("error",n),t.removeListener("close",a),this.off("close",o),this.off("upgrading",c)};t.once("open",i),t.once("error",n),t.once("close",a),this.once("close",o),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",pa.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){pa.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}pa.protocol=4,pa.protocol;const la="function"==typeof ArrayBuffer,ua=Object.prototype.toString,ha="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===ua.call(Blob),fa="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===ua.call(File);function ma(e){return la&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||ha&&e instanceof Blob||fa&&e instanceof File}function ga(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(ga(e[t]))return!0;return!1}if(ma(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return ga(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&ga(e[t]))return!0;return!1}function ya(e){const t=[],r=e.data,i=e;return i.data=va(r,t),i.attachments=t.length,{packet:i,buffers:t}}function va(e,t){if(!e)return e;if(ma(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=va(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=va(e[i],t));return r}return e}function ba(e,t){return e.data=_a(e.data,t),e.attachments=void 0,e}function _a(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=_a(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=_a(e[r],t));return e}var wa;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(wa||(wa={}));class Sa extends Cn{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===wa.BINARY_EVENT||t.type===wa.BINARY_ACK?(this.reconstructor=new Ra(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!ma(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===wa[r.type])throw new Error("unknown packet type "+r.type);if(r.type===wa.BINARY_EVENT||r.type===wa.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!Sa.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case wa.CONNECT:return"object"==typeof t;case wa.DISCONNECT:return void 0===t;case wa.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case wa.EVENT:case wa.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case wa.ACK:case wa.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class Ra{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=ba(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Pa=Object.freeze({__proto__:null,protocol:5,get PacketType(){return wa},Encoder:class{encode(e){return e.type!==wa.EVENT&&e.type!==wa.ACK||!ga(e)?[this.encodeAsString(e)]:(e.type=e.type===wa.EVENT?wa.BINARY_EVENT:wa.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==wa.BINARY_EVENT&&e.type!==wa.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data)),t}encodeAsBinary(e){const t=ya(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Sa});function ka(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Ta=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Ca extends Cn{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[ka(e,"open",this.onopen.bind(this)),ka(e,"packet",this.onpacket.bind(this)),ka(e,"error",this.onerror.bind(this)),ka(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Ta.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:wa.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:wa.CONNECT,data:e})})):this.packet({type:wa.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case wa.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case wa.EVENT:case wa.BINARY_EVENT:this.onevent(e);break;case wa.ACK:case wa.BINARY_ACK:this.onack(e);break;case wa.DISCONNECT:this.ondisconnect();break;case wa.CONNECT_ERROR:const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e)}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:wa.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>this.packet(e))),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:wa.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}}var Ea=Da;function Da(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Da.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Da.prototype.reset=function(){this.attempts=0},Da.prototype.setMin=function(e){this.ms=e},Da.prototype.setMax=function(e){this.max=e},Da.prototype.setJitter=function(e){this.jitter=e};class Oa extends Cn{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Tn(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Ea({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||Pa;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new pa(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=ka(t,"open",(function(){r.onopen(),e&&e()})),s=ka(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&i();const r=this.setTimeoutFn((()=>{i(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(ka(e,"ping",this.onping.bind(this)),ka(e,"data",this.ondata.bind(this)),ka(e,"error",this.onerror.bind(this)),ka(e,"close",this.onclose.bind(this)),ka(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new Ca(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const xa={};function Ma(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=vn(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,a=xa[s]&&n in xa[s].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new Oa(i,t):(xa[s]||(xa[s]=new Oa(i,t)),o=xa[s]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}class ja{constructor(){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new s,this.logger=new te("Socket")}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e){const t=Ma(e);this.connection=t,this.serverUrl=e,t.on("connect",(()=>{const e=this.reconnectingAttempt?S.Reconnected:S.Connected;this.isConnected=!0,this.reconnectingAttempt=0,this.logger.debug("connection.on(`connect`)"),this.observer.safeEmit("state",{state:e})})),t.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",e),this.observer.safeEmit("state",{state:S.Error,error:e})})),t.on("disconnect",(e=>{this.isConnected=!1,this.reconnectingAttempt=0,this.disconnectReason=e,this.logger.error("connection.on(`disconnect`)",e),this.observer.safeEmit("state",{state:S.Disconnected})})),t.io.on("reconnect_attempt",(e=>{this.reconnectingAttempt=e,this.logger.warn("connection.on(`reconnect_attempt`)",e),this.observer.safeEmit("state",{state:S.Reconnecting})})),t.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)"),this.observer.safeEmit("state",{state:S.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect())}request(e,t={}){return new Promise(((r,i)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void i(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(e=>{e.error?(this.logger.error("request()",{response:e}),i(e.error)):r(e)}))}))}}var Ia={exports:{}},La=function(e,t){return function(){for(var r=new Array(arguments.length),i=0;i<r.length;i++)r[i]=arguments[i];return e.apply(t,r)}},Aa=La,Fa=Object.prototype.toString;function Na(e){return"[object Array]"===Fa.call(e)}function Ba(e){return void 0===e}function Ua(e){return null!==e&&"object"==typeof e}function qa(e){if("[object Object]"!==Fa.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function za(e){return"[object Function]"===Fa.call(e)}function $a(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),Na(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}var Va={isArray:Na,isArrayBuffer:function(e){return"[object ArrayBuffer]"===Fa.call(e)},isBuffer:function(e){return null!==e&&!Ba(e)&&null!==e.constructor&&!Ba(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:Ua,isPlainObject:qa,isUndefined:Ba,isDate:function(e){return"[object Date]"===Fa.call(e)},isFile:function(e){return"[object File]"===Fa.call(e)},isBlob:function(e){return"[object Blob]"===Fa.call(e)},isFunction:za,isStream:function(e){return Ua(e)&&za(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:$a,merge:function e(){var t={};function r(r,i){qa(t[i])&&qa(r)?t[i]=e(t[i],r):qa(r)?t[i]=e({},r):Na(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)$a(arguments[i],r);return t},extend:function(e,t,r){return $a(t,(function(t,i){e[i]=r&&"function"==typeof t?Aa(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},Ga=Va;function Wa(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Ha=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(Ga.isURLSearchParams(t))i=t.toString();else{var s=[];Ga.forEach(t,(function(e,t){null!=e&&(Ga.isArray(e)?t+="[]":e=[e],Ga.forEach(e,(function(e){Ga.isDate(e)?e=e.toISOString():Ga.isObject(e)&&(e=JSON.stringify(e)),s.push(Wa(t)+"="+Wa(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},Ka=Va;function Qa(){this.handlers=[]}Qa.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},Qa.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},Qa.prototype.forEach=function(e){Ka.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var Ja=Qa,Ya=Va,Xa=function(e,t,r,i,s){return e.config=t,r&&(e.code=r),e.request=i,e.response=s,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},Za=Xa,eo=function(e,t,r,i,s){var n=new Error(e);return Za(n,t,r,i,s)},to=eo,ro=Va,io=ro.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var a=[];a.push(e+"="+encodeURIComponent(t)),ro.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),ro.isString(i)&&a.push("path="+i),ro.isString(s)&&a.push("domain="+s),!0===n&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},so=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},no=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},ao=Va,oo=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],co=Va,po=co.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var i=e;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=co.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},lo=Va,uo=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(to("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},ho=io,fo=Ha,mo=function(e,t){return e&&!so(t)?no(e,t):t},go=function(e){var t,r,i,s={};return e?(ao.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=ao.trim(e.substr(0,i)).toLowerCase(),r=ao.trim(e.substr(i+1)),t){if(s[t]&&oo.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},yo=po,vo=eo,bo=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;lo.isFormData(i)&&delete s["Content-Type"];var a=new XMLHttpRequest;if(e.auth){var o=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";s.Authorization="Basic "+btoa(o+":"+c)}var d=mo(e.baseURL,e.url);function p(){if(a){var i="getAllResponseHeaders"in a?go(a.getAllResponseHeaders()):null,s={data:n&&"text"!==n&&"json"!==n?a.response:a.responseText,status:a.status,statusText:a.statusText,headers:i,config:e,request:a};uo(t,r,s),a=null}}if(a.open(e.method.toUpperCase(),fo(d,e.params,e.paramsSerializer),!0),a.timeout=e.timeout,"onloadend"in a?a.onloadend=p:a.onreadystatechange=function(){a&&4===a.readyState&&(0!==a.status||a.responseURL&&0===a.responseURL.indexOf("file:"))&&setTimeout(p)},a.onabort=function(){a&&(r(vo("Request aborted",e,"ECONNABORTED",a)),a=null)},a.onerror=function(){r(vo("Network Error",e,null,a)),a=null},a.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(vo(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",a)),a=null},lo.isStandardBrowserEnv()){var l=(e.withCredentials||yo(d))&&e.xsrfCookieName?ho.read(e.xsrfCookieName):void 0;l&&(s[e.xsrfHeaderName]=l)}"setRequestHeader"in a&&lo.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:a.setRequestHeader(t,e)})),lo.isUndefined(e.withCredentials)||(a.withCredentials=!!e.withCredentials),n&&"json"!==n&&(a.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&a.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&a.upload&&a.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){a&&(a.abort(),r(e),a=null)})),i||(i=null),a.send(i)}))},_o=Va,wo=function(e,t){Ya.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},So=Xa,Ro={"Content-Type":"application/x-www-form-urlencoded"};function Po(e,t){!_o.isUndefined(e)&&_o.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var ko,To={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(ko=bo),ko),transformRequest:[function(e,t){return wo(t,"Accept"),wo(t,"Content-Type"),_o.isFormData(e)||_o.isArrayBuffer(e)||_o.isBuffer(e)||_o.isStream(e)||_o.isFile(e)||_o.isBlob(e)?e:_o.isArrayBufferView(e)?e.buffer:_o.isURLSearchParams(e)?(Po(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):_o.isObject(e)||t&&"application/json"===t["Content-Type"]?(Po(t,"application/json"),function(e,t,r){if(_o.isString(e))try{return(t||JSON.parse)(e),_o.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,s=!r&&"json"===this.responseType;if(s||i&&_o.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw So(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};To.headers={common:{Accept:"application/json, text/plain, */*"}},_o.forEach(["delete","get","head"],(function(e){To.headers[e]={}})),_o.forEach(["post","put","patch"],(function(e){To.headers[e]=_o.merge(Ro)}));var Co=To,Eo=Va,Do=Co,Oo=function(e){return!(!e||!e.__CANCEL__)},xo=Va,Mo=function(e,t,r){var i=this||Do;return Eo.forEach(r,(function(r){e=r.call(i,e,t)})),e},jo=Oo,Io=Co;function Lo(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var Ao=Va,Fo=function(e,t){t=t||{};var r={},i=["url","method","data"],s=["headers","auth","proxy","params"],n=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],a=["validateStatus"];function o(e,t){return Ao.isPlainObject(e)&&Ao.isPlainObject(t)?Ao.merge(e,t):Ao.isPlainObject(t)?Ao.merge({},t):Ao.isArray(t)?t.slice():t}function c(i){Ao.isUndefined(t[i])?Ao.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(e[i],t[i])}Ao.forEach(i,(function(e){Ao.isUndefined(t[e])||(r[e]=o(void 0,t[e]))})),Ao.forEach(s,c),Ao.forEach(n,(function(i){Ao.isUndefined(t[i])?Ao.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(void 0,t[i])})),Ao.forEach(a,(function(i){i in t?r[i]=o(e[i],t[i]):i in e&&(r[i]=o(void 0,e[i]))}));var d=i.concat(s).concat(n).concat(a),p=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return Ao.forEach(p,c),r},No={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},Bo={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Bo[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var Uo={},qo=No.version.split(".");function zo(e,t){for(var r=t?t.split("."):qo,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}Bo.transitional=function(e,t,r){var i=t&&zo(t);function s(e,t){return"[Axios v"+No.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,n,a){if(!1===e)throw new Error(s(n," has been removed in "+t));return i&&!Uo[n]&&(Uo[n]=!0,console.warn(s(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,a)}};var $o={isOlderVersion:zo,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),s=i.length;s-- >0;){var n=i[s],a=t[n];if(a){var o=e[n],c=void 0===o||a(o,n,e);if(!0!==c)throw new TypeError("option "+n+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+n)}},validators:Bo},Vo=Va,Go=Ha,Wo=Ja,Ho=function(e){return Lo(e),e.headers=e.headers||{},e.data=Mo.call(e,e.data,e.headers,e.transformRequest),e.headers=xo.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),xo.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Io.adapter)(e).then((function(t){return Lo(e),t.data=Mo.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return jo(t)||(Lo(e),t&&t.response&&(t.response.data=Mo.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Ko=Fo,Qo=$o,Jo=Qo.validators;function Yo(e){this.defaults=e,this.interceptors={request:new Wo,response:new Wo}}Yo.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=Ko(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&Qo.assertOptions(t,{silentJSONParsing:Jo.transitional(Jo.boolean,"1.0.0"),forcedJSONParsing:Jo.transitional(Jo.boolean,"1.0.0"),clarifyTimeoutError:Jo.transitional(Jo.boolean,"1.0.0")},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var s,n=[];if(this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)})),!i){var a=[Ho,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(n),s=Promise.resolve(e);a.length;)s=s.then(a.shift(),a.shift());return s}for(var o=e;r.length;){var c=r.shift(),d=r.shift();try{o=c(o)}catch(e){d(e);break}}try{s=Ho(o)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},Yo.prototype.getUri=function(e){return e=Ko(this.defaults,e),Go(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},Vo.forEach(["delete","get","head","options"],(function(e){Yo.prototype[e]=function(t,r){return this.request(Ko(r||{},{method:e,url:t,data:(r||{}).data}))}})),Vo.forEach(["post","put","patch"],(function(e){Yo.prototype[e]=function(t,r,i){return this.request(Ko(i||{},{method:e,url:t,data:r}))}}));var Xo=Yo;function Zo(e){this.message=e}Zo.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Zo.prototype.__CANCEL__=!0;var ec=Zo,tc=ec;function rc(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new tc(e),t(r.reason))}))}rc.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},rc.source=function(){var e;return{token:new rc((function(t){e=t})),cancel:e}};var ic=rc,sc=Va,nc=La,ac=Xo,oc=Fo;function cc(e){var t=new ac(e),r=nc(ac.prototype.request,t);return sc.extend(r,ac.prototype,t),sc.extend(r,t),r}var dc=cc(Co);dc.Axios=ac,dc.create=function(e){return cc(oc(dc.defaults,e))},dc.Cancel=ec,dc.CancelToken=ic,dc.isCancel=Oo,dc.all=function(e){return Promise.all(e)},dc.spread=function(e){return function(t){return e.apply(null,t)}},dc.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},Ia.exports=dc,Ia.exports.default=dc;var pc=Ia.exports,lc="undefined"!=typeof Symbol&&Symbol,uc=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(e,t);if(42!==s.value||!0!==s.enumerable)return!1}return!0},hc="Function.prototype.bind called on incompatible ",fc=Array.prototype.slice,mc=Object.prototype.toString,gc=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==mc.call(t))throw new TypeError(hc+t);for(var r,i=fc.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(fc.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(fc.call(arguments)))},n=Math.max(0,t.length-i.length),a=[],o=0;o<n;o++)a.push("$"+o);if(r=Function("binder","return function ("+a.join(",")+"){ return binder.apply(this,arguments); }")(s),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},yc=Function.prototype.bind||gc,vc=yc.call(Function.call,Object.prototype.hasOwnProperty),bc=SyntaxError,_c=Function,wc=TypeError,Sc=function(e){try{return _c('"use strict"; return ('+e+").constructor;")()}catch(e){}},Rc=Object.getOwnPropertyDescriptor;if(Rc)try{Rc({},"")}catch(e){Rc=null}var Pc=function(){throw new wc},kc=Rc?function(){try{return Pc}catch(e){try{return Rc(arguments,"callee").get}catch(e){return Pc}}}():Pc,Tc="function"==typeof lc&&"function"==typeof Symbol&&"symbol"==typeof lc("foo")&&"symbol"==typeof Symbol("bar")&&uc(),Cc=Object.getPrototypeOf||function(e){return e.__proto__},Ec={},Dc="undefined"==typeof Uint8Array?undefined:Cc(Uint8Array),Oc={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":Tc?Cc([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":Ec,"%AsyncGenerator%":Ec,"%AsyncGeneratorFunction%":Ec,"%AsyncIteratorPrototype%":Ec,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":_c,"%GeneratorFunction%":Ec,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Tc?Cc(Cc([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&Tc?Cc((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&Tc?Cc((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Tc?Cc(""[Symbol.iterator]()):undefined,"%Symbol%":Tc?Symbol:undefined,"%SyntaxError%":bc,"%ThrowTypeError%":kc,"%TypedArray%":Dc,"%TypeError%":wc,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},xc=function e(t){var r;if("%AsyncFunction%"===t)r=Sc("async function () {}");else if("%GeneratorFunction%"===t)r=Sc("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Sc("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Cc(s.prototype))}return Oc[t]=r,r},Mc={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},jc=yc,Ic=vc,Lc=jc.call(Function.call,Array.prototype.concat),Ac=jc.call(Function.apply,Array.prototype.splice),Fc=jc.call(Function.call,String.prototype.replace),Nc=jc.call(Function.call,String.prototype.slice),Bc=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Uc=/\\(\\)?/g,qc=function(e){var t=Nc(e,0,1),r=Nc(e,-1);if("%"===t&&"%"!==r)throw new bc("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new bc("invalid intrinsic syntax, expected opening `%`");var i=[];return Fc(e,Bc,(function(e,t,r,s){i[i.length]=r?Fc(s,Uc,"$1"):t||e})),i},zc=function(e,t){var r,i=e;if(Ic(Mc,i)&&(i="%"+(r=Mc[i])[0]+"%"),Ic(Oc,i)){var s=Oc[i];if(s===Ec&&(s=xc(i)),void 0===s&&!t)throw new wc("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new bc("intrinsic "+e+" does not exist!")},$c=function(e,t){if("string"!=typeof e||0===e.length)throw new wc("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new wc('"allowMissing" argument must be a boolean');var r=qc(e),i=r.length>0?r[0]:"",s=zc("%"+i+"%",t),n=s.name,a=s.value,o=!1,c=s.alias;c&&(i=c[0],Ac(r,Lc([0,1],c)));for(var d=1,p=!0;d<r.length;d+=1){var l=r[d],u=Nc(l,0,1),h=Nc(l,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new bc("property names with quotes must have matching quotes");if("constructor"!==l&&p||(o=!0),Ic(Oc,n="%"+(i+="."+l)+"%"))a=Oc[n];else if(null!=a){if(!(l in a)){if(!t)throw new wc("base intrinsic for "+e+" exists, but the property is not available.");return}if(Rc&&d+1>=r.length){var f=Rc(a,l);a=(p=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:a[l]}else p=Ic(a,l),a=a[l];p&&!o&&(Oc[n]=a)}}return a},Vc={exports:{}};!function(e){var t=yc,r=$c,i=r("%Function.prototype.apply%"),s=r("%Function.prototype.call%"),n=r("%Reflect.apply%",!0)||t.call(s,i),a=r("%Object.getOwnPropertyDescriptor%",!0),o=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(o)try{o({},"a",{value:1})}catch(e){o=null}e.exports=function(e){var r=n(t,s,arguments);if(a&&o){var i=a(r,"length");i.configurable&&o(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return n(t,i,arguments)};o?o(e.exports,"apply",{value:d}):e.exports.apply=d}(Vc);var Gc=$c,Wc=Vc.exports,Hc=Wc(Gc("String.prototype.indexOf")),Kc=$(Object.freeze({__proto__:null,default:{}})),Qc="function"==typeof Map&&Map.prototype,Jc=Object.getOwnPropertyDescriptor&&Qc?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Yc=Qc&&Jc&&"function"==typeof Jc.get?Jc.get:null,Xc=Qc&&Map.prototype.forEach,Zc="function"==typeof Set&&Set.prototype,ed=Object.getOwnPropertyDescriptor&&Zc?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,td=Zc&&ed&&"function"==typeof ed.get?ed.get:null,rd=Zc&&Set.prototype.forEach,id="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,sd="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,nd="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,ad=Boolean.prototype.valueOf,od=Object.prototype.toString,cd=Function.prototype.toString,dd=String.prototype.match,pd="function"==typeof BigInt?BigInt.prototype.valueOf:null,ld=Object.getOwnPropertySymbols,ud="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hd="function"==typeof Symbol&&"object"==typeof Symbol.iterator,fd=Object.prototype.propertyIsEnumerable,md=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),gd=Kc.custom,yd=gd&&Sd(gd)?gd:null,vd="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function bd(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function _d(e){return String(e).replace(/"/g,"&quot;")}function wd(e){return!("[object Array]"!==kd(e)||vd&&"object"==typeof e&&vd in e)}function Sd(e){if(hd)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!ud)return!1;try{return ud.call(e),!0}catch(e){}return!1}var Rd=Object.prototype.hasOwnProperty||function(e){return e in this};function Pd(e,t){return Rd.call(e,t)}function kd(e){return od.call(e)}function Td(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,i=e.length;r<i;r++)if(e[r]===t)return r;return-1}function Cd(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Cd(e.slice(0,t.maxStringLength),t)+i}return bd(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,Ed),"single",t)}function Ed(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function Dd(e){return"Object("+e+")"}function Od(e){return e+" { ? }"}function xd(e,t,r,i){return e+" ("+t+") {"+(i?Md(r,i):r.join(", "))+"}"}function Md(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function jd(e,t){var r=wd(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=Pd(e,s)?t(e[s],e):""}var n,a="function"==typeof ld?ld(e):[];if(hd){n={};for(var o=0;o<a.length;o++)n["$"+a[o]]=a[o]}for(var c in e)Pd(e,c)&&(r&&String(Number(c))===c&&c<e.length||hd&&n["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?i.push(t(c,e)+": "+t(e[c],e)):i.push(c+": "+t(e[c],e))));if("function"==typeof ld)for(var d=0;d<a.length;d++)fd.call(e,a[d])&&i.push("["+t(a[d])+"]: "+t(e[a[d]],e));return i}var Id=$c,Ld=function(e,t){var r=Gc(e,!!t);return"function"==typeof r&&Hc(e,".prototype.")>-1?Wc(r):r},Ad=function e(t,r,i,s){var n=r||{};if(Pd(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Pd(n,"maxStringLength")&&("number"==typeof n.maxStringLength?n.maxStringLength<0&&n.maxStringLength!==1/0:null!==n.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=!Pd(n,"customInspect")||n.customInspect;if("boolean"!=typeof a&&"symbol"!==a)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Pd(n,"indent")&&null!==n.indent&&"\t"!==n.indent&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return Cd(t,n);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var o=void 0===n.depth?5:n.depth;if(void 0===i&&(i=0),i>=o&&o>0&&"object"==typeof t)return wd(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(n,i);if(void 0===s)s=[];else if(Td(s,t)>=0)return"[Circular]";function d(t,r,a){if(r&&(s=s.slice()).push(r),a){var o={depth:n.depth};return Pd(n,"quoteStyle")&&(o.quoteStyle=n.quoteStyle),e(t,o,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var p=function(e){if(e.name)return e.name;var t=dd.call(cd.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),l=jd(t,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(l.length>0?" { "+l.join(", ")+" }":"")}if(Sd(t)){var u=hd?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):ud.call(t);return"object"!=typeof t||hd?u:Dd(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+bd(_d(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(wd(t)){if(0===t.length)return"[]";var g=jd(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(Td(e[t],"\n")>=0)return!1;return!0}(g)?"["+Md(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==kd(e)||vd&&"object"==typeof e&&vd in e)}(t)){var y=jd(t,d);return 0===y.length?"["+String(t)+"]":"{ ["+String(t)+"] "+y.join(", ")+" }"}if("object"==typeof t&&a){if(yd&&"function"==typeof t[yd])return t[yd]();if("symbol"!==a&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!Yc||!e||"object"!=typeof e)return!1;try{Yc.call(e);try{td.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var v=[];return Xc.call(t,(function(e,r){v.push(d(r,t,!0)+" => "+d(e,t))})),xd("Map",Yc.call(t),v,c)}if(function(e){if(!td||!e||"object"!=typeof e)return!1;try{td.call(e);try{Yc.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return rd.call(t,(function(e){b.push(d(e,t))})),xd("Set",td.call(t),b,c)}if(function(e){if(!id||!e||"object"!=typeof e)return!1;try{id.call(e,id);try{sd.call(e,sd)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Od("WeakMap");if(function(e){if(!sd||!e||"object"!=typeof e)return!1;try{sd.call(e,sd);try{id.call(e,id)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Od("WeakSet");if(function(e){if(!nd||!e||"object"!=typeof e)return!1;try{return nd.call(e),!0}catch(e){}return!1}(t))return Od("WeakRef");if(function(e){return!("[object Number]"!==kd(e)||vd&&"object"==typeof e&&vd in e)}(t))return Dd(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!pd)return!1;try{return pd.call(e),!0}catch(e){}return!1}(t))return Dd(d(pd.call(t)));if(function(e){return!("[object Boolean]"!==kd(e)||vd&&"object"==typeof e&&vd in e)}(t))return Dd(ad.call(t));if(function(e){return!("[object String]"!==kd(e)||vd&&"object"==typeof e&&vd in e)}(t))return Dd(d(String(t)));if(!function(e){return!("[object Date]"!==kd(e)||vd&&"object"==typeof e&&vd in e)}(t)&&!function(e){return!("[object RegExp]"!==kd(e)||vd&&"object"==typeof e&&vd in e)}(t)){var _=jd(t,d),w=md?md(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",R=!w&&vd&&Object(t)===t&&vd in t?kd(t).slice(8,-1):S?"Object":"",P=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(R||S?"["+[].concat(R||[],S||[]).join(": ")+"] ":"");return 0===_.length?P+"{}":c?P+"{"+Md(_,c)+"}":P+"{ "+_.join(", ")+" }"}return String(t)},Fd=Id("%TypeError%"),Nd=Id("%WeakMap%",!0),Bd=Id("%Map%",!0),Ud=Ld("WeakMap.prototype.get",!0),qd=Ld("WeakMap.prototype.set",!0),zd=Ld("WeakMap.prototype.has",!0),$d=Ld("Map.prototype.get",!0),Vd=Ld("Map.prototype.set",!0),Gd=Ld("Map.prototype.has",!0),Wd=function(e,t){for(var r,i=e;null!==(r=i.next);i=r)if(r.key===t)return i.next=r.next,r.next=e.next,e.next=r,r},Hd=String.prototype.replace,Kd=/%20/g,Qd="RFC3986",Jd={default:Qd,formatters:{RFC1738:function(e){return Hd.call(e,Kd,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:Qd},Yd=Jd,Xd=Object.prototype.hasOwnProperty,Zd=Array.isArray,ep=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),tp=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},rp={arrayToObject:tp,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],i=0;i<t.length;++i)for(var s=t[i],n=s.obj[s.prop],a=Object.keys(n),o=0;o<a.length;++o){var c=a[o],d=n[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:n,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(Zd(r)){for(var i=[],s=0;s<r.length;++s)void 0!==r[s]&&i.push(r[s]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,r){var i=e.replace(/\+/g," ");if("iso-8859-1"===r)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(e){return i}},encode:function(e,t,r,i,s){if(0===e.length)return e;var n=e;if("symbol"==typeof e?n=Symbol.prototype.toString.call(e):"string"!=typeof e&&(n=String(e)),"iso-8859-1"===r)return escape(n).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var a="",o=0;o<n.length;++o){var c=n.charCodeAt(o);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||s===Yd.RFC1738&&(40===c||41===c)?a+=n.charAt(o):c<128?a+=ep[c]:c<2048?a+=ep[192|c>>6]+ep[128|63&c]:c<55296||c>=57344?a+=ep[224|c>>12]+ep[128|c>>6&63]+ep[128|63&c]:(o+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(o)),a+=ep[240|c>>18]+ep[128|c>>12&63]+ep[128|c>>6&63]+ep[128|63&c])}return a},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(Zd(e)){for(var r=[],i=0;i<e.length;i+=1)r.push(t(e[i]));return r}return t(e)},merge:function e(t,r,i){if(!r)return t;if("object"!=typeof r){if(Zd(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!Xd.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return Zd(t)&&!Zd(r)&&(s=tp(t,i)),Zd(t)&&Zd(r)?(r.forEach((function(r,s){if(Xd.call(t,s)){var n=t[s];n&&"object"==typeof n&&r&&"object"==typeof r?t[s]=e(n,r,i):t.push(r)}else t[s]=r})),t):Object.keys(r).reduce((function(t,s){var n=r[s];return Xd.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},ip=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new Fd("Side channel does not contain "+Ad(e))},get:function(i){if(Nd&&i&&("object"==typeof i||"function"==typeof i)){if(e)return Ud(e,i)}else if(Bd){if(t)return $d(t,i)}else if(r)return function(e,t){var r=Wd(e,t);return r&&r.value}(r,i)},has:function(i){if(Nd&&i&&("object"==typeof i||"function"==typeof i)){if(e)return zd(e,i)}else if(Bd){if(t)return Gd(t,i)}else if(r)return function(e,t){return!!Wd(e,t)}(r,i);return!1},set:function(i,s){Nd&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new Nd),qd(e,i,s)):Bd?(t||(t=new Bd),Vd(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=Wd(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},sp=rp,np=Jd,ap=Object.prototype.hasOwnProperty,op={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},cp=Array.isArray,dp=Array.prototype.push,pp=function(e,t){dp.apply(e,cp(t)?t:[t])},lp=Date.prototype.toISOString,up=np.default,hp={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:sp.encode,encodeValuesOnly:!1,format:up,formatter:np.formatters[up],indices:!1,serializeDate:function(e){return lp.call(e)},skipNulls:!1,strictNullHandling:!1},fp=function e(t,r,i,s,n,a,o,c,d,p,l,u,h,f,m){var g,y=t;if(m.has(t))throw new RangeError("Cyclic object value");if("function"==typeof o?y=o(r,y):y instanceof Date?y=p(y):"comma"===i&&cp(y)&&(y=sp.maybeMap(y,(function(e){return e instanceof Date?p(e):e}))),null===y){if(s)return a&&!h?a(r,hp.encoder,f,"key",l):r;y=""}if("string"==typeof(g=y)||"number"==typeof g||"boolean"==typeof g||"symbol"==typeof g||"bigint"==typeof g||sp.isBuffer(y))return a?[u(h?r:a(r,hp.encoder,f,"key",l))+"="+u(a(y,hp.encoder,f,"value",l))]:[u(r)+"="+u(String(y))];var v,b=[];if(void 0===y)return b;if("comma"===i&&cp(y))v=[{value:y.length>0?y.join(",")||null:void 0}];else if(cp(o))v=o;else{var _=Object.keys(y);v=c?_.sort(c):_}for(var w=0;w<v.length;++w){var S=v[w],R="object"==typeof S&&void 0!==S.value?S.value:y[S];if(!n||null!==R){var P=cp(y)?"function"==typeof i?i(r,S):r:r+(d?"."+S:"["+S+"]");m.set(t,!0);var k=ip();pp(b,e(R,P,i,s,n,a,o,c,d,p,l,u,h,f,k))}}return b},mp=rp,gp=Object.prototype.hasOwnProperty,yp=Array.isArray,vp={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:mp.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},bp=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},_p=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},wp=function(e,t,r,i){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/g,a=r.depth>0&&/(\[[^[\]]*])/.exec(s),o=a?s.slice(0,a.index):s,c=[];if(o){if(!r.plainObjects&&gp.call(Object.prototype,o)&&!r.allowPrototypes)return;c.push(o)}for(var d=0;r.depth>0&&null!==(a=n.exec(s))&&d<r.depth;){if(d+=1,!r.plainObjects&&gp.call(Object.prototype,a[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(a[1])}return a&&c.push("["+s.slice(a.index)+"]"),function(e,t,r,i){for(var s=i?t:_p(t,r),n=e.length-1;n>=0;--n){var a,o=e[n];if("[]"===o&&r.parseArrays)a=[].concat(s);else{a=r.plainObjects?Object.create(null):{};var c="["===o.charAt(0)&&"]"===o.charAt(o.length-1)?o.slice(1,-1):o,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&o!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(a=[])[d]=s:a[c]=s:a={0:s}}s=a}return s}(c,t,r,i)}},Sp=function(e,t){var r,i=e,s=function(e){if(!e)return hp;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||hp.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=np.default;if(void 0!==e.format){if(!ap.call(np.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=np.formatters[r],s=hp.filter;return("function"==typeof e.filter||cp(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:hp.addQueryPrefix,allowDots:void 0===e.allowDots?hp.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:hp.charsetSentinel,delimiter:void 0===e.delimiter?hp.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:hp.encode,encoder:"function"==typeof e.encoder?e.encoder:hp.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:hp.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:hp.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:hp.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:hp.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):cp(s.filter)&&(r=s.filter);var n,a=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in op?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var o=op[n];r||(r=Object.keys(i)),s.sort&&r.sort(s.sort);for(var c=ip(),d=0;d<r.length;++d){var p=r[d];s.skipNulls&&null===i[p]||pp(a,fp(i[p],p,o,s.strictNullHandling,s.skipNulls,s.encode?s.encoder:null,s.filter,s.sort,s.allowDots,s.serializeDate,s.format,s.formatter,s.encodeValuesOnly,s.charset,c))}var l=a.join(s.delimiter),u=!0===s.addQueryPrefix?"?":"";return s.charsetSentinel&&("iso-8859-1"===s.charset?u+="utf8=%26%2310003%3B&":u+="utf8=%E2%9C%93&"),l.length>0?u+l:""},Rp=function(e,t){var r=function(e){if(!e)return vp;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?vp.charset:e.charset;return{allowDots:void 0===e.allowDots?vp.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:vp.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:vp.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:vp.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:vp.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:vp.comma,decoder:"function"==typeof e.decoder?e.decoder:vp.decoder,delimiter:"string"==typeof e.delimiter||mp.isRegExp(e.delimiter)?e.delimiter:vp.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:vp.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:vp.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:vp.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:vp.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:vp.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,n=t.parameterLimit===1/0?void 0:t.parameterLimit,a=s.split(t.delimiter,n),o=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<a.length;++r)0===a[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===a[r]?c="utf-8":"utf8=%26%2310003%3B"===a[r]&&(c="iso-8859-1"),o=r,r=a.length);for(r=0;r<a.length;++r)if(r!==o){var d,p,l=a[r],u=l.indexOf("]="),h=-1===u?l.indexOf("="):u+1;-1===h?(d=t.decoder(l,vp.decoder,c,"key"),p=t.strictNullHandling?null:""):(d=t.decoder(l.slice(0,h),vp.decoder,c,"key"),p=mp.maybeMap(_p(l.slice(h+1),t),(function(e){return t.decoder(e,vp.decoder,c,"value")}))),p&&t.interpretNumericEntities&&"iso-8859-1"===c&&(p=bp(p)),l.indexOf("[]=")>-1&&(p=yp(p)?[p]:p),gp.call(i,d)?i[d]=mp.combine(i[d],p):i[d]=p}return i}(e,r):e,s=r.plainObjects?Object.create(null):{},n=Object.keys(i),a=0;a<n.length;++a){var o=n[a],c=wp(o,i[o],r,"string"==typeof e);s=mp.merge(s,c,r)}return!0===r.allowSparse?s:mp.compact(s)},Pp={formats:Jd,parse:Rp,stringify:Sp};class kp{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=pc.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>Pp.stringify(e)}),this.customNode=i}getNode({channelId:e}){return r(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:{channelId:e}});return t}))}}class Tp{constructor(e){const{loadbalancer:t}=e;this.socket=new ja,this.loadBalancerClient=new kp(t),this.logger=new te("Network")}closeRemoteProducer(e){return r(this,void 0,void 0,(function*(){yield this.socket.request(P,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return r(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return r(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return r(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(L,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return r(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(I,{sctpCapabilities:e.sctpCapabilities,localDirection:"out"});this.sendTransport=e.createSendTransport(t),this.logger.debug("createSendTransport()",{transport:this.sendTransport}),this.sendTransport.on(U,(({dtlsParameters:e},i,s)=>r(this,void 0,void 0,(function*(){var r;try{yield this.socket.request(A,{transportId:null===(r=this.sendTransport)||void 0===r?void 0:r.id,dtlsParameters:e}),i(),this.logger.debug("sendTransport.connect()")}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),s(r)}})))),this.sendTransport.on(q,((e,t,i)=>r(this,void 0,void 0,(function*(){var r;try{const{id:i}=yield this.socket.request(F,{transportId:null===(r=this.sendTransport)||void 0===r?void 0:r.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:i}),this.logger.debug("sendTransport.produce()")}catch(e){this.logger.error("sendTransport.produce()",{error:e}),i(e)}})))),this.sendTransport.observer.on(N,(e=>{this.logger.debug("sendTransport.state",{state:e}),"failed"===e&&this.sendTransport&&(this.restartIce(this.sendTransport),this.logger.warn("sendTransport.restartIce()"))}))}))}createRecvTransport(e){return r(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createRecvTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(I,{sctpCapabilities:e.sctpCapabilities,localDirection:"in"});this.receiveTransport=e.createRecvTransport(t),this.logger.debug("createRecvTransport()",{transport:this.receiveTransport}),this.receiveTransport.on(U,(({dtlsParameters:e},t,i)=>r(this,void 0,void 0,(function*(){var r;try{yield this.socket.request(A,{transportId:null===(r=this.receiveTransport)||void 0===r?void 0:r.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()")}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),i(e)}})))),this.receiveTransport.observer.on(N,(e=>{this.logger.debug("receiveTransport.state",{state:e}),"failed"===e&&this.receiveTransport&&(this.restartIce(this.receiveTransport),this.logger.debug("receiveTransport.restartIce()"))}))}))}getIceParameters(e){return r(this,void 0,void 0,(function*(){const t=yield this.socket.request(B,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return r(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}}const Cp=[{scaleResolutionDownBy:5,maxBitrate:2e5},{scaleResolutionDownBy:4,maxBitrate:4e5},{scaleResolutionDownBy:2,maxBitrate:15e5}],Ep=[{dtx:!0,maxBitrate:15e5},{dtx:!0,maxBitrate:6e6}];var Dp;class Op{constructor(e){Dp.set(this,void 0),this.encoderConfig={},this.label=o.Unknown,function(e,t,r,i,s){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!s:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===i?s.call(e,r):s?s.value=r:t.set(e,r)}(this,Dp,e,"f")}get mediaStreamTrack(){return i(this,Dp,"f")}get id(){return this.mediaStreamTrack.id}get kind(){return this.mediaStreamTrack.kind}get producerId(){var e;return null===(e=this.producer)||void 0===e?void 0:e.id}get isPublished(){return!!this.producer&&!this.producer.closed}getLabel(){return this.label}setLabel(e){this.label=e}setEncoderConfig(e){this.encoderConfig=e}getEncoderConfig(){return this.encoderConfig}setProducer(e){this.producer=e}getProducer(){return this.producer}closeProducer(){var e;null===(e=this.producer)||void 0===e||e.close(),this.producer=void 0}}Dp=new WeakMap;class xp extends Op{getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){return this.getEncoderConfig().preferredCodec||"h264"}getEncodings(){return this.getEncoderConfig().encodings||Cp}}class Mp extends Op{getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{opusFec:this.getEncoderConfig().enableFec||!0}}}const jp={width:1280,height:720},Ip={width:1920,height:1080};var Lp;class Ap{constructor(){this.isDeviceLoaded=!1,this.tracks=new Map,Lp.set(this,new te("Media"))}get mediasoupDevice(){return this.device||(this.device=new un.Device),this.device}loadDevice(e){return r(this,void 0,void 0,(function*(){this.isDeviceLoaded||(yield this.mediasoupDevice.load({routerRtpCapabilities:e}),this.isDeviceLoaded=!0)}))}getTrackCodec(e){var t;if(e instanceof xp&&(null===(t=this.mediasoupDevice.rtpCapabilities)||void 0===t?void 0:t.codecs))return this.mediasoupDevice.rtpCapabilities.codecs.find((t=>t.mimeType.toLowerCase()===`video/${e.getPreferredCodec()}`))}createTracks(e){return e.getTracks().map((t=>{const r="audio"===t.kind?new Mp(t):new xp(t);return this.tracks.set(r.id,r),i(this,Lp,"f").debug("createTrack() track created",{streamId:e.id,trackId:r.id,kind:r.kind}),r}))}createUserMediaTracks(e){return r(this,void 0,void 0,(function*(){const t=yield navigator.mediaDevices.getUserMedia(e);return i(this,Lp,"f").debug("createUserMediaTrack() stream created",{streamId:t.id}),this.createTracks(t)}))}createDisplayMediaTracks(e){return r(this,void 0,void 0,(function*(){const t=yield navigator.mediaDevices.getDisplayMedia(e);return this.createTracks(t)}))}deleteTrack(e){e.closeProducer(),e.mediaStreamTrack.stop(),this.tracks.delete(e.id),i(this,Lp,"f").debug("deleteTrack() tack deleted",{trackId:e.id,kind:e.kind})}getAllTracks(){return Array.from(this.tracks.values())}static getScreenVideoTrackParams(e){return{videoTrackOptions:{frameRate:{ideal:(null==e?void 0:e.frameRate)||30},width:{ideal:(null==e?void 0:e.width)||Ip.width},height:{ideal:(null==e?void 0:e.height)||Ip.height}},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:Ep}}}static getCameraVideoTrackParams(e){return{videoTrackOptions:{deviceId:null==e?void 0:e.deviceId,frameRate:{ideal:(null==e?void 0:e.frameRate)||30},width:{ideal:(null==e?void 0:e.width)||jp.width},height:{ideal:(null==e?void 0:e.height)||jp.height}},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:Cp}}}}Lp=new WeakMap;class Fp{constructor(e){this.engine=e,this.logger=new te("ChannelEvents")}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(c,(e=>{this.engine.clientEventEmitter.safeEmit(u,e),this.logger.debug("New channel event",{event:e})})),e.on(d,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(h,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(l,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(f,e),this.logger.debug("Peer left the channel",{peerId:e})}))}}class Np{constructor(e){this.engine=e,this.logger=new te("MediasoupEvents")}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(P,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(P,e)})),e.on(R,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(R,e)})),e.on(E,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(E,e)})),e.on(O,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(O,e)})),e.on(D,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(D,e)})),e.on(M,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(M,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(x,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(x,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(x,e)})),e.on(T,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(T,e)}))}}class Bp{constructor(e){this.initialized=!1,this.isJoined=!1,this.isRoomJoining=!1;const{clientEventEmitter:t,network:r}=e;this.system=new re({clientEventEmitter:t}),this.media=new Ap,this.network=new Tp(r),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=new Fp(this),this.mediaSoupEventsHandler=new Np(this),this.logger=new te("Engine"),this.watchSocketState()}initialize(){return r(this,void 0,void 0,(function*(){try{const{rtpCapabilities:e}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.loadDevice(e),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()")}catch(e){throw this.logger.error("initialize()",e),new Error("Error initialize engine")}}))}release(){return r(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,this.network.socket.disconnect(),this.peersRepository.clear(),yield this.unpublish(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),this.logger.debug("release()")}catch(e){throw this.logger.error("release()",e),new Error("Error release engine")}}))}pauseRemoteProducer(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(k,{producerId:e})}))}resumeRemoteProducer(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(k,{producerId:e})}))}watchSocketState(){this.network.socket.observer.on("state",(({state:e})=>{this.clientEventEmitter.emit(e),e===S.Reconnected&&(this.network.socket.disconnect(),this.clientEventEmitter.emit(m))}))}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}join(e){return r(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isRoomJoining=!0;const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId});this.network.socket.connect(t),yield this.waitForSocketConnection(),yield this.performJoin(e)}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isRoomJoining=!1}}))}loadPeers(e){return r(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(p,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=new mn(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(t.id,t),t}removePeer(e){this.peersRepository.delete(e)}pause(e){return r(this,void 0,void 0,(function*(){const t=e.getProducer();if(t)try{yield this.pauseRemoteProducer(t.id),t.pause(),this.logger.debug("pause()",{kind:e.kind})}catch(t){throw this.logger.error("pause()",{error:t,kind:e.kind}),new Error("Can`t pause track")}else this.logger.warn("pause()",{message:"Track is not published",kind:e.kind})}))}resume(e){return r(this,void 0,void 0,(function*(){const t=e.getProducer();if(t)try{yield this.resumeRemoteProducer(t.id),t.resume(),this.logger.debug("resume()",{kind:e.kind})}catch(t){throw this.logger.error("resume()",{error:t,kind:e.kind}),new Error("Can`t resume track")}else this.logger.warn("resume()",{message:"Track is not published"})}))}createCameraVideoTrack(e){return r(this,void 0,void 0,(function*(){const t=Ap.getCameraVideoTrackParams(e);try{const[e]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});return e.setLabel(o.Camera),e.setEncoderConfig(t.encoderConfig),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:e}),e}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return r(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:{deviceId:null==e?void 0:e.deviceId}});return t.setLabel(o.Microphone),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return r(this,void 0,void 0,(function*(){const t=Ap.getScreenVideoTrackParams(null==e?void 0:e.video);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:t.videoTrackOptions});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{this.unpublish(r)})),"video"===r.kind)return r.setLabel(o.ScreenVideo),r.setEncoderConfig(t.encoderConfig),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,track:r});r.setLabel(o.ScreenAudio),(null==e?void 0:e.audio)&&r.setEncoderConfig(e.audio),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}publish(e){return r(this,void 0,void 0,(function*(){if(!this.cahPublish)throw this.logger.error("publish()",{message:"Not enough access to publish"}),new Error("Not enough access to publish");const t=(Array.isArray(e)?e:[e]).map((e=>r(this,void 0,void 0,(function*(){var t;const r="getEncodings"in e?e.getEncodings():void 0,i="getCodecOptions"in e?e.getCodecOptions():void 0,s=yield null===(t=this.network.sendTransport)||void 0===t?void 0:t.produce({track:e.mediaStreamTrack,encodings:r,codecOptions:i,codec:this.media.getTrackCodec(e),stopTracks:!0,disableTrackOnPause:!0,zeroRtpOnPause:!0,appData:{peerId:this.mySocketId,label:e.getLabel()}});if(!s)return;e.setProducer(s);const n=this.peersRepository.get(this.mySocketId);null==n||n.observer.safeEmit(_,{producerId:s.id,track:e.mediaStreamTrack,label:e.getLabel()}),this.logger.debug("publish()",{track:e,encodings:r,codecOptions:i})}))));try{yield Promise.all(t)}catch(e){this.logger.error("publish()",{error:e})}}))}unpublish(e){return r(this,void 0,void 0,(function*(){let t;t=e?Array.isArray(e)?e:[e]:this.media.getAllTracks();const i=t.map((e=>r(this,void 0,void 0,(function*(){var t,r,i;const s=e.getProducer();s&&(null===(t=this.network.socket.connection)||void 0===t?void 0:t.connected)&&(yield this.network.closeRemoteProducer(s.id));const n=this.peersRepository.get(this.mySocketId);n&&n.observer.safeEmit(w,{producerId:null===(r=e.getProducer())||void 0===r?void 0:r.id,kind:null===(i=e.getProducer())||void 0===i?void 0:i.kind,label:e.getLabel()}),yield this.media.deleteTrack(e),this.logger.debug("unpublish()",{track:e})}))));try{yield Promise.all(i)}catch(e){this.logger.error("unpublish()",{error:e})}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}getAvailableNode({channelId:e}){return r(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode({channelId:e})).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const i=s=>r(this,void 0,void 0,(function*(){const{error:r,state:n}=s;if(r)return this.network.socket.observer.removeListener("state",i),void t(r);this.isRoomJoining&&n===S.Connected&&(this.network.socket.observer.removeListener("state",i),e())}));this.network.socket.observer.on("state",i)}))}performJoin(e){return r(this,void 0,void 0,(function*(){try{yield this.network.socket.request(d,e),yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.app=e.appId,this.channel=e.channelId,this.isJoined=!0,this.logger.debug(`Successfully joined to ${e.channelId}. Peers in channel:`,this.peersRepository)}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}}class Up{constructor(e){var t,r;this._observer=new s;const{network:i}=e;this.engine=new Bp({clientEventEmitter:this.observer,network:{loadbalancer:{baseURL:null===(t=null==i?void 0:i.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==i?void 0:i.loadbalancer)||void 0===r?void 0:r.customNode}}})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}detectDevices(){return r(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}publish(e){return this.engine.publish(e)}unpublish(e){return this.engine.unpublish(e)}pause(e){return this.engine.pause(e)}resume(e){return this.engine.resume(e)}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}}export{Up as default};
15
+ ***************************************************************************** */function r(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}c((i=i.apply(e,t||[])).next())}))}function i(e,t,r,i){if("a"===r&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?i:"a"===r?i.call(e):i?i.value:t.get(e)}class s extends t{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(e){return Boolean(r)}}}var n,a,o;!function(e){e.VIDEO="video",e.AUDIO="audio"}(n||(n={})),function(e){e[e.BAD=1]="BAD",e[e.MEDIUM=2]="MEDIUM",e[e.GOOD=3]="GOOD"}(a||(a={})),function(e){e.Camera="camera",e.Microphone="microphone",e.ScreenVideo="screen-video",e.ScreenAudio="screen-audio",e.Unknown="unknown"}(o||(o={}));const c="channel.event",d="channel.join",p="channel.getPeers",l="peer.disconnected",u="channel-event",h="peer-joined",f="peer-left",m="channel-rejoin-required",g="devices-list-updated",y="media-published",v="media-unpublished",b="connection-quality-changed",_="track-start",w="track-end";var S;!function(e){e.Connected="connected",e.Reconnecting="reconnecting",e.Reconnected="reconnected",e.Disconnected="disconnected",e.Reconnect="reconnect",e.Error="error"}(S||(S={}));const R="peer.newProducer",P="producer.close",C="producer.pause",k="producer.scoreChanged",T="consumer.create",E="consumer.close",D="consumer.pause",O="consumer.resume",x="consumer.scoreChanged",M="consumer.changeConsumerPreferredLayers",I="consumer.setConsumerPriority",j="transport.create",L="transport.close",A="transport.connect",F="transport.produce",N="connectionstatechange",B="getIceParameters",U="connect",z="produce";var q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function $(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})})),t}var V={exports:{}},G=1e3,W=6e4,H=60*W,K=24*H,Q=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*r;case"weeks":case"week":case"w":return 6048e5*r;case"days":case"day":case"d":return r*K;case"hours":case"hour":case"hrs":case"hr":case"h":return r*H;case"minutes":case"minute":case"mins":case"min":case"m":return r*W;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===r&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=K)return J(e,t,K,"day");if(t>=H)return J(e,t,H,"hour");if(t>=W)return J(e,t,W,"minute");if(t>=1e3)return J(e,t,1e3,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=K)return Math.round(e/K)+"d";if(t>=H)return Math.round(e/H)+"h";if(t>=W)return Math.round(e/W)+"m";if(t>=G)return Math.round(e/G)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function J(e,t,r,i){var s=t>=1.5*r;return Math.round(e/r)+" "+i+(s?"s":"")}var Y=function(e){function t(e){let i,s,n,a=null;function o(...e){if(!o.enabled)return;const r=o,s=Number(new Date),n=s-(i||s);r.diff=n,r.prev=i,r.curr=s,i=s,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((i,s)=>{if("%%"===i)return"%";a++;const n=t.formatters[s];if("function"==typeof n){const t=e[a];i=n.call(r,t),e.splice(a,1),a--}return i})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return o.namespace=e,o.useColors=t.useColors(),o.color=t.selectColor(e),o.extend=r,o.destroy=t.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(s!==t.namespaces&&(s=t.namespaces,n=t.enabled(e)),n),set:e=>{a=e}}),"function"==typeof t.init&&t.init(o),o}function r(e,r){const i=t(this.namespace+(void 0===r?":":r)+e);return i.log=this.log,i}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),s=i.length;for(r=0;r<s;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,i;for(r=0,i=t.skips.length;r<i;r++)if(t.skips[r].test(e))return!1;for(r=0,i=t.names.length;r<i;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=Q,t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let i=0,s=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(s=i))})),t.splice(s,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Y(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(V,V.exports);var X=V.exports;class Z{constructor(e){e?(this._debug=X(`LiveDigital:${e}`),this._warn=X(`LiveDigital:WARN:${e}`),this._error=X(`LiveDigital:ERROR:${e}`)):(this._debug=X("LiveDigital"),this._warn=X("LiveDigital:WARN"),this._error=X("LiveDigital:ERROR")),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}}class ee{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[],this.isMediaDevicesAccessGranted=!1;const{clientEventEmitter:t}=e;this.clientEventEmitter=t,this.logger=new Z("System"),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(){return r(this,void 0,void 0,(function*(){try{(yield navigator.mediaDevices.getUserMedia({video:!0,audio:!0})).getTracks().forEach((e=>e.stop())),this.isMediaDevicesAccessGranted=!0}catch(e){if(this.logger.error("getUserMedia()",{error:e}),"NotReadableError"===e.name)throw new Error("DeviceIsBusy")}}))}refreshAvailableMediaDevicesList(){return r(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&"default"!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r),this.logger.debug("Devices list updated")}))}detectDevices(){return r(this,void 0,void 0,(function*(){this.isDevicesDetected||(this.isMediaDevicesAccessGranted||(yield this.requestMediaDevicesAccess()),navigator.mediaDevices.addEventListener("devicechange",(()=>{this.refreshAvailableMediaDevicesList()})),yield this.refreshAvailableMediaDevicesList(),this.isDevicesDetected=!0)}))}listenDevices(){navigator.mediaDevices.ondevicechange=()=>r(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(g,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}}class te{constructor(e){this.score=10;const{id:t,kind:r,peerId:i,label:s}=e;this.id=t,this.kind=r,this.peerId=i,this.label=s}}var re={},ie={exports:{}},se=1e3,ne=60*se,ae=60*ne,oe=24*ae,ce=7*oe,de=365.25*oe,pe=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return r*de;case"weeks":case"week":case"w":return r*ce;case"days":case"day":case"d":return r*oe;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ae;case"minutes":case"minute":case"mins":case"min":case"m":return r*ne;case"seconds":case"second":case"secs":case"sec":case"s":return r*se;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===r&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=oe)return le(e,t,oe,"day");if(t>=ae)return le(e,t,ae,"hour");if(t>=ne)return le(e,t,ne,"minute");if(t>=se)return le(e,t,se,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=oe)return Math.round(e/oe)+"d";if(t>=ae)return Math.round(e/ae)+"h";if(t>=ne)return Math.round(e/ne)+"m";if(t>=se)return Math.round(e/se)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function le(e,t,r,i){var s=t>=1.5*r;return Math.round(e/r)+" "+i+(s?"s":"")}var ue=function(e){function t(e){let i,s,n,a=null;function o(...e){if(!o.enabled)return;const r=o,s=Number(new Date),n=s-(i||s);r.diff=n,r.prev=i,r.curr=s,i=s,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((i,s)=>{if("%%"===i)return"%";a++;const n=t.formatters[s];if("function"==typeof n){const t=e[a];i=n.call(r,t),e.splice(a,1),a--}return i})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return o.namespace=e,o.useColors=t.useColors(),o.color=t.selectColor(e),o.extend=r,o.destroy=t.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(s!==t.namespaces&&(s=t.namespaces,n=t.enabled(e)),n),set:e=>{a=e}}),"function"==typeof t.init&&t.init(o),o}function r(e,r){const i=t(this.namespace+(void 0===r?":":r)+e);return i.log=this.log,i}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),s=i.length;for(r=0;r<s;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,i;for(r=0,i=t.skips.length;r<i;r++)if(t.skips[r].test(e))return!1;for(r=0,i=t.names.length;r<i;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=pe,t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let i=0,s=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(s=i))})),t.splice(s,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=ue(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(ie,ie.exports);var he={},fe={exports:{}};fe.exports=function(e){var t={};function r(i){if(t[i])return t[i].exports;var s=t[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(i,s,function(t){return e[t]}.bind(null,s));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){t.__esModule=!0,t.default=void 0;var i=r(18),s=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,i){void 0===i&&(i=!1);var s=e.getVersionPrecision(t),n=e.getVersionPrecision(r),a=Math.max(s,n),o=0,c=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),i=t+new Array(r+1).join(".0");return e.map(i.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(i&&(o=a-Math.min(s,n)),a-=1;a>=o;){if(c[0][a]>c[1][a])return 1;if(c[0][a]===c[1][a]){if(a===o)return 0;a-=1}else if(c[0][a]<c[1][a])return-1}},e.map=function(e,t){var r,i=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)i.push(t(e[r]));return i},e.find=function(e,t){var r,i;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,i=e.length;r<i;r+=1){var s=e[r];if(t(s,r))return s}},e.assign=function(e){for(var t,r,i=e,s=arguments.length,n=new Array(s>1?s-1:0),a=1;a<s;a++)n[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(n));var o=function(){var e=n[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){i[t]=e[t]}))};for(t=0,r=n.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return i.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return i.BROWSER_MAP[e]||""},e}();t.default=s,e.exports=t.default},18:function(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"}},90:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(91))&&i.__esModule?i:{default:i},n=r(18);function a(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var o=function(){function e(){}var t,r,i;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new s.default(e,t)},e.parse=function(e){return new s.default(e).getResult()},t=e,i=[{key:"BROWSER_MAP",get:function(){return n.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return n.ENGINE_MAP}},{key:"OS_MAP",get:function(){return n.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return n.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),i&&a(t,i),e}();t.default=o,e.exports=t.default},91:function(e,t,r){t.__esModule=!0,t.default=void 0;var i=c(r(92)),s=c(r(93)),n=c(r(94)),a=c(r(95)),o=c(r(17));function c(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(s.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(n.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},i=0,s={},n=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(s[t]=a,n+=1):"object"==typeof a&&(r[t]=a,i+=1)})),i>0){var a=Object.keys(r),c=o.default.find(a,(function(e){return t.isOS(e)}));if(c){var d=this.satisfies(r[c]);if(void 0!==d)return d}var p=o.default.find(a,(function(e){return t.isPlatform(e)}));if(p){var l=this.satisfies(r[p]);if(void 0!==l)return l}}if(n>0){var u=Object.keys(s),h=o.default.find(u,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(s[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),s=o.default.getBrowserTypeByAlias(i);return t&&s&&(i=s.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,s=this.getBrowserVersion();if("string"==typeof s)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(i=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(i=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(s,r,i))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},n=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=s.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=s.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=s.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=s.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=s.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=s.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=s.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=s.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=s.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=s.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=s.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=s.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=s.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=s.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=s.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=s.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=s.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=s.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=s.default.getFirstMatch(n,e)||s.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=s.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=s.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=s.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=s.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=s.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=s.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=s.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=s.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=s.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=s.default.getFirstMatch(n,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:s.default.getFirstMatch(t,e),version:s.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},n=r(18),a=[{test:[/Roku\/DVP/],describe:function(e){var t=s.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:n.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=s.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:n.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=s.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=s.default.getWindowsVersionName(t);return{name:n.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:n.OS_MAP.iOS},r=s.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=s.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=s.default.getMacOSVersionName(t),i={name:n.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=s.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:n.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=s.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=s.default.getAndroidVersionName(t),i={name:n.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=s.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:n.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=s.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||s.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||s.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:n.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=s.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:n.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=s.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:n.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:n.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:n.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=s.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:n.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},n=r(18),a=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=s.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:n.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:n.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=s.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:n.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:n.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:n.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:n.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:n.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:n.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},n=r(18),a=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:n.ENGINE_MAP.Blink};var t=s.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:n.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:n.ENGINE_MAP.Trident},r=s.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:n.ENGINE_MAP.Presto},r=s.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:n.ENGINE_MAP.Gecko},r=s.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:n.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:n.ENGINE_MAP.WebKit},r=s.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}});var me={},ge=q&&q.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(me,"__esModule",{value:!0}),me.Logger=void 0;const ye=ge(ie.exports),ve="mediasoup-client";me.Logger=class{constructor(e){e?(this._debug=(0,ye.default)(`${ve}:${e}`),this._warn=(0,ye.default)(`${ve}:WARN:${e}`),this._error=(0,ye.default)(`${ve}:ERROR:${e}`)):(this._debug=(0,ye.default)(ve),this._warn=(0,ye.default)(`${ve}:WARN`),this._error=(0,ye.default)(`${ve}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};var be={};Object.defineProperty(be,"__esModule",{value:!0}),be.EnhancedEventEmitter=void 0;const _e=e,we=new me.Logger("EnhancedEventEmitter");class Se extends _e.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(t){return we.error("safeEmit() | event listener threw an error [event:%s]:%o",e,t),Boolean(r)}}async safeEmitAsPromise(e,...t){return new Promise(((r,i)=>{try{this.emit(e,...t,r,i)}catch(t){we.error("safeEmitAsPromise() | event listener threw an error [event:%s]:%o",e,t),i(t)}}))}}be.EnhancedEventEmitter=Se;var Re={};Object.defineProperty(Re,"__esModule",{value:!0}),Re.InvalidStateError=Re.UnsupportedError=void 0;class Pe extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Pe):this.stack=new Error(e).stack}}Re.UnsupportedError=Pe;class Ce extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Ce):this.stack=new Error(e).stack}}Re.InvalidStateError=Ce;var ke={};Object.defineProperty(ke,"__esModule",{value:!0}),ke.generateRandomNumber=ke.clone=void 0,ke.clone=function(e,t){return void 0===e?t:JSON.parse(JSON.stringify(e))},ke.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var Te={},Ee={};!function(e){const t=V.exports("h264-profile-level-id");t.log=console.info.bind(console);e.ProfileConstrainedBaseline=1,e.ProfileBaseline=2,e.ProfileMain=3,e.ProfileConstrainedHigh=4,e.ProfileHigh=5;const r=10;e.Level1_b=0,e.Level1=10,e.Level1_1=11,e.Level1_2=12,e.Level1_3=13,e.Level2=20,e.Level2_1=21,e.Level2_2=22,e.Level3=30,e.Level3_1=31,e.Level3_2=32,e.Level4=40,e.Level4_1=41,e.Level4_2=42,e.Level5=50,e.Level5_1=51,e.Level5_2=52;class i{constructor(e,t){this.profile=e,this.level=t}}e.ProfileLevelId=i;const s=new i(1,31);class n{constructor(e){this._mask=~c("x",e),this._maskedValue=c("1",e)}isMatch(e){return this._maskedValue===(e&this._mask)}}class a{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const o=[new a(66,new n("x1xx0000"),1),new a(77,new n("1xxx0000"),1),new a(88,new n("11xx0000"),1),new a(66,new n("x0xx0000"),2),new a(88,new n("10xx0000"),2),new a(77,new n("0x0x0000"),3),new a(100,new n("00000000"),5),new a(100,new n("00001100"),4)];function c(e,t){return(t[0]===e)<<7|(t[1]===e)<<6|(t[2]===e)<<5|(t[3]===e)<<4|(t[4]===e)<<3|(t[5]===e)<<2|(t[6]===e)<<1|(t[7]===e)<<0}function d(e={}){const t=e["level-asymmetry-allowed"];return 1===t||"1"===t}e.parseProfileLevelId=function(e){if("string"!=typeof e||6!==e.length)return null;const r=parseInt(e,16);if(0===r)return null;const s=255&r,n=r>>8&255,a=r>>16&255;let c;switch(s){case 11:c=0!=(16&n)?0:11;break;case 10:case 12:case 13:case 20:case 21:case 22:case 30:case 31:case 32:case 40:case 41:case 42:case 50:case 51:case 52:c=s;break;default:return t("parseProfileLevelId() | unrecognized level_idc:%s",s),null}for(const e of o)if(a===e.profile_idc&&e.profile_iop.isMatch(n))return new i(e.profile,c);return t("parseProfileLevelId() | unrecognized profile_idc/profile_iop combination"),null},e.profileLevelIdToString=function(e){if(0==e.level)switch(e.profile){case 1:return"42f00b";case 2:return"42100b";case 3:return"4d100b";default:return t("profileLevelIdToString() | Level 1_b not is allowed for profile:%s",e.profile),null}let r;switch(e.profile){case 1:r="42e0";break;case 2:r="4200";break;case 3:r="4d00";break;case 4:r="640c";break;case 5:r="6400";break;default:return t("profileLevelIdToString() | unrecognized profile:%s",e.profile),null}let i=e.level.toString(16);return 1===i.length&&(i=`0${i}`),`${r}${i}`},e.parseSdpProfileLevelId=function(t={}){const r=t["profile-level-id"];return r?e.parseProfileLevelId(r):s},e.isSameProfile=function(t={},r={}){const i=e.parseSdpProfileLevelId(t),s=e.parseSdpProfileLevelId(r);return Boolean(i&&s&&i.profile===s.profile)},e.generateProfileLevelIdForAnswer=function(s={},n={}){if(!s["profile-level-id"]&&!n["profile-level-id"])return t("generateProfileLevelIdForAnswer() | no profile-level-id in local and remote params"),null;const a=e.parseSdpProfileLevelId(s),o=e.parseSdpProfileLevelId(n);if(!a)throw new TypeError("invalid local_profile_level_id");if(!o)throw new TypeError("invalid remote_profile_level_id");if(a.profile!==o.profile)throw new TypeError("H264 Profile mismatch");const c=d(s)&&d(n),p=a.level,l=o.level,u=function(e,t){return 0===e?t!==r&&0!==t:0===t?e!==r:e<t}(h=p,f=l)?h:f;var h,f;const m=c?p:u;return t("generateProfileLevelIdForAnswer() | result: [profile:%s, level:%s]",a.profile,m),e.profileLevelIdToString(new i(a.profile,m))}}(Ee);var De=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Oe=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xe=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&De(t,e,r);return Oe(t,e),t};Object.defineProperty(Te,"__esModule",{value:!0}),Te.canReceive=Te.canSend=Te.generateProbatorRtpParameters=Te.reduceCodecs=Te.getSendingRemoteRtpParameters=Te.getSendingRtpParameters=Te.getRecvRtpCapabilities=Te.getExtendedRtpCapabilities=Te.validateSctpStreamParameters=Te.validateSctpParameters=Te.validateNumSctpStreams=Te.validateSctpCapabilities=Te.validateRtcpParameters=Te.validateRtpEncodingParameters=Te.validateRtpHeaderExtensionParameters=Te.validateRtpCodecParameters=Te.validateRtpParameters=Te.validateRtpHeaderExtension=Te.validateRtcpFeedback=Te.validateRtpCodecCapability=Te.validateRtpCapabilities=void 0;const Me=xe(Ee),Ie=xe(ke);function je(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if(e.kind=r[1].toLowerCase(),e.preferredPayloadType&&"number"!=typeof e.preferredPayloadType)throw new TypeError("invalid codec.preferredPayloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===e.kind?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)Le(t)}function Le(e){if("object"!=typeof e)throw new TypeError("fb is not an object");if(!e.type||"string"!=typeof e.type)throw new TypeError("missing fb.type");e.parameter&&"string"==typeof e.parameter||(e.parameter="")}function Ae(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if("audio"!==e.kind&&"video"!==e.kind)throw new TypeError("invalid ext.kind");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.preferredId)throw new TypeError("missing ext.preferredId");if(e.preferredEncrypt&&"boolean"!=typeof e.preferredEncrypt)throw new TypeError("invalid ext.preferredEncrypt");if(e.preferredEncrypt||(e.preferredEncrypt=!1),e.direction&&"string"!=typeof e.direction)throw new TypeError("invalid ext.direction");e.direction||(e.direction="sendrecv")}function Fe(e){if("object"!=typeof e)throw new TypeError("params is not an object");if(e.mid&&"string"!=typeof e.mid)throw new TypeError("params.mid is not a string");if(!Array.isArray(e.codecs))throw new TypeError("missing params.codecs");for(const t of e.codecs)Ne(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("params.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)Be(t);if(e.encodings&&!Array.isArray(e.encodings))throw new TypeError("params.encodings is not an array");e.encodings||(e.encodings=[]);for(const t of e.encodings)Ue(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),ze(e.rtcp)}function Ne(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if("number"!=typeof e.payloadType)throw new TypeError("missing codec.payloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===r[1].toLowerCase()?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)Le(t)}function Be(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.id)throw new TypeError("missing ext.id");if(e.encrypt&&"boolean"!=typeof e.encrypt)throw new TypeError("invalid ext.encrypt");e.encrypt||(e.encrypt=!1),e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError("invalid header extension parameter")}}function Ue(e){if("object"!=typeof e)throw new TypeError("encoding is not an object");if(e.ssrc&&"number"!=typeof e.ssrc)throw new TypeError("invalid encoding.ssrc");if(e.rid&&"string"!=typeof e.rid)throw new TypeError("invalid encoding.rid");if(e.rtx&&"object"!=typeof e.rtx)throw new TypeError("invalid encoding.rtx");if(e.rtx&&"number"!=typeof e.rtx.ssrc)throw new TypeError("missing encoding.rtx.ssrc");if(e.dtx&&"boolean"==typeof e.dtx||(e.dtx=!1),e.scalabilityMode&&"string"!=typeof e.scalabilityMode)throw new TypeError("invalid encoding.scalabilityMode")}function ze(e){if("object"!=typeof e)throw new TypeError("rtcp is not an object");if(e.cname&&"string"!=typeof e.cname)throw new TypeError("invalid rtcp.cname");e.reducedSize&&"boolean"==typeof e.reducedSize||(e.reducedSize=!0)}function qe(e){if("object"!=typeof e)throw new TypeError("numStreams is not an object");if("number"!=typeof e.OS)throw new TypeError("missing numStreams.OS");if("number"!=typeof e.MIS)throw new TypeError("missing numStreams.MIS")}function $e(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Ve(e,t,{strict:r=!1,modify:i=!1}={}){const s=e.mimeType.toLowerCase();if(s!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(s){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!Me.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Me.generateProfileLevelIdForAnswer(e.parameters,t.parameters)}catch(e){return!1}i&&(r?(e.parameters["profile-level-id"]=r,t.parameters["profile-level-id"]=r):(delete e.parameters["profile-level-id"],delete t.parameters["profile-level-id"]))}break;case"video/vp9":if(r){if((e.parameters["profile-id"]||0)!==(t.parameters["profile-id"]||0))return!1}}return!0}function Ge(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function We(e,t){const r=[];for(const i of e.rtcpFeedback||[]){const e=(t.rtcpFeedback||[]).find((e=>e.type===i.type&&(e.parameter===i.parameter||!e.parameter&&!i.parameter)));e&&r.push(e)}return r}Te.validateRtpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(e.codecs&&!Array.isArray(e.codecs))throw new TypeError("caps.codecs is not an array");e.codecs||(e.codecs=[]);for(const t of e.codecs)je(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("caps.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)Ae(t)},Te.validateRtpCodecCapability=je,Te.validateRtcpFeedback=Le,Te.validateRtpHeaderExtension=Ae,Te.validateRtpParameters=Fe,Te.validateRtpCodecParameters=Ne,Te.validateRtpHeaderExtensionParameters=Be,Te.validateRtpEncodingParameters=Ue,Te.validateRtcpParameters=ze,Te.validateSctpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(!e.numStreams||"object"!=typeof e.numStreams)throw new TypeError("missing caps.numStreams");qe(e.numStreams)},Te.validateNumSctpStreams=qe,Te.validateSctpParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.port)throw new TypeError("missing params.port");if("number"!=typeof e.OS)throw new TypeError("missing params.OS");if("number"!=typeof e.MIS)throw new TypeError("missing params.MIS");if("number"!=typeof e.maxMessageSize)throw new TypeError("missing params.maxMessageSize")},Te.validateSctpStreamParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.streamId)throw new TypeError("missing params.streamId");let t=!1;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,e.maxPacketLifeTime&&"number"!=typeof e.maxPacketLifeTime)throw new TypeError("invalid params.maxPacketLifeTime");if(e.maxRetransmits&&"number"!=typeof e.maxRetransmits)throw new TypeError("invalid params.maxRetransmits");if(e.maxPacketLifeTime&&e.maxRetransmits)throw new TypeError("cannot provide both maxPacketLifeTime and maxRetransmits");if(t&&e.ordered&&(e.maxPacketLifeTime||e.maxRetransmits))throw new TypeError("cannot be ordered with maxPacketLifeTime or maxRetransmits");if(t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1),e.label&&"string"!=typeof e.label)throw new TypeError("invalid params.label");if(e.protocol&&"string"!=typeof e.protocol)throw new TypeError("invalid params.protocol")},Te.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if($e(i))continue;const t=(e.codecs||[]).find((e=>Ve(e,i,{strict:!0,modify:!0})));if(!t)continue;const s={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:i.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:i.parameters,rtcpFeedback:We(t,i)};r.codecs.push(s)}for(const i of r.codecs){const r=e.codecs.find((e=>$e(e)&&e.parameters.apt===i.localPayloadType)),s=t.codecs.find((e=>$e(e)&&e.parameters.apt===i.remotePayloadType));r&&s&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=s.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>Ge(e,i)));if(!t)continue;const s={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":s.direction="sendrecv";break;case"recvonly":s.direction="sendonly";break;case"sendonly":s.direction="recvonly";break;case"inactive":s.direction="inactive"}r.headerExtensions.push(s)}return r},Te.getRecvRtpCapabilities=function(e){const t={codecs:[],headerExtensions:[]};for(const r of e.codecs){const e={mimeType:r.mimeType,kind:r.kind,preferredPayloadType:r.remotePayloadType,clockRate:r.clockRate,channels:r.channels,parameters:r.localParameters,rtcpFeedback:r.rtcpFeedback};if(t.codecs.push(e),!r.remoteRtxPayloadType)continue;const i={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(i)}for(const r of e.headerExtensions){if("sendrecv"!==r.direction&&"recvonly"!==r.direction)continue;const e={kind:r.kind,uri:r.uri,preferredId:r.recvId,preferredEncrypt:r.encrypt,direction:r.direction};t.headerExtensions.push(e)}return t},Te.getSendingRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.localParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},Te.getSendingRemoteRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.remoteParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}if(r.headerExtensions.some((e=>"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"goog-remb"!==e.type));else if(r.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type));else for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type&&"goog-remb"!==e.type));return r},Te.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Ve(e[i],t)){r.push(e[i]),$e(e[i+1])&&r.push(e[i+1]);break}if(0===r.length)throw new TypeError("no matching codec found")}else r.push(e[0]),$e(e[1])&&r.push(e[1]);return r},Te.generateProbatorRtpParameters=function(e){Fe(e=Ie.clone(e,{}));const t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},Te.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Te.canReceive=function(e,t){if(Fe(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var He={},Ke={},Qe=q&&q.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(Ke,"__esModule",{value:!0});Ke.AwaitQueue=class{constructor({ClosedErrorClass:e=Error,StoppedErrorClass:t=Error}={ClosedErrorClass:Error,StoppedErrorClass:Error}){this.closed=!1,this.pendingTasks=[],this.ClosedErrorClass=Error,this.StoppedErrorClass=Error,this.ClosedErrorClass=e,this.StoppedErrorClass=t}get size(){return this.pendingTasks.length}close(){if(!this.closed){this.closed=!0;for(const e of this.pendingTasks)e.stopped=!0,e.reject(new this.ClosedErrorClass("AwaitQueue closed"));this.pendingTasks.length=0}}push(e,t){return Qe(this,void 0,void 0,(function*(){if(this.closed)throw new this.ClosedErrorClass("AwaitQueue closed");if("function"!=typeof e)throw new TypeError("given task is not a function");if(!e.name&&t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const s={task:e,name:t,resolve:r,reject:i,stopped:!1,enqueuedAt:new Date,executedAt:void 0};this.pendingTasks.push(s),1===this.pendingTasks.length&&this.next()}))}))}stop(){if(!this.closed){for(const e of this.pendingTasks)e.stopped=!0,e.reject(new this.StoppedErrorClass("AwaitQueue stopped"));this.pendingTasks.length=0}}dump(){const e=new Date;return this.pendingTasks.map((t=>({task:t.task,name:t.name,enqueuedTime:t.executedAt?t.executedAt.getTime()-t.enqueuedAt.getTime():e.getTime()-t.enqueuedAt.getTime(),executingTime:t.executedAt?e.getTime()-t.executedAt.getTime():0})))}next(){return Qe(this,void 0,void 0,(function*(){const e=this.pendingTasks[0];e&&(yield this.executeTask(e),this.pendingTasks.shift(),this.next())}))}executeTask(e){return Qe(this,void 0,void 0,(function*(){if(!e.stopped){e.executedAt=new Date;try{const t=yield e.task();if(e.stopped)return;e.resolve(t)}catch(t){if(e.stopped)return;e.reject(t)}}}))}};var Je={};Object.defineProperty(Je,"__esModule",{value:!0}),Je.Producer=void 0;const Ye=be,Xe=Re,Ze=new me.Logger("Producer");class et extends Ye.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:s,stopTracks:n,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new Ye.EnhancedEventEmitter,Ze.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=s,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=n,this._disableTrackOnPause=a,this._zeroRtpOnPause=o,this._appData=c,this._onTrackEnded=this._onTrackEnded.bind(this),this._handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(Ze.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ze.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Xe.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){Ze.debug("pause()"),this._closed?Ze.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&this.safeEmitAsPromise("@replacetrack",null).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){Ze.debug("resume()"),this._closed?Ze.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&this.safeEmitAsPromise("@replacetrack",this._track).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(Ze.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new Xe.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new Xe.InvalidStateError("track ended");e!==this._track?(this._zeroRtpOnPause&&this._paused||await this.safeEmitAsPromise("@replacetrack",e),this._destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this._handleTrack()):Ze.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new Xe.InvalidStateError("closed");if("video"!==this._kind)throw new Xe.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await this.safeEmitAsPromise("@setmaxspatiallayer",e),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new Xe.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await this.safeEmitAsPromise("@setrtpencodingparameters",e)}_onTrackEnded(){Ze.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}_handleTrack(){this._track&&this._track.addEventListener("ended",this._onTrackEnded)}_destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this._onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}Je.Producer=et;var tt={};Object.defineProperty(tt,"__esModule",{value:!0}),tt.Consumer=void 0;const rt=be,it=Re,st=new me.Logger("Consumer");class nt extends rt.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:s,rtpParameters:n,appData:a}){super(),this._closed=!1,this._observer=new rt.EnhancedEventEmitter,st.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=s,this._rtpParameters=n,this._paused=!s.enabled,this._appData=a,this._onTrackEnded=this._onTrackEnded.bind(this),this._handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(st.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(st.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new it.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){st.debug("pause()"),this._closed?st.error("pause() | Consumer closed"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){st.debug("resume()"),this._closed?st.error("resume() | Consumer closed"):(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume"))}_onTrackEnded(){st.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}_handleTrack(){this._track.addEventListener("ended",this._onTrackEnded)}_destroyTrack(){try{this._track.removeEventListener("ended",this._onTrackEnded),this._track.stop()}catch(e){}}}tt.Consumer=nt;var at={};Object.defineProperty(at,"__esModule",{value:!0}),at.DataProducer=void 0;const ot=be,ct=Re,dt=new me.Logger("DataProducer");class pt extends ot.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new ot.EnhancedEventEmitter,dt.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=i,this._handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(dt.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(dt.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(dt.debug("send()"),this._closed)throw new ct.InvalidStateError("closed");this._dataChannel.send(e)}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(dt.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?dt.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):dt.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(dt.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||dt.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}at.DataProducer=pt;var lt={};Object.defineProperty(lt,"__esModule",{value:!0}),lt.DataConsumer=void 0;const ut=be,ht=new me.Logger("DataConsumer");class ft extends ut.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:s}){super(),this._closed=!1,this._observer=new ut.EnhancedEventEmitter,ht.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=s,this._handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(ht.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(ht.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(ht.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?ht.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):ht.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(ht.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}lt.DataConsumer=ft;var mt=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),gt=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),yt=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&mt(t,e,r);return gt(t,e),t};Object.defineProperty(He,"__esModule",{value:!0}),He.Transport=void 0;const vt=Ke,bt=me,_t=be,wt=Re,St=yt(ke),Rt=yt(Te),Pt=Je,Ct=tt,kt=at,Tt=lt;class Et{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const Dt=new bt.Logger("Transport");class Ot extends _t.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p,handlerFactory:l,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new vt.AwaitQueue({ClosedErrorClass:wt.InvalidStateError}),this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._observer=new _t.EnhancedEventEmitter,Dt.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=n?n.maxMessageSize:null,delete(c=St.clone(c,{})).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=l(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:u}),this._appData=p,this._handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){if(!this._closed){Dt.debug("close()"),this._closed=!0,this._awaitQueue.close(),this._handler.close();for(const e of this._producers.values())e.transportClosed();this._producers.clear();for(const e of this._consumers.values())e.transportClosed();this._consumers.clear();for(const e of this._dataProducers.values())e.transportClosed();this._dataProducers.clear();for(const e of this._dataConsumers.values())e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new wt.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(Dt.debug("restartIce()"),this._closed)throw new wt.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(Dt.debug("updateIceServers()"),this._closed)throw new wt.InvalidStateError("closed");if(!Array.isArray(e))throw new TypeError("missing iceServers");return this._awaitQueue.push((async()=>this._handler.updateIceServers(e)),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:i,stopTracks:s=!0,disableTrackOnPause:n=!0,zeroRtpOnPause:a=!1,appData:o={}}={}){if(Dt.debug("produce() [track:%o]",e),!e)throw new TypeError("missing track");if("send"!==this._direction)throw new wt.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new wt.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new wt.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw new TypeError('no "produce" listener set into this transport');if(o&&"object"!=typeof o)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=t.map((e=>{const t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t})));const{localId:d,rtpParameters:p,rtpSender:l}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{Rt.validateRtpParameters(p);const{id:t}=await this.safeEmitAsPromise("produce",{kind:e.kind,rtpParameters:p,appData:o}),r=new Pt.Producer({id:t,localId:d,rtpSender:l,track:e,rtpParameters:p,stopTracks:s,disableTrackOnPause:n,zeroRtpOnPause:a,appData:o});return this._producers.set(r.id,r),this._handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(s)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,appData:s={}}){if(Dt.debug("consume()"),i=St.clone(i,void 0),this._closed)throw new wt.InvalidStateError("closed");if("recv"!==this._direction)throw new wt.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");if(!Rt.canReceive(i,this._extendedRtpCapabilities))throw new wt.UnsupportedError("cannot consume this Producer");const n=new Et({id:e,producerId:t,kind:r,rtpParameters:i,appData:s});return this._pendingConsumerTasks.push(n),!1===this._consumerCreationInProgress&&this._createPendingConsumers(),n.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:s="",appData:n={}}={}){if(Dt.debug("produceData()"),"send"!==this._direction)throw new wt.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new wt.UnsupportedError("SCTP not enabled by remote Transport");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw new TypeError('no "producedata" listener set into this transport');if(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");return(t||r)&&(e=!1),this._awaitQueue.push((async()=>{const{dataChannel:a,sctpStreamParameters:o}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s});Rt.validateSctpStreamParameters(o);const{id:c}=await this.safeEmitAsPromise("producedata",{sctpStreamParameters:o,label:i,protocol:s,appData:n}),d=new kt.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:n});return this._dataProducers.set(d.id,d),this._handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d}),"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:i="",protocol:s="",appData:n={}}){if(Dt.debug("consumeData()"),r=St.clone(r,void 0),this._closed)throw new wt.InvalidStateError("closed");if("recv"!==this._direction)throw new wt.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new wt.UnsupportedError("SCTP not enabled by remote Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");return Rt.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:s}),o=new Tt.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,appData:n});return this._dataConsumers.set(o.id,o),this._handleDataConsumer(o),this._observer.safeEmit("newdataconsumer",o),o}),"transport.consumeData()")}async _createPendingConsumers(){this._awaitQueue.push((async()=>{this._consumerCreationInProgress=!0;const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:i,rtpParameters:s}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:s})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;r++){const s=e[r],n=i[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:p}=s.consumerOptions,{localId:l,rtpReceiver:u,track:h}=n,f=new Ct.Consumer({id:a,localId:l,producerId:o,rtpReceiver:u,track:h,rtpParameters:d,appData:p});this._consumers.set(f.id,f),this._handleConsumer(f),this._probatorConsumerCreated||t||"video"!==c||(t=f),this._observer.safeEmit("newconsumer",f),s.resolve(f)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=Rt.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),Dt.debug("_createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){Dt.error("_createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}this._consumerCreationInProgress=!1}),"transport._createPendingConsumers()").then((()=>{this._pendingConsumerTasks.length>0&&this._createPendingConsumers()})).catch((()=>{}))}_handleHandler(){const e=this._handler;e.on("@connect",(({dtlsParameters:e},t,r)=>{this._closed?r(new wt.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(Dt.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))}))}_handleProducer(e){e.on("@close",(()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push((async()=>this._handler.stopSending(e.localId)),"producer @close event").catch((e=>Dt.warn("producer.close() failed:%o",e)))})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new wt.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}_handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._closed||this._awaitQueue.push((async()=>this._handler.stopReceiving(e.localId)),"consumer @close event").catch((()=>{}))})),e.on("@pause",(()=>{this._awaitQueue.push((async()=>this._handler.pauseReceiving(e.localId)),"consumer @pause event").catch((()=>{}))})),e.on("@resume",(()=>{this._awaitQueue.push((async()=>this._handler.resumeReceiving(e.localId)),"consumer @resume event").catch((()=>{}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new wt.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)}))}_handleDataProducer(e){e.on("@close",(()=>{this._dataProducers.delete(e.id)}))}_handleDataConsumer(e){e.on("@close",(()=>{this._dataConsumers.delete(e.id)}))}}He.Transport=Ot;var xt={},Mt={},It={},jt={exports:{}},Lt=jt.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Lt).forEach((function(e){Lt[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))})),function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var s=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:s&&!r[e.name]&&(r[e.name]={});var n=e.push?{}:s?r[e.name]:r;!function(e,r,i,s){if(s&&!i)r[s]=t(e[1]);else for(var n=0;n<i.length;n+=1)null!=e[n+1]&&(r[i[n]]=t(e[n+1]))}(i.match(e.reg),n,e.names,e.name),e.push&&r[e.push].push(n)},i=jt.exports,s=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},n=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(s).forEach((function(e){var t=e[0],s=e.slice(2);"m"===t&&(n.push({rtp:[],fmtp:[]}),a=n[n.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(s))return r(c,a,s)}})),t.media=n,t};var n=function(e,r){var i=r.split(/=(.+)/,2);return 2===i.length?e[i[0]]=t(i[1]):1===i.length&&r.length>1&&(e[i[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(n,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],i=e.split(" ").map(t),s=0;s<i.length;s+=3)r.push({component:i[s],ip:i[s+1],port:i[s+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(n,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,i=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),i=!0),{scid:r,paused:i}}))}))}}(It);var At=jt.exports,Ft=/%[sdv%]/g,Nt=function(e){var t=1,r=arguments,i=r.length;return e.replace(Ft,(function(e){if(t>=i)return e;var s=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}}))},Bt=function(e,t,r){var i=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?i.push(r[t.name][n]):i.push(r[t.names[s]])}else i.push(r[t.name]);return Nt.apply(null,i)},Ut=["v","o","s","i","u","e","p","c","b","t","r","z","a"],zt=["i","c","b","a"],qt=It,$t=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var r=t.outerOrder||Ut,i=t.innerOrder||zt,s=[];return r.forEach((function(t){At[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Bt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Bt(t,r,e))}))}))})),e.media.forEach((function(e){s.push(Bt("m",At.m[0],e)),i.forEach((function(t){At[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Bt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Bt(t,r,e))}))}))}))})),s.join("\r\n")+"\r\n"};Mt.write=$t,Mt.parse=qt.parse,Mt.parseParams=qt.parseParams,Mt.parseFmtpConfig=qt.parseFmtpConfig,Mt.parsePayloads=qt.parsePayloads,Mt.parseRemoteCandidates=qt.parseRemoteCandidates,Mt.parseImageAttributes=qt.parseImageAttributes,Mt.parseSimulcastStreamList=qt.parseSimulcastStreamList;var Vt={},Gt=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Wt=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ht=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Gt(t,e,r);return Wt(t,e),t};Object.defineProperty(Vt,"__esModule",{value:!0}),Vt.applyCodecParameters=Vt.getCname=Vt.extractDtlsParameters=Vt.extractRtpCapabilities=void 0;const Kt=Ht(Mt);Vt.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,s=!1;for(const n of e.media){const e=n.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(s)continue;s=!0;break;default:continue}for(const r of n.rtp){const i={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(i.preferredPayloadType,i)}for(const e of n.fmtp||[]){const r=Kt.parseParams(e.config),i=t.get(e.payload);i&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),i.parameters=r)}for(const e of n.rtcpFb||[]){const r=t.get(e.payload);if(!r)continue;const i={type:e.type,parameter:e.subtype};i.parameter||delete i.parameter,r.rtcpFeedback.push(i)}for(const t of n.ext||[]){if(t["encrypt-uri"])continue;const i={kind:e,uri:t.uri,preferredId:t.value};r.push(i)}}return{codecs:Array.from(t.values()),headerExtensions:r}},Vt.extractDtlsParameters=function({sdpObject:e}){const t=(e.media||[]).find((e=>e.iceUfrag&&0!==e.port));if(!t)throw new Error("no active media section found");const r=t.fingerprint||e.fingerprint;let i;switch(t.setup){case"active":i="client";break;case"passive":i="server";break;case"actpass":i="auto"}return{role:i,fingerprints:[{algorithm:r.type,value:r.hash}]}},Vt.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},Vt.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(const r of e.codecs){const e=r.mimeType.toLowerCase();if("audio/opus"!==e)continue;if(!(t.rtp||[]).find((e=>e.payload===r.payloadType)))continue;t.fmtp=t.fmtp||[];let i=t.fmtp.find((e=>e.payload===r.payloadType));i||(i={payload:r.payloadType,config:""},t.fmtp.push(i));const s=Kt.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(s.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(s))i.config&&(i.config+=";"),i.config+=`${e}=${s[e]}`}};var Qt={};Object.defineProperty(Qt,"__esModule",{value:!0}),Qt.addLegacySimulcast=Qt.getRtpEncodings=void 0,Qt.getRtpEncodings=function({offerMediaObject:e}){const t=new Set;for(const r of e.ssrcs||[]){const e=r.id;t.add(e)}if(0===t.size)throw new Error("no a=ssrc lines found");const r=new Map;for(const i of e.ssrcGroups||[]){if("FID"!==i.semantics)continue;let[e,s]=i.ssrcs.split(/\s+/);e=Number(e),s=Number(s),t.has(e)&&(t.delete(e),t.delete(s),r.set(e,s))}for(const e of t)r.set(e,null);const i=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},Qt.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){if(t<=1)throw new TypeError("numStreams must be greater than 1");const r=(e.ssrcs||[]).find((e=>"msid"===e.attribute));if(!r)throw new Error("a=ssrc line with msid information not found");const[i,s]=r.value.split(" "),n=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===n&&(a=Number(t[1]),!0)}));const o=e.ssrcs.find((e=>"cname"===e.attribute));if(!o)throw new Error("a=ssrc line with cname information not found");const c=o.value,d=[],p=[];for(let e=0;e<t;++e)d.push(n+e),a&&p.push(a+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){const r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${i} ${s}`})}for(let t=0;t<p.length;++t){const r=d[t],n=p[t];e.ssrcs.push({id:n,attribute:"cname",value:c}),e.ssrcs.push({id:n,attribute:"msid",value:`${i} ${s}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${n}`})}};var Jt={};Object.defineProperty(Jt,"__esModule",{value:!0}),Jt.HandlerInterface=void 0;const Yt=be;class Xt extends Yt.EnhancedEventEmitter{constructor(){super()}}Jt.HandlerInterface=Xt;var Zt={},er={},tr=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),rr=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ir=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&tr(t,e,r);return rr(t,e),t};Object.defineProperty(er,"__esModule",{value:!0}),er.OfferMediaSection=er.AnswerMediaSection=er.MediaSection=void 0;const sr=ir(ke);class nr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:i=!1}){if(this._mediaObject={},this._planB=i,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}disable(){this._mediaObject.direction="inactive",delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids}close(){this._mediaObject.direction="inactive",this._mediaObject.port=0,delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}}er.MediaSection=nr;er.AnswerMediaSection=class extends nr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.port=s.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),a.type){case"audio":case"video":this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[];for(const e of c.codecs){const t={payload:e.payloadType,codec:ar(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=sr.clone(e.parameters,{});if(d){const{opusStereo:t,opusFec:i,opusDtx:s,opusMaxPlaybackRate:n,opusMaxAverageBitrate:a,opusPtime:c,videoGoogleStartBitrate:p,videoGoogleMaxBitrate:l,videoGoogleMinBitrate:u}=d,h=o.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":void 0!==t&&(h.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==i&&(h.parameters.useinbandfec=i?1:0,r.useinbandfec=i?1:0),void 0!==s&&(h.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==n&&(r.maxplaybackrate=n),void 0!==a&&(r.maxaveragebitrate=a),void 0!==c&&(h.parameters.ptime=c,r.ptime=c);break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==p&&(r["x-google-start-bitrate"]=p),void 0!==l&&(r["x-google-max-bitrate"]=l),void 0!==u&&(r["x-google-min-bitrate"]=u)}}const i={payload:e.payloadType,config:""};for(const e of Object.keys(r))i.config&&(i.config+=";"),i.config+=`${e}=${r[e]}`;i.config&&this._mediaObject.fmtp.push(i);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions){(a.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(p&&"extmap-allow-mixed"===a.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),a.simulcast){this._mediaObject.simulcast={dir1:"recv",list1:a.simulcast.list1},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}else if(a.simulcast_03){this._mediaObject.simulcast_03={value:a.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof a.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize):a.sctpmap&&(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}};function ar(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}er.OfferMediaSection=class extends nr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:p,oldDataChannelSpec:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a),this._mediaObject.type=o,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=s.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=i?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),o){case"audio":case"video":{this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${d||"-"} ${p}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:ar(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r={payload:e.payloadType,config:""};for(const t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;r.config&&this._mediaObject.fmtp.push(r);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions)this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";const e=c.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],c.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${d||"-"} ${p}`}),r&&(c.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${d||"-"} ${p}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":l?(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const i=e.encodings[0],s=i.ssrc,n=i.rtx&&i.rtx.ssrc?i.rtx.ssrc:void 0,a=this._mediaObject.payloads.split(" ");for(const t of e.codecs){if(a.includes(String(t.payloadType)))continue;const e={payload:t.payloadType,codec:ar(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);const r={payload:t.payloadType,config:""};for(const e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;r.config&&this._mediaObject.fmtp.push(r);for(const e of t.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter((e=>!this._mediaObject.payloads.includes(e.payloadType))).map((e=>e.payloadType)).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),n&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${s} ${n}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,i=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==i)),i&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${i}`)))}};var or=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),cr=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),dr=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&or(t,e,r);return cr(t,e),t};Object.defineProperty(Zt,"__esModule",{value:!0}),Zt.RemoteSdp=void 0;const pr=dr(Mt),lr=er,ur=new me.Logger("RemoteSdp");Zt.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=s,this._planB=n,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};const e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}s&&(this._sdpObject.origin.address=s.ip,this._sdpObject.origin.ipVer=s.ipVersion)}updateIceParameters(e){ur.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0;for(const t of this._mediaSections)t.setIceParameters(e)}updateDtlsRole(e){ur.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e;for(const t of this._mediaSections)t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){const t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:n=!1}){const a=new lr.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:n});t?this._replaceMediaSection(a,t):this._midToIndex.has(a.mid)?this._replaceMediaSection(a):this._addMediaSection(a)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:s}){const n=this._midToIndex.get(e);let a;if(void 0!==n&&(a=this._mediaSections[n]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:s}),this._replaceMediaSection(a);else{a=new lr.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:s});const n=this._mediaSections.find((e=>e.closed));n?this._replaceMediaSection(a,n.mid):this._addMediaSection(a)}}disableMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);this._mediaSections[t].disable()}closeMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);const r=this._mediaSections[t];if(e===this._firstMid)return ur.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),void this.disableMediaSection(e);r.close(),this._regenerateBundleMids()}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._midToIndex.get(e);if(void 0===r)throw new Error(`no media section found with mid '${e}'`);const i=this._mediaSections[r];i.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(i)}sendSctpAssociation({offerMediaObject:e}){const t=new lr.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){const t=new lr.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,pr.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){const r=this._midToIndex.get(t);if(void 0===r)throw new Error(`no media section found for reuseMid '${t}'`);const i=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(i.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{const t=this._midToIndex.get(e.mid);if(void 0===t)throw new Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var hr={};Object.defineProperty(hr,"__esModule",{value:!0}),hr.parse=void 0;const fr=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");hr.parse=function(e){const t=fr.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var mr=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),gr=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),yr=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&mr(t,e,r);return gr(t,e),t};Object.defineProperty(xt,"__esModule",{value:!0}),xt.Chrome74=void 0;const vr=yr(Mt),br=me,_r=yr(ke),wr=yr(Te),Sr=yr(Vt),Rr=yr(Qt),Pr=Jt,Cr=Zt,kr=hr,Tr=new br.Logger("Chrome74"),Er={OS:1024,MIS:1024};class Dr extends Pr.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Dr}get name(){return"Chrome74"}close(){if(Tr.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Tr.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=vr.parse(t.sdp);return Sr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Tr.debug("getNativeSctpCapabilities()"),{numStreams:Er}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Tr.debug("run()"),this._direction=e,this._remoteSdp=new Cr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:wr.getSendingRtpParameters("audio",d),video:wr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:wr.getSendingRemoteRtpParameters("audio",d),video:wr.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Tr.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Tr.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Tr.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Tr.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Tr.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Tr.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){var s;this._assertSendDirection(),Tr.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=_r.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=wr.reduceCodecs(n.codecs,i);const a=_r.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=wr.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let d,p=await this._pc.createOffer(),l=vr.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:l});let u=!1;const h=(0,kr.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Tr.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=vr.parse(p.sdp),d=l.media[o.idx],Rr.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:vr.write(l)}),Tr.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const f=c.mid;if(n.mid=f,l=vr.parse(this._pc.localDescription.sdp),d=l.media[o.idx],n.rtcp.cname=Sr.getCname({offerMediaObject:d}),t)if(1===t.length){let e=Rr.getRtpEncodings({offerMediaObject:d});Object.assign(e[0],t[0]),u&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=Rr.getRtpEncodings({offerMediaObject:d});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Tr.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),Tr.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();Tr.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Tr.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Tr.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Tr.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),Tr.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Tr.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){var n;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Tr.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Er.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=vr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:t}),Tr.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Tr.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],i=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:s}=t;Tr.debug("receive() [trackId:%s, kind:%s]",e,r);const n=s.mid||String(this._mapMidTransceiver.size);i.set(e,n),this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:s,streamId:s.rtcp.cname,trackId:e})}const s={type:"offer",sdp:this._remoteSdp.getSdp()};Tr.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",s),await this._pc.setRemoteDescription(s);let n=await this._pc.createAnswer();const a=vr.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,s=i.get(e),n=a.media.find((e=>String(e.mid)===s));Sr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:vr.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Tr.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{trackId:e}=t,s=i.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),r.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),Tr.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};Tr.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Tr.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),Tr.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Tr.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Tr.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),Tr.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Tr.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Tr.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async getReceiverStats(e){this._assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};Tr.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Tr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=vr.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Tr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=vr.parse(this._pc.localDescription.sdp));const r=Sr.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}xt.Chrome74=Dr;var Or={},xr=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Mr=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ir=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&xr(t,e,r);return Mr(t,e),t};Object.defineProperty(Or,"__esModule",{value:!0}),Or.Chrome70=void 0;const jr=Ir(Mt),Lr=me,Ar=Ir(ke),Fr=Ir(Te),Nr=Ir(Vt),Br=Ir(Qt),Ur=Jt,zr=Zt,qr=hr,$r=new Lr.Logger("Chrome70"),Vr={OS:1024,MIS:1024};class Gr extends Ur.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Gr}get name(){return"Chrome70"}close(){if($r.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){$r.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=jr.parse(t.sdp);return Nr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return $r.debug("getNativeSctpCapabilities()"),{numStreams:Vr}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){$r.debug("run()"),this._direction=e,this._remoteSdp=new zr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Fr.getSendingRtpParameters("audio",d),video:Fr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Fr.getSendingRemoteRtpParameters("audio",d),video:Fr.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){$r.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if($r.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});$r.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};$r.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};$r.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();$r.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){var s;this._assertSendDirection(),$r.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Ar.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Fr.reduceCodecs(n.codecs,i);const a=Ar.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Fr.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let d,p=await this._pc.createOffer(),l=jr.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:l}),t&&t.length>1&&($r.debug("send() | enabling legacy simulcast"),l=jr.parse(p.sdp),d=l.media[o.idx],Br.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:jr.write(l)});let u=!1;const h=(0,qr.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&($r.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=jr.parse(p.sdp),d=l.media[o.idx],Br.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:jr.write(l)}),$r.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p),t){$r.debug("send() | applying given encodings");const e=c.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],s=t[r];if(!s)break;e.encodings[r]=Object.assign(i,s)}await c.sender.setParameters(e)}const f=c.mid;if(n.mid=f,l=jr.parse(this._pc.localDescription.sdp),d=l.media[o.idx],n.rtcp.cname=Nr.getCname({offerMediaObject:d}),n.encodings=Br.getRtpEncodings({offerMediaObject:d}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(u&&(n.encodings=[n.encodings[0]]),n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return $r.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),$r.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();$r.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};$r.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?$r.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):$r.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),$r.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),$r.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){var n;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};$r.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Vr.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=jr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:t}),$r.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};$r.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],i=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:s}=t;$r.debug("receive() [trackId:%s, kind:%s]",e,r);const n=s.mid||String(this._mapMidTransceiver.size);i.set(e,n),this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:s,streamId:s.rtcp.cname,trackId:e})}const s={type:"offer",sdp:this._remoteSdp.getSdp()};$r.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",s),await this._pc.setRemoteDescription(s);let n=await this._pc.createAnswer();const a=jr.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,s=i.get(e),n=a.media.find((e=>String(e.mid)===s));Nr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:jr.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),$r.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{trackId:e}=t,s=i.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),r.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),$r.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};$r.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();$r.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this._assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:s,ordered:n,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};$r.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};$r.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=jr.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}$r.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=jr.parse(this._pc.localDescription.sdp));const r=Nr.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Or.Chrome70=Gr;var Wr={},Hr={};Object.defineProperty(Hr,"__esModule",{value:!0}),Hr.addLegacySimulcast=Hr.getRtpEncodings=void 0,Hr.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const i of e.ssrcs||[]){if("msid"!==i.attribute)continue;if(i.value.split(" ")[1]===t.id){const e=i.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const i=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,s]=t.ssrcs.split(/\s+/);e=Number(e),s=Number(s),r.has(e)&&(r.delete(e),r.delete(s),i.set(e,s))}for(const e of r)i.set(e,null);const s=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),s.push(r)}return s},Hr.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,s,n;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,n=e.value.split(" ")[0],!0)})))throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===i&&(s=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===i));if(!a)throw new Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);const o=a.value,c=[],d=[];for(let e=0;e<r;++e)c.push(i+e),s&&d.push(s+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){const i=c[r];e.ssrcs.push({id:i,attribute:"cname",value:o}),e.ssrcs.push({id:i,attribute:"msid",value:`${n} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],s=d[r];e.ssrcs.push({id:s,attribute:"cname",value:o}),e.ssrcs.push({id:s,attribute:"msid",value:`${n} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${s}`})}};var Kr=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Qr=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Jr=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Kr(t,e,r);return Qr(t,e),t};Object.defineProperty(Wr,"__esModule",{value:!0}),Wr.Chrome67=void 0;const Yr=Jr(Mt),Xr=me,Zr=Jr(ke),ei=Jr(Te),ti=Jr(Vt),ri=Jr(Hr),ii=Jt,si=Zt,ni=new Xr.Logger("Chrome67"),ai={OS:1024,MIS:1024};class oi extends ii.HandlerInterface{constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new oi}get name(){return"Chrome67"}close(){if(ni.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){ni.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Yr.parse(t.sdp);return ti.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ni.debug("getNativeSctpCapabilities()"),{numStreams:ai}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ni.debug("run()"),this._direction=e,this._remoteSdp=new si.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:ei.getSendingRtpParameters("audio",d),video:ei.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ei.getSendingRemoteRtpParameters("audio",d),video:ei.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){ni.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(ni.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ni.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ni.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ni.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ni.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){var s;this._assertSendDirection(),ni.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&ni.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,a=await this._pc.createOffer(),o=Yr.parse(a.sdp);const c=Zr.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=ei.reduceCodecs(c.codecs);const d=Zr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=ei.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(ni.debug("send() | enabling simulcast"),o=Yr.parse(a.sdp),n=o.media.find((e=>"video"===e.type)),ri.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),a={type:"offer",sdp:Yr.write(o)}),ni.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=Yr.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=ti.getCname({offerMediaObject:n}),c.encodings=ri.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&"video/vp8"===c.codecs[0].mimeType.toLowerCase())for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};ni.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:c,rtpSender:u}}async stopSending(e){this._assertSendDirection(),ni.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();ni.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void ni.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};ni.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?ni.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ni.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),ni.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),ni.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){var n;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};ni.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ai.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Yr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:t}),ni.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};ni.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;ni.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};ni.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Yr.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));ti.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Yr.write(n)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:n}),ni.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{kind:e,trackId:i,rtpParameters:s}=t,n=i,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===n));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(n,{mid:a,rtpParameters:s,rtpReceiver:o}),r.push({localId:n,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),ni.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};ni.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const s=await this._pc.createAnswer();ni.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this._assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:s,ordered:n,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};ni.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};ni.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Yr.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}ni.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Yr.parse(this._pc.localDescription.sdp));const r=ti.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Wr.Chrome67=oi;var ci={},di=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),pi=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),li=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&di(t,e,r);return pi(t,e),t};Object.defineProperty(ci,"__esModule",{value:!0}),ci.Chrome55=void 0;const ui=li(Mt),hi=me,fi=Re,mi=li(ke),gi=li(Te),yi=li(Vt),vi=li(Hr),bi=Jt,_i=Zt,wi=new hi.Logger("Chrome55"),Si={OS:1024,MIS:1024};class Ri extends bi.HandlerInterface{constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Ri}get name(){return"Chrome55"}close(){if(wi.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){wi.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=ui.parse(t.sdp);return yi.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return wi.debug("getNativeSctpCapabilities()"),{numStreams:Si}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){wi.debug("run()"),this._direction=e,this._remoteSdp=new _i.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:gi.getSendingRtpParameters("audio",d),video:gi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:gi.getSendingRemoteRtpParameters("audio",d),video:gi.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){wi.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(wi.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});wi.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};wi.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};wi.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();wi.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){var s;this._assertSendDirection(),wi.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&wi.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,a=await this._pc.createOffer(),o=ui.parse(a.sdp);const c=mi.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=gi.reduceCodecs(c.codecs);const d=mi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=gi.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(wi.debug("send() | enabling simulcast"),o=ui.parse(a.sdp),n=o.media.find((e=>"video"===e.type)),vi.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),a={type:"offer",sdp:ui.write(o)}),wi.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=ui.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=yi.getCname({offerMediaObject:n}),c.encodings=vi.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&"video/vp8"===c.codecs[0].mimeType.toLowerCase())for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};wi.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:c}}async stopSending(e){this._assertSendDirection(),wi.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();wi.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void wi.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};wi.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new fi.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new fi.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new fi.UnsupportedError("not supported")}async getSenderStats(e){throw new fi.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){var n;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};wi.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Si.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ui.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:t}),wi.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};wi.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;wi.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r,n=i.rtcp.cname;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};wi.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=ui.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));yi.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:ui.write(n)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:n}),wi.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{kind:e,trackId:i,rtpParameters:s}=t,n=e,a=i,o=s.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===o)),d=c.getTrackById(a);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:n,rtpParameters:s}),r.push({localId:a,track:d})}return r}async stopReceiving(e){this._assertRecvDirection(),wi.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};wi.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const s=await this._pc.createAnswer();wi.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new fi.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:s,ordered:n,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};wi.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};wi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ui.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}wi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ui.parse(this._pc.localDescription.sdp));const r=yi.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ci.Chrome55=Ri;var Pi={},Ci=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ki=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ti=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ci(t,e,r);return ki(t,e),t};Object.defineProperty(Pi,"__esModule",{value:!0}),Pi.Firefox60=void 0;const Ei=Ti(Mt),Di=me,Oi=Re,xi=Ti(ke),Mi=Ti(Te),Ii=Ti(Vt),ji=Ti(Qt),Li=Jt,Ai=Zt,Fi=new Di.Logger("Firefox60"),Ni={OS:16,MIS:2048};class Bi extends Li.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Bi}get name(){return"Firefox60"}close(){if(Fi.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Fi.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});const i=e.addTransceiver(r,{direction:"sendrecv"}),s=i.sender.getParameters(),n=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];s.encodings=n,await i.sender.setParameters(s);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=Ei.parse(a.sdp);return Ii.extractRtpCapabilities({sdpObject:o})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return Fi.debug("getNativeSctpCapabilities()"),{numStreams:Ni}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Fi.debug("run()"),this._direction=e,this._remoteSdp=new Ai.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Mi.getSendingRtpParameters("audio",d),video:Mi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Mi.getSendingRemoteRtpParameters("audio",d),video:Mi.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw new Oi.UnsupportedError("not supported")}async restartIce(e){if(Fi.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Fi.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Fi.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Fi.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Fi.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this._assertSendDirection(),Fi.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=xi.clone(t,[])).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const s=xi.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Mi.reduceCodecs(s.codecs,i);const n=xi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});n.codecs=Mi.reduceCodecs(n.codecs,i);const a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){const e=a.sender.getParameters();e.encodings=t,await a.sender.setParameters(e)}const o=await this._pc.createOffer();let c=Ei.parse(o.sdp);this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:c}),Fi.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const d=a.mid;s.mid=d,c=Ei.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(s.rtcp.cname=Ii.getCname({offerMediaObject:p}),t)if(1===t.length){const e=ji.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t.reverse();else s.encodings=ji.getRtpEncodings({offerMediaObject:p});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const l={type:"answer",sdp:this._remoteSdp.getSdp()};return Fi.debug("send() | calling pc.setRemoteDescription() [answer:%o]",l),await this._pc.setRemoteDescription(l),this._mapMidTransceiver.set(d,a),{localId:d,rtpParameters:s,rtpSender:a.sender}}async stopSending(e){Fi.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();Fi.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fi.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Fi.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Fi.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),Fi.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const i=r.sender.getParameters();t=i.encodings.length-1-t,i.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Fi.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this._assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Fi.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ni.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ei.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:t}),Fi.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fi.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this._assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s}=t;Fi.debug("receive() [trackId:%s, kind:%s]",e,i);const n=s.mid||String(this._mapMidTransceiver.size);r.set(e,n),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Fi.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Ei.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=n.media.find((e=>String(e.mid)===a));Ii.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),s={type:"answer",sdp:Ei.write(n)}}this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:n}),Fi.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){this._assertRecvDirection(),Fi.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};Fi.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Fi.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),Fi.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Fi.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Fi.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),Fi.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Fi.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Fi.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async getReceiverStats(e){this._assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Fi.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Fi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ei.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}Fi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ei.parse(this._pc.localDescription.sdp));const r=Ii.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Pi.Firefox60=Bi;var Ui={},zi=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),qi=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),$i=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&zi(t,e,r);return qi(t,e),t};Object.defineProperty(Ui,"__esModule",{value:!0}),Ui.Safari12=void 0;const Vi=$i(Mt),Gi=me,Wi=$i(ke),Hi=$i(Te),Ki=$i(Vt),Qi=$i(Qt),Ji=Jt,Yi=Zt,Xi=new Gi.Logger("Safari12"),Zi={OS:1024,MIS:1024};class es extends Ji.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new es}get name(){return"Safari12"}close(){if(Xi.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Xi.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Vi.parse(t.sdp);return Ki.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Xi.debug("getNativeSctpCapabilities()"),{numStreams:Zi}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Xi.debug("run()"),this._direction=e,this._remoteSdp=new Yi.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Hi.getSendingRtpParameters("audio",d),video:Hi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Hi.getSendingRemoteRtpParameters("audio",d),video:Hi.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Xi.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Xi.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Xi.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Xi.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xi.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Xi.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){var s;this._assertSendDirection(),Xi.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Wi.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Hi.reduceCodecs(n.codecs,i);const a=Wi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Hi.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let d,p=await this._pc.createOffer(),l=Vi.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:l}),t&&t.length>1&&(Xi.debug("send() | enabling legacy simulcast"),l=Vi.parse(p.sdp),d=l.media[o.idx],Qi.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:Vi.write(l)}),Xi.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const u=c.mid;if(n.mid=u,l=Vi.parse(this._pc.localDescription.sdp),d=l.media[o.idx],n.rtcp.cname=Ki.getCname({offerMediaObject:d}),n.encodings=Qi.getRtpEncodings({offerMediaObject:d}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Xi.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,c),{localId:u,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),Xi.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();Xi.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xi.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Xi.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Xi.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),Xi.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Xi.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){var n;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Xi.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Zi.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Vi.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:t}),Xi.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xi.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],i=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:s}=t;Xi.debug("receive() [trackId:%s, kind:%s]",e,r);const n=s.mid||String(this._mapMidTransceiver.size);i.set(e,n),this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:s,streamId:s.rtcp.cname,trackId:e})}const s={type:"offer",sdp:this._remoteSdp.getSdp()};Xi.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",s),await this._pc.setRemoteDescription(s);let n=await this._pc.createAnswer();const a=Vi.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,s=i.get(e),n=a.media.find((e=>String(e.mid)===s));Ki.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:Vi.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Xi.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{trackId:e}=t,s=i.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),r.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),Xi.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};Xi.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Xi.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),Xi.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Xi.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Xi.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),Xi.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Xi.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Xi.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async getReceiverStats(e){this._assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};Xi.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Vi.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Xi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Vi.parse(this._pc.localDescription.sdp));const r=Ki.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Ui.Safari12=es;var ts={},rs=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),is=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ss=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&rs(t,e,r);return is(t,e),t};Object.defineProperty(ts,"__esModule",{value:!0}),ts.Safari11=void 0;const ns=ss(Mt),as=me,os=ss(ke),cs=ss(Te),ds=ss(Vt),ps=ss(Hr),ls=Jt,us=Zt,hs=new as.Logger("Safari11"),fs={OS:1024,MIS:1024};class ms extends ls.HandlerInterface{constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new ms}get name(){return"Safari11"}close(){if(hs.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){hs.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=ns.parse(t.sdp);return ds.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return hs.debug("getNativeSctpCapabilities()"),{numStreams:fs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){hs.debug("run()"),this._direction=e,this._remoteSdp=new us.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:cs.getSendingRtpParameters("audio",d),video:cs.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:cs.getSendingRemoteRtpParameters("audio",d),video:cs.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){hs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(hs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});hs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};hs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};hs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();hs.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){var s;this._assertSendDirection(),hs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&hs.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,a=await this._pc.createOffer(),o=ns.parse(a.sdp);const c=os.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=cs.reduceCodecs(c.codecs);const d=os.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=cs.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(hs.debug("send() | enabling simulcast"),o=ns.parse(a.sdp),n=o.media.find((e=>"video"===e.type)),ps.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),a={type:"offer",sdp:ns.write(o)}),hs.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=ns.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=ds.getCname({offerMediaObject:n}),c.encodings=ps.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&"video/vp8"===c.codecs[0].mimeType.toLowerCase())for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};hs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:c,rtpSender:u}}async stopSending(e){this._assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();hs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void hs.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};hs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?hs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):hs.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),hs.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),hs.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this._assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){var n;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};hs.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%fs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ns.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:t}),hs.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};hs.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;hs.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};hs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=ns.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));ds.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:ns.write(n)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:n}),hs.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{kind:e,trackId:i,rtpParameters:s}=t,n=e,a=i,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===a));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(a,{mid:n,rtpParameters:s,rtpReceiver:o}),r.push({localId:a,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),hs.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};hs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const s=await this._pc.createAnswer();hs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s)}async getReceiverStats(e){this._assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};hs.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};hs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ns.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}hs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ns.parse(this._pc.localDescription.sdp));const r=ds.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ts.Safari11=ms;var gs={},ys={},vs=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),bs=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),_s=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&vs(t,e,r);return bs(t,e),t};Object.defineProperty(ys,"__esModule",{value:!0}),ys.mangleRtpParameters=ys.getCapabilities=void 0;const ws=_s(ke);ys.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=ws.clone(e,{});for(const e of t.codecs){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){const t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(const t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},ys.mangleRtpParameters=function(e){const t=ws.clone(e,{});t.mid&&(t.muxId=t.mid,delete t.mid);for(const e of t.codecs)e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t};var Ss=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Rs=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ps=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ss(t,e,r);return Rs(t,e),t};Object.defineProperty(gs,"__esModule",{value:!0}),gs.Edge11=void 0;const Cs=me,ks=Re,Ts=Ps(ke),Es=Ps(Te),Ds=Ps(ys),Os=Jt,xs=new Cs.Logger("Edge11");class Ms extends Os.HandlerInterface{constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}static createFactory(){return()=>new Ms}get name(){return"Edge11"}close(){xs.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(const e of this._rtpSenders.values())try{e.stop()}catch(e){}for(const e of this._rtpReceivers.values())try{e.stop()}catch(e){}}async getNativeRtpCapabilities(){return xs.debug("getNativeRtpCapabilities()"),Ds.getCapabilities()}async getNativeSctpCapabilities(){return xs.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){xs.debug("run()"),this._sendingRtpParametersByKind={audio:Es.getSendingRtpParameters("audio",d),video:Es.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${Ts.generateRandomNumber()}`,this._setIceGatherer({iceServers:n,iceTransportPolicy:a}),this._setIceTransport(),this._setDtlsTransport()}async updateIceServers(e){throw new ks.UnsupportedError("not supported")}async restartIce(e){if(xs.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){xs.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){xs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this._setupTransport({localDtlsRole:"server"}),xs.debug("send() | calling new RTCRtpSender()");const s=new RTCRtpSender(e,this._dtlsTransport),n=Ts.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Es.reduceCodecs(n.codecs,i);const a=n.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Ts.generateRandomNumber(),a&&(e.rtx={ssrc:Ts.generateRandomNumber()});n.encodings=t,n.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=Ds.mangleRtpParameters(n);xs.debug("send() | calling rtpSender.send() [params:%o]",o),await s.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,s),{localId:c,rtpParameters:n,rtpSender:s}}async stopSending(e){xs.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{xs.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw xs.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async replaceTrack(e,t){t?xs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):xs.debug("replaceTrack() [localId:%s, no track]",e);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){xs.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){xs.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new ks.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;xs.debug("receive() [trackId:%s, kind:%s]",e,r)}this._transportReady||await this._setupTransport({localDtlsRole:"server"});for(const r of e){const{trackId:e,kind:i,rtpParameters:s}=r;xs.debug("receive() | calling new RTCRtpReceiver()");const n=new RTCRtpReceiver(this._dtlsTransport,i);n.addEventListener("error",(e=>{xs.error('rtpReceiver "error" event [event:%o]',e)}));const a=Ds.mangleRtpParameters(s);xs.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await n.receive(a);const o=e;this._rtpReceivers.set(o,n),t.push({localId:o,track:n.track,rtpReceiver:n})}return t}async stopReceiving(e){xs.debug("stopReceiving() [localId:%s]",e);const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(e);try{xs.debug("stopReceiving() | calling rtpReceiver.stop()"),t.stop()}catch(e){xs.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new ks.UnsupportedError("not implemented")}_setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{xs.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){xs.debug("_setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}_setIceTransport(){const e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("icestatechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("candidatepairchange",(e=>{xs.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}_setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{xs.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{xs.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{xs.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async _setupTransport({localDtlsRole:e}){xs.debug("_setupTransport()");const t=this._dtlsTransport.getLocalParameters();t.role=e,await this.safeEmitAsPromise("@connect",{dtlsParameters:t}),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter((e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm)),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}gs.Edge11=Ms;var Is={},js=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ls=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),As=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&js(t,e,r);return Ls(t,e),t};Object.defineProperty(Is,"__esModule",{value:!0}),Is.ReactNative=void 0;const Fs=As(Mt),Ns=me,Bs=Re,Us=As(ke),zs=As(Te),qs=As(Vt),$s=As(Hr),Vs=Jt,Gs=Zt,Ws=new Ns.Logger("ReactNative"),Hs={OS:1024,MIS:1024};class Ks extends Vs.HandlerInterface{constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Ks}get name(){return"ReactNative"}close(){if(Ws.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Ws.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Fs.parse(t.sdp);return qs.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ws.debug("getNativeSctpCapabilities()"),{numStreams:Hs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ws.debug("run()"),this._direction=e,this._remoteSdp=new Gs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:zs.getSendingRtpParameters("audio",d),video:zs.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:zs.getSendingRemoteRtpParameters("audio",d),video:zs.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Ws.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Ws.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ws.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ws.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ws.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ws.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){var s;this._assertSendDirection(),Ws.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Ws.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,a=await this._pc.createOffer(),o=Fs.parse(a.sdp);const c=Us.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=zs.reduceCodecs(c.codecs);const d=Us.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=zs.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Ws.debug("send() | enabling simulcast"),o=Fs.parse(a.sdp),n=o.media.find((e=>"video"===e.type)),$s.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),a={type:"offer",sdp:Fs.write(o)}),Ws.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=Fs.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=qs.getCname({offerMediaObject:n}),c.encodings=$s.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&("video/vp8"===c.codecs[0].mimeType.toLowerCase()||"video/h264"===c.codecs[0].mimeType.toLowerCase()))for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};Ws.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:c}}async stopSending(e){this._assertSendDirection(),Ws.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();Ws.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Ws.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ws.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new Bs.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Bs.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Bs.UnsupportedError("not implemented")}async getSenderStats(e){throw new Bs.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){var n;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};Ws.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Hs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Fs.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:t}),Ws.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ws.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],i=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:s}=t;Ws.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;let a=s.rtcp.cname;Ws.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Us.generateRandomNumber()}`,i.set(e,a),this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:s,streamId:a,trackId:e})}const s={type:"offer",sdp:this._remoteSdp.getSdp()};Ws.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",s),await this._pc.setRemoteDescription(s);let n=await this._pc.createAnswer();const a=Fs.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=a.media.find((e=>String(e.mid)===i));qs.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}n={type:"answer",sdp:Fs.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Ws.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:s,rtpParameters:n}=t,a=s,o=e,c=i.get(s),d=this._pc.getRemoteStreams().find((e=>e.id===c)),p=d.getTrackById(a);if(!p)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:o,rtpParameters:n}),r.push({localId:a,track:p})}return r}async stopReceiving(e){this._assertRecvDirection(),Ws.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};Ws.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const s=await this._pc.createAnswer();Ws.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Bs.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:s,ordered:n,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:s,ordered:n,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};Ws.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ws.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Fs.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Ws.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Fs.parse(this._pc.localDescription.sdp));const r=qs.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),this._transportReady=!0}_assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}_assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Is.ReactNative=Ks;var Qs=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Js=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ys=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Qs(t,e,r);return Js(t,e),t},Xs=q&&q.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(he,"__esModule",{value:!0}),he.Device=he.detectDevice=void 0;const Zs=Xs(fe.exports),en=me,tn=be,rn=Re,sn=Ys(ke),nn=Ys(Te),an=He,on=xt,cn=Or,dn=Wr,pn=ci,ln=Pi,un=Ui,hn=ts,fn=gs,mn=Is,gn=new en.Logger("Device");function yn(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return"undefined"==typeof RTCPeerConnection?void gn.warn("this._detectDevice() | unsupported ReactNative without RTCPeerConnection"):(gn.debug("this._detectDevice() | ReactNative handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)gn.warn("this._detectDevice() | unknown device");else{const e=navigator.userAgent,t=Zs.default.getParser(e),r=t.getEngine();if(t.satisfies({chrome:">=74",chromium:">=74","microsoft edge":">=88"}))return"Chrome74";if(t.satisfies({chrome:">=70",chromium:">=70"}))return"Chrome70";if(t.satisfies({chrome:">=67",chromium:">=67"}))return"Chrome67";if(t.satisfies({chrome:">=55",chromium:">=55"}))return"Chrome55";if(t.satisfies({firefox:">=60"}))return"Firefox60";if(t.satisfies({ios:{OS:">=14.3",firefox:">=30.0"}}))return"Safari12";if(t.satisfies({safari:">=12.0"})&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(t.satisfies({safari:">=11"}))return"Safari11";if(t.satisfies({"microsoft edge":">=11"})&&t.satisfies({"microsoft edge":"<=18"}))return"Edge11";if(r.name&&"blink"===r.name.toLowerCase()){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome74"}gn.warn("this._detectDevice() | browser not supported [name:%s, version:%s]",t.getBrowserName(),t.getBrowserVersion())}}he.detectDevice=yn;he.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new tn.EnhancedEventEmitter,gn.debug("constructor()"),r){if(gn.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"!=typeof r)throw new TypeError("non string Handler option no longer supported, use handlerFactory instead");e=r}if(e&&t)throw new TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)gn.debug("constructor() | handler given: %s",e);else{if(!(e=yn()))throw new rn.UnsupportedError("device not supported");gn.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome74":this._handlerFactory=on.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=cn.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=dn.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=pn.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=ln.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=un.Safari12.createFactory();break;case"Safari11":this._handlerFactory=hn.Safari11.createFactory();break;case"Edge11":this._handlerFactory=fn.Edge11.createFactory();break;case"ReactNative":this._handlerFactory=mn.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const i=this._handlerFactory();this._handlerName=i.name,i.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new rn.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new rn.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;gn.debug("load() [routerRtpCapabilities:%o]",e),e=sn.clone(e,void 0);try{if(this._loaded)throw new rn.InvalidStateError("already loaded");nn.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();gn.debug("load() | got native RTP capabilities:%o",r),nn.validateRtpCapabilities(r),this._extendedRtpCapabilities=nn.getExtendedRtpCapabilities(r,e),gn.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=nn.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=nn.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=nn.getRecvRtpCapabilities(this._extendedRtpCapabilities),nn.validateRtpCapabilities(this._recvRtpCapabilities),gn.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),gn.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),nn.validateSctpCapabilities(this._sctpCapabilities),gn.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new rn.InvalidStateError("not loaded");if("audio"!==e&&"video"!==e)throw new TypeError(`invalid kind "${e}"`);return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return gn.debug("createSendTransport()"),this._createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return gn.debug("createRecvTransport()"),this._createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}_createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p={}}){if(!this._loaded)throw new rn.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(i))throw new TypeError("missing iceCandidates");if("object"!=typeof s)throw new TypeError("missing dtlsParameters");if(n&&"object"!=typeof n)throw new TypeError("wrong sctpParameters");if(p&&"object"!=typeof p)throw new TypeError("if given, appData must be an object");const l=new an.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",l),l}};var vn={},bn={};Object.defineProperty(bn,"__esModule",{value:!0});var _n,wn={};Object.defineProperty(wn,"__esModule",{value:!0}),function(e){var t=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=q&&q.__exportStar||function(e,r){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||t(r,e,i)};Object.defineProperty(e,"__esModule",{value:!0}),r(he,e),r(He,e),r(Je,e),r(tt,e),r(at,e),r(lt,e),r(bn,e),r(wn,e),r(Jt,e),r(Re,e)}(vn),function(e){var t=q&&q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=q&&q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=q&&q.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&t(i,e,s);return r(i,e),i},s=q&&q.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.debug=e.parseScalabilityMode=e.detectDevice=e.Device=e.version=e.types=void 0;const n=s(ie.exports);e.debug=n.default;const a=he;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return a.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return a.detectDevice}});const o=i(vn);e.types=o,e.version="3.6.50";var c=hr;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(re);class Sn{constructor(e){this.score=10,this.producerScore=10,this.spatialLayers=0,this.temporalLayers=0,this.currentSpatialLayer=0,this.currentTemporalLayer=0,this.id=e.id,this.kind=e.kind,this.producerId=e.producerId,this.appData=e.appData,this.consumer=e,this.logger=new Z("PeerConsumer")}get paused(){return this.consumer.paused}pause(){return this.consumer.pause()}resume(){return this.consumer.resume()}close(){return this.consumer.close()}get isVideo(){return"video"===this.kind}get isAudio(){return"audio"===this.kind}parseScalabilityMode(){if(this.consumer.rtpParameters.encodings){const{scalabilityMode:e}=this.consumer.rtpParameters.encodings[0],{spatialLayers:t,temporalLayers:r}=re.parseScalabilityMode(e);this.spatialLayers=t,this.temporalLayers=r,this.logger.debug("parseScalabilityMode()",{scalabilityMode:e,spatialLayers:t,temporalLayers:r})}}setCurrentSpatialLayer(e){if("video"!==this.kind)throw new Error("setCurrentSpatialLayer applies to video consumers only");this.currentSpatialLayer=e,this.logger.debug("setCurrentSpatialLayer()",{currentSpatialLayer:e})}setCurrentTemporalLayer(e){if("video"!==this.kind)throw new Error("setCurrentTemporalLayer applies to video consumers only");this.currentTemporalLayer=e,this.logger.debug("setCurrentTemporalLayer()",{currentTemporalLayer:e})}}!function(e){e[e.BAD=4]="BAD",e[e.MEDIUM=6]="MEDIUM",e[e.GOOD=10]="GOOD"}(_n||(_n={}));class Rn{constructor({id:e,channelIds:t,appId:r,loginDate:i=new Date,producers:n=[],engine:o,appData:c,uid:d,role:p}){this.producers=new Map,this.consumers=new Map,this._observer=new s,this.incomingConnectionQuality=a.GOOD,this.outgoingConnectionQuality=a.GOOD,this.id=e,this.channelIds=t,this.appId=r,this.loginDate=i,this.appData=c||{},this.uid=d,this.role=p,this.engine=o,this.logger=new Z("Peer"),n.forEach(this.handleNewProducer.bind(this)),this.handlePeerEvents()}get observer(){return this._observer}get isMe(){return this.id===this.engine.mySocketId}get publishedMedia(){return Array.from(this.producers.values()).map((e=>({producerId:e.id,kind:e.kind,label:e.label})))}subscribe(e){return r(this,void 0,void 0,(function*(){const t=this.producers.get(e);if(!t)return void this.logger.warn("subscribe()",{message:"Peer does not have a producer",peer:this,producerId:e});this.getAllConsumers().find((t=>t.producerId===e))?this.logger.warn("subscribe()",{message:"Already subscribed to producer",peer:this,producerId:e}):yield this.createConsumer(t)}))}setMinResolution(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);(null==t?void 0:t.isVideo)&&0!==t.spatialLayers&&(yield this.changeConsumerPreferredLayers(t,{spatialLayer:0}))}))}setMediumResolution(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);if(!(null==t?void 0:t.isVideo)||0===t.spatialLayers)return;const r=t.spatialLayers>2?t.spatialLayers-2:t.spatialLayers;yield this.changeConsumerPreferredLayers(t,{spatialLayer:r})}))}setMaxResolution(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);(null==t?void 0:t.isVideo)&&0!==t.spatialLayers&&(yield this.changeConsumerPreferredLayers(t,{spatialLayer:t.spatialLayers-1}))}))}pause(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);if(t)if(t.paused)this.logger.warn("pause()",{message:"Already paused",peer:this,consumerId:e});else try{yield this.pauseRemoteConsumer(t.id),t.pause(),this.logger.debug("pause()",{peer:this,consumerId:e})}catch(e){this.logger.error("pause()",e)}else this.logger.warn("pause()",{message:"This peer has no consumer to pause",peer:this,consumerId:e})}))}resume(e){return r(this,void 0,void 0,(function*(){const t=this.consumers.get(e);if(t)if(t.paused)try{yield this.resumeRemoteConsumer(t.id),t.resume(),this.logger.debug("resume()",{peer:this})}catch(e){this.logger.error("resume()",e)}else this.logger.warn("resume()",{message:"Already playing",peer:this,consumerId:e});else this.logger.warn("resume()",{message:"This peer has no consumer to resume",peer:this,consumerId:e})}))}setPriority(e,t){return r(this,void 0,void 0,(function*(){this.consumers.get(e)?yield this.setConsumerPriority({consumerId:e,priority:t}):this.logger.warn("setPriority()",{message:"This peer has no consumer to change priority",peer:this,consumerId:e})}))}setConsumerPriority(e){return r(this,void 0,void 0,(function*(){try{yield this.engine.network.socket.request(I,e),this.logger.debug("setConsumerPriority()",{peer:this,params:e})}catch(t){throw this.logger.error("setConsumerPriority()",{peer:this,params:e}),new Error("Can`t change stream priority")}}))}createConsumer(e){return r(this,void 0,void 0,(function*(){const t=this.engine.network.receiveTransport;if(!t)throw this.logger.error("createConsumer()","missing receiveTransport"),new Error("Client not initialized");try{const r=yield this.engine.network.socket.request(T,{producerId:e.id,transportId:t.id,rtpCapabilities:this.engine.media.mediasoupDevice.rtpCapabilities,appData:{peerId:this.engine.mySocketId,appId:this.engine.appId,channelId:this.engine.channelId},producerPeerId:this.id}),i=yield t.consume(r);yield this.engine.network.socket.request(O,{consumerId:i.id}),this.consumers.set(i.id,new Sn(i)),this.logger.debug(`Subscribed for ${e.kind}`,{peer:this}),this.observer.safeEmit(_,{producerId:e.id,consumerId:i.id,track:i.track,label:e.label})}catch(t){throw this.logger.error("createConsumer()",e,t),new Error("Error subscribe media")}}))}changeConsumerPreferredLayers(e,{spatialLayer:t,temporalLayer:i}){return r(this,void 0,void 0,(function*(){try{yield this.engine.network.socket.request(M,{consumerId:e.id,spatialLayer:t,temporalLayer:i}),this.logger.debug("changeConsumerPreferredLayers()",{peer:this,consumer:e,spatialLayer:t,temporalLayer:i})}catch(t){throw this.logger.error("changeConsumerPreferredLayers()",{peer:this,consumer:e,error:t}),new Error("Error change preferred layer")}}))}pauseRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.engine.network.socket.request(D,{consumerId:e})}))}resumeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.engine.network.socket.request(O,{consumerId:e})}))}handleNewProducer(e){if(this.producers.get(e.id))return;const t=new te(e);this.producers.set(t.id,t),this.logger.debug("Peer published media:",{peer:this,producer:t}),this.observer.safeEmit(y,{producerId:t.id,kind:t.kind,label:t.label})}handlePeerEvents(){this.observer.on(R,this.handleNewProducer.bind(this)),this.observer.on(P,(e=>{this.producers.delete(e.id),this.logger.debug("Peer unpublished media:",{peer:this,producer:e}),this.observer.safeEmit(v,{producerId:e.id,kind:e.kind,label:e.label})})),this.observer.on(E,(e=>{const t=this.consumers.get(e);t&&(t.close(),this.consumers.delete(e),this.observer.safeEmit(w,{producerId:t.producerId,kind:t.kind,label:t.appData.producerData.label}),this.logger.debug("Peer video track was ended:",{peer:this}))})),this.observer.on(D,(e=>{const t=this.consumers.get(e);t&&(t.pause(),this.logger.debug("Peer video track was paused:",{peer:this}))})),this.observer.on(O,(e=>{const t=this.consumers.get(e);t&&(t.resume(),this.logger.debug("Peer video track was paused:",{peer:this}))})),this.observer.on(x,(e=>{if(this.isMe)return;const t=this.consumers.get(e.consumerId);if(!t)return;const{score:r,producerScore:i}=e;t.score=r,t.producerScore=i;const s=this.getAllConsumers().map((e=>e.producerScore)),n=Math.min(...s);this.outgoingConnectionQuality=Rn.getConnectionQualityByScore(n),this.emitConnectionQuality()})),this.observer.on(x,(()=>{if(!this.isMe)return;const e=[];if(this.engine.peers.forEach((t=>{t.getAllConsumers().forEach((t=>{t.score<t.producerScore&&e.push(t.score)}))}),[]),0===e.length)this.incomingConnectionQuality=a.GOOD;else{const t=e.map((e=>e)).reduce(((e,t)=>e+t),0),r=Math.floor(t/e.length);this.incomingConnectionQuality=Rn.getConnectionQualityByScore(r)}this.emitConnectionQuality()})),this.observer.on(k,(e=>{if(!this.isMe)return;const{scores:t}=e;if(0===t.length)return;let{score:r}=t[0];if(t.length>1){const i=t.map((({score:e})=>e)).reduce(((e,t)=>e+t),0);r=Math.floor(i/e.scores.length)}this.outgoingConnectionQuality=Rn.getConnectionQualityByScore(r),this.emitConnectionQuality()})),this.observer.on(M,(e=>{const t=this.consumers.get(e.consumerId);(null==t?void 0:t.isVideo)&&(t.setCurrentTemporalLayer(e.temporalLayer),t.setCurrentSpatialLayer(e.spatialLayer))}))}emitConnectionQuality(){const e=Math.min(this.outgoingConnectionQuality,this.incomingConnectionQuality);this.observer.safeEmit(b,{connectionQuality:e})}static getConnectionQualityByScore(e){return e<_n.BAD?a.BAD:e<_n.MEDIUM?a.MEDIUM:a.GOOD}getAllConsumers(){return Array.from(this.consumers.values())}getAllProducers(){return Array.from(this.producers.values())}}var Pn=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Cn=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],kn=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var s,n,a=Pn.exec(e||""),o={},c=14;c--;)o[Cn[c]]=a[c]||"";return-1!=r&&-1!=i&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=function(e,t){var r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||i.splice(0,1);"/"==t.substr(t.length-1,1)&&i.splice(i.length-1,1);return i}(0,o.path),o.queryKey=(s=o.query,n={},s.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n),o};var Tn={exports:{}};try{Tn.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){Tn.exports=!1}var En=Tn.exports,Dn="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function On(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||En))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Dn[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function xn(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Mn=setTimeout,In=clearTimeout;function jn(e,t){t.useNativeTimers?(e.setTimeoutFn=Mn.bind(Dn),e.clearTimeoutFn=In.bind(Dn)):(e.setTimeoutFn=setTimeout.bind(Dn),e.clearTimeoutFn=clearTimeout.bind(Dn))}var Ln=An;function An(e){if(e)return function(e){for(var t in An.prototype)e[t]=An.prototype[t];return e}(e)}An.prototype.on=An.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},An.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},An.prototype.off=An.prototype.removeListener=An.prototype.removeAllListeners=An.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},An.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},An.prototype.emitReserved=An.prototype.emit,An.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},An.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Fn=Object.create(null);Fn.open="0",Fn.close="1",Fn.ping="2",Fn.pong="3",Fn.message="4",Fn.upgrade="5",Fn.noop="6";const Nn=Object.create(null);Object.keys(Fn).forEach((e=>{Nn[Fn[e]]=e}));const Bn={type:"error",data:"parser error"},Un="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),zn="function"==typeof ArrayBuffer,qn=({type:e,data:t},r,i)=>{return Un&&t instanceof Blob?r?i(t):$n(t,i):zn&&(t instanceof ArrayBuffer||(s=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer))?r?i(t):$n(new Blob([t]),i):i(Fn[e]+(t||""));var s},$n=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var Vn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Gn="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Wn=0;Wn<Vn.length;Wn++)Gn[Vn.charCodeAt(Wn)]=Wn;const Hn="function"==typeof ArrayBuffer,Kn=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Jn(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:Qn(e.substring(1),t)};return Nn[r]?e.length>1?{type:Nn[r],data:e.substring(1)}:{type:Nn[r]}:Bn},Qn=(e,t)=>{if(Hn){const r=function(e){var t,r,i,s,n,a=.75*e.length,o=e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var d=new ArrayBuffer(a),p=new Uint8Array(d);for(t=0;t<o;t+=4)r=Gn[e.charCodeAt(t)],i=Gn[e.charCodeAt(t+1)],s=Gn[e.charCodeAt(t+2)],n=Gn[e.charCodeAt(t+3)],p[c++]=r<<2|i>>4,p[c++]=(15&i)<<4|s>>2,p[c++]=(3&s)<<6|63&n;return d}(e);return Jn(r,t)}return{base64:!0,data:e}},Jn=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,Yn=String.fromCharCode(30);class Xn extends Ln{constructor(e){super(),this.writable=!1,jn(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emit("open")}onData(e){const t=Kn(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var Zn,ea="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),ta={},ra=0,ia=0;function sa(e){var t="";do{t=ea[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function na(){var e=sa(+new Date);return e!==Zn?(ra=0,Zn=e):e+"."+sa(ra++)}for(;ia<64;ia++)ta[ea[ia]]=ia;na.encode=sa,na.decode=function(e){var t=0;for(ia=0;ia<e.length;ia++)t=64*t+ta[e.charAt(ia)];return t};var aa=na,oa={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),i=0,s=r.length;i<s;i++){var n=r[i].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}};class ca extends Xn{constructor(){super(...arguments),this.polling=!1}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emit("poll")}onData(e){((e,t)=>{const r=e.split(Yn),i=[];for(let e=0;e<r.length;e++){const s=Kn(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{qn(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(Yn))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=aa()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const i=oa.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function da(){}const pa=null!=new On({xdomain:!1}).responseType;class la extends Ln{constructor(e,t){super(),jn(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=xn(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new On(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=la.requestsCount++,la.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=da,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete la.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(la.requestsCount=0,la.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",ua);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Dn?"pagehide":"unload",ua,!1)}function ua(){for(let e in la.requests)la.requests.hasOwnProperty(e)&&la.requests[e].abort()}const ha="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),fa=Dn.WebSocket||Dn.MozWebSocket,ma="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class ga extends Xn{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=ma?{}:xn(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=ma?new fa(e,t,r):t?new fa(e,t):new fa(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;qn(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&ha((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=aa()),this.supportsBinary||(e.b64=1);const i=oa.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!fa||"__initialize"in fa&&this.name===ga.prototype.name)}}const ya={websocket:ga,polling:class extends ca{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=pa&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new la(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class va extends Ln{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=kn(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=kn(t.host).host),jn(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=oa.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new ya[e](r)}open(){let e;if(this.opts.rememberUpgrade&&va.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;va.priorWebsocketSuccess=!1;const i=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;va.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function s(){r||(r=!0,d(),t.close(),t=null)}const n=e=>{const r=new Error("probe error: "+e);r.transport=t.name,s(),this.emitReserved("upgradeError",r)};function a(){n("transport closed")}function o(){n("socket closed")}function c(e){t&&e.name!==t.name&&s()}const d=()=>{t.removeListener("open",i),t.removeListener("error",n),t.removeListener("close",a),this.off("close",o),this.off("upgrading",c)};t.once("open",i),t.once("error",n),t.once("close",a),this.once("close",o),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",va.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){va.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}va.protocol=4,va.protocol;const ba="function"==typeof ArrayBuffer,_a=Object.prototype.toString,wa="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===_a.call(Blob),Sa="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===_a.call(File);function Ra(e){return ba&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||wa&&e instanceof Blob||Sa&&e instanceof File}function Pa(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Pa(e[t]))return!0;return!1}if(Ra(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Pa(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Pa(e[t]))return!0;return!1}function Ca(e){const t=[],r=e.data,i=e;return i.data=ka(r,t),i.attachments=t.length,{packet:i,buffers:t}}function ka(e,t){if(!e)return e;if(Ra(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=ka(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=ka(e[i],t));return r}return e}function Ta(e,t){return e.data=Ea(e.data,t),e.attachments=void 0,e}function Ea(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Ea(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=Ea(e[r],t));return e}var Da;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Da||(Da={}));class Oa extends Ln{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===Da.BINARY_EVENT||t.type===Da.BINARY_ACK?(this.reconstructor=new xa(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!Ra(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Da[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Da.BINARY_EVENT||r.type===Da.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!Oa.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case Da.CONNECT:return"object"==typeof t;case Da.DISCONNECT:return void 0===t;case Da.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case Da.EVENT:case Da.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case Da.ACK:case Da.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class xa{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Ta(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Ma=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Da},Encoder:class{encode(e){return e.type!==Da.EVENT&&e.type!==Da.ACK||!Pa(e)?[this.encodeAsString(e)]:(e.type=e.type===Da.EVENT?Da.BINARY_EVENT:Da.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==Da.BINARY_EVENT&&e.type!==Da.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data)),t}encodeAsBinary(e){const t=Ca(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Oa});function Ia(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const ja=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class La extends Ln{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Ia(e,"open",this.onopen.bind(this)),Ia(e,"packet",this.onpacket.bind(this)),Ia(e,"error",this.onerror.bind(this)),Ia(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(ja.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:Da.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:Da.CONNECT,data:e})})):this.packet({type:Da.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Da.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Da.EVENT:case Da.BINARY_EVENT:this.onevent(e);break;case Da.ACK:case Da.BINARY_ACK:this.onack(e);break;case Da.DISCONNECT:this.ondisconnect();break;case Da.CONNECT_ERROR:const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e)}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Da.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>this.packet(e))),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Da.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}}var Aa=Fa;function Fa(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Fa.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Fa.prototype.reset=function(){this.attempts=0},Fa.prototype.setMin=function(e){this.ms=e},Fa.prototype.setMax=function(e){this.max=e},Fa.prototype.setJitter=function(e){this.jitter=e};class Na extends Ln{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,jn(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Aa({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||Ma;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new va(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Ia(t,"open",(function(){r.onopen(),e&&e()})),s=Ia(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&i();const r=this.setTimeoutFn((()=>{i(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Ia(e,"ping",this.onping.bind(this)),Ia(e,"data",this.ondata.bind(this)),Ia(e,"error",this.onerror.bind(this)),Ia(e,"close",this.onclose.bind(this)),Ia(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new La(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Ba={};function Ua(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=kn(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,a=Ba[s]&&n in Ba[s].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new Na(i,t):(Ba[s]||(Ba[s]=new Na(i,t)),o=Ba[s]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}class za{constructor(){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new s,this.logger=new Z("Socket")}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e){const t=Ua(e);this.connection=t,this.serverUrl=e,t.on("connect",(()=>{const e=this.reconnectingAttempt?S.Reconnected:S.Connected;this.isConnected=!0,this.reconnectingAttempt=0,this.logger.debug("connection.on(`connect`)"),this.observer.safeEmit("state",{state:e})})),t.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",e),this.observer.safeEmit("state",{state:S.Error,error:e})})),t.on("disconnect",(e=>{this.isConnected=!1,this.reconnectingAttempt=0,this.disconnectReason=e,this.logger.error("connection.on(`disconnect`)",e),this.observer.safeEmit("state",{state:S.Disconnected})})),t.io.on("reconnect_attempt",(e=>{this.reconnectingAttempt=e,this.logger.warn("connection.on(`reconnect_attempt`)",e),this.observer.safeEmit("state",{state:S.Reconnecting})})),t.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)"),this.observer.safeEmit("state",{state:S.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect())}request(e,t={}){return new Promise(((r,i)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void i(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(e=>{e.error?(this.logger.error("request()",{response:e}),i(e.error)):r(e)}))}))}}var qa={exports:{}},$a=function(e,t){return function(){for(var r=new Array(arguments.length),i=0;i<r.length;i++)r[i]=arguments[i];return e.apply(t,r)}},Va=$a,Ga=Object.prototype.toString;function Wa(e){return"[object Array]"===Ga.call(e)}function Ha(e){return void 0===e}function Ka(e){return null!==e&&"object"==typeof e}function Qa(e){if("[object Object]"!==Ga.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function Ja(e){return"[object Function]"===Ga.call(e)}function Ya(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),Wa(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}var Xa={isArray:Wa,isArrayBuffer:function(e){return"[object ArrayBuffer]"===Ga.call(e)},isBuffer:function(e){return null!==e&&!Ha(e)&&null!==e.constructor&&!Ha(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:Ka,isPlainObject:Qa,isUndefined:Ha,isDate:function(e){return"[object Date]"===Ga.call(e)},isFile:function(e){return"[object File]"===Ga.call(e)},isBlob:function(e){return"[object Blob]"===Ga.call(e)},isFunction:Ja,isStream:function(e){return Ka(e)&&Ja(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:Ya,merge:function e(){var t={};function r(r,i){Qa(t[i])&&Qa(r)?t[i]=e(t[i],r):Qa(r)?t[i]=e({},r):Wa(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)Ya(arguments[i],r);return t},extend:function(e,t,r){return Ya(t,(function(t,i){e[i]=r&&"function"==typeof t?Va(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},Za=Xa;function eo(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var to=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(Za.isURLSearchParams(t))i=t.toString();else{var s=[];Za.forEach(t,(function(e,t){null!=e&&(Za.isArray(e)?t+="[]":e=[e],Za.forEach(e,(function(e){Za.isDate(e)?e=e.toISOString():Za.isObject(e)&&(e=JSON.stringify(e)),s.push(eo(t)+"="+eo(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},ro=Xa;function io(){this.handlers=[]}io.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},io.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},io.prototype.forEach=function(e){ro.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var so=io,no=Xa,ao=function(e,t,r,i,s){return e.config=t,r&&(e.code=r),e.request=i,e.response=s,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},oo=ao,co=function(e,t,r,i,s){var n=new Error(e);return oo(n,t,r,i,s)},po=co,lo=Xa,uo=lo.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var a=[];a.push(e+"="+encodeURIComponent(t)),lo.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),lo.isString(i)&&a.push("path="+i),lo.isString(s)&&a.push("domain="+s),!0===n&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},ho=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},fo=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},mo=Xa,go=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],yo=Xa,vo=yo.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var i=e;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=yo.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},bo=Xa,_o=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(po("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},wo=uo,So=to,Ro=function(e,t){return e&&!ho(t)?fo(e,t):t},Po=function(e){var t,r,i,s={};return e?(mo.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=mo.trim(e.substr(0,i)).toLowerCase(),r=mo.trim(e.substr(i+1)),t){if(s[t]&&go.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},Co=vo,ko=co,To=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;bo.isFormData(i)&&delete s["Content-Type"];var a=new XMLHttpRequest;if(e.auth){var o=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";s.Authorization="Basic "+btoa(o+":"+c)}var d=Ro(e.baseURL,e.url);function p(){if(a){var i="getAllResponseHeaders"in a?Po(a.getAllResponseHeaders()):null,s={data:n&&"text"!==n&&"json"!==n?a.response:a.responseText,status:a.status,statusText:a.statusText,headers:i,config:e,request:a};_o(t,r,s),a=null}}if(a.open(e.method.toUpperCase(),So(d,e.params,e.paramsSerializer),!0),a.timeout=e.timeout,"onloadend"in a?a.onloadend=p:a.onreadystatechange=function(){a&&4===a.readyState&&(0!==a.status||a.responseURL&&0===a.responseURL.indexOf("file:"))&&setTimeout(p)},a.onabort=function(){a&&(r(ko("Request aborted",e,"ECONNABORTED",a)),a=null)},a.onerror=function(){r(ko("Network Error",e,null,a)),a=null},a.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(ko(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",a)),a=null},bo.isStandardBrowserEnv()){var l=(e.withCredentials||Co(d))&&e.xsrfCookieName?wo.read(e.xsrfCookieName):void 0;l&&(s[e.xsrfHeaderName]=l)}"setRequestHeader"in a&&bo.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:a.setRequestHeader(t,e)})),bo.isUndefined(e.withCredentials)||(a.withCredentials=!!e.withCredentials),n&&"json"!==n&&(a.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&a.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&a.upload&&a.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){a&&(a.abort(),r(e),a=null)})),i||(i=null),a.send(i)}))},Eo=Xa,Do=function(e,t){no.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Oo=ao,xo={"Content-Type":"application/x-www-form-urlencoded"};function Mo(e,t){!Eo.isUndefined(e)&&Eo.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var Io,jo={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(Io=To),Io),transformRequest:[function(e,t){return Do(t,"Accept"),Do(t,"Content-Type"),Eo.isFormData(e)||Eo.isArrayBuffer(e)||Eo.isBuffer(e)||Eo.isStream(e)||Eo.isFile(e)||Eo.isBlob(e)?e:Eo.isArrayBufferView(e)?e.buffer:Eo.isURLSearchParams(e)?(Mo(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Eo.isObject(e)||t&&"application/json"===t["Content-Type"]?(Mo(t,"application/json"),function(e,t,r){if(Eo.isString(e))try{return(t||JSON.parse)(e),Eo.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,s=!r&&"json"===this.responseType;if(s||i&&Eo.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw Oo(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};jo.headers={common:{Accept:"application/json, text/plain, */*"}},Eo.forEach(["delete","get","head"],(function(e){jo.headers[e]={}})),Eo.forEach(["post","put","patch"],(function(e){jo.headers[e]=Eo.merge(xo)}));var Lo=jo,Ao=Xa,Fo=Lo,No=function(e){return!(!e||!e.__CANCEL__)},Bo=Xa,Uo=function(e,t,r){var i=this||Fo;return Ao.forEach(r,(function(r){e=r.call(i,e,t)})),e},zo=No,qo=Lo;function $o(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var Vo=Xa,Go=function(e,t){t=t||{};var r={},i=["url","method","data"],s=["headers","auth","proxy","params"],n=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],a=["validateStatus"];function o(e,t){return Vo.isPlainObject(e)&&Vo.isPlainObject(t)?Vo.merge(e,t):Vo.isPlainObject(t)?Vo.merge({},t):Vo.isArray(t)?t.slice():t}function c(i){Vo.isUndefined(t[i])?Vo.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(e[i],t[i])}Vo.forEach(i,(function(e){Vo.isUndefined(t[e])||(r[e]=o(void 0,t[e]))})),Vo.forEach(s,c),Vo.forEach(n,(function(i){Vo.isUndefined(t[i])?Vo.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(void 0,t[i])})),Vo.forEach(a,(function(i){i in t?r[i]=o(e[i],t[i]):i in e&&(r[i]=o(void 0,e[i]))}));var d=i.concat(s).concat(n).concat(a),p=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return Vo.forEach(p,c),r},Wo={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},Ho={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ho[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var Ko={},Qo=Wo.version.split(".");function Jo(e,t){for(var r=t?t.split("."):Qo,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}Ho.transitional=function(e,t,r){var i=t&&Jo(t);function s(e,t){return"[Axios v"+Wo.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,n,a){if(!1===e)throw new Error(s(n," has been removed in "+t));return i&&!Ko[n]&&(Ko[n]=!0,console.warn(s(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,a)}};var Yo={isOlderVersion:Jo,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),s=i.length;s-- >0;){var n=i[s],a=t[n];if(a){var o=e[n],c=void 0===o||a(o,n,e);if(!0!==c)throw new TypeError("option "+n+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+n)}},validators:Ho},Xo=Xa,Zo=to,ec=so,tc=function(e){return $o(e),e.headers=e.headers||{},e.data=Uo.call(e,e.data,e.headers,e.transformRequest),e.headers=Bo.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Bo.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||qo.adapter)(e).then((function(t){return $o(e),t.data=Uo.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return zo(t)||($o(e),t&&t.response&&(t.response.data=Uo.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},rc=Go,ic=Yo,sc=ic.validators;function nc(e){this.defaults=e,this.interceptors={request:new ec,response:new ec}}nc.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=rc(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&ic.assertOptions(t,{silentJSONParsing:sc.transitional(sc.boolean,"1.0.0"),forcedJSONParsing:sc.transitional(sc.boolean,"1.0.0"),clarifyTimeoutError:sc.transitional(sc.boolean,"1.0.0")},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var s,n=[];if(this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)})),!i){var a=[tc,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(n),s=Promise.resolve(e);a.length;)s=s.then(a.shift(),a.shift());return s}for(var o=e;r.length;){var c=r.shift(),d=r.shift();try{o=c(o)}catch(e){d(e);break}}try{s=tc(o)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},nc.prototype.getUri=function(e){return e=rc(this.defaults,e),Zo(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},Xo.forEach(["delete","get","head","options"],(function(e){nc.prototype[e]=function(t,r){return this.request(rc(r||{},{method:e,url:t,data:(r||{}).data}))}})),Xo.forEach(["post","put","patch"],(function(e){nc.prototype[e]=function(t,r,i){return this.request(rc(i||{},{method:e,url:t,data:r}))}}));var ac=nc;function oc(e){this.message=e}oc.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},oc.prototype.__CANCEL__=!0;var cc=oc,dc=cc;function pc(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new dc(e),t(r.reason))}))}pc.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},pc.source=function(){var e;return{token:new pc((function(t){e=t})),cancel:e}};var lc=pc,uc=Xa,hc=$a,fc=ac,mc=Go;function gc(e){var t=new fc(e),r=hc(fc.prototype.request,t);return uc.extend(r,fc.prototype,t),uc.extend(r,t),r}var yc=gc(Lo);yc.Axios=fc,yc.create=function(e){return gc(mc(yc.defaults,e))},yc.Cancel=cc,yc.CancelToken=lc,yc.isCancel=No,yc.all=function(e){return Promise.all(e)},yc.spread=function(e){return function(t){return e.apply(null,t)}},yc.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},qa.exports=yc,qa.exports.default=yc;var vc=qa.exports,bc="undefined"!=typeof Symbol&&Symbol,_c=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(e,t);if(42!==s.value||!0!==s.enumerable)return!1}return!0},wc="Function.prototype.bind called on incompatible ",Sc=Array.prototype.slice,Rc=Object.prototype.toString,Pc=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Rc.call(t))throw new TypeError(wc+t);for(var r,i=Sc.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(Sc.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(Sc.call(arguments)))},n=Math.max(0,t.length-i.length),a=[],o=0;o<n;o++)a.push("$"+o);if(r=Function("binder","return function ("+a.join(",")+"){ return binder.apply(this,arguments); }")(s),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Cc=Function.prototype.bind||Pc,kc=Cc.call(Function.call,Object.prototype.hasOwnProperty),Tc=SyntaxError,Ec=Function,Dc=TypeError,Oc=function(e){try{return Ec('"use strict"; return ('+e+").constructor;")()}catch(e){}},xc=Object.getOwnPropertyDescriptor;if(xc)try{xc({},"")}catch(e){xc=null}var Mc=function(){throw new Dc},Ic=xc?function(){try{return Mc}catch(e){try{return xc(arguments,"callee").get}catch(e){return Mc}}}():Mc,jc="function"==typeof bc&&"function"==typeof Symbol&&"symbol"==typeof bc("foo")&&"symbol"==typeof Symbol("bar")&&_c(),Lc=Object.getPrototypeOf||function(e){return e.__proto__},Ac={},Fc="undefined"==typeof Uint8Array?undefined:Lc(Uint8Array),Nc={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":jc?Lc([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":Ac,"%AsyncGenerator%":Ac,"%AsyncGeneratorFunction%":Ac,"%AsyncIteratorPrototype%":Ac,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":Ec,"%GeneratorFunction%":Ac,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":jc?Lc(Lc([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&jc?Lc((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&jc?Lc((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":jc?Lc(""[Symbol.iterator]()):undefined,"%Symbol%":jc?Symbol:undefined,"%SyntaxError%":Tc,"%ThrowTypeError%":Ic,"%TypedArray%":Fc,"%TypeError%":Dc,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},Bc=function e(t){var r;if("%AsyncFunction%"===t)r=Oc("async function () {}");else if("%GeneratorFunction%"===t)r=Oc("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Oc("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Lc(s.prototype))}return Nc[t]=r,r},Uc={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},zc=Cc,qc=kc,$c=zc.call(Function.call,Array.prototype.concat),Vc=zc.call(Function.apply,Array.prototype.splice),Gc=zc.call(Function.call,String.prototype.replace),Wc=zc.call(Function.call,String.prototype.slice),Hc=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Kc=/\\(\\)?/g,Qc=function(e){var t=Wc(e,0,1),r=Wc(e,-1);if("%"===t&&"%"!==r)throw new Tc("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Tc("invalid intrinsic syntax, expected opening `%`");var i=[];return Gc(e,Hc,(function(e,t,r,s){i[i.length]=r?Gc(s,Kc,"$1"):t||e})),i},Jc=function(e,t){var r,i=e;if(qc(Uc,i)&&(i="%"+(r=Uc[i])[0]+"%"),qc(Nc,i)){var s=Nc[i];if(s===Ac&&(s=Bc(i)),void 0===s&&!t)throw new Dc("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new Tc("intrinsic "+e+" does not exist!")},Yc=function(e,t){if("string"!=typeof e||0===e.length)throw new Dc("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new Dc('"allowMissing" argument must be a boolean');var r=Qc(e),i=r.length>0?r[0]:"",s=Jc("%"+i+"%",t),n=s.name,a=s.value,o=!1,c=s.alias;c&&(i=c[0],Vc(r,$c([0,1],c)));for(var d=1,p=!0;d<r.length;d+=1){var l=r[d],u=Wc(l,0,1),h=Wc(l,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Tc("property names with quotes must have matching quotes");if("constructor"!==l&&p||(o=!0),qc(Nc,n="%"+(i+="."+l)+"%"))a=Nc[n];else if(null!=a){if(!(l in a)){if(!t)throw new Dc("base intrinsic for "+e+" exists, but the property is not available.");return}if(xc&&d+1>=r.length){var f=xc(a,l);a=(p=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:a[l]}else p=qc(a,l),a=a[l];p&&!o&&(Nc[n]=a)}}return a},Xc={exports:{}};!function(e){var t=Cc,r=Yc,i=r("%Function.prototype.apply%"),s=r("%Function.prototype.call%"),n=r("%Reflect.apply%",!0)||t.call(s,i),a=r("%Object.getOwnPropertyDescriptor%",!0),o=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(o)try{o({},"a",{value:1})}catch(e){o=null}e.exports=function(e){var r=n(t,s,arguments);if(a&&o){var i=a(r,"length");i.configurable&&o(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return n(t,i,arguments)};o?o(e.exports,"apply",{value:d}):e.exports.apply=d}(Xc);var Zc=Yc,ed=Xc.exports,td=ed(Zc("String.prototype.indexOf")),rd=$(Object.freeze({__proto__:null,default:{}})),id="function"==typeof Map&&Map.prototype,sd=Object.getOwnPropertyDescriptor&&id?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,nd=id&&sd&&"function"==typeof sd.get?sd.get:null,ad=id&&Map.prototype.forEach,od="function"==typeof Set&&Set.prototype,cd=Object.getOwnPropertyDescriptor&&od?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,dd=od&&cd&&"function"==typeof cd.get?cd.get:null,pd=od&&Set.prototype.forEach,ld="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,ud="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,hd="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,fd=Boolean.prototype.valueOf,md=Object.prototype.toString,gd=Function.prototype.toString,yd=String.prototype.match,vd="function"==typeof BigInt?BigInt.prototype.valueOf:null,bd=Object.getOwnPropertySymbols,_d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,wd="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Sd=Object.prototype.propertyIsEnumerable,Rd=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Pd=rd.custom,Cd=Pd&&Od(Pd)?Pd:null,kd="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Td(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function Ed(e){return String(e).replace(/"/g,"&quot;")}function Dd(e){return!("[object Array]"!==Id(e)||kd&&"object"==typeof e&&kd in e)}function Od(e){if(wd)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!_d)return!1;try{return _d.call(e),!0}catch(e){}return!1}var xd=Object.prototype.hasOwnProperty||function(e){return e in this};function Md(e,t){return xd.call(e,t)}function Id(e){return md.call(e)}function jd(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,i=e.length;r<i;r++)if(e[r]===t)return r;return-1}function Ld(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Ld(e.slice(0,t.maxStringLength),t)+i}return Td(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,Ad),"single",t)}function Ad(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function Fd(e){return"Object("+e+")"}function Nd(e){return e+" { ? }"}function Bd(e,t,r,i){return e+" ("+t+") {"+(i?Ud(r,i):r.join(", "))+"}"}function Ud(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function zd(e,t){var r=Dd(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=Md(e,s)?t(e[s],e):""}var n,a="function"==typeof bd?bd(e):[];if(wd){n={};for(var o=0;o<a.length;o++)n["$"+a[o]]=a[o]}for(var c in e)Md(e,c)&&(r&&String(Number(c))===c&&c<e.length||wd&&n["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?i.push(t(c,e)+": "+t(e[c],e)):i.push(c+": "+t(e[c],e))));if("function"==typeof bd)for(var d=0;d<a.length;d++)Sd.call(e,a[d])&&i.push("["+t(a[d])+"]: "+t(e[a[d]],e));return i}var qd=Yc,$d=function(e,t){var r=Zc(e,!!t);return"function"==typeof r&&td(e,".prototype.")>-1?ed(r):r},Vd=function e(t,r,i,s){var n=r||{};if(Md(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Md(n,"maxStringLength")&&("number"==typeof n.maxStringLength?n.maxStringLength<0&&n.maxStringLength!==1/0:null!==n.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=!Md(n,"customInspect")||n.customInspect;if("boolean"!=typeof a&&"symbol"!==a)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Md(n,"indent")&&null!==n.indent&&"\t"!==n.indent&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return Ld(t,n);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var o=void 0===n.depth?5:n.depth;if(void 0===i&&(i=0),i>=o&&o>0&&"object"==typeof t)return Dd(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(n,i);if(void 0===s)s=[];else if(jd(s,t)>=0)return"[Circular]";function d(t,r,a){if(r&&(s=s.slice()).push(r),a){var o={depth:n.depth};return Md(n,"quoteStyle")&&(o.quoteStyle=n.quoteStyle),e(t,o,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var p=function(e){if(e.name)return e.name;var t=yd.call(gd.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),l=zd(t,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(l.length>0?" { "+l.join(", ")+" }":"")}if(Od(t)){var u=wd?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):_d.call(t);return"object"!=typeof t||wd?u:Fd(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+Td(Ed(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(Dd(t)){if(0===t.length)return"[]";var g=zd(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(jd(e[t],"\n")>=0)return!1;return!0}(g)?"["+Ud(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==Id(e)||kd&&"object"==typeof e&&kd in e)}(t)){var y=zd(t,d);return 0===y.length?"["+String(t)+"]":"{ ["+String(t)+"] "+y.join(", ")+" }"}if("object"==typeof t&&a){if(Cd&&"function"==typeof t[Cd])return t[Cd]();if("symbol"!==a&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!nd||!e||"object"!=typeof e)return!1;try{nd.call(e);try{dd.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var v=[];return ad.call(t,(function(e,r){v.push(d(r,t,!0)+" => "+d(e,t))})),Bd("Map",nd.call(t),v,c)}if(function(e){if(!dd||!e||"object"!=typeof e)return!1;try{dd.call(e);try{nd.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return pd.call(t,(function(e){b.push(d(e,t))})),Bd("Set",dd.call(t),b,c)}if(function(e){if(!ld||!e||"object"!=typeof e)return!1;try{ld.call(e,ld);try{ud.call(e,ud)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Nd("WeakMap");if(function(e){if(!ud||!e||"object"!=typeof e)return!1;try{ud.call(e,ud);try{ld.call(e,ld)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Nd("WeakSet");if(function(e){if(!hd||!e||"object"!=typeof e)return!1;try{return hd.call(e),!0}catch(e){}return!1}(t))return Nd("WeakRef");if(function(e){return!("[object Number]"!==Id(e)||kd&&"object"==typeof e&&kd in e)}(t))return Fd(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!vd)return!1;try{return vd.call(e),!0}catch(e){}return!1}(t))return Fd(d(vd.call(t)));if(function(e){return!("[object Boolean]"!==Id(e)||kd&&"object"==typeof e&&kd in e)}(t))return Fd(fd.call(t));if(function(e){return!("[object String]"!==Id(e)||kd&&"object"==typeof e&&kd in e)}(t))return Fd(d(String(t)));if(!function(e){return!("[object Date]"!==Id(e)||kd&&"object"==typeof e&&kd in e)}(t)&&!function(e){return!("[object RegExp]"!==Id(e)||kd&&"object"==typeof e&&kd in e)}(t)){var _=zd(t,d),w=Rd?Rd(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",R=!w&&kd&&Object(t)===t&&kd in t?Id(t).slice(8,-1):S?"Object":"",P=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(R||S?"["+[].concat(R||[],S||[]).join(": ")+"] ":"");return 0===_.length?P+"{}":c?P+"{"+Ud(_,c)+"}":P+"{ "+_.join(", ")+" }"}return String(t)},Gd=qd("%TypeError%"),Wd=qd("%WeakMap%",!0),Hd=qd("%Map%",!0),Kd=$d("WeakMap.prototype.get",!0),Qd=$d("WeakMap.prototype.set",!0),Jd=$d("WeakMap.prototype.has",!0),Yd=$d("Map.prototype.get",!0),Xd=$d("Map.prototype.set",!0),Zd=$d("Map.prototype.has",!0),ep=function(e,t){for(var r,i=e;null!==(r=i.next);i=r)if(r.key===t)return i.next=r.next,r.next=e.next,e.next=r,r},tp=String.prototype.replace,rp=/%20/g,ip="RFC3986",sp={default:ip,formatters:{RFC1738:function(e){return tp.call(e,rp,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:ip},np=sp,ap=Object.prototype.hasOwnProperty,op=Array.isArray,cp=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),dp=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},pp={arrayToObject:dp,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],i=0;i<t.length;++i)for(var s=t[i],n=s.obj[s.prop],a=Object.keys(n),o=0;o<a.length;++o){var c=a[o],d=n[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:n,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(op(r)){for(var i=[],s=0;s<r.length;++s)void 0!==r[s]&&i.push(r[s]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,r){var i=e.replace(/\+/g," ");if("iso-8859-1"===r)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(e){return i}},encode:function(e,t,r,i,s){if(0===e.length)return e;var n=e;if("symbol"==typeof e?n=Symbol.prototype.toString.call(e):"string"!=typeof e&&(n=String(e)),"iso-8859-1"===r)return escape(n).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var a="",o=0;o<n.length;++o){var c=n.charCodeAt(o);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||s===np.RFC1738&&(40===c||41===c)?a+=n.charAt(o):c<128?a+=cp[c]:c<2048?a+=cp[192|c>>6]+cp[128|63&c]:c<55296||c>=57344?a+=cp[224|c>>12]+cp[128|c>>6&63]+cp[128|63&c]:(o+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(o)),a+=cp[240|c>>18]+cp[128|c>>12&63]+cp[128|c>>6&63]+cp[128|63&c])}return a},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(op(e)){for(var r=[],i=0;i<e.length;i+=1)r.push(t(e[i]));return r}return t(e)},merge:function e(t,r,i){if(!r)return t;if("object"!=typeof r){if(op(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!ap.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return op(t)&&!op(r)&&(s=dp(t,i)),op(t)&&op(r)?(r.forEach((function(r,s){if(ap.call(t,s)){var n=t[s];n&&"object"==typeof n&&r&&"object"==typeof r?t[s]=e(n,r,i):t.push(r)}else t[s]=r})),t):Object.keys(r).reduce((function(t,s){var n=r[s];return ap.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},lp=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new Gd("Side channel does not contain "+Vd(e))},get:function(i){if(Wd&&i&&("object"==typeof i||"function"==typeof i)){if(e)return Kd(e,i)}else if(Hd){if(t)return Yd(t,i)}else if(r)return function(e,t){var r=ep(e,t);return r&&r.value}(r,i)},has:function(i){if(Wd&&i&&("object"==typeof i||"function"==typeof i)){if(e)return Jd(e,i)}else if(Hd){if(t)return Zd(t,i)}else if(r)return function(e,t){return!!ep(e,t)}(r,i);return!1},set:function(i,s){Wd&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new Wd),Qd(e,i,s)):Hd?(t||(t=new Hd),Xd(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=ep(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},up=pp,hp=sp,fp=Object.prototype.hasOwnProperty,mp={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},gp=Array.isArray,yp=Array.prototype.push,vp=function(e,t){yp.apply(e,gp(t)?t:[t])},bp=Date.prototype.toISOString,_p=hp.default,wp={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:up.encode,encodeValuesOnly:!1,format:_p,formatter:hp.formatters[_p],indices:!1,serializeDate:function(e){return bp.call(e)},skipNulls:!1,strictNullHandling:!1},Sp=function e(t,r,i,s,n,a,o,c,d,p,l,u,h,f,m){var g,y=t;if(m.has(t))throw new RangeError("Cyclic object value");if("function"==typeof o?y=o(r,y):y instanceof Date?y=p(y):"comma"===i&&gp(y)&&(y=up.maybeMap(y,(function(e){return e instanceof Date?p(e):e}))),null===y){if(s)return a&&!h?a(r,wp.encoder,f,"key",l):r;y=""}if("string"==typeof(g=y)||"number"==typeof g||"boolean"==typeof g||"symbol"==typeof g||"bigint"==typeof g||up.isBuffer(y))return a?[u(h?r:a(r,wp.encoder,f,"key",l))+"="+u(a(y,wp.encoder,f,"value",l))]:[u(r)+"="+u(String(y))];var v,b=[];if(void 0===y)return b;if("comma"===i&&gp(y))v=[{value:y.length>0?y.join(",")||null:void 0}];else if(gp(o))v=o;else{var _=Object.keys(y);v=c?_.sort(c):_}for(var w=0;w<v.length;++w){var S=v[w],R="object"==typeof S&&void 0!==S.value?S.value:y[S];if(!n||null!==R){var P=gp(y)?"function"==typeof i?i(r,S):r:r+(d?"."+S:"["+S+"]");m.set(t,!0);var C=lp();vp(b,e(R,P,i,s,n,a,o,c,d,p,l,u,h,f,C))}}return b},Rp=pp,Pp=Object.prototype.hasOwnProperty,Cp=Array.isArray,kp={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Rp.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},Tp=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Ep=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Dp=function(e,t,r,i){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/g,a=r.depth>0&&/(\[[^[\]]*])/.exec(s),o=a?s.slice(0,a.index):s,c=[];if(o){if(!r.plainObjects&&Pp.call(Object.prototype,o)&&!r.allowPrototypes)return;c.push(o)}for(var d=0;r.depth>0&&null!==(a=n.exec(s))&&d<r.depth;){if(d+=1,!r.plainObjects&&Pp.call(Object.prototype,a[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(a[1])}return a&&c.push("["+s.slice(a.index)+"]"),function(e,t,r,i){for(var s=i?t:Ep(t,r),n=e.length-1;n>=0;--n){var a,o=e[n];if("[]"===o&&r.parseArrays)a=[].concat(s);else{a=r.plainObjects?Object.create(null):{};var c="["===o.charAt(0)&&"]"===o.charAt(o.length-1)?o.slice(1,-1):o,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&o!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(a=[])[d]=s:a[c]=s:a={0:s}}s=a}return s}(c,t,r,i)}},Op=function(e,t){var r,i=e,s=function(e){if(!e)return wp;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||wp.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=hp.default;if(void 0!==e.format){if(!fp.call(hp.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=hp.formatters[r],s=wp.filter;return("function"==typeof e.filter||gp(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:wp.addQueryPrefix,allowDots:void 0===e.allowDots?wp.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:wp.charsetSentinel,delimiter:void 0===e.delimiter?wp.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:wp.encode,encoder:"function"==typeof e.encoder?e.encoder:wp.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:wp.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:wp.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:wp.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:wp.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):gp(s.filter)&&(r=s.filter);var n,a=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in mp?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var o=mp[n];r||(r=Object.keys(i)),s.sort&&r.sort(s.sort);for(var c=lp(),d=0;d<r.length;++d){var p=r[d];s.skipNulls&&null===i[p]||vp(a,Sp(i[p],p,o,s.strictNullHandling,s.skipNulls,s.encode?s.encoder:null,s.filter,s.sort,s.allowDots,s.serializeDate,s.format,s.formatter,s.encodeValuesOnly,s.charset,c))}var l=a.join(s.delimiter),u=!0===s.addQueryPrefix?"?":"";return s.charsetSentinel&&("iso-8859-1"===s.charset?u+="utf8=%26%2310003%3B&":u+="utf8=%E2%9C%93&"),l.length>0?u+l:""},xp=function(e,t){var r=function(e){if(!e)return kp;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?kp.charset:e.charset;return{allowDots:void 0===e.allowDots?kp.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:kp.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:kp.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:kp.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:kp.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:kp.comma,decoder:"function"==typeof e.decoder?e.decoder:kp.decoder,delimiter:"string"==typeof e.delimiter||Rp.isRegExp(e.delimiter)?e.delimiter:kp.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:kp.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:kp.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:kp.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:kp.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:kp.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,n=t.parameterLimit===1/0?void 0:t.parameterLimit,a=s.split(t.delimiter,n),o=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<a.length;++r)0===a[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===a[r]?c="utf-8":"utf8=%26%2310003%3B"===a[r]&&(c="iso-8859-1"),o=r,r=a.length);for(r=0;r<a.length;++r)if(r!==o){var d,p,l=a[r],u=l.indexOf("]="),h=-1===u?l.indexOf("="):u+1;-1===h?(d=t.decoder(l,kp.decoder,c,"key"),p=t.strictNullHandling?null:""):(d=t.decoder(l.slice(0,h),kp.decoder,c,"key"),p=Rp.maybeMap(Ep(l.slice(h+1),t),(function(e){return t.decoder(e,kp.decoder,c,"value")}))),p&&t.interpretNumericEntities&&"iso-8859-1"===c&&(p=Tp(p)),l.indexOf("[]=")>-1&&(p=Cp(p)?[p]:p),Pp.call(i,d)?i[d]=Rp.combine(i[d],p):i[d]=p}return i}(e,r):e,s=r.plainObjects?Object.create(null):{},n=Object.keys(i),a=0;a<n.length;++a){var o=n[a],c=Dp(o,i[o],r,"string"==typeof e);s=Rp.merge(s,c,r)}return!0===r.allowSparse?s:Rp.compact(s)},Mp={formats:sp,parse:xp,stringify:Op};class Ip{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=vc.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>Mp.stringify(e)}),this.customNode=i}getNode({channelId:e}){return r(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:{channelId:e}});return t}))}}class jp{constructor(e){const{loadbalancer:t}=e;this.socket=new za,this.loadBalancerClient=new Ip(t),this.logger=new Z("Network")}closeRemoteProducer(e){return r(this,void 0,void 0,(function*(){yield this.socket.request(P,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return r(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return r(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return r(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(L,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return r(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(j,{sctpCapabilities:e.sctpCapabilities,localDirection:"out"});this.sendTransport=e.createSendTransport(t),this.logger.debug("createSendTransport()",{transport:this.sendTransport}),this.sendTransport.on(U,(({dtlsParameters:e},i,s)=>r(this,void 0,void 0,(function*(){var r;try{yield this.socket.request(A,{transportId:null===(r=this.sendTransport)||void 0===r?void 0:r.id,dtlsParameters:e}),i(),this.logger.debug("sendTransport.connect()")}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),s(r)}})))),this.sendTransport.on(z,((e,t,i)=>r(this,void 0,void 0,(function*(){var r;try{const{id:i}=yield this.socket.request(F,{transportId:null===(r=this.sendTransport)||void 0===r?void 0:r.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:i}),this.logger.debug("sendTransport.produce()")}catch(e){this.logger.error("sendTransport.produce()",{error:e}),i(e)}})))),this.sendTransport.on(N,(e=>{this.logger.debug("sendTransport.state",{state:e}),"failed"===e&&this.sendTransport&&(this.restartIce(this.sendTransport),this.logger.warn("sendTransport.restartIce()"))}))}))}createRecvTransport(e){return r(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createRecvTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(j,{sctpCapabilities:e.sctpCapabilities,localDirection:"in"});this.receiveTransport=e.createRecvTransport(t),this.logger.debug("createRecvTransport()",{transport:this.receiveTransport}),this.receiveTransport.on(U,(({dtlsParameters:e},t,i)=>r(this,void 0,void 0,(function*(){var r;try{yield this.socket.request(A,{transportId:null===(r=this.receiveTransport)||void 0===r?void 0:r.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()")}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),i(e)}})))),this.receiveTransport.on(N,(e=>{this.logger.debug("receiveTransport.state",{state:e}),"failed"===e&&this.receiveTransport&&(this.restartIce(this.receiveTransport),this.logger.debug("receiveTransport.restartIce()"))}))}))}getIceParameters(e){return r(this,void 0,void 0,(function*(){const t=yield this.socket.request(B,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return r(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}}const Lp=[{scaleResolutionDownBy:5,maxBitrate:2e5},{scaleResolutionDownBy:4,maxBitrate:4e5},{scaleResolutionDownBy:2,maxBitrate:15e5}],Ap=[{dtx:!0,maxBitrate:15e5},{dtx:!0,maxBitrate:6e6}];var Fp;class Np{constructor(e){Fp.set(this,void 0),this.encoderConfig={},this.label=o.Unknown,function(e,t,r,i,s){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!s:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===i?s.call(e,r):s?s.value=r:t.set(e,r)}(this,Fp,e,"f")}get mediaStreamTrack(){return i(this,Fp,"f")}get id(){return this.mediaStreamTrack.id}get kind(){return this.mediaStreamTrack.kind}get producerId(){var e;return null===(e=this.producer)||void 0===e?void 0:e.id}get isPublished(){return!!this.producer&&!this.producer.closed}getLabel(){return this.label}setLabel(e){this.label=e}setEncoderConfig(e){this.encoderConfig=e}getEncoderConfig(){return this.encoderConfig}setProducer(e){this.producer=e}getProducer(){return this.producer}closeProducer(){var e;null===(e=this.producer)||void 0===e||e.close(),this.producer=void 0}}Fp=new WeakMap;class Bp extends Np{getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){return this.getEncoderConfig().preferredCodec||"h264"}getEncodings(){return this.getEncoderConfig().encodings||Lp}}class Up extends Np{getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{opusFec:this.getEncoderConfig().enableFec||!0}}}const zp={width:1280,height:720},qp={width:1920,height:1080};var $p;class Vp{constructor(){this.isDeviceLoaded=!1,this.tracks=new Map,$p.set(this,new Z("Media"))}get mediasoupDevice(){return this.device||(this.device=new re.Device),this.device}loadDevice(e){return r(this,void 0,void 0,(function*(){this.isDeviceLoaded||(yield this.mediasoupDevice.load({routerRtpCapabilities:e}),this.isDeviceLoaded=!0)}))}getTrackCodec(e){var t;if(e instanceof Bp&&(null===(t=this.mediasoupDevice.rtpCapabilities)||void 0===t?void 0:t.codecs))return this.mediasoupDevice.rtpCapabilities.codecs.find((t=>t.mimeType.toLowerCase()===`video/${e.getPreferredCodec()}`))}createTracks(e){return e.getTracks().map((t=>{const r="audio"===t.kind?new Up(t):new Bp(t);return this.tracks.set(r.id,r),i(this,$p,"f").debug("createTrack() track created",{streamId:e.id,trackId:r.id,kind:r.kind}),r}))}createUserMediaTracks(e){return r(this,void 0,void 0,(function*(){const t=yield navigator.mediaDevices.getUserMedia(e);return i(this,$p,"f").debug("createUserMediaTrack() stream created",{streamId:t.id}),this.createTracks(t)}))}createDisplayMediaTracks(e){return r(this,void 0,void 0,(function*(){const t=yield navigator.mediaDevices.getDisplayMedia(e);return this.createTracks(t)}))}deleteTrack(e){e.closeProducer(),e.mediaStreamTrack.stop(),this.tracks.delete(e.id),i(this,$p,"f").debug("deleteTrack() tack deleted",{trackId:e.id,kind:e.kind})}getAllTracks(){return Array.from(this.tracks.values())}static getScreenVideoTrackParams(e){return{videoTrackOptions:{frameRate:{ideal:(null==e?void 0:e.frameRate)||30},width:{ideal:(null==e?void 0:e.width)||qp.width},height:{ideal:(null==e?void 0:e.height)||qp.height}},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:Ap}}}static getCameraVideoTrackParams(e){return{videoTrackOptions:{deviceId:null==e?void 0:e.deviceId,frameRate:{ideal:(null==e?void 0:e.frameRate)||30},width:{ideal:(null==e?void 0:e.width)||zp.width},height:{ideal:(null==e?void 0:e.height)||zp.height}},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:Lp}}}}$p=new WeakMap;class Gp{constructor(e){this.engine=e,this.logger=new Z("ChannelEvents")}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(c,(e=>{this.engine.clientEventEmitter.safeEmit(u,e),this.logger.debug("New channel event",{event:e})})),e.on(d,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(h,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(l,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(f,e),this.logger.debug("Peer left the channel",{peerId:e})}))}}class Wp{constructor(e){this.engine=e,this.logger=new Z("MediasoupEvents")}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(P,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(P,e)})),e.on(R,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(R,e)})),e.on(E,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(E,e)})),e.on(O,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(O,e)})),e.on(D,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(D,e)})),e.on(M,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(M,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(x,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(x,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(x,e)})),e.on(k,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(k,e)}))}}class Hp{constructor(e){this.initialized=!1,this.isJoined=!1,this.isRoomJoining=!1;const{clientEventEmitter:t,network:r}=e;this.system=new ee({clientEventEmitter:t}),this.media=new Vp,this.network=new jp(r),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=new Gp(this),this.mediaSoupEventsHandler=new Wp(this),this.logger=new Z("Engine"),this.watchSocketState()}initialize(){return r(this,void 0,void 0,(function*(){try{const{rtpCapabilities:e}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.loadDevice(e),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()")}catch(e){throw this.logger.error("initialize()",e),new Error("Error initialize engine")}}))}release(){return r(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,this.network.socket.disconnect(),this.peersRepository.clear(),yield this.unpublish(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),this.logger.debug("release()")}catch(e){throw this.logger.error("release()",e),new Error("Error release engine")}}))}pauseRemoteProducer(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(C,{producerId:e})}))}resumeRemoteProducer(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(C,{producerId:e})}))}watchSocketState(){this.network.socket.observer.on("state",(({state:e})=>{this.clientEventEmitter.emit(e),e===S.Reconnected&&(this.network.socket.disconnect(),this.clientEventEmitter.emit(m))}))}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}join(e){return r(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isRoomJoining=!0;const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId});this.network.socket.connect(t),yield this.waitForSocketConnection(),yield this.performJoin(e)}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isRoomJoining=!1}}))}loadPeers(e){return r(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(p,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=new Rn(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(t.id,t),t}removePeer(e){this.peersRepository.delete(e)}pause(e){return r(this,void 0,void 0,(function*(){const t=e.getProducer();if(t)try{yield this.pauseRemoteProducer(t.id),t.pause(),this.logger.debug("pause()",{kind:e.kind})}catch(t){throw this.logger.error("pause()",{error:t,kind:e.kind}),new Error("Can`t pause track")}else this.logger.warn("pause()",{message:"Track is not published",kind:e.kind})}))}resume(e){return r(this,void 0,void 0,(function*(){const t=e.getProducer();if(t)try{yield this.resumeRemoteProducer(t.id),t.resume(),this.logger.debug("resume()",{kind:e.kind})}catch(t){throw this.logger.error("resume()",{error:t,kind:e.kind}),new Error("Can`t resume track")}else this.logger.warn("resume()",{message:"Track is not published"})}))}createCameraVideoTrack(e){return r(this,void 0,void 0,(function*(){const t=Vp.getCameraVideoTrackParams(e);try{const[e]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});return e.setLabel(o.Camera),e.setEncoderConfig(t.encoderConfig),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:e}),e}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return r(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:{deviceId:null==e?void 0:e.deviceId}});return t.setLabel(o.Microphone),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return r(this,void 0,void 0,(function*(){const t=Vp.getScreenVideoTrackParams(null==e?void 0:e.video);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:t.videoTrackOptions});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{this.unpublish(r)})),"video"===r.kind)return r.setLabel(o.ScreenVideo),r.setEncoderConfig(t.encoderConfig),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,track:r});r.setLabel(o.ScreenAudio),(null==e?void 0:e.audio)&&r.setEncoderConfig(e.audio),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}publish(e){return r(this,void 0,void 0,(function*(){if(!this.cahPublish)throw this.logger.error("publish()",{message:"Not enough access to publish"}),new Error("Not enough access to publish");const t=(Array.isArray(e)?e:[e]).map((e=>r(this,void 0,void 0,(function*(){var t;const r="getEncodings"in e?e.getEncodings():void 0,i="getCodecOptions"in e?e.getCodecOptions():void 0,s=yield null===(t=this.network.sendTransport)||void 0===t?void 0:t.produce({track:e.mediaStreamTrack,encodings:r,codecOptions:i,codec:this.media.getTrackCodec(e),stopTracks:!0,disableTrackOnPause:!0,zeroRtpOnPause:!0,appData:{peerId:this.mySocketId,label:e.getLabel()}});if(!s)return;e.setProducer(s);const n=this.peersRepository.get(this.mySocketId);null==n||n.observer.safeEmit(_,{producerId:s.id,track:e.mediaStreamTrack,label:e.getLabel()}),this.logger.debug("publish()",{track:e,encodings:r,codecOptions:i})}))));try{yield Promise.all(t)}catch(e){this.logger.error("publish()",{error:e})}}))}unpublish(e){return r(this,void 0,void 0,(function*(){let t;t=e?Array.isArray(e)?e:[e]:this.media.getAllTracks();const i=t.map((e=>r(this,void 0,void 0,(function*(){var t,r,i;const s=e.getProducer();s&&(null===(t=this.network.socket.connection)||void 0===t?void 0:t.connected)&&(yield this.network.closeRemoteProducer(s.id));const n=this.peersRepository.get(this.mySocketId);n&&n.observer.safeEmit(w,{producerId:null===(r=e.getProducer())||void 0===r?void 0:r.id,kind:null===(i=e.getProducer())||void 0===i?void 0:i.kind,label:e.getLabel()}),yield this.media.deleteTrack(e),this.logger.debug("unpublish()",{track:e})}))));try{yield Promise.all(i)}catch(e){this.logger.error("unpublish()",{error:e})}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}getAvailableNode({channelId:e}){return r(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode({channelId:e})).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const i=s=>r(this,void 0,void 0,(function*(){const{error:r,state:n}=s;if(r)return this.network.socket.observer.removeListener("state",i),void t(r);this.isRoomJoining&&n===S.Connected&&(this.network.socket.observer.removeListener("state",i),e())}));this.network.socket.observer.on("state",i)}))}performJoin(e){return r(this,void 0,void 0,(function*(){try{yield this.network.socket.request(d,e),yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.app=e.appId,this.channel=e.channelId,this.isJoined=!0,this.logger.debug(`Successfully joined to ${e.channelId}. Peers in channel:`,this.peersRepository)}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}}class Kp{constructor(e){var t,r;this._observer=new s;const{network:i}=e;this.engine=new Hp({clientEventEmitter:this.observer,network:{loadbalancer:{baseURL:null===(t=null==i?void 0:i.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==i?void 0:i.loadbalancer)||void 0===r?void 0:r.customNode}}})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}detectDevices(){return r(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}publish(e){return this.engine.publish(e)}unpublish(e){return this.engine.unpublish(e)}pause(e){return this.engine.pause(e)}resume(e){return this.engine.resume(e)}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}}export{Kp as default};