@livedigital/client 2.12.0 → 2.13.0

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.
Files changed (38) hide show
  1. package/dist/constants/common.d.ts +11 -0
  2. package/dist/engine/DefaultEngineDependenciesFactory.d.ts +3 -4
  3. package/dist/engine/Logger.d.ts +10 -3
  4. package/dist/engine/PeerConsumer.d.ts +6 -2
  5. package/dist/engine/index.d.ts +10 -4
  6. package/dist/engine/media/index.d.ts +2 -0
  7. package/dist/engine/media/tracks/BaseTrack.d.ts +6 -2
  8. package/dist/engine/network/Socket.d.ts +5 -2
  9. package/dist/engine/network/index.d.ts +2 -0
  10. package/dist/engine/system/index.d.ts +2 -4
  11. package/dist/engine/wid/types.d.ts +1 -1
  12. package/dist/helpers/retry.d.ts +2 -0
  13. package/dist/index.d.ts +4 -1
  14. package/dist/index.es.js +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/types/common.d.ts +1 -0
  17. package/dist/types/engine.d.ts +15 -5
  18. package/package.json +1 -1
  19. package/src/constants/common.ts +13 -0
  20. package/src/engine/DefaultEngineDependenciesFactory.ts +18 -13
  21. package/src/engine/Logger.ts +43 -17
  22. package/src/engine/Peer.ts +8 -2
  23. package/src/engine/PeerConsumer.ts +12 -3
  24. package/src/engine/handlers/ChannelEventHandler.ts +4 -1
  25. package/src/engine/handlers/MediaSoupEventHandler.ts +4 -1
  26. package/src/engine/index.ts +42 -8
  27. package/src/engine/media/index.ts +17 -4
  28. package/src/engine/media/tracks/BaseTrack.ts +13 -3
  29. package/src/engine/media/tracks/PeerTrack.ts +5 -1
  30. package/src/engine/network/Socket.ts +10 -3
  31. package/src/engine/network/index.ts +6 -2
  32. package/src/engine/system/index.ts +7 -7
  33. package/src/engine/wid/WebRTCIssueDetector.ts +2 -2
  34. package/src/engine/wid/types.ts +1 -1
  35. package/src/helpers/retry.ts +4 -2
  36. package/src/index.ts +14 -1
  37. package/src/types/common.ts +2 -0
  38. package/src/types/engine.ts +18 -5
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(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?n(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)}function n(e,t,r,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,r):n?n.value=r:t.set(e,r),r}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 a,o,c;!function(e){e.VIDEO="video",e.AUDIO="audio"}(a||(a={})),function(e){e[e.BAD=1]="BAD",e[e.MEDIUM=2]="MEDIUM",e[e.GOOD=3]="GOOD"}(o||(o={})),function(e){e.Camera="camera",e.Microphone="microphone",e.ScreenVideo="screen-video",e.ScreenAudio="screen-audio",e.Unknown="unknown"}(c||(c={}));const d="channel.event",p="channel.join",l="channel.getPeers",u="peer.disconnected",h="channel-event",f="peer-joined",m="peer-left",g="channel-rejoin-required",y="devices-list-updated",v="media-published",b="media-unpublished",w="connection-quality-changed",_="track-start",S="track-end",R="track-paused",k="track-resumed";var P;!function(e){e.Connected="connected",e.Reconnecting="reconnecting",e.Reconnected="reconnected",e.Disconnected="disconnected",e.Reconnect="reconnect",e.Error="error"}(P||(P={}));const C="peer.newProducer",T="producer.close",E="producer.pause",D="producer.resume",M="producer.scoreChanged",O="producer.setMaxSpatialLayer",x="producer.requestMaxSpatialLayer",I="consumer.create",L="consumer.close",j="consumer.pause",A="consumer.resume",F="consumer.scoreChanged",N="consumer.changeConsumerPreferredLayers",B="consumer.setConsumerPriority",U="transport.create",q="transport.close",$="transport.connect",z="transport.produce",V="connectionstatechange",W="getIceParameters",G="connect",H="produce";var K="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Q(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 J={exports:{}},Y=1e3,X=6e4,Z=60*X,ee=24*Z,te=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*ee;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Z;case"minutes":case"minute":case"mins":case"min":case"m":return r*X;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>=ee)return re(e,t,ee,"day");if(t>=Z)return re(e,t,Z,"hour");if(t>=X)return re(e,t,X,"minute");if(t>=1e3)return re(e,t,1e3,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=ee)return Math.round(e/ee)+"d";if(t>=Z)return Math.round(e/Z)+"h";if(t>=X)return Math.round(e/X)+"m";if(t>=Y)return Math.round(e/Y)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function re(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}var ie=function(e){function t(e){let i,n,s,a=null;function o(...e){if(!o.enabled)return;const r=o,n=Number(new Date),s=n-(i||n);r.diff=s,r.prev=i,r.curr=n,i=n,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,n)=>{if("%%"===i)return"%";a++;const s=t.formatters[n];if("function"==typeof s){const t=e[a];i=s.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:(n!==t.namespaces&&(n=t.namespaces,s=t.enabled(e)),s),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,]+/),n=i.length;for(r=0;r<n;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=te,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,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(n=i))})),t.splice(n,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=ie(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(J,J.exports);var ne=J.exports;class se{constructor(e,t){e?(this._debug=ne(`LiveDigital:${e}`),this._warn=ne(`LiveDigital:WARN:${e}`),this._error=ne(`LiveDigital:ERROR:${e}`)):(this._debug=ne("LiveDigital"),this._warn=ne("LiveDigital:WARN"),this._error=ne("LiveDigital:ERROR")),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console),this.onLogMessage=(e,...r)=>{"function"==typeof t&&t(e,...r)}}debug(e,...t){this._debug(e,...t),this.onLogMessage(e,...t)}warn(e,...t){this._warn(e,...t),this.onLogMessage(e,...t)}error(e,...t){this._error(e,...t),this.onLogMessage(e,...t)}}class ae{constructor(e){this.score=10;const{id:t,kind:r,peerId:i,label:n}=e;this.id=t,this.kind=r,this.peerId=i,this.label=n,this.encodings=e.encodings,this.trackTransformParams=e.trackTransformParams,this.maxSpatialLayer=e.maxSpatialLayer}}var oe={},ce={exports:{}},de=1e3,pe=60*de,le=60*pe,ue=24*le,he=7*ue,fe=365.25*ue,me=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*fe;case"weeks":case"week":case"w":return r*he;case"days":case"day":case"d":return r*ue;case"hours":case"hour":case"hrs":case"hr":case"h":return r*le;case"minutes":case"minute":case"mins":case"min":case"m":return r*pe;case"seconds":case"second":case"secs":case"sec":case"s":return r*de;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>=ue)return ge(e,t,ue,"day");if(t>=le)return ge(e,t,le,"hour");if(t>=pe)return ge(e,t,pe,"minute");if(t>=de)return ge(e,t,de,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=ue)return Math.round(e/ue)+"d";if(t>=le)return Math.round(e/le)+"h";if(t>=pe)return Math.round(e/pe)+"m";if(t>=de)return Math.round(e/de)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function ge(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}var ye=function(e){function t(e){let i,n,s,a=null;function o(...e){if(!o.enabled)return;const r=o,n=Number(new Date),s=n-(i||n);r.diff=s,r.prev=i,r.curr=n,i=n,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,n)=>{if("%%"===i)return"%";a++;const s=t.formatters[n];if("function"==typeof s){const t=e[a];i=s.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:(n!==t.namespaces&&(n=t.namespaces,s=t.enabled(e)),s),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,]+/),n=i.length;for(r=0;r<n;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=me,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,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(n=i))})),t.splice(n,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=ye(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(ce,ce.exports);var ve={},be={exports:{}};be.exports=function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.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 n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));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),n=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 n=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(n,s),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(n,s)),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 n=e[r];if(t(n,r))return n}},e.assign=function(e){for(var t,r,i=e,n=arguments.length,s=new Array(n>1?n-1:0),a=1;a<n;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){i[t]=e[t]}))};for(t=0,r=s.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=n,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,n=(i=r(91))&&i.__esModule?i:{default:i},s=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 n.default(e,t)},e.parse=function(e){return new n.default(e).getResult()},t=e,i=[{key:"BROWSER_MAP",get:function(){return s.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s.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)),n=c(r(93)),s=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(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.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(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.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,n={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(n[t]=a,s+=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(s>0){var u=Object.keys(n),h=o.default.find(u,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(n[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),n=o.default.getBrowserTypeByAlias(i);return t&&n&&(i=n.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,n=this.getBrowserVersion();if("string"==typeof n)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(n,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,n=(i=r(17))&&i.__esModule?i:{default:i},s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=n.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=n.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=n.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=n.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,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=n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=n.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=n.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=n.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=n.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=n.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=n.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=n.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=n.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=n.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=n.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=n.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=n.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=n.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=n.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=n.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=n.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=n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:n.default.getFirstMatch(t,e),version:n.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,n=(i=r(17))&&i.__esModule?i:{default:i},s=r(18),a=[{test:[/Roku\/DVP/],describe:function(e){var t=n.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=n.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=n.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=n.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=n.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=n.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=n.default.getMacOSVersionName(t),i={name:s.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=n.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:s.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=n.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=n.default.getAndroidVersionName(t),i={name:s.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=n.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=n.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||n.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||n.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=n.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=n.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=n.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:s.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,n=(i=r(17))&&i.__esModule?i:{default:i},s=r(18),a=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=n.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.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=n.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:s.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:s.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},s=r(18),a=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=n.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=n.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:s.ENGINE_MAP.Presto},r=n.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:s.ENGINE_MAP.Gecko},r=n.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=n.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}});var we={},_e=K&&K.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(we,"__esModule",{value:!0}),we.Logger=void 0;const Se=_e(ce.exports),Re="mediasoup-client";we.Logger=class{constructor(e){e?(this._debug=(0,Se.default)(`${Re}:${e}`),this._warn=(0,Se.default)(`${Re}:WARN:${e}`),this._error=(0,Se.default)(`${Re}:ERROR:${e}`)):(this._debug=(0,Se.default)(Re),this._warn=(0,Se.default)(`${Re}:WARN`),this._error=(0,Se.default)(`${Re}: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 ke={};Object.defineProperty(ke,"__esModule",{value:!0}),ke.EnhancedEventEmitter=void 0;const Pe=e,Ce=new we.Logger("EnhancedEventEmitter");class Te extends Pe.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(t){return Ce.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){Ce.error("safeEmitAsPromise() | event listener threw an error [event:%s]:%o",e,t),i(t)}}))}}ke.EnhancedEventEmitter=Te;var Ee={};Object.defineProperty(Ee,"__esModule",{value:!0}),Ee.InvalidStateError=Ee.UnsupportedError=void 0;class De extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,De):this.stack=new Error(e).stack}}Ee.UnsupportedError=De;class Me extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Me):this.stack=new Error(e).stack}}Ee.InvalidStateError=Me;var Oe={};Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.generateRandomNumber=Oe.clone=void 0,Oe.clone=function(e,t){return void 0===e?t:JSON.parse(JSON.stringify(e))},Oe.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var xe={},Ie={};!function(e){const t=J.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 n=new i(1,31);class s{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 s("x1xx0000"),1),new a(77,new s("1xxx0000"),1),new a(88,new s("11xx0000"),1),new a(66,new s("x0xx0000"),2),new a(88,new s("10xx0000"),2),new a(77,new s("0x0x0000"),3),new a(100,new s("00000000"),5),new a(100,new s("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 n=255&r,s=r>>8&255,a=r>>16&255;let c;switch(n){case 11:c=0!=(16&s)?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=n;break;default:return t("parseProfileLevelId() | unrecognized level_idc:%s",n),null}for(const e of o)if(a===e.profile_idc&&e.profile_iop.isMatch(s))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):n},e.isSameProfile=function(t={},r={}){const i=e.parseSdpProfileLevelId(t),n=e.parseSdpProfileLevelId(r);return Boolean(i&&n&&i.profile===n.profile)},e.generateProfileLevelIdForAnswer=function(n={},s={}){if(!n["profile-level-id"]&&!s["profile-level-id"])return t("generateProfileLevelIdForAnswer() | no profile-level-id in local and remote params"),null;const a=e.parseSdpProfileLevelId(n),o=e.parseSdpProfileLevelId(s);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(n)&&d(s),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))}}(Ie);var Le=K&&K.__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]}),je=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ae=K&&K.__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)&&Le(t,e,r);return je(t,e),t};Object.defineProperty(xe,"__esModule",{value:!0}),xe.canReceive=xe.canSend=xe.generateProbatorRtpParameters=xe.reduceCodecs=xe.getSendingRemoteRtpParameters=xe.getSendingRtpParameters=xe.getRecvRtpCapabilities=xe.getExtendedRtpCapabilities=xe.validateSctpStreamParameters=xe.validateSctpParameters=xe.validateNumSctpStreams=xe.validateSctpCapabilities=xe.validateRtcpParameters=xe.validateRtpEncodingParameters=xe.validateRtpHeaderExtensionParameters=xe.validateRtpCodecParameters=xe.validateRtpParameters=xe.validateRtpHeaderExtension=xe.validateRtcpFeedback=xe.validateRtpCodecCapability=xe.validateRtpCapabilities=void 0;const Fe=Ae(Ie),Ne=Ae(Oe);function Be(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)Ue(t)}function Ue(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 qe(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 $e(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)ze(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)Ve(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)We(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),Ge(e.rtcp)}function ze(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)Ue(t)}function Ve(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 We(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 Ge(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 He(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 Ke(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Qe(e,t,{strict:r=!1,modify:i=!1}={}){const n=e.mimeType.toLowerCase();if(n!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(n){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!Fe.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Fe.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 Je(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Ye(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}xe.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)Be(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)qe(t)},xe.validateRtpCodecCapability=Be,xe.validateRtcpFeedback=Ue,xe.validateRtpHeaderExtension=qe,xe.validateRtpParameters=$e,xe.validateRtpCodecParameters=ze,xe.validateRtpHeaderExtensionParameters=Ve,xe.validateRtpEncodingParameters=We,xe.validateRtcpParameters=Ge,xe.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");He(e.numStreams)},xe.validateNumSctpStreams=He,xe.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")},xe.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")},xe.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(Ke(i))continue;const t=(e.codecs||[]).find((e=>Qe(e,i,{strict:!0,modify:!0})));if(!t)continue;const n={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:Ye(t,i)};r.codecs.push(n)}for(const i of r.codecs){const r=e.codecs.find((e=>Ke(e)&&e.parameters.apt===i.localPayloadType)),n=t.codecs.find((e=>Ke(e)&&e.parameters.apt===i.remotePayloadType));r&&n&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=n.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>Je(e,i)));if(!t)continue;const n={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":n.direction="sendrecv";break;case"recvonly":n.direction="sendonly";break;case"sendonly":n.direction="recvonly";break;case"inactive":n.direction="inactive"}r.headerExtensions.push(n)}return r},xe.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},xe.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},xe.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},xe.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Qe(e[i],t)){r.push(e[i]),Ke(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]),Ke(e[1])&&r.push(e[1]);return r},xe.generateProbatorRtpParameters=function(e){$e(e=Ne.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},xe.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},xe.canReceive=function(e,t){if($e(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Xe={},Ze={},et=K&&K.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?n(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(Ze,"__esModule",{value:!0});Ze.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 et(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 n={task:e,name:t,resolve:r,reject:i,stopped:!1,enqueuedAt:new Date,executedAt:void 0};this.pendingTasks.push(n),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 et(this,void 0,void 0,(function*(){const e=this.pendingTasks[0];e&&(yield this.executeTask(e),this.pendingTasks.shift(),this.next())}))}executeTask(e){return et(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 tt={};Object.defineProperty(tt,"__esModule",{value:!0}),tt.Producer=void 0;const rt=ke,it=Ee,nt=new we.Logger("Producer");class st extends rt.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:n,stopTracks:s,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new rt.EnhancedEventEmitter,nt.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=n,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,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||(nt.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(nt.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(){nt.debug("pause()"),this._closed?nt.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(){nt.debug("resume()"),this._closed?nt.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(nt.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new it.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new it.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()):nt.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new it.InvalidStateError("closed");if("video"!==this._kind)throw new it.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 it.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await this.safeEmitAsPromise("@setrtpencodingparameters",e)}_onTrackEnded(){nt.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){}}}tt.Producer=st;var at={};Object.defineProperty(at,"__esModule",{value:!0}),at.Consumer=void 0;const ot=ke,ct=Ee,dt=new we.Logger("Consumer");class pt extends ot.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:n,rtpParameters:s,appData:a}){super(),this._closed=!1,this._observer=new ot.EnhancedEventEmitter,dt.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=n,this._rtpParameters=s,this._paused=!n.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||(dt.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(dt.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new ct.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){dt.debug("pause()"),this._closed?dt.error("pause() | Consumer closed"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){dt.debug("resume()"),this._closed?dt.error("resume() | Consumer closed"):(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume"))}_onTrackEnded(){dt.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){}}}at.Consumer=pt;var lt={};Object.defineProperty(lt,"__esModule",{value:!0}),lt.DataProducer=void 0;const ut=ke,ht=Ee,ft=new we.Logger("DataProducer");class mt extends ut.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new ut.EnhancedEventEmitter,ft.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||(ft.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(ft.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(ft.debug("send()"),this._closed)throw new ht.InvalidStateError("closed");this._dataChannel.send(e)}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(ft.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?ft.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):ft.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(ft.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||ft.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}lt.DataProducer=mt;var gt={};Object.defineProperty(gt,"__esModule",{value:!0}),gt.DataConsumer=void 0;const yt=ke,vt=new we.Logger("DataConsumer");class bt extends yt.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:n}){super(),this._closed=!1,this._observer=new yt.EnhancedEventEmitter,vt.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=n,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||(vt.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(vt.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(vt.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?vt.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):vt.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(vt.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)}))}}gt.DataConsumer=bt;var wt=K&&K.__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]}),_t=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),St=K&&K.__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)&&wt(t,e,r);return _t(t,e),t};Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.Transport=void 0;const Rt=Ze,kt=we,Pt=ke,Ct=Ee,Tt=St(Oe),Et=St(xe),Dt=tt,Mt=at,Ot=lt,xt=gt;class It{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const Lt=new kt.Logger("Transport");class jt extends Pt.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,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 Rt.AwaitQueue({ClosedErrorClass:Ct.InvalidStateError}),this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._observer=new Pt.EnhancedEventEmitter,Lt.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=Tt.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:n,sctpParameters:s,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){Lt.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 Ct.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(Lt.debug("restartIce()"),this._closed)throw new Ct.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(Lt.debug("updateIceServers()"),this._closed)throw new Ct.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:n=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:a=!1,appData:o={}}={}){if(Lt.debug("produce() [track:%o]",e),!e)throw new TypeError("missing track");if("send"!==this._direction)throw new Ct.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new Ct.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new Ct.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{Et.validateRtpParameters(p);const{id:t}=await this.safeEmitAsPromise("produce",{kind:e.kind,rtpParameters:p,appData:o}),r=new Dt.Producer({id:t,localId:d,rtpSender:l,track:e,rtpParameters:p,stopTracks:n,disableTrackOnPause:s,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(n)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,appData:n={}}){if(Lt.debug("consume()"),i=Tt.clone(i,void 0),this._closed)throw new Ct.InvalidStateError("closed");if("recv"!==this._direction)throw new Ct.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(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");if(!Et.canReceive(i,this._extendedRtpCapabilities))throw new Ct.UnsupportedError("cannot consume this Producer");const s=new It({id:e,producerId:t,kind:r,rtpParameters:i,appData:n});return this._pendingConsumerTasks.push(s),!1===this._consumerCreationInProgress&&this._createPendingConsumers(),s.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:n="",appData:s={}}={}){if(Lt.debug("produceData()"),"send"!==this._direction)throw new Ct.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new Ct.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(s&&"object"!=typeof s)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:n});Et.validateSctpStreamParameters(o);const{id:c}=await this.safeEmitAsPromise("producedata",{sctpStreamParameters:o,label:i,protocol:n,appData:s}),d=new Ot.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:s});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:n="",appData:s={}}){if(Lt.debug("consumeData()"),r=Tt.clone(r,void 0),this._closed)throw new Ct.InvalidStateError("closed");if("recv"!==this._direction)throw new Ct.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new Ct.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(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return Et.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:n}),o=new xt.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,appData:s});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:n}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:n})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;r++){const n=e[r],s=i[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:p}=n.consumerOptions,{localId:l,rtpReceiver:u,track:h}=s,f=new Mt.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),n.resolve(f)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=Et.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),Lt.debug("_createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){Lt.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 Ct.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(Lt.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=>Lt.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 Ct.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 Ct.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)}))}}Xe.Transport=jt;var At={},Ft={},Nt={},Bt={exports:{}},Ut=Bt.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(Ut).forEach((function(e){Ut[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 n=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:n&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:n?r[e.name]:r;!function(e,r,i,n){if(n&&!i)r[n]=t(e[1]);else for(var s=0;s<i.length;s+=1)null!=e[s+1]&&(r[i[s]]=t(e[s+1]))}(i.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},i=Bt.exports,n=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(n).forEach((function(e){var t=e[0],n=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),a=s[s.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(n))return r(c,a,n)}})),t.media=s,t};var s=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(s,{})},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),n=0;n<i.length;n+=3)r.push({component:i[n],ip:i[n+1],port:i[n+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},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}}))}))}}(Nt);var qt=Bt.exports,$t=/%[sdv%]/g,zt=function(e){var t=1,r=arguments,i=r.length;return e.replace($t,(function(e){if(t>=i)return e;var n=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(n);case"%d":return Number(n);case"%v":return""}}))},Vt=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 n=0;n<t.names.length;n+=1){var s=t.names[n];t.name?i.push(r[t.name][s]):i.push(r[t.names[n]])}else i.push(r[t.name]);return zt.apply(null,i)},Wt=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Gt=["i","c","b","a"],Ht=Nt,Kt=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||Wt,i=t.innerOrder||Gt,n=[];return r.forEach((function(t){qt[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Vt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Vt(t,r,e))}))}))})),e.media.forEach((function(e){n.push(Vt("m",qt.m[0],e)),i.forEach((function(t){qt[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Vt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Vt(t,r,e))}))}))}))})),n.join("\r\n")+"\r\n"};Ft.write=Kt,Ft.parse=Ht.parse,Ft.parseParams=Ht.parseParams,Ft.parseFmtpConfig=Ht.parseFmtpConfig,Ft.parsePayloads=Ht.parsePayloads,Ft.parseRemoteCandidates=Ht.parseRemoteCandidates,Ft.parseImageAttributes=Ht.parseImageAttributes,Ft.parseSimulcastStreamList=Ht.parseSimulcastStreamList;var Qt={},Jt=K&&K.__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]}),Yt=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Xt=K&&K.__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)&&Jt(t,e,r);return Yt(t,e),t};Object.defineProperty(Qt,"__esModule",{value:!0}),Qt.applyCodecParameters=Qt.getCname=Qt.extractDtlsParameters=Qt.extractRtpCapabilities=void 0;const Zt=Xt(Ft);Qt.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,n=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(n)continue;n=!0;break;default:continue}for(const r of s.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 s.fmtp||[]){const r=Zt.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 s.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 s.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}},Qt.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}]}},Qt.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},Qt.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 n=Zt.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(n.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(n))i.config&&(i.config+=";"),i.config+=`${e}=${n[e]}`}};var er={};Object.defineProperty(er,"__esModule",{value:!0}),er.addLegacySimulcast=er.getRtpEncodings=void 0,er.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,n]=i.ssrcs.split(/\s+/);e=Number(e),n=Number(n),t.has(e)&&(t.delete(e),t.delete(n),r.set(e,n))}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},er.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,n]=r.value.split(" "),s=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(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(s+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} ${n}`})}for(let t=0;t<p.length;++t){const r=d[t],s=p[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${i} ${n}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var tr={};Object.defineProperty(tr,"__esModule",{value:!0}),tr.HandlerInterface=void 0;const rr=ke;class ir extends rr.EnhancedEventEmitter{constructor(){super()}}tr.HandlerInterface=ir;var nr={},sr={},ar=K&&K.__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]}),or=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cr=K&&K.__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)&&ar(t,e,r);return or(t,e),t};Object.defineProperty(sr,"__esModule",{value:!0}),sr.OfferMediaSection=sr.AnswerMediaSection=sr.MediaSection=void 0;const dr=cr(Oe);class pr{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}}sr.MediaSection=pr;sr.AnswerMediaSection=class extends pr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.port=n.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:lr(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=dr.clone(e.parameters,{});if(d){const{opusStereo:t,opusFec:i,opusDtx:n,opusMaxPlaybackRate:s,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!==n&&(h.parameters.usedtx=n?1:0,r.usedtx=n?1:0),void 0!==s&&(r.maxplaybackrate=s),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 lr(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}sr.OfferMediaSection=class extends pr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:p,oldDataChannelSpec:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a),this._mediaObject.type=o,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=n.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:lr(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],n=i.ssrc,s=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:lr(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:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(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}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${s}`}))}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 ur=K&&K.__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]}),hr=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),fr=K&&K.__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)&&ur(t,e,r);return hr(t,e),t};Object.defineProperty(nr,"__esModule",{value:!0}),nr.RemoteSdp=void 0;const mr=fr(Ft),gr=sr,yr=new we.Logger("RemoteSdp");nr.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=n,this._planB=s,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:""}]}n&&(this._sdpObject.origin.address=n.ip,this._sdpObject.origin.ipVer=n.ipVersion)}updateIceParameters(e){yr.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){yr.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:n,extmapAllowMixed:s=!1}){const a=new gr.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s});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:n}){const s=this._midToIndex.get(e);let a;if(void 0!==s&&(a=this._mediaSections[s]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:n}),this._replaceMediaSection(a);else{a=new gr.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:n});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(a,s.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 yr.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 gr.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 gr.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++,mr.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 vr={};Object.defineProperty(vr,"__esModule",{value:!0}),vr.parse=void 0;const br=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");vr.parse=function(e){const t=br.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var wr=K&&K.__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=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Sr=K&&K.__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)&&wr(t,e,r);return _r(t,e),t};Object.defineProperty(At,"__esModule",{value:!0}),At.Chrome74=void 0;const Rr=Sr(Ft),kr=we,Pr=Sr(Oe),Cr=Sr(xe),Tr=Sr(Qt),Er=Sr(er),Dr=tr,Mr=nr,Or=vr,xr=new kr.Logger("Chrome74"),Ir={OS:1024,MIS:1024};class Lr extends Dr.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"Chrome74"}close(){if(xr.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){xr.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=Rr.parse(t.sdp);return Tr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return xr.debug("getNativeSctpCapabilities()"),{numStreams:Ir}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){xr.debug("run()"),this._direction=e,this._remoteSdp=new Mr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Cr.getSendingRtpParameters("audio",d),video:Cr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Cr.getSendingRemoteRtpParameters("audio",d),video:Cr.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){xr.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(xr.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});xr.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};xr.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};xr.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();xr.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 n;this._assertSendDirection(),xr.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=Cr.reduceCodecs(s.codecs,i);const a=Pr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Cr.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=Rr.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:l});let u=!1;const h=(0,Or.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(xr.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Rr.parse(p.sdp),d=l.media[o.idx],Er.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:Rr.write(l)}),xr.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const f=c.mid;if(s.mid=f,l=Rr.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=Tr.getCname({offerMediaObject:d}),t)if(1===t.length){let e=Er.getRtpEncodings({offerMediaObject:d});Object.assign(e[0],t[0]),u&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=Er.getRtpEncodings({offerMediaObject:d});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:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return xr.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),xr.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();xr.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};xr.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?xr.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):xr.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(),xr.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(),xr.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};xr.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ir.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Rr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),xr.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()};xr.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:n}=t;xr.debug("receive() [trackId:%s, kind:%s]",e,r);const s=n.mid||String(this._mapMidTransceiver.size);i.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};xr.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=Rr.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,n=i.get(e),s=a.media.find((e=>String(e.mid)===n));Tr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Rr.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),xr.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,n=i.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),r.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),xr.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()};xr.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();xr.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),xr.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()};xr.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();xr.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),xr.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()};xr.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();xr.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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};xr.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()};xr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Rr.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}xr.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=Rr.parse(this._pc.localDescription.sdp));const r=Tr.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')}}At.Chrome74=Lr;var jr={},Ar=K&&K.__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]}),Fr=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Nr=K&&K.__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)&&Ar(t,e,r);return Fr(t,e),t};Object.defineProperty(jr,"__esModule",{value:!0}),jr.Chrome70=void 0;const Br=Nr(Ft),Ur=we,qr=Nr(Oe),$r=Nr(xe),zr=Nr(Qt),Vr=Nr(er),Wr=tr,Gr=nr,Hr=vr,Kr=new Ur.Logger("Chrome70"),Qr={OS:1024,MIS:1024};class Jr extends Wr.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Jr}get name(){return"Chrome70"}close(){if(Kr.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Kr.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=Br.parse(t.sdp);return zr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Kr.debug("getNativeSctpCapabilities()"),{numStreams:Qr}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Kr.debug("run()"),this._direction=e,this._remoteSdp=new Gr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:$r.getSendingRtpParameters("audio",d),video:$r.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:$r.getSendingRemoteRtpParameters("audio",d),video:$r.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){Kr.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Kr.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Kr.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Kr.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Kr.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Kr.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 n;this._assertSendDirection(),Kr.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=qr.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=$r.reduceCodecs(s.codecs,i);const a=qr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=$r.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=Br.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:l}),t&&t.length>1&&(Kr.debug("send() | enabling legacy simulcast"),l=Br.parse(p.sdp),d=l.media[o.idx],Vr.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:Br.write(l)});let u=!1;const h=(0,Hr.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Kr.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Br.parse(p.sdp),d=l.media[o.idx],Vr.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:Br.write(l)}),Kr.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p),t){Kr.debug("send() | applying given encodings");const e=c.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],n=t[r];if(!n)break;e.encodings[r]=Object.assign(i,n)}await c.sender.setParameters(e)}const f=c.mid;if(s.mid=f,l=Br.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=zr.getCname({offerMediaObject:d}),s.encodings=Vr.getRtpEncodings({offerMediaObject:d}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);if(u&&(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:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Kr.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),Kr.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();Kr.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Kr.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Kr.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Kr.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(),Kr.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(),Kr.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Kr.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Qr.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Br.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Kr.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()};Kr.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:n}=t;Kr.debug("receive() [trackId:%s, kind:%s]",e,r);const s=n.mid||String(this._mapMidTransceiver.size);i.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Kr.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=Br.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,n=i.get(e),s=a.media.find((e=>String(e.mid)===n));zr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Br.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Kr.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,n=i.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),r.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),Kr.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()};Kr.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Kr.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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};Kr.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()};Kr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Br.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Kr.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=Br.parse(this._pc.localDescription.sdp));const r=zr.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')}}jr.Chrome70=Jr;var Yr={},Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.addLegacySimulcast=Xr.getRtpEncodings=void 0,Xr.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,n]=t.ssrcs.split(/\s+/);e=Number(e),n=Number(n),r.has(e)&&(r.delete(e),r.delete(n),i.set(e,n))}for(const e of r)i.set(e,null);const n=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},Xr.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,n,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,s=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&&(n=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),n&&d.push(n+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:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],n=d[r];e.ssrcs.push({id:n,attribute:"cname",value:o}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${n}`})}};var Zr=K&&K.__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=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ti=K&&K.__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)&&Zr(t,e,r);return ei(t,e),t};Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.Chrome67=void 0;const ri=ti(Ft),ii=we,ni=ti(Oe),si=ti(xe),ai=ti(Qt),oi=ti(Xr),ci=tr,di=nr,pi=new ii.Logger("Chrome67"),li={OS:1024,MIS:1024};class ui extends ci.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 ui}get name(){return"Chrome67"}close(){if(pi.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){pi.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 ai.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return pi.debug("getNativeSctpCapabilities()"),{numStreams:li}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){pi.debug("run()"),this._direction=e,this._remoteSdp=new di.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:si.getSendingRtpParameters("audio",d),video:si.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:si.getSendingRemoteRtpParameters("audio",d),video:si.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){pi.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(pi.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});pi.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};pi.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};pi.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();pi.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 n;this._assertSendDirection(),pi.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&pi.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,a=await this._pc.createOffer(),o=ri.parse(a.sdp);const c=ni.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=si.reduceCodecs(c.codecs);const d=ni.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=si.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(pi.debug("send() | enabling simulcast"),o=ri.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),oi.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:ri.write(o)}),pi.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=ri.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=ai.getCname({offerMediaObject:s}),c.encodings=oi.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};pi.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(),pi.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();pi.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void pi.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()};pi.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?pi.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):pi.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(),pi.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(),pi.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};pi.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%li.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:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),pi.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()};pi.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;pi.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};pi.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ri.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));ai.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:ri.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),pi.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:i,rtpParameters:n}=t,s=i,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:a,rtpParameters:n,rtpReceiver:o}),r.push({localId:s,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),pi.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()};pi.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();pi.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};pi.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()};pi.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:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}pi.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=ri.parse(this._pc.localDescription.sdp));const r=ai.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')}}Yr.Chrome67=ui;var hi={},fi=K&&K.__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=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),gi=K&&K.__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)&&fi(t,e,r);return mi(t,e),t};Object.defineProperty(hi,"__esModule",{value:!0}),hi.Chrome55=void 0;const yi=gi(Ft),vi=we,bi=Ee,wi=gi(Oe),_i=gi(xe),Si=gi(Qt),Ri=gi(Xr),ki=tr,Pi=nr,Ci=new vi.Logger("Chrome55"),Ti={OS:1024,MIS:1024};class Ei extends ki.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 Ei}get name(){return"Chrome55"}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",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=yi.parse(t.sdp);return Si.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ci.debug("getNativeSctpCapabilities()"),{numStreams:Ti}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ci.debug("run()"),this._direction=e,this._remoteSdp=new Pi.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:_i.getSendingRtpParameters("audio",d),video:_i.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:_i.getSendingRemoteRtpParameters("audio",d),video:_i.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){Ci.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}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}){var n;this._assertSendDirection(),Ci.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Ci.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,a=await this._pc.createOffer(),o=yi.parse(a.sdp);const c=wi.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=_i.reduceCodecs(c.codecs);const d=wi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=_i.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Ci.debug("send() | enabling simulcast"),o=yi.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),Ri.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:yi.write(o)}),Ci.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=yi.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=Si.getCname({offerMediaObject:s}),c.encodings=Ri.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};Ci.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(),Ci.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();Ci.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Ci.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()};Ci.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new bi.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new bi.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new bi.UnsupportedError("not supported")}async getSenderStats(e){throw new bi.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Ci.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ti.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=yi.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",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: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;Ci.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r,s=i.rtcp.cname;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Ci.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=yi.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Si.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:yi.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),Ci.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:i,rtpParameters:n}=t,s=e,a=i,o=n.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:s,rtpParameters:n}),r.push({localId:a,track:d})}return r}async stopReceiving(e){this._assertRecvDirection(),Ci.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()};Ci.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();Ci.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new bi.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};Ci.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()};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=yi.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Ci.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=yi.parse(this._pc.localDescription.sdp));const r=Si.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')}}hi.Chrome55=Ei;var Di={},Mi=K&&K.__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]}),Oi=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xi=K&&K.__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)&&Mi(t,e,r);return Oi(t,e),t};Object.defineProperty(Di,"__esModule",{value:!0}),Di.Firefox60=void 0;const Ii=xi(Ft),Li=we,ji=Ee,Ai=xi(Oe),Fi=xi(xe),Ni=xi(Qt),Bi=xi(er),Ui=tr,qi=nr,$i=new Li.Logger("Firefox60"),zi={OS:16,MIS:2048};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"Firefox60"}close(){if($i.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){$i.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"}),n=i.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];n.encodings=s,await i.sender.setParameters(n);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=Ii.parse(a.sdp);return Ni.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 $i.debug("getNativeSctpCapabilities()"),{numStreams:zi}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){$i.debug("run()"),this._direction=e,this._remoteSdp=new qi.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),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({iceServers:s||[],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 ji.UnsupportedError("not supported")}async restartIce(e){if($i.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});$i.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};$i.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};$i.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();$i.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(),$i.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=Ai.clone(t,[])).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const n=Ai.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Fi.reduceCodecs(n.codecs,i);const s=Ai.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=Fi.reduceCodecs(s.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=Ii.parse(o.sdp);this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:c}),$i.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const d=a.mid;n.mid=d,c=Ii.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(n.rtcp.cname=Ni.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Bi.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t.reverse();else n.encodings=Bi.getRtpEncodings({offerMediaObject:p});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:p,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const l={type:"answer",sdp:this._remoteSdp.getSdp()};return $i.debug("send() | calling pc.setRemoteDescription() [answer:%o]",l),await this._pc.setRemoteDescription(l),this._mapMidTransceiver.set(d,a),{localId:d,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){$i.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();$i.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};$i.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?$i.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):$i.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(),$i.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(),$i.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:n}){this._assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};$i.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%zi.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:"client",localSdpObject:t}),$i.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()};$i.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this._assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n}=t;$i.debug("receive() [trackId:%s, kind:%s]",e,i);const s=n.mid||String(this._mapMidTransceiver.size);r.set(e,s),this._remoteSdp.receive({mid:s,kind:i,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};$i.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Ii.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=s.media.find((e=>String(e.mid)===a));Ni.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),n={type:"answer",sdp:Ii.write(s)}}this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:s}),$i.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this._assertRecvDirection(),$i.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()};$i.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();$i.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),$i.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()};$i.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();$i.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),$i.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()};$i.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();$i.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:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};$i.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()};$i.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})}$i.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')}}Di.Firefox60=Vi;var Wi={},Gi=K&&K.__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=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ki=K&&K.__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)&&Gi(t,e,r);return Hi(t,e),t};Object.defineProperty(Wi,"__esModule",{value:!0}),Wi.Safari12=void 0;const Qi=Ki(Ft),Ji=we,Yi=Ki(Oe),Xi=Ki(xe),Zi=Ki(Qt),en=Ki(er),tn=tr,rn=nr,nn=new Ji.Logger("Safari12"),sn={OS:1024,MIS:1024};class an extends tn.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new an}get name(){return"Safari12"}close(){if(nn.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){nn.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=Qi.parse(t.sdp);return Zi.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return nn.debug("getNativeSctpCapabilities()"),{numStreams:sn}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){nn.debug("run()"),this._direction=e,this._remoteSdp=new rn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Xi.getSendingRtpParameters("audio",d),video:Xi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Xi.getSendingRemoteRtpParameters("audio",d),video:Xi.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){nn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(nn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});nn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};nn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};nn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();nn.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 n;this._assertSendDirection(),nn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=Yi.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Xi.reduceCodecs(s.codecs,i);const a=Yi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Xi.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=Qi.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:l}),t&&t.length>1&&(nn.debug("send() | enabling legacy simulcast"),l=Qi.parse(p.sdp),d=l.media[o.idx],en.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:Qi.write(l)}),nn.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const u=c.mid;if(s.mid=u,l=Qi.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=Zi.getCname({offerMediaObject:d}),s.encodings=en.getRtpEncodings({offerMediaObject:d}),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:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return nn.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,c),{localId:u,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),nn.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();nn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};nn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?nn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):nn.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(),nn.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(),nn.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};nn.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%sn.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:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),nn.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()};nn.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:n}=t;nn.debug("receive() [trackId:%s, kind:%s]",e,r);const s=n.mid||String(this._mapMidTransceiver.size);i.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};nn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=Qi.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,n=i.get(e),s=a.media.find((e=>String(e.mid)===n));Zi.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Qi.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),nn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,n=i.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),r.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),nn.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()};nn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();nn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),nn.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()};nn.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();nn.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),nn.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()};nn.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();nn.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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};nn.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()};nn.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:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}nn.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=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')}}Wi.Safari12=an;var on={},cn=K&&K.__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]}),dn=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),pn=K&&K.__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)&&cn(t,e,r);return dn(t,e),t};Object.defineProperty(on,"__esModule",{value:!0}),on.Safari11=void 0;const ln=pn(Ft),un=we,hn=pn(Oe),fn=pn(xe),mn=pn(Qt),gn=pn(Xr),yn=tr,vn=nr,bn=new un.Logger("Safari11"),wn={OS:1024,MIS:1024};class _n extends yn.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 _n}get name(){return"Safari11"}close(){if(bn.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){bn.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=ln.parse(t.sdp);return mn.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return bn.debug("getNativeSctpCapabilities()"),{numStreams:wn}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){bn.debug("run()"),this._direction=e,this._remoteSdp=new vn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:fn.getSendingRtpParameters("audio",d),video:fn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:fn.getSendingRemoteRtpParameters("audio",d),video:fn.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){bn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(bn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});bn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};bn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};bn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();bn.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 n;this._assertSendDirection(),bn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&bn.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,a=await this._pc.createOffer(),o=ln.parse(a.sdp);const c=hn.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=fn.reduceCodecs(c.codecs);const d=hn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=fn.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(bn.debug("send() | enabling simulcast"),o=ln.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),gn.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:ln.write(o)}),bn.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=ln.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=mn.getCname({offerMediaObject:s}),c.encodings=gn.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};bn.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();bn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void bn.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()};bn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?bn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):bn.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(),bn.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(),bn.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};bn.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%wn.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ln.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),bn.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()};bn.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;bn.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};bn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ln.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));mn.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:ln.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),bn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:i,rtpParameters:n}=t,s=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:s,rtpParameters:n,rtpReceiver:o}),r.push({localId:a,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),bn.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()};bn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();bn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};bn.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()};bn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ln.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}bn.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=ln.parse(this._pc.localDescription.sdp));const r=mn.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')}}on.Safari11=_n;var Sn={},Rn={},kn=K&&K.__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]}),Pn=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Cn=K&&K.__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)&&kn(t,e,r);return Pn(t,e),t};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.mangleRtpParameters=Rn.getCapabilities=void 0;const Tn=Cn(Oe);Rn.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=Tn.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},Rn.mangleRtpParameters=function(e){const t=Tn.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 En=K&&K.__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]}),Dn=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Mn=K&&K.__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)&&En(t,e,r);return Dn(t,e),t};Object.defineProperty(Sn,"__esModule",{value:!0}),Sn.Edge11=void 0;const On=we,xn=Ee,In=Mn(Oe),Ln=Mn(xe),jn=Mn(Rn),An=tr,Fn=new On.Logger("Edge11");class Nn extends An.HandlerInterface{constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}static createFactory(){return()=>new Nn}get name(){return"Edge11"}close(){Fn.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 Fn.debug("getNativeRtpCapabilities()"),jn.getCapabilities()}async getNativeSctpCapabilities(){return Fn.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Fn.debug("run()"),this._sendingRtpParametersByKind={audio:Ln.getSendingRtpParameters("audio",d),video:Ln.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${In.generateRandomNumber()}`,this._setIceGatherer({iceServers:s,iceTransportPolicy:a}),this._setIceTransport(),this._setDtlsTransport()}async updateIceServers(e){throw new xn.UnsupportedError("not supported")}async restartIce(e){if(Fn.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){Fn.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}){Fn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this._setupTransport({localDtlsRole:"server"}),Fn.debug("send() | calling new RTCRtpSender()");const n=new RTCRtpSender(e,this._dtlsTransport),s=In.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Ln.reduceCodecs(s.codecs,i);const a=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=In.generateRandomNumber(),a&&(e.rtx={ssrc:In.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=jn.mangleRtpParameters(s);Fn.debug("send() | calling rtpSender.send() [params:%o]",o),await n.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,n),{localId:c,rtpParameters:s,rtpSender:n}}async stopSending(e){Fn.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{Fn.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw Fn.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async replaceTrack(e,t){t?Fn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Fn.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){Fn.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){Fn.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 xn.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;Fn.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:n}=r;Fn.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,i);s.addEventListener("error",(e=>{Fn.error('rtpReceiver "error" event [event:%o]',e)}));const a=jn.mangleRtpParameters(n);Fn.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await s.receive(a);const o=e;this._rtpReceivers.set(o,s),t.push({localId:o,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){Fn.debug("stopReceiving() [localId:%s]",e);const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(e);try{Fn.debug("stopReceiving() | calling rtpReceiver.stop()"),t.stop()}catch(e){Fn.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 xn.UnsupportedError("not implemented")}_setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{Fn.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){Fn.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=>{Fn.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}_setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{Fn.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{Fn.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{Fn.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async _setupTransport({localDtlsRole:e}){Fn.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}}Sn.Edge11=Nn;var Bn={},Un=K&&K.__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]}),qn=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),$n=K&&K.__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)&&Un(t,e,r);return qn(t,e),t};Object.defineProperty(Bn,"__esModule",{value:!0}),Bn.ReactNative=void 0;const zn=$n(Ft),Vn=we,Wn=Ee,Gn=$n(Oe),Hn=$n(xe),Kn=$n(Qt),Qn=$n(Xr),Jn=tr,Yn=nr,Xn=new Vn.Logger("ReactNative"),Zn={OS:1024,MIS:1024};class es extends Jn.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 es}get name(){return"ReactNative"}close(){if(Xn.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Xn.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=zn.parse(t.sdp);return Kn.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Xn.debug("getNativeSctpCapabilities()"),{numStreams:Zn}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Xn.debug("run()"),this._direction=e,this._remoteSdp=new Yn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Hn.getSendingRtpParameters("audio",d),video:Hn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Hn.getSendingRemoteRtpParameters("audio",d),video:Hn.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){Xn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Xn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Xn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Xn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Xn.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 n;this._assertSendDirection(),Xn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Xn.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,a=await this._pc.createOffer(),o=zn.parse(a.sdp);const c=Gn.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=Hn.reduceCodecs(c.codecs);const d=Gn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=Hn.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Xn.debug("send() | enabling simulcast"),o=zn.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),Qn.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:zn.write(o)}),Xn.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=zn.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=Kn.getCname({offerMediaObject:s}),c.encodings=Qn.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};Xn.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(),Xn.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();Xn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Xn.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()};Xn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new Wn.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Wn.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Wn.UnsupportedError("not implemented")}async getSenderStats(e){throw new Wn.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Xn.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Zn.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=zn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Xn.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()};Xn.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:n}=t;Xn.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;let a=n.rtcp.cname;Xn.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Gn.generateRandomNumber()}`,i.set(e,a),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:a,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Xn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=zn.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=a.media.find((e=>String(e.mid)===i));Kn.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}s={type:"answer",sdp:zn.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Xn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{kind:e,trackId:n,rtpParameters:s}=t,a=n,o=e,c=i.get(n),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:s}),r.push({localId:a,track:p})}return r}async stopReceiving(e){this._assertRecvDirection(),Xn.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()};Xn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();Xn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Wn.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};Xn.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()};Xn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=zn.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Xn.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=zn.parse(this._pc.localDescription.sdp));const r=Kn.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')}}Bn.ReactNative=es;var ts=K&&K.__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=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),is=K&&K.__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)&&ts(t,e,r);return rs(t,e),t},ns=K&&K.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ve,"__esModule",{value:!0}),ve.Device=ve.detectDevice=void 0;const ss=ns(be.exports),as=we,os=ke,cs=Ee,ds=is(Oe),ps=is(xe),ls=Xe,us=At,hs=jr,fs=Yr,ms=hi,gs=Di,ys=Wi,vs=on,bs=Sn,ws=Bn,_s=new as.Logger("Device");function Ss(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return"undefined"==typeof RTCPeerConnection?void _s.warn("this._detectDevice() | unsupported ReactNative without RTCPeerConnection"):(_s.debug("this._detectDevice() | ReactNative handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)_s.warn("this._detectDevice() | unknown device");else{const e=navigator.userAgent,t=ss.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"}_s.warn("this._detectDevice() | browser not supported [name:%s, version:%s]",t.getBrowserName(),t.getBrowserVersion())}}ve.detectDevice=Ss;ve.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new os.EnhancedEventEmitter,_s.debug("constructor()"),r){if(_s.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)_s.debug("constructor() | handler given: %s",e);else{if(!(e=Ss()))throw new cs.UnsupportedError("device not supported");_s.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome74":this._handlerFactory=us.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=hs.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=fs.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=ms.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=gs.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=ys.Safari12.createFactory();break;case"Safari11":this._handlerFactory=vs.Safari11.createFactory();break;case"Edge11":this._handlerFactory=bs.Edge11.createFactory();break;case"ReactNative":this._handlerFactory=ws.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 cs.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new cs.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;_s.debug("load() [routerRtpCapabilities:%o]",e),e=ds.clone(e,void 0);try{if(this._loaded)throw new cs.InvalidStateError("already loaded");ps.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();_s.debug("load() | got native RTP capabilities:%o",r),ps.validateRtpCapabilities(r),this._extendedRtpCapabilities=ps.getExtendedRtpCapabilities(r,e),_s.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=ps.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=ps.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=ps.getRecvRtpCapabilities(this._extendedRtpCapabilities),ps.validateRtpCapabilities(this._recvRtpCapabilities),_s.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),_s.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),ps.validateSctpCapabilities(this._sctpCapabilities),_s.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new cs.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:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return _s.debug("createSendTransport()"),this._createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return _s.debug("createRecvTransport()"),this._createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}_createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p={}}){if(!this._loaded)throw new cs.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 n)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(p&&"object"!=typeof p)throw new TypeError("if given, appData must be an object");const l=new ls.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,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 Rs={},ks={};Object.defineProperty(ks,"__esModule",{value:!0});var Ps,Cs,Ts,Es,Ds,Ms={};Object.defineProperty(Ms,"__esModule",{value:!0}),function(e){var t=K&&K.__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=K&&K.__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(ve,e),r(Xe,e),r(tt,e),r(at,e),r(lt,e),r(gt,e),r(ks,e),r(Ms,e),r(tr,e),r(Ee,e)}(Rs),function(e){var t=K&&K.__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=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=K&&K.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i},n=K&&K.__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 s=n(ce.exports);e.debug=s.default;const a=ve;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(Rs);e.types=o,e.version="3.6.50";var c=vr;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(oe);class Os{constructor(e){this.score=10,this.producerScore=10,this.spatialLayers=0,this.temporalLayers=0,this.currentSpatialLayer=0,this.currentTemporalLayer=0,this.availableSpatialLayers=[],this.id=e.id,this.kind=e.kind,this.producerId=e.producerId,this.appData=e.appData,this.consumer=e,this.logger=new se("PeerConsumer"),this.currentMaxSpatialLayer=this.appData.producerData.maxSpatialLayer,this.parseScalabilityMode(),this.setSpatialLayersParams(),this.setCurrentSpatialLayerParams()}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}=oe.parseScalabilityMode(e);this.spatialLayers=t,this.temporalLayers=r,this.logger.debug("parseScalabilityMode()",{scalabilityMode:e,spatialLayers:t,temporalLayers:r})}}setSpatialLayersParams(){const{encodings:e}=this.appData.producerData;e&&(this.availableSpatialLayers=e.map((e=>this.parseSpatialLayerParams(e))))}setCurrentSpatialLayerParams(){const{encodings:e}=this.appData.producerData;e&&(this.currentSpatialLayerParams=this.parseSpatialLayerParams(e[this.currentSpatialLayer]),this.logger.debug("setCurrentSpatialLayerParams()",{currentSpatialLayerParams:this.currentSpatialLayerParams}))}parseSpatialLayerParams(e){const{trackTransformParams:t}=this.appData.producerData;if(!t)return e;const{width:r,height:i}=t,n=e.scaleResolutionDownBy||1;return r&&i?Object.assign({width:r/n,height:i/n},e):e}setCurrentSpatialLayer(e){if(!this.isVideo)throw new Error("setCurrentSpatialLayer applies to video consumers only");this.currentSpatialLayer=e,this.logger.debug("setCurrentSpatialLayer()",{currentSpatialLayer:e}),this.setCurrentSpatialLayerParams()}setCurrentTemporalLayer(e){if(!this.isVideo)throw new Error("setCurrentTemporalLayer applies to video consumers only");this.currentTemporalLayer=e,this.logger.debug("setCurrentTemporalLayer()",{currentTemporalLayer:e})}setRequestedSpatialLayer(e){this.requestedSpatialLayer=e}setCurrentMaxSpatialLayer(e){this.currentMaxSpatialLayer=e}}class xs{constructor(e){this.label=c.Unknown,Ps.set(this,void 0),Cs.set(this,new se("PeerTrack")),Ts.set(this,void 0),Es.set(this,void 0),this.mediaStreamTrack=e.mediaStreamTrack,this.label=e.label,this.consumer=e.consumer,n(this,Ps,e.engine,"f"),n(this,Ts,e.peerEventEmitter,"f"),n(this,Es,e.isPaused,"f"),i(this,Ts,"f").safeEmit(_,this)}get isPaused(){return i(this,Es,"f")}get consumerId(){var e;return null===(e=this.consumer)||void 0===e?void 0:e.id}get currentSpatialLayer(){var e;return(null===(e=this.consumer)||void 0===e?void 0:e.currentSpatialLayer)||0}close(){var e;null===(e=this.consumer)||void 0===e||e.close(),i(this,Ts,"f").safeEmit(S,this)}pause(){return r(this,void 0,void 0,(function*(){if(!this.consumer)return n(this,Es,!0,"f"),void i(this,Ts,"f").safeEmit(R,this);if(i(this,Es,"f"))i(this,Cs,"f").debug("pause()",{message:"Already paused",peer:this,consumer:this.consumer});else try{yield this.pauseRemoteConsumer(this.consumer.id),this.consumer.pause(),n(this,Es,!0,"f"),i(this,Ts,"f").safeEmit(R,this),i(this,Cs,"f").debug("pause()",{peer:this,consumer:this.consumer})}catch(e){i(this,Cs,"f").warn("pause()",e)}}))}resume(){return r(this,void 0,void 0,(function*(){if(!this.consumer)return n(this,Es,!1,"f"),void i(this,Ts,"f").safeEmit(k,this);if(i(this,Es,"f"))try{yield this.resumeRemoteConsumer(this.consumer.id),this.consumer.resume(),n(this,Es,!1,"f"),i(this,Ts,"f").safeEmit(k,this),i(this,Cs,"f").debug("resume()",{peer:this})}catch(e){i(this,Cs,"f").warn("resume()",e)}else i(this,Cs,"f").debug("resume()",{message:"Already playing",peer:this,consumer:this.consumer})}))}setPriority(e){return r(this,void 0,void 0,(function*(){this.consumer&&(yield this.setConsumerPriority({consumerId:this.consumer.id,priority:e}))}))}setConsumerPriority(e){return r(this,void 0,void 0,(function*(){try{yield i(this,Ps,"f").network.socket.request(B,e),i(this,Cs,"f").debug("setConsumerPriority()",{peer:this,params:e})}catch(t){throw i(this,Cs,"f").error("setConsumerPriority()",{peer:this,params:e}),new Error("Can`t change stream priority")}}))}pauseRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return i(this,Ps,"f").network.socket.request(j,{consumerId:e})}))}resumeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return i(this,Ps,"f").network.socket.request(A,{consumerId:e})}))}requestVideoPreferredLayers({spatialLayer:e,temporalLayer:t}){return r(this,void 0,void 0,(function*(){if(this.consumer)try{if(this.consumer.isAudio)return void i(this,Cs,"f").warn("requestVideoPreferredLayers()",{message:"Only video consumers support"});if(e===this.consumer.currentSpatialLayer)return;if(e>this.consumer.spatialLayers)return void i(this,Cs,"f").warn("requestVideoPreferredLayers()",{message:"Invalid spatial layer"});if(e>this.consumer.currentMaxSpatialLayer)return void(yield this.requestMaxSpatialLayer(this.consumer.id,e));yield i(this,Ps,"f").network.socket.request(N,{consumerId:this.consumer.id,spatialLayer:e,temporalLayer:t}),i(this,Cs,"f").debug("requestVideoPreferredLayers()",{peer:this,consumer:this.consumer,spatialLayer:e,temporalLayer:t})}catch(e){throw i(this,Cs,"f").error("requestVideoPreferredLayers()",{peer:this,consumerId:this.consumer.id,error:e}),new Error("Error request preferred layers")}}))}getVideoAvailableLayers(){if(this.consumer){if(!this.consumer.isAudio)return this.consumer.availableSpatialLayers;i(this,Cs,"f").warn("getVideoAvailableLayers()",{message:"Only video consumers support"})}}requestMaxSpatialLayer(e,t){return r(this,void 0,void 0,(function*(){try{if(!this.consumer)return;if(this.consumer.isAudio||0===this.consumer.spatialLayers||this.consumer.currentMaxSpatialLayer===t||t<this.consumer.currentMaxSpatialLayer)return void i(this,Cs,"f").warn("requestMaxSpatialLayer()",{message:"Can`t request this spatial layer",consumerId:e,spatialLayer:t});this.consumer.setRequestedSpatialLayer(t),yield i(this,Ps,"f").network.socket.request(x,{producerId:this.consumer.producerId,spatialLayer:t}),i(this,Cs,"f").debug("requestMaxSpatialLayer()",{consumerId:e,spatialLayer:t})}catch(r){i(this,Cs,"f").warn("requestMaxSpatialLayer()",{message:"Error request spatial layer",consumerId:e,spatialLayer:t,error:r})}}))}}Ps=new WeakMap,Cs=new WeakMap,Ts=new WeakMap,Es=new WeakMap,function(e){e[e.BAD=4]="BAD",e[e.MEDIUM=6]="MEDIUM",e[e.GOOD=10]="GOOD"}(Ds||(Ds={}));class Is{constructor({id:e,channelIds:t,appId:r,loginDate:i=new Date,producers:n=[],engine:a,appData:c,uid:d,role:p}){this.producers=new Map,this.tracks=new Map,this._observer=new s,this.incomingConnectionQuality=o.GOOD,this.outgoingConnectionQuality=o.GOOD,this.overallConnectionQuality=o.GOOD,this.id=e,this.channelIds=t,this.appId=r,this.loginDate=i,this.appData=c||{},this.uid=d,this.role=p,this.engine=a,this.logger=new se("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)}))}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(I,{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);r.producerPaused||(yield this.engine.network.socket.request(A,{consumerId:i.id})),this.logger.debug(`Subscribed for ${e.kind}`,{peer:this});const n=new xs({mediaStreamTrack:i.track,label:e.label,consumer:new Os(i),engine:this.engine,isPaused:r.producerPaused,peerEventEmitter:this.observer});this.tracks.set(n.label,n)}catch(t){throw this.logger.error("createConsumer()",e,t),new Error("Error subscribe media")}}))}handleNewProducer(e){if(this.producers.get(e.id))return;const t=new ae(e);this.producers.set(t.id,t),this.logger.debug("Peer published media:",{peer:this,producer:t}),this.observer.safeEmit(v,{producerId:t.id,kind:t.kind,label:t.label})}handlePeerEvents(){this.observer.on(C,this.handleNewProducer.bind(this)),this.observer.on(T,(e=>{this.producers.delete(e.id),this.logger.debug("Peer unpublished media:",{peer:this,producer:e}),this.observer.safeEmit(b,{producerId:e.id,kind:e.kind,label:e.label})})),this.observer.on(L,(e=>{const t=this.getTrackByConsumerId(e);t&&(t.close(),this.tracks.delete(t.label),this.logger.debug("Peer video track was ended:",{peer:this}))})),this.observer.on(j,(e=>r(this,void 0,void 0,(function*(){const t=this.getTrackByConsumerId(e);t&&(yield t.pause())})))),this.observer.on(A,(e=>r(this,void 0,void 0,(function*(){const t=this.getTrackByConsumerId(e);t&&(yield t.resume())})))),this.observer.on(F,(e=>{if(this.isMe)return;const t=this.getConsumerById(e.consumerId);if(!t)return;const{score:r,producerScore:i}=e;t.score=r,t.producerScore=i;const n=this.getAllConsumers().map((e=>e.producerScore)),s=Math.min(...n);this.outgoingConnectionQuality=Is.getConnectionQualityByScore(s),this.emitConnectionQuality()})),this.observer.on(F,(()=>{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=o.GOOD;else{const t=e.map((e=>e)).reduce(((e,t)=>e+t),0),r=Math.floor(t/e.length);this.incomingConnectionQuality=Is.getConnectionQualityByScore(r)}this.emitConnectionQuality()})),this.observer.on(M,(e=>{var t;if(!this.isMe)return;const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e.producerId}));if(!r)return;const i=null===(t=r.getProducer())||void 0===t?void 0:t.maxSpatialLayer,{scores:n}=e;if(0===n.length)return;let{score:s}=n[0];if(n.length>1&&0!==i){i&&n.splice(i+1);const e=n.map((({score:e})=>e)).reduce(((e,t)=>e+t),0);s=Math.floor(e/n.length)}this.outgoingConnectionQuality=Is.getConnectionQualityByScore(s),this.emitConnectionQuality()})),this.observer.on(N,(e=>{const t=this.getConsumerById(e.consumerId);(null==t?void 0:t.isVideo)&&(t.setCurrentTemporalLayer(e.temporalLayer),t.setCurrentSpatialLayer(e.spatialLayer),e.spatialLayer===t.requestedSpatialLayer&&t.setRequestedSpatialLayer(void 0),this.logger.debug("consumerChangePreferredLayers()",Object.assign({consumer:t},e)))})),this.observer.on(O,(e=>r(this,void 0,void 0,(function*(){const{producerId:t,spatialLayer:r}=e,i=this.getConsumerByProducerId(t);i?(i.setCurrentMaxSpatialLayer(r),this.logger.debug("producerSetMaxSpatialLayer()",{producerId:t,consumerId:i.id,spatialLayer:r}),i.requestedSpatialLayer===r?(yield this.engine.network.socket.request(N,{consumerId:i.id,spatialLayer:r}),this.logger.debug("requestVideoPreferredLayers()",{producerId:t,consumerId:i.id,spatialLayer:r})):this.logger.debug("producerSetMaxSpatialLayer()",{message:"No need to request new preferred layer",currentMaxSpatialLayer:r,requestedMaxSpatialLayer:i.requestedSpatialLayer})):this.logger.debug("producerSetMaxSpatialLayer()",{message:"Consumer for producer not created, ignore MaxSpatialLayer change"})}))))}emitConnectionQuality(){setTimeout((()=>{const e=Math.min(this.outgoingConnectionQuality,this.incomingConnectionQuality);e!==this.overallConnectionQuality&&(this.observer.safeEmit(w,{connectionQuality:e}),this.overallConnectionQuality=e,this.logger.debug("emitConnectionQuality()",{peer:this,connectionQuality:e}))}),1e3)}static getConnectionQualityByScore(e){return e<Ds.BAD?o.BAD:e<Ds.MEDIUM?o.MEDIUM:o.GOOD}getAllConsumers(){return Array.from(this.tracks.values()).map((e=>e.consumer)).filter((e=>!!e))}getConsumerByProducerId(e){return this.getAllConsumers().find((t=>t.producerId===e))}getConsumerById(e){return this.getAllConsumers().find((t=>t.id===e))}getTrackByConsumerId(e){return Array.from(this.tracks.values()).find((t=>t.consumerId===e))}}const Ls=[{scaleResolutionDownBy:4,maxBitrate:15e4,maxFramerate:12},{scaleResolutionDownBy:2,maxBitrate:35e4,maxFramerate:18},{scaleResolutionDownBy:1,maxBitrate:9e5,maxFramerate:24}],js=[{maxBitrate:1e6,dtx:!0}];var As;class Fs{constructor(e){As.set(this,void 0),this.encoderConfig={},this.label=c.Unknown,this.logger=new se("Track"),n(this,As,e,"f")}get mediaStreamTrack(){return i(this,As,"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}setPriority(e){return r(this,void 0,void 0,(function*(){this.producer?(yield this.producer.setRtpEncodingParameters({priority:e}),this.logger.debug("setPriority()",{label:this.getLabel(),priority:e})):this.logger.warn("setPriority()","Not published yet")}))}}As=new WeakMap;class Ns extends Fs{constructor(){super(...arguments),this.transformParams={}}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){return this.getEncoderConfig().preferredCodec||"h264"}getEncodings(){return this.getEncoderConfig().encodings||Ls}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return r(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}}class Bs extends Fs{getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{opusFec:this.getEncoderConfig().enableFec||!0}}}const Us={width:1280,height:720},qs={width:1920,height:1080};var $s;class zs{constructor(){this.isDeviceLoaded=!1,this.tracks=new Map,$s.set(this,new se("Media"))}get mediasoupDevice(){return this.device||(this.device=new oe.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 Ns&&(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 Bs(t):new Ns(t);return this.tracks.set(r.id,r),i(this,$s,"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,$s,"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,$s,"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)||qs.width},height:{ideal:(null==e?void 0:e.height)||qs.height}},transformParams:{width:(null==e?void 0:e.width)||Us.width,height:(null==e?void 0:e.height)||Us.height},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:js}}}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)||Us.width},height:{ideal:(null==e?void 0:e.height)||Us.height}},transformParams:{width:(null==e?void 0:e.width)||Us.width,height:(null==e?void 0:e.height)||Us.height},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:Ls}}}}$s=new WeakMap;const Vs=new se("Retry"),Ws=new class{sleepMs(e){return r(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},Gs=(e,t={})=>r(void 0,void 0,void 0,(function*(){var r;const i=t.maxRetries||2,n=t.minBackoffDelayMs||50;let s,a=0;for(;a<i;){a+=1;try{return yield e()}catch(e){if(s=e,Vs.warn("Action retry failed",a,t.actionName,e),a<i){const e=Math.pow(2,a-1)*n;yield Ws.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw s}));class Hs{constructor(e){this.initialized=!1,this.isJoined=!1,this.isRoomJoining=!1;const{clientEventEmitter:t,network:r,dependenciesFactory:i}=e;this.system=i.createSystem(t),this.media=i.createMedia(),this.network=i.createNetwork(r),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=i.createChannelEventHandler(this),this.mediaSoupEventsHandler=i.createMediaSoupEventHandler(this),this.logger=new se("Engine",e.onLogMessage),this.webRtcIssueDetector=i.createIssueDetector({logger:this.logger}),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),this.webRtcIssueDetector.watchNewPeerConnections(),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.webRtcIssueDetector.stopWatchingNewPeerConnections(),this.webRtcIssueDetector.resetWatchedPeerConnectionsList(),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(E,{producerId:e})}))}resumeRemoteProducer(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(D,{producerId:e})}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{const{state:t,code:r}=e;this.clientEventEmitter.emit(t,{code:r}),t===P.Reconnecting&&(this.network.socket.disconnect(),this.clientEventEmitter.emit(g))}))}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,yield this.connectToSocketServerWithRetry(e),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(l,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=new Is(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){var t;return r(this,void 0,void 0,(function*(){const r=e.getProducer();if(r)try{yield this.pauseRemoteProducer(r.id),r.pause();const i=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==i||i.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){var t;return r(this,void 0,void 0,(function*(){const r=e.getProducer();if(r)try{yield this.resumeRemoteProducer(r.id),r.resume(),this.logger.debug("resume()",{kind:e.kind});const i=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==i||i.resume()}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=zs.getCameraVideoTrackParams(e);try{const[e]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});return e instanceof Ns&&(e.setLabel(c.Camera),e.setEncoderConfig(t.encoderConfig),e.setTransformParams(t.transformParams)),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(c.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=zs.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)})),r instanceof Ns)return r.setLabel(c.ScreenVideo),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(t.transformParams),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,track:r});r.setLabel(c.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,r;const i="getEncodings"in e?e.getEncodings():void 0,n="getCodecOptions"in e?e.getCodecOptions():void 0,s=i&&i.length>=1?1:0,a={peerId:this.mySocketId,label:e.getLabel(),trackTransformParams:{},maxSpatialLayer:0};e instanceof Ns&&(a.maxSpatialLayer=s,a.trackTransformParams=e.transformParams);const o=yield null===(t=this.network.sendTransport)||void 0===t?void 0:t.produce({track:e.mediaStreamTrack,encodings:i,codecOptions:n,codec:this.media.getTrackCodec(e),stopTracks:!0,disableTrackOnPause:!0,zeroRtpOnPause:!0,appData:a});if(!o)return;e.setProducer(o),e instanceof Ns&&(yield e.setMaxSpatialLayer(s),yield this.network.socket.request(O,{producerId:null===(r=e.getProducer())||void 0===r?void 0:r.id,maxSpatialLayer:s})),e instanceof Bs&&(yield e.setPriority("high"));const c=this.peersRepository.get(this.mySocketId);if(!c)return;const d=new xs({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this,isPaused:o.paused,peerEventEmitter:c.observer});c.tracks.set(d.label,d),this.logger.debug("publish()",{track:e,encodings:i,codecOptions:n})}))));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;const i=e.getProducer();i&&(null===(t=this.network.socket.connection)||void 0===t?void 0:t.connected)&&(yield this.network.closeRemoteProducer(i.id));const n=null===(r=this.myPeer)||void 0===r?void 0:r.tracks.get(e.getLabel());null==n||n.close(),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}connectToSocketServerWithRetry(e){return r(this,void 0,void 0,(function*(){return Gs((()=>r(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer"})}))}connectToSocketServer(e){return r(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t);try{yield this.waitForSocketConnection()}catch(t){throw this.logger.error("Failed to connect to socket server",{error:t,role:e.role,channelId:e.channelId}),this.network.socket.disconnect(),t}}))}getAvailableNode(e){return r(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const i=n=>r(this,void 0,void 0,(function*(){const{error:r,state:s}=n,a=()=>this.network.socket.observer.removeListener("state",i),o=[P.Disconnected,P.Reconnecting].includes(s);if(r||this.isRoomJoining&&o)return a(),void t(r||"Not expected socket state for new connection");this.isRoomJoining&&[P.Connected,P.Reconnected].includes(s)&&(a(),e())}));this.network.socket.observer.on("state",i)}))}performJoin(e){return r(this,void 0,void 0,(function*(){try{yield this.sendJoinChannelRequestWithRetry(e),this.app=e.appId,this.channel=e.channelId,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),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}}))}sendJoinChannelRequestWithRetry(e){return r(this,void 0,void 0,(function*(){return Gs((()=>r(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest"})}))}sendJoinChannelRequest(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(p,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}get myPeer(){return this.peers.find((e=>e.isMe))}}class Ks{constructor(e){const{socketClient:t,loadBalancerApiClient:r}=e;this.socket=t,this.loadBalancerClient=r,this.logger=new se("Network")}closeRemoteProducer(e){return r(this,void 0,void 0,(function*(){yield this.socket.request(T,{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(q,{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(U,{sctpCapabilities:e.sctpCapabilities,localDirection:"out"});this.sendTransport=e.createSendTransport(t),this.logger.debug("createSendTransport()",{transport:this.sendTransport}),this.sendTransport.on(G,(({dtlsParameters:e},i,n)=>r(this,void 0,void 0,(function*(){var r;try{yield this.socket.request($,{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}),n(r)}})))),this.sendTransport.on(H,((e,t,i)=>r(this,void 0,void 0,(function*(){var r;try{const{id:i}=yield this.socket.request(z,{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(V,(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(U,{sctpCapabilities:e.sctpCapabilities,localDirection:"in"});this.receiveTransport=e.createRecvTransport(t),this.logger.debug("createRecvTransport()",{transport:this.receiveTransport}),this.receiveTransport.on(G,(({dtlsParameters:e},t,i)=>r(this,void 0,void 0,(function*(){var r;try{yield this.socket.request($,{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(V,(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(W,{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})}}))}}class Qs{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 se("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(y,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}}class Js{constructor(e){this.engine=e,this.logger=new se("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(d,(e=>{this.engine.clientEventEmitter.safeEmit(h,e),this.logger.debug("New channel event",{event:e})})),e.on(p,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(f,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(u,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(m,e),this.logger.debug("Peer left the channel",{peerId:e})}))}}class Ys{constructor(e){this.engine=e,this.logger=new se("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(T,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(T,e)})),e.on(C,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(C,e)})),e.on(L,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(L,e)})),e.on(A,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(A,e)})),e.on(j,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(j,e)})),e.on(N,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const n=this.engine.peers.find((t=>t.id===e));n&&!n.isMe&&n.observer.safeEmit(N,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(F,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(F,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(F,e)})),e.on(M,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(M,e)})),e.on(x,(({producerId:e,spatialLayer:t})=>r(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof Ns))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const i=r.getMaxSpatialLayer();i!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(O,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})})))),e.on(O,(({peerId:e,producerId:t,spatialLayer:i})=>r(this,void 0,void 0,(function*(){const r=this.engine.peers.find((t=>t.id===e));r&&!r.isMe&&r.observer.safeEmit(O,{peerId:e,producerId:t,spatialLayer:i})}))))}}var Xs={};function Zs(){}function ea(){ea.init.call(this)}function ta(e){return void 0===e._maxListeners?ea.defaultMaxListeners:e._maxListeners}function ra(e,t,r){if(t)e.call(r);else for(var i=e.length,n=pa(e,i),s=0;s<i;++s)n[s].call(r)}function ia(e,t,r,i){if(t)e.call(r,i);else for(var n=e.length,s=pa(e,n),a=0;a<n;++a)s[a].call(r,i)}function na(e,t,r,i,n){if(t)e.call(r,i,n);else for(var s=e.length,a=pa(e,s),o=0;o<s;++o)a[o].call(r,i,n)}function sa(e,t,r,i,n,s){if(t)e.call(r,i,n,s);else for(var a=e.length,o=pa(e,a),c=0;c<a;++c)o[c].call(r,i,n,s)}function aa(e,t,r,i){if(t)e.apply(r,i);else for(var n=e.length,s=pa(e,n),a=0;a<n;++a)s[a].apply(r,i)}function oa(e,t,r,i){var n,s,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]):(s=e._events=new Zs,e._eventsCount=0),a){if("function"==typeof a?a=s[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&((n=ta(e))&&0<n&&a.length>n)){a.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=e,o.type=t,o.count=a.length,function(e){"function"==typeof console.warn?console.warn(e):console.log(e)}(o)}}else a=s[t]=r,++e._eventsCount;return e}function ca(e,t,r){function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}var n=!1;return i.listener=r,i}function da(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function pa(e,t){for(var r=Array(t);t--;)r[t]=e[t];return r}Object.defineProperty(Xs,"__esModule",{value:!0}),Zs.prototype=Object.create(null),ea.EventEmitter=ea,ea.usingDomains=!1,ea.prototype.domain=void 0,ea.prototype._events=void 0,ea.prototype._maxListeners=void 0,ea.defaultMaxListeners=10,ea.init=function(){this.domain=null,ea.usingDomains&&undefined.active&&!(this instanceof undefined.Domain)&&(this.domain=undefined.active),this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Zs,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},ea.prototype.setMaxListeners=function(e){if("number"!=typeof e||0>e||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},ea.prototype.getMaxListeners=function(){return ta(this)},ea.prototype.emit=function(e){var t,r,i,n,s,a,o,c="error"===e;if(a=this._events)c=c&&null==a.error;else if(!c)return!1;if(o=this.domain,c){if(t=arguments[1],!o){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=o,t.domainThrown=!1,o.emit("error",t),!1}if(!(r=a[e]))return!1;var p="function"==typeof r;switch(i=arguments.length){case 1:ra(r,p,this);break;case 2:ia(r,p,this,arguments[1]);break;case 3:na(r,p,this,arguments[1],arguments[2]);break;case 4:sa(r,p,this,arguments[1],arguments[2],arguments[3]);break;default:for(n=Array(i-1),s=1;s<i;s++)n[s-1]=arguments[s];aa(r,p,this,n)}return!0},ea.prototype.addListener=function(e,t){return oa(this,e,t,!1)},ea.prototype.on=ea.prototype.addListener,ea.prototype.prependListener=function(e,t){return oa(this,e,t,!0)},ea.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,ca(this,e,t)),this},ea.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,ca(this,e,t)),this},ea.prototype.removeListener=function(e,t){var r,i,n,s,a;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Zs:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length;0<s--;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=r[s].listener,n=s;break}if(0>n)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Zs,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,n=e.length;i<n;r+=1,i+=1)e[r]=e[i];e.pop()}(r,n);i.removeListener&&this.emit("removeListener",e,a||t)}return this},ea.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Zs,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Zs:delete r[e]),this;if(0===arguments.length){for(var i,n=Object.keys(r),s=0;s<n.length;++s)"removeListener"!==(i=n[s])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Zs,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},ea.prototype.listeners=function(e){var t,r,i=this._events;return i?r=(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]:r=[],r},ea.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):da.call(e,t)},ea.prototype.listenerCount=da,ea.prototype.eventNames=function(){return 0<this._eventsCount?Reflect.ownKeys(this._events):[]};var la,ua=new Uint8Array(16);function ha(){if(!la&&!(la="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return la(ua)}var fa=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function ma(e){return"string"==typeof e&&fa.test(e)}for(var ga=[],ya=0;256>ya;++ya)ga.push((ya+256).toString(16).substr(1));function va(e,t,r){var i=(e=e||{}).random||(e.rng||ha)();if(i[6]=64|15&i[6],i[8]=128|63&i[8],t){r=r||0;for(var n=0;16>n;++n)t[r+n]=i[n];return t}return function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,r=(ga[e[t+0]]+ga[e[t+1]]+ga[e[t+2]]+ga[e[t+3]]+"-"+ga[e[t+4]]+ga[e[t+5]]+"-"+ga[e[t+6]]+ga[e[t+7]]+"-"+ga[e[t+8]]+ga[e[t+9]]+"-"+ga[e[t+10]]+ga[e[t+11]]+ga[e[t+12]]+ga[e[t+13]]+ga[e[t+14]]+ga[e[t+15]]).toLowerCase();if(!ma(r))throw TypeError("Stringified UUID is invalid");return r}(i)}function ba(e,t){if(!e||!t)return{};const r={...e};if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}return r}function wa(e,t,r){return 8*function(e,t,r){const i=e[r],n=t?t[r]:null;return null===i||null===n?null:(i-n)/(e.timestamp-t.timestamp)*1e3}(e,t,r)}function _a(e){if(!e.entries)return e;const t={};return e.forEach((function(e,r){t[r]=e})),t}function Sa(e,t,r={}){if(!e)return null;let i={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{inbound:[],outbound:[]}};r.remote&&(i.remote={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]}});for(const t of e.values())switch(t.type){case"outbound-rtp":{const r=t.mediaType||t.kind,n={};let s={};if(!["audio","video"].includes(r))continue;if(t.codecId){const r=e.get(t.codecId);r&&(n.clockRate=r.clockRate,n.mimeType=r.mimeType,n.payloadType=r.payloadType)}s=e.get(t.mediaSourceId)||e.get(t.trackId)||{},i[r].outbound.push({...t,...n,track:{...s}});break}case"inbound-rtp":{let r=t.mediaType||t.kind,n={};const s={};if(!["audio","video"].includes(r))if(t.id.includes("Video"))r="video";else{if(!t.id.includes("Audio"))continue;r="audio"}if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}if(!i.connection.id&&t.transportId){const r=e.get(t.transportId);if(r&&r.selectedCandidatePairId){const t=e.get(r.selectedCandidatePairId);i.connection=ba(t,e)}}n=e.get(t.mediaSourceId)||e.get(t.trackId)||{},i[r].inbound.push({...t,...s,track:{...n}});break}case"peer-connection":i.connection.dataChannelsClosed=t.dataChannelsClosed,i.connection.dataChannelsOpened=t.dataChannelsOpened;break;case"remote-inbound-rtp":{if(!r.remote)break;let n=t.mediaType||t.kind;const s={};if(!["audio","video"].includes(n))if(t.id.includes("Video"))n="video";else{if(!t.id.includes("Audio"))continue;n="audio"}if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}if(!i.connection.id&&t.transportId){const r=e.get(t.transportId);if(r&&r.selectedCandidatePairId){const t=e.get(r.selectedCandidatePairId);i.connection=ba(t,e)}}i.remote[n].inbound.push({...t,...s});break}case"remote-outbound-rtp":{if(!r.remote)break;const n=t.mediaType||t.kind,s={};if(!["audio","video"].includes(n))continue;if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}i.remote[n].outbound.push({...t,...s});break}}if(!i.connection.id)for(const t of e.values())"candidate-pair"===t.type&&t.nominated&&"succeeded"===t.state&&(i.connection=ba(t,e));return i=function(e,t){return t?(e.audio.inbound.map((e=>{let r=t.audio.inbound.find((t=>t.id===e.id));e.bitrate=wa(e,r,"bytesReceived"),e.packetRate=wa(e,r,"packetsReceived")})),e.audio.outbound.map((e=>{let r=t.audio.outbound.find((t=>t.id===e.id));e.bitrate=wa(e,r,"bytesSent"),e.packetRate=wa(e,r,"packetsSent")})),e.video.inbound.map((e=>{let r=t.video.inbound.find((t=>t.id===e.id));e.bitrate=wa(e,r,"bytesReceived"),e.packetRate=wa(e,r,"packetsReceived")})),e.video.outbound.map((e=>{let r=t.video.outbound.find((t=>t.id===e.id));e.bitrate=wa(e,r,"bytesSent"),e.packetRate=wa(e,r,"packetsSent")})),e):e}(i,t),i}let Ra={};var ka,Pa,Ca,Ta,Ea,Da,Ma,Oa,xa,Ia,La,ja,Aa=Xs.WebRTCStats=class extends ea{constructor(e){if(super(),this.monitoringSetInterval=0,this.connectionMonitoringSetInterval=0,this.connectionMonitoringInterval=1e3,this.remote=!0,this.peersToMonitor={},this.timeline=[],this.statsToMonitor=["inbound-rtp","outbound-rtp","remote-inbound-rtp","remote-outbound-rtp","peer-connection","data-channel","stream","track","sender","receiver","transport","candidate-pair","local-candidate","remote-candidate"],"undefined"==typeof window)throw new Error("WebRTCStats only works in browser");const t={...e};this.isEdge=!!window.RTCIceGatherer,this.getStatsInterval=t.getStatsInterval||1e3,this.rawStats=!!t.rawStats,this.statsObject=!!t.statsObject,this.filteredStats=!!t.filteredStats,this.shouldWrapGetUserMedia=!!t.wrapGetUserMedia,"boolean"==typeof t.remote&&(this.remote=t.remote),this.debug=!!t.debug,this.logLevel=t.logLevel||"none",this.shouldWrapGetUserMedia&&this.wrapGetUserMedia()}async addPeer(e,t){return console.warn("The addPeer() method has been deprecated, please use addConnection()"),this.addConnection({peerId:e,pc:t})}async addConnection(e){const{pc:t,peerId:r}=e;let{connectionId:i,remote:n}=e;if(n="boolean"==typeof n?n:this.remote,!(t&&t instanceof RTCPeerConnection))throw new Error("Missing argument 'pc' or is not of instance RTCPeerConnection");if(!r)throw new Error("Missing argument peerId");if(this.isEdge)throw new Error("Can't monitor peers in Edge at this time.");if(this.peersToMonitor[r]){if(i&&i in this.peersToMonitor[r])throw new Error(`We are already monitoring connection with id ${i}.`);for(let e in this.peersToMonitor[r]){const i=this.peersToMonitor[r][e];if(i.pc===t)throw new Error(`We are already monitoring peer with id ${r}.`);"closed"===i.pc.connectionState&&this.removeConnection({peerId:r,pc:i.pc})}}const s=t.getConfiguration();return s.iceServers&&s.iceServers.forEach((function(e){delete e.credential})),i||(i=va()),this.emitEvent({event:"addConnection",tag:"peer",peerId:r,connectionId:i,data:{options:e,peerConfiguration:s}}),this.monitorPeer({peerId:r,connectionId:i,pc:t,remote:n}),{connectionId:i}}getTimeline(e){return this.timeline=this.timeline.sort(((e,t)=>e.timestamp.getTime()-t.timestamp.getTime())),e?this.timeline.filter((t=>t.tag===e)):this.timeline}monitorPeer(e){let{peerId:t,connectionId:r,pc:i,remote:n}=e;if(!i)return void this.logger.warn("Did not receive pc argument when calling monitorPeer()");const s={pc:i,connectionId:r,stream:null,stats:{parsed:null,raw:null},options:{remote:n}};if(this.peersToMonitor[t]){if(r in this.peersToMonitor[t])return void this.logger.warn(`Already watching connection with ID ${r}`);this.peersToMonitor[t][r]=s}else this.peersToMonitor[t]={[r]:s};this.addPeerConnectionEventListeners(t,r,i),1===this.numberOfMonitoredPeers&&(this.startStatsMonitoring(),this.startConnectionStateMonitoring())}startStatsMonitoring(){this.monitoringSetInterval||(this.monitoringSetInterval=window.setInterval((()=>{this.numberOfMonitoredPeers||this.stopStatsMonitoring(),this.getStats().then((e=>{e.forEach((e=>{this.emitEvent(e)}))}))}),this._getStatsInterval))}stopStatsMonitoring(){this.monitoringSetInterval&&(window.clearInterval(this.monitoringSetInterval),this.monitoringSetInterval=0)}async getStats(e=null){this.logger.info(e?`Getting stats from peer ${e}`:"Getting stats from all peers");let t={};if(e){if(!this.peersToMonitor[e])throw new Error(`Cannot get stats. Peer with id ${e} does not exist`);t[e]=this.peersToMonitor[e]}else t=this.peersToMonitor;let r=[];for(const e in t)for(const i in t[e]){const n=t[e][i],s=n.pc;if(s&&!this.checkIfConnectionIsClosed(e,i,s))try{const t=this.getTimestamp(),a=s.getStats(null);if(a){const s=await a,o=this.getTimestamp(),c=_a(s),d={remote:n.options.remote},p=Sa(s,n.stats.parsed,d),l={event:"stats",tag:"stats",peerId:e,connectionId:i,timeTaken:o-t,data:p};!0===this.rawStats&&(l.rawStats=s),!0===this.statsObject&&(l.statsObject=c),!0===this.filteredStats&&(l.filteredStats=this.filteroutStats(c)),r.push(l),n.stats.parsed=p}else this.logger.error(`PeerConnection from peer ${e} did not return any stats data`)}catch(e){this.logger.error(e)}}return r}startConnectionStateMonitoring(){this.connectionMonitoringSetInterval=window.setInterval((()=>{this.numberOfMonitoredPeers||this.stopConnectionStateMonitoring();for(const e in this.peersToMonitor)for(const t in this.peersToMonitor[e]){const r=this.peersToMonitor[e][t].pc;this.checkIfConnectionIsClosed(e,t,r)}}),this.connectionMonitoringInterval)}checkIfConnectionIsClosed(e,t,r){const i=this.isConnectionClosed(r);if(i){this.removeConnection({peerId:e,pc:r});let i="closed"===r.connectionState?"onconnectionstatechange":"oniceconnectionstatechange";this.emitEvent({event:i,peerId:e,connectionId:t,tag:"connection",data:"closed"})}return i}isConnectionClosed(e){return"closed"===e.connectionState||"closed"===e.iceConnectionState}stopConnectionStateMonitoring(){this.connectionMonitoringSetInterval&&(window.clearInterval(this.connectionMonitoringSetInterval),this.connectionMonitoringSetInterval=0)}wrapGetUserMedia(){if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)return void this.logger.warn("'navigator.mediaDevices.getUserMedia' is not available in browser. Will not wrap getUserMedia.");this.logger.info("Wrapping getUsermedia functions.");const e=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices),t=this.parseGetUserMedia.bind(this);navigator.mediaDevices.getUserMedia=function(){return t({constraints:arguments[0]}),e.apply(navigator.mediaDevices,arguments).then((e=>(t({stream:e}),e)),(e=>(t({error:e}),Promise.reject(e))))}.bind(navigator.mediaDevices)}filteroutStats(e={}){const t={...e};for(const e in t){var r=t[e];this.statsToMonitor.includes(r.type)||delete t[e]}return t}get peerConnectionListeners(){return{icecandidate:(e,t,r,i)=>{this.logger.debug("[pc-event] icecandidate | peerId: ${peerId}",i),this.emitEvent({event:"onicecandidate",tag:"connection",peerId:e,connectionId:t,data:i.candidate})},track:(e,t,r,i)=>{this.logger.debug(`[pc-event] track | peerId: ${e}`,i);const n=i.track,s=i.streams[0];e in this.peersToMonitor&&t in this.peersToMonitor[e]&&(this.peersToMonitor[e][t].stream=s),this.addTrackEventListeners(n),this.emitEvent({event:"ontrack",tag:"track",peerId:e,connectionId:t,data:{stream:s?this.getStreamDetails(s):null,track:n?this.getMediaTrackDetails(n):null,title:i.track.kind+":"+i.track.id+" "+i.streams.map((function(e){return"stream:"+e.id}))}})},signalingstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] signalingstatechange | peerId: ${e}`),this.emitEvent({event:"onsignalingstatechange",tag:"connection",peerId:e,connectionId:t,data:{signalingState:r.signalingState,localDescription:r.localDescription,remoteDescription:r.remoteDescription}})},iceconnectionstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] iceconnectionstatechange | peerId: ${e}`),this.emitEvent({event:"oniceconnectionstatechange",tag:"connection",peerId:e,connectionId:t,data:r.iceConnectionState})},icegatheringstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] icegatheringstatechange | peerId: ${e}`),this.emitEvent({event:"onicegatheringstatechange",tag:"connection",peerId:e,connectionId:t,data:r.iceGatheringState})},icecandidateerror:(e,t,r,i)=>{this.logger.debug(`[pc-event] icecandidateerror | peerId: ${e}`),this.emitEvent({event:"onicecandidateerror",tag:"connection",peerId:e,connectionId:t,error:{errorCode:i.errorCode}})},connectionstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] connectionstatechange | peerId: ${e}`),this.emitEvent({event:"onconnectionstatechange",tag:"connection",peerId:e,connectionId:t,data:r.connectionState})},negotiationneeded:(e,t,r)=>{this.logger.debug(`[pc-event] negotiationneeded | peerId: ${e}`),this.emitEvent({event:"onnegotiationneeded",tag:"connection",peerId:e,connectionId:t})},datachannel:(e,t,r,i)=>{this.logger.debug(`[pc-event] datachannel | peerId: ${e}`,i),this.emitEvent({event:"ondatachannel",tag:"datachannel",peerId:e,connectionId:t,data:i.channel})}}}addPeerConnectionEventListeners(e,t,r){this.logger.debug(`Adding event listeners for peer ${e} and connection ${t}.`),Ra[t]={},Object.keys(this.peerConnectionListeners).forEach((i=>{Ra[t][i]=this.peerConnectionListeners[i].bind(this,e,t,r),r.addEventListener(i,Ra[t][i],!1)}))}parseGetUserMedia(e){const t={event:"getUserMedia",tag:"getUserMedia",data:{...e}};e.stream&&(t.data.details=this.parseStream(e.stream)),this.emitEvent(t)}parseStream(e){const t={audio:[],video:[]};return e.getTracks().forEach((e=>{t[e.kind].push(this.getMediaTrackDetails(e))})),t}getMediaTrackDetails(e){return{enabled:e.enabled,id:e.id,contentHint:e.contentHint,kind:e.kind,label:e.label,muted:e.muted,readyState:e.readyState,constructorName:e.constructor.name,capabilities:e.getCapabilities?e.getCapabilities():{},constraints:e.getConstraints?e.getConstraints():{},settings:e.getSettings?e.getSettings():{},_track:e}}getStreamDetails(e){return{active:e.active,id:e.id,_stream:e}}get getTrackEventObject(){return{mute:e=>{this.emitEvent({event:"mute",tag:"track",data:{event:e}})},unmute:e=>{this.emitEvent({event:"unmute",tag:"track",data:{event:e}})},overconstrained:e=>{this.emitEvent({event:"overconstrained",tag:"track",data:{event:e}})},ended:e=>{this.emitEvent({event:"ended",tag:"track",data:{event:e}}),this.removeTrackEventListeners(e.target)}}}addTrackEventListeners(e){Ra[e.id]={},Object.keys(this.getTrackEventObject).forEach((t=>{Ra[e.id][t]=this.getTrackEventObject[t].bind(this),e.addEventListener(t,Ra[e.id][t])})),Ra[e.id].readyState=setInterval((()=>{if("ended"===e.readyState){let t=new CustomEvent("ended",{detail:{check:"readyState"}});e.dispatchEvent(t)}}),1e3)}removeTrackEventListeners(e){e.id in Ra&&(Object.keys(this.getTrackEventObject).forEach((t=>{e.removeEventListener(t,Ra[e.id][t])})),clearInterval(Ra[e.id].readyState),delete Ra[e.id])}addToTimeline(e){this.timeline.push(e),this.emit("timeline",e)}emitEvent(e){const t={...e,timestamp:new Date};this.addToTimeline(t),t.tag&&this.emit(t.tag,t)}set getStatsInterval(e){if(!Number.isInteger(e))throw new Error(`getStatsInterval should be an integer, got: ${e}`);this._getStatsInterval=e,this.monitoringSetInterval&&(this.stopStatsMonitoring(),this.startStatsMonitoring())}get logger(){const e=e=>{const t=["none","error","warn","info","debug"];return t.slice(0,t.indexOf(this.logLevel)+1).indexOf(e)>-1};return{error(...t){this.debug&&e("error")&&console.error("[webrtc-stats][error] ",...t)},warn(...t){this.debug&&e("warn")&&console.warn("[webrtc-stats][warn] ",...t)},info(...t){this.debug&&e("info")&&console.log("[webrtc-stats][info] ",...t)},debug(...t){this.debug&&e("debug")&&console.debug("[webrtc-stats][debug] ",...t)}}}removeConnection(e){let{peerId:t,connectionId:r,pc:i}=e;if(!t&&!i&&!r)throw new Error("Missing arguments. You need to either send a peerId and pc, or a connectionId.");if(t&&!i||i&&!t)throw new Error("By not sending a connectionId, you need to send a peerId and a pc (RTCPeerConnection instance)");if(r)for(let e in this.peersToMonitor)r in this.peersToMonitor[e]&&(t=e,this.removePeerConnectionEventListeners(t,r,i),delete this.peersToMonitor[e][r]);else if(t&&i&&t in this.peersToMonitor)for(let e in this.peersToMonitor[t])this.peersToMonitor[t][e].pc===i&&(this.removePeerConnectionEventListeners(t,e,i),delete this.peersToMonitor[t][e],r=e);return 0===Object.values(this.peersToMonitor[t]).length&&delete this.peersToMonitor[t],{connectionId:r}}removePeer(e){if(this.logger.info(`Removing PeerConnection with id ${e}.`),this.peersToMonitor[e]){for(let t in this.peersToMonitor[e]){let r=this.peersToMonitor[e][t].pc;this.removePeerConnectionEventListeners(e,t,r)}delete this.peersToMonitor[e]}}get numberOfMonitoredPeers(){return Object.keys(this.peersToMonitor).length}removePeerConnectionEventListeners(e,t,r){t in Ra&&(Object.keys(this.peerConnectionListeners).forEach((e=>{r.removeEventListener(e,Ra[t][e],!1)})),delete Ra[t]),r.getSenders().forEach((e=>{e.track&&this.removeTrackEventListeners(e.track)})),r.getReceivers().forEach((e=>{e.track&&this.removeTrackEventListeners(e.track)}))}getTimestamp(){return Date.now()}wrapGetDisplayMedia(){const e=this;if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){const t=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices),r=function(){return e.debug("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),t.apply(navigator.mediaDevices,arguments).then((function(e){return e}),(function(t){return e.debug("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))};navigator.mediaDevices.getDisplayMedia=r.bind(navigator.mediaDevices)}}};class Fa extends t{}!function(e){e.Issue="issue"}(ka||(ka={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server"}(Pa||(Pa={})),function(e){e.NetworkQuality="network-quality",e.NetworkMediaLatency="network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.LowMOS="low-mean-opinion-score"}(Ca||(Ca={}));class Na{constructor(){Ta.set(this,{})}detect(e){const t=this.processData(e);return i(this,Ta,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),n=[],s=null===(t=i(this,Ta,"f")[e.connection.id])||void 0===t?void 0:t.video.outbound;return s?(r.forEach((e=>{const t=s.find((t=>t.ssrc===e.ssrc));t&&(e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&n.push({type:Pa.CPU,reason:Ca.EncoderCPUThrottling,ssrc:e.ssrc,debug:"qualityLimitationReason: cpu"}),"bandwidth"===e.qualityLimitationReason&&n.push({type:Pa.Network,reason:Ca.OutboundNetworkThroughput,ssrc:e.ssrc,debug:"qualityLimitationReason: bandwidth"})))})),n):n}}Ta=new WeakMap;class Ba{constructor(){Ea.set(this,{}),Da.set(this,.5)}detect(e){const t=this.processData(e);return i(this,Ea,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.inbound.filter((e=>e.framesDropped>0)),n=[],s=null===(t=i(this,Ea,"f")[e.connection.id])||void 0===t?void 0:t.video.inbound;return s?(r.forEach((e=>{const t=s.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const r=e.framesReceived-t.framesReceived,a=e.framesDecoded-t.framesDecoded,o=e.framesDropped-t.framesDropped;if(0===r&&0===a)return;const c=o/r;c>=i(this,Da,"f")&&n.push({type:Pa.CPU,reason:Ca.DecoderCPUThrottling,ssrc:e.ssrc,debug:`framesDropped: ${Math.round(100*c)} , deltaFramesDropped: ${o}, deltaFramesReceived: ${r}`})})),n):n}}Ea=new WeakMap,Da=new WeakMap;class Ua{constructor(){Ma.set(this,{}),Oa.set(this,.15)}detect(e){const t=this.processData(e);return i(this,Ma,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.outbound.filter((e=>e.framesEncoded>0)),n=[],s=null===(t=i(this,Ma,"f")[e.connection.id])||void 0===t?void 0:t.video.outbound;return s?(r.forEach((e=>{const t=s.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const r=e.framesEncoded-t.framesEncoded,a=e.framesSent-t.framesSent;if(0===r)return;if(r===a)return;const o=a/r;o>=i(this,Oa,"f")&&n.push({type:Pa.Network,reason:Ca.OutboundNetworkThroughput,ssrc:e.ssrc,debug:`missedFrames: ${Math.round(100*o)}%`})})),n):n}}Ma=new WeakMap,Oa=new WeakMap;class qa{constructor(){xa.set(this,{})}detect(e){const t=this.processData(e);return i(this,xa,"f")[e.connection.id]=e,t}processData(e){var t,r,n,s;const a=[],o=[...null===(t=e.audio)||void 0===t?void 0:t.inbound,...null===(r=e.video)||void 0===r?void 0:r.inbound];if(!o.length)return a;const c=i(this,xa,"f")[e.connection.id];if(!c)return a;const d=[...null===(n=c.video)||void 0===n?void 0:n.inbound,...null===(s=c.audio)||void 0===s?void 0:s.inbound],{packetsReceived:p}=e.connection,l=c.connection.packetsReceived,u=o.reduce(((e,t)=>{const r=d.find((e=>e.ssrc===t.ssrc)),i=(null==r?void 0:r.jitterBufferDelay)||0,n=(null==r?void 0:r.jitterBufferEmittedCount)||0,s=t.jitterBufferDelay-i,a=t.jitterBufferEmittedCount-n,o=s&&a?1e3*s/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+o,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+((null==r?void 0:r.packetsLost)||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),h=1e3*e.connection.currentRoundTripTime||0,{sumJitter:f,sumJitterBufferDelayMs:m}=u,g=f/o.length,y=m/o.length,v=p-l,b=u.packetsLost-u.lastPacketsLost,w=v&&b?Math.round(100*b/(v+b)):0,_=h+2*g+10;let S=_<160?93.2-_/40:93.2-_/120-10;S-=2.5*w;const R=1+.035*S+7e-6*S*(S-60)*(100-S),k=w>5,P=g>=200,C=!k&&P||P||k,T=h>=250&&!P&&!k,E=k&&P,D=P&&y>500,M=`packetLoss: ${w}%, jitter: ${g}, rtt: ${h}, jitterBuffer: ${y}ms, MOS: ${R}`;return R<3.1&&a.push({type:Pa.Network,reason:Ca.LowMOS,iceCandidate:e.connection.local.id,debug:M}),C&&a.push({type:Pa.Network,reason:Ca.NetworkQuality,iceCandidate:e.connection.local.id,debug:M}),T&&a.push({type:Pa.Server,reason:Ca.ServerIssue,iceCandidate:e.connection.remote.id,debug:M}),E&&a.push({type:Pa.Network,reason:Ca.NetworkMediaLatency,iceCandidate:e.connection.local.id,debug:M}),D&&a.push({type:Pa.Network,reason:Ca.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id,debug:M}),a}}xa=new WeakMap;class $a{constructor(){Ia.set(this,{})}detect(e){const t=this.processData(e);return i(this,Ia,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.audio.inbound,n=[],s=null===(t=i(this,Ia,"f")[e.connection.id])||void 0===t?void 0:t.audio.inbound;return s?(r.forEach((e=>{const t=s.find((t=>t.ssrc===e.ssrc));if(!t)return;const r=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,i=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(r===i)return;const a=e.track.totalSamplesReceived-t.track.totalSamplesReceived,o=r-i,c=Math.round(100*o/a);c>5&&n.push({type:Pa.Network,reason:Ca.NetworkMediaSyncFailure,ssrc:e.ssrc,debug:`correctedSamplesPercentage: ${c}%`})})),n):n}}Ia=new WeakMap;class za{constructor(){La.set(this,3e5)}detect(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const n=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),s=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);return n||s?n>r?(t.push({type:Pa.Network,reason:Ca.OutboundNetworkThroughput,debug:`availableOutgoingBitrate: ${r}, audioStreamsTotalTargetBitrate: ${n}`}),t):s>0&&r<i(this,La,"f")?(t.push({type:Pa.Network,reason:Ca.OutboundNetworkThroughput,debug:`availableOutgoingBitrate: ${r}, videoStreamsTotalBitrate: ${s}`}),t):t:t}}La=new WeakMap;class Va{constructor(e){this.webrtcStatsPeerId="peerId",this.getStatsInterval=5e3,this.detectors=[],this.eventEmitter=new Fa,ja.set(this,!1),e.onIssue&&this.eventEmitter.on(ka.Issue,e.onIssue),this.webrtcStats=new Aa({getStatsInterval:this.getStatsInterval}),window.wid=this,this.wrapRTCPeerConnection(),this.detectors=[new Na,new Ba,new Ua,new qa,new $a,new za],this.webrtcStats.on("stats",(e=>{this.detectIssues(e.data)}))}watchNewPeerConnections(){if(i(this,ja,"f"))throw new Error("WebRTCIssueDetector is already started");n(this,ja,!0,"f")}stopWatchingNewPeerConnections(){if(!i(this,ja,"f"))throw new Error("WebRTCIssueDetector is already stopped");n(this,ja,!1,"f")}resetWatchedPeerConnectionsList(){this.webrtcStats.removePeer(this.webrtcStatsPeerId)}handleNewPeerConnection(e){i(this,ja,"f")&&this.webrtcStats.addConnection({pc:e,peerId:this.webrtcStatsPeerId})}emitIssues(e){this.eventEmitter.emit(ka.Issue,e)}detectIssues(e){const t=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t.length>0&&this.emitIssues(t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return;const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const i=new e(r);return t(i),i}r.prototype=e.prototype,window.RTCPeerConnection=r}}ja=new WeakMap;var Wa=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Ga=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Ha=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 n,s,a=Wa.exec(e||""),o={},c=14;c--;)o[Ga[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=(n=o.query,s={},n.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(s[t]=r)})),s),o};var Ka={exports:{}};try{Ka.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){Ka.exports=!1}var Qa=Ka.exports,Ja="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Ya(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Qa))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Ja[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Xa(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Za=setTimeout,eo=clearTimeout;function to(e,t){t.useNativeTimers?(e.setTimeoutFn=Za.bind(Ja),e.clearTimeoutFn=eo.bind(Ja)):(e.setTimeoutFn=setTimeout.bind(Ja),e.clearTimeoutFn=clearTimeout.bind(Ja))}var ro=io;function io(e){if(e)return function(e){for(var t in io.prototype)e[t]=io.prototype[t];return e}(e)}io.prototype.on=io.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},io.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},io.prototype.off=io.prototype.removeListener=io.prototype.removeAllListeners=io.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 n=0;n<i.length;n++)if((r=i[n])===t||r.fn===t){i.splice(n,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},io.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 n=(r=r.slice(0)).length;i<n;++i)r[i].apply(this,t)}return this},io.prototype.emitReserved=io.prototype.emit,io.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},io.prototype.hasListeners=function(e){return!!this.listeners(e).length};const no=Object.create(null);no.open="0",no.close="1",no.ping="2",no.pong="3",no.message="4",no.upgrade="5",no.noop="6";const so=Object.create(null);Object.keys(no).forEach((e=>{so[no[e]]=e}));const ao={type:"error",data:"parser error"},oo="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),co="function"==typeof ArrayBuffer,po=({type:e,data:t},r,i)=>{return oo&&t instanceof Blob?r?i(t):lo(t,i):co&&(t instanceof ArrayBuffer||(n=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(n):n&&n.buffer instanceof ArrayBuffer))?r?i(t):lo(new Blob([t]),i):i(no[e]+(t||""));var n},lo=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var uo="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ho="undefined"==typeof Uint8Array?[]:new Uint8Array(256),fo=0;fo<uo.length;fo++)ho[uo.charCodeAt(fo)]=fo;const mo="function"==typeof ArrayBuffer,go=(e,t)=>{if("string"!=typeof e)return{type:"message",data:vo(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:yo(e.substring(1),t)};return so[r]?e.length>1?{type:so[r],data:e.substring(1)}:{type:so[r]}:ao},yo=(e,t)=>{if(mo){const r=function(e){var t,r,i,n,s,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=ho[e.charCodeAt(t)],i=ho[e.charCodeAt(t+1)],n=ho[e.charCodeAt(t+2)],s=ho[e.charCodeAt(t+3)],p[c++]=r<<2|i>>4,p[c++]=(15&i)<<4|n>>2,p[c++]=(3&n)<<6|63&s;return d}(e);return vo(r,t)}return{base64:!0,data:e}},vo=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,bo=String.fromCharCode(30);class wo extends ro{constructor(e){super(),this.writable=!1,to(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=go(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var _o,So="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Ro={},ko=0,Po=0;function Co(e){var t="";do{t=So[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function To(){var e=Co(+new Date);return e!==_o?(ko=0,_o=e):e+"."+Co(ko++)}for(;Po<64;Po++)Ro[So[Po]]=Po;To.encode=Co,To.decode=function(e){var t=0;for(Po=0;Po<e.length;Po++)t=64*t+Ro[e.charAt(Po)];return t};var Eo=To,Do={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,n=r.length;i<n;i++){var s=r[i].split("=");t[decodeURIComponent(s[0])]=decodeURIComponent(s[1])}return t}};class Mo extends wo{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(bo),i=[];for(let e=0;e<r.length;e++){const n=go(r[e],t);if(i.push(n),"error"===n.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 n=0;e.forEach(((e,s)=>{po(e,!1,(e=>{i[s]=e,++n===r&&t(i.join(bo))}))}))})(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]=Eo()),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=Do.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function Oo(){}const xo=null!=new Ya({xdomain:!1}).responseType;class Io extends ro{constructor(e,t){super(),to(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=Xa(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 Ya(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=Io.requestsCount++,Io.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=Oo,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Io.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(Io.requestsCount=0,Io.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Lo);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Ja?"pagehide":"unload",Lo,!1)}function Lo(){for(let e in Io.requests)Io.requests.hasOwnProperty(e)&&Io.requests[e].abort()}const jo="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Ao=Ja.WebSocket||Ja.MozWebSocket,Fo="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class No extends wo{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=Fo?{}:Xa(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=Fo?new Ao(e,t,r):t?new Ao(e,t):new Ao(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;po(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&jo((()=>{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]=Eo()),this.supportsBinary||(e.b64=1);const i=Do.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!Ao||"__initialize"in Ao&&this.name===No.prototype.name)}}const Bo={websocket:No,polling:class extends Mo{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=xo&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new Io(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 Uo extends ro{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=Ha(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=Ha(t.host).host),to(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=Do.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 Bo[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Uo.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;Uo.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;Uo.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 n(){r||(r=!0,d(),t.close(),t=null)}const s=e=>{const r=new Error("probe error: "+e);r.transport=t.name,n(),this.emitReserved("upgradeError",r)};function a(){s("transport closed")}function o(){s("socket closed")}function c(e){t&&e.name!==t.name&&n()}const d=()=>{t.removeListener("open",i),t.removeListener("error",s),t.removeListener("close",a),this.off("close",o),this.off("upgrading",c)};t.once("open",i),t.once("error",s),t.once("close",a),this.once("close",o),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",Uo.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 n={type:e,data:t,options:r};this.emitReserved("packetCreate",n),this.writeBuffer.push(n),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){Uo.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}}Uo.protocol=4,Uo.protocol;const qo="function"==typeof ArrayBuffer,$o=Object.prototype.toString,zo="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===$o.call(Blob),Vo="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===$o.call(File);function Wo(e){return qo&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||zo&&e instanceof Blob||Vo&&e instanceof File}function Go(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Go(e[t]))return!0;return!1}if(Wo(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Go(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Go(e[t]))return!0;return!1}function Ho(e){const t=[],r=e.data,i=e;return i.data=Ko(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Ko(e,t){if(!e)return e;if(Wo(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]=Ko(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=Ko(e[i],t));return r}return e}function Qo(e,t){return e.data=Jo(e.data,t),e.attachments=void 0,e}function Jo(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]=Jo(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=Jo(e[r],t));return e}var Yo;!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"}(Yo||(Yo={}));class Xo extends ro{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===Yo.BINARY_EVENT||t.type===Yo.BINARY_ACK?(this.reconstructor=new Zo(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!Wo(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===Yo[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Yo.BINARY_EVENT||r.type===Yo.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const n=e.substring(i,t);if(n!=Number(n)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(n)}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(!Xo.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case Yo.CONNECT:return"object"==typeof t;case Yo.DISCONNECT:return void 0===t;case Yo.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case Yo.EVENT:case Yo.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case Yo.ACK:case Yo.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class Zo{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=Qo(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var ec=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Yo},Encoder:class{encode(e){return e.type!==Yo.EVENT&&e.type!==Yo.ACK||!Go(e)?[this.encodeAsString(e)]:(e.type=e.type===Yo.EVENT?Yo.BINARY_EVENT:Yo.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==Yo.BINARY_EVENT&&e.type!==Yo.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=Ho(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Xo});function tc(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const rc=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class ic extends ro{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=[tc(e,"open",this.onopen.bind(this)),tc(e,"packet",this.onpacket.bind(this)),tc(e,"error",this.onerror.bind(this)),tc(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(rc.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:Yo.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:Yo.CONNECT,data:e})})):this.packet({type:Yo.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 Yo.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 Yo.EVENT:case Yo.BINARY_EVENT:this.onevent(e);break;case Yo.ACK:case Yo.BINARY_ACK:this.onack(e);break;case Yo.DISCONNECT:this.ondisconnect();break;case Yo.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:Yo.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:Yo.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 nc=sc;function sc(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}sc.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)},sc.prototype.reset=function(){this.attempts=0},sc.prototype.setMin=function(e){this.ms=e},sc.prototype.setMax=function(e){this.max=e},sc.prototype.setJitter=function(e){this.jitter=e};class ac extends ro{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,to(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 nc({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||ec;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 Uo(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=tc(t,"open",(function(){r.onopen(),e&&e()})),n=tc(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(n),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(tc(e,"ping",this.onping.bind(this)),tc(e,"data",this.ondata.bind(this)),tc(e,"error",this.onerror.bind(this)),tc(e,"close",this.onclose.bind(this)),tc(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 ic(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 oc={};function cc(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=Ha(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 n=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+n+":"+i.port+t,i.href=i.protocol+"://"+n+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,n=r.id,s=r.path,a=oc[n]&&s in oc[n].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new ac(i,t):(oc[n]||(oc[n]=new ac(i,t)),o=oc[n]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}class dc{constructor(){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new s,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new se("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=cc(e);this.connection=t,this.serverUrl=e,t.on("connect",(()=>{const e=this.reconnectingAttempt?P.Reconnected:P.Connected;this.isConnected=!0,this.setReconnectingAttempt(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:P.Error,error:e})})),t.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",e),this.observer.safeEmit("state",{state:P.Disconnected,code:this.getDisconnectReasonCode(e)})})),t.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",e),this.observer.safeEmit("state",{state:P.Reconnecting})})),t.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)"),this.observer.safeEmit("state",{state:P.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}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)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var pc={exports:{}},lc=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)}},uc=lc,hc=Object.prototype.toString;function fc(e){return"[object Array]"===hc.call(e)}function mc(e){return void 0===e}function gc(e){return null!==e&&"object"==typeof e}function yc(e){if("[object Object]"!==hc.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function vc(e){return"[object Function]"===hc.call(e)}function bc(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),fc(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.call(null,e[n],n,e)}var wc={isArray:fc,isArrayBuffer:function(e){return"[object ArrayBuffer]"===hc.call(e)},isBuffer:function(e){return null!==e&&!mc(e)&&null!==e.constructor&&!mc(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:gc,isPlainObject:yc,isUndefined:mc,isDate:function(e){return"[object Date]"===hc.call(e)},isFile:function(e){return"[object File]"===hc.call(e)},isBlob:function(e){return"[object Blob]"===hc.call(e)},isFunction:vc,isStream:function(e){return gc(e)&&vc(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:bc,merge:function e(){var t={};function r(r,i){yc(t[i])&&yc(r)?t[i]=e(t[i],r):yc(r)?t[i]=e({},r):fc(r)?t[i]=r.slice():t[i]=r}for(var i=0,n=arguments.length;i<n;i++)bc(arguments[i],r);return t},extend:function(e,t,r){return bc(t,(function(t,i){e[i]=r&&"function"==typeof t?uc(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}},_c=wc;function Sc(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Rc=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(_c.isURLSearchParams(t))i=t.toString();else{var n=[];_c.forEach(t,(function(e,t){null!=e&&(_c.isArray(e)?t+="[]":e=[e],_c.forEach(e,(function(e){_c.isDate(e)?e=e.toISOString():_c.isObject(e)&&(e=JSON.stringify(e)),n.push(Sc(t)+"="+Sc(e))})))})),i=n.join("&")}if(i){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},kc=wc;function Pc(){this.handlers=[]}Pc.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},Pc.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},Pc.prototype.forEach=function(e){kc.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var Cc=Pc,Tc=wc,Ec=function(e,t,r,i,n){return e.config=t,r&&(e.code=r),e.request=i,e.response=n,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},Dc=Ec,Mc=function(e,t,r,i,n){var s=new Error(e);return Dc(s,t,r,i,n)},Oc=Mc,xc=wc,Ic=xc.isStandardBrowserEnv()?{write:function(e,t,r,i,n,s){var a=[];a.push(e+"="+encodeURIComponent(t)),xc.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),xc.isString(i)&&a.push("path="+i),xc.isString(n)&&a.push("domain="+n),!0===s&&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(){}},Lc=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},jc=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},Ac=wc,Fc=["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"],Nc=wc,Bc=Nc.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=Nc.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Uc=wc,qc=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(Oc("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},$c=Ic,zc=Rc,Vc=function(e,t){return e&&!Lc(t)?jc(e,t):t},Wc=function(e){var t,r,i,n={};return e?(Ac.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=Ac.trim(e.substr(0,i)).toLowerCase(),r=Ac.trim(e.substr(i+1)),t){if(n[t]&&Fc.indexOf(t)>=0)return;n[t]="set-cookie"===t?(n[t]?n[t]:[]).concat([r]):n[t]?n[t]+", "+r:r}})),n):n},Gc=Bc,Hc=Mc,Kc=function(e){return new Promise((function(t,r){var i=e.data,n=e.headers,s=e.responseType;Uc.isFormData(i)&&delete n["Content-Type"];var a=new XMLHttpRequest;if(e.auth){var o=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.Authorization="Basic "+btoa(o+":"+c)}var d=Vc(e.baseURL,e.url);function p(){if(a){var i="getAllResponseHeaders"in a?Wc(a.getAllResponseHeaders()):null,n={data:s&&"text"!==s&&"json"!==s?a.response:a.responseText,status:a.status,statusText:a.statusText,headers:i,config:e,request:a};qc(t,r,n),a=null}}if(a.open(e.method.toUpperCase(),zc(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(Hc("Request aborted",e,"ECONNABORTED",a)),a=null)},a.onerror=function(){r(Hc("Network Error",e,null,a)),a=null},a.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Hc(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",a)),a=null},Uc.isStandardBrowserEnv()){var l=(e.withCredentials||Gc(d))&&e.xsrfCookieName?$c.read(e.xsrfCookieName):void 0;l&&(n[e.xsrfHeaderName]=l)}"setRequestHeader"in a&&Uc.forEach(n,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete n[t]:a.setRequestHeader(t,e)})),Uc.isUndefined(e.withCredentials)||(a.withCredentials=!!e.withCredentials),s&&"json"!==s&&(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)}))},Qc=wc,Jc=function(e,t){Tc.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Yc=Ec,Xc={"Content-Type":"application/x-www-form-urlencoded"};function Zc(e,t){!Qc.isUndefined(e)&&Qc.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var ed,td={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(ed=Kc),ed),transformRequest:[function(e,t){return Jc(t,"Accept"),Jc(t,"Content-Type"),Qc.isFormData(e)||Qc.isArrayBuffer(e)||Qc.isBuffer(e)||Qc.isStream(e)||Qc.isFile(e)||Qc.isBlob(e)?e:Qc.isArrayBufferView(e)?e.buffer:Qc.isURLSearchParams(e)?(Zc(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Qc.isObject(e)||t&&"application/json"===t["Content-Type"]?(Zc(t,"application/json"),function(e,t,r){if(Qc.isString(e))try{return(t||JSON.parse)(e),Qc.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,n=!r&&"json"===this.responseType;if(n||i&&Qc.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw Yc(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}};td.headers={common:{Accept:"application/json, text/plain, */*"}},Qc.forEach(["delete","get","head"],(function(e){td.headers[e]={}})),Qc.forEach(["post","put","patch"],(function(e){td.headers[e]=Qc.merge(Xc)}));var rd=td,id=wc,nd=rd,sd=function(e){return!(!e||!e.__CANCEL__)},ad=wc,od=function(e,t,r){var i=this||nd;return id.forEach(r,(function(r){e=r.call(i,e,t)})),e},cd=sd,dd=rd;function pd(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var ld=wc,ud=function(e,t){t=t||{};var r={},i=["url","method","data"],n=["headers","auth","proxy","params"],s=["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 ld.isPlainObject(e)&&ld.isPlainObject(t)?ld.merge(e,t):ld.isPlainObject(t)?ld.merge({},t):ld.isArray(t)?t.slice():t}function c(i){ld.isUndefined(t[i])?ld.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(e[i],t[i])}ld.forEach(i,(function(e){ld.isUndefined(t[e])||(r[e]=o(void 0,t[e]))})),ld.forEach(n,c),ld.forEach(s,(function(i){ld.isUndefined(t[i])?ld.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(void 0,t[i])})),ld.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(n).concat(s).concat(a),p=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return ld.forEach(p,c),r},hd={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"}]},fd={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){fd[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var md={},gd=hd.version.split(".");function yd(e,t){for(var r=t?t.split("."):gd,i=e.split("."),n=0;n<3;n++){if(r[n]>i[n])return!0;if(r[n]<i[n])return!1}return!1}fd.transitional=function(e,t,r){var i=t&&yd(t);function n(e,t){return"[Axios v"+hd.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,s,a){if(!1===e)throw new Error(n(s," has been removed in "+t));return i&&!md[s]&&(md[s]=!0,console.warn(n(s," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,s,a)}};var vd={isOlderVersion:yd,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),n=i.length;n-- >0;){var s=i[n],a=t[s];if(a){var o=e[s],c=void 0===o||a(o,s,e);if(!0!==c)throw new TypeError("option "+s+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+s)}},validators:fd},bd=wc,wd=Rc,_d=Cc,Sd=function(e){return pd(e),e.headers=e.headers||{},e.data=od.call(e,e.data,e.headers,e.transformRequest),e.headers=ad.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),ad.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||dd.adapter)(e).then((function(t){return pd(e),t.data=od.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return cd(t)||(pd(e),t&&t.response&&(t.response.data=od.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Rd=ud,kd=vd,Pd=kd.validators;function Cd(e){this.defaults=e,this.interceptors={request:new _d,response:new _d}}Cd.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=Rd(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&&kd.assertOptions(t,{silentJSONParsing:Pd.transitional(Pd.boolean,"1.0.0"),forcedJSONParsing:Pd.transitional(Pd.boolean,"1.0.0"),clarifyTimeoutError:Pd.transitional(Pd.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 n,s=[];if(this.interceptors.response.forEach((function(e){s.push(e.fulfilled,e.rejected)})),!i){var a=[Sd,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(s),n=Promise.resolve(e);a.length;)n=n.then(a.shift(),a.shift());return n}for(var o=e;r.length;){var c=r.shift(),d=r.shift();try{o=c(o)}catch(e){d(e);break}}try{n=Sd(o)}catch(e){return Promise.reject(e)}for(;s.length;)n=n.then(s.shift(),s.shift());return n},Cd.prototype.getUri=function(e){return e=Rd(this.defaults,e),wd(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},bd.forEach(["delete","get","head","options"],(function(e){Cd.prototype[e]=function(t,r){return this.request(Rd(r||{},{method:e,url:t,data:(r||{}).data}))}})),bd.forEach(["post","put","patch"],(function(e){Cd.prototype[e]=function(t,r,i){return this.request(Rd(i||{},{method:e,url:t,data:r}))}}));var Td=Cd;function Ed(e){this.message=e}Ed.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Ed.prototype.__CANCEL__=!0;var Dd=Ed,Md=Dd;function Od(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 Md(e),t(r.reason))}))}Od.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Od.source=function(){var e;return{token:new Od((function(t){e=t})),cancel:e}};var xd=Od,Id=wc,Ld=lc,jd=Td,Ad=ud;function Fd(e){var t=new jd(e),r=Ld(jd.prototype.request,t);return Id.extend(r,jd.prototype,t),Id.extend(r,t),r}var Nd=Fd(rd);Nd.Axios=jd,Nd.create=function(e){return Fd(Ad(Nd.defaults,e))},Nd.Cancel=Dd,Nd.CancelToken=xd,Nd.isCancel=sd,Nd.all=function(e){return Promise.all(e)},Nd.spread=function(e){return function(t){return e.apply(null,t)}},Nd.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},pc.exports=Nd,pc.exports.default=Nd;var Bd=pc.exports,Ud="undefined"!=typeof Symbol&&Symbol,qd=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 n=Object.getOwnPropertyDescriptor(e,t);if(42!==n.value||!0!==n.enumerable)return!1}return!0},$d="Function.prototype.bind called on incompatible ",zd=Array.prototype.slice,Vd=Object.prototype.toString,Wd=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Vd.call(t))throw new TypeError($d+t);for(var r,i=zd.call(arguments,1),n=function(){if(this instanceof r){var n=t.apply(this,i.concat(zd.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(zd.call(arguments)))},s=Math.max(0,t.length-i.length),a=[],o=0;o<s;o++)a.push("$"+o);if(r=Function("binder","return function ("+a.join(",")+"){ return binder.apply(this,arguments); }")(n),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Gd=Function.prototype.bind||Wd,Hd=Gd.call(Function.call,Object.prototype.hasOwnProperty),Kd=SyntaxError,Qd=Function,Jd=TypeError,Yd=function(e){try{return Qd('"use strict"; return ('+e+").constructor;")()}catch(e){}},Xd=Object.getOwnPropertyDescriptor;if(Xd)try{Xd({},"")}catch(e){Xd=null}var Zd=function(){throw new Jd},ep=Xd?function(){try{return Zd}catch(e){try{return Xd(arguments,"callee").get}catch(e){return Zd}}}():Zd,tp="function"==typeof Ud&&"function"==typeof Symbol&&"symbol"==typeof Ud("foo")&&"symbol"==typeof Symbol("bar")&&qd(),rp=Object.getPrototypeOf||function(e){return e.__proto__},ip={},np="undefined"==typeof Uint8Array?undefined:rp(Uint8Array),sp={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":tp?rp([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":ip,"%AsyncGenerator%":ip,"%AsyncGeneratorFunction%":ip,"%AsyncIteratorPrototype%":ip,"%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%":Qd,"%GeneratorFunction%":ip,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":tp?rp(rp([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&tp?rp((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&&tp?rp((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":tp?rp(""[Symbol.iterator]()):undefined,"%Symbol%":tp?Symbol:undefined,"%SyntaxError%":Kd,"%ThrowTypeError%":ep,"%TypedArray%":np,"%TypeError%":Jd,"%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},ap=function e(t){var r;if("%AsyncFunction%"===t)r=Yd("async function () {}");else if("%GeneratorFunction%"===t)r=Yd("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Yd("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var n=e("%AsyncGenerator%");n&&(r=rp(n.prototype))}return sp[t]=r,r},op={"%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"]},cp=Gd,dp=Hd,pp=cp.call(Function.call,Array.prototype.concat),lp=cp.call(Function.apply,Array.prototype.splice),up=cp.call(Function.call,String.prototype.replace),hp=cp.call(Function.call,String.prototype.slice),fp=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,mp=/\\(\\)?/g,gp=function(e){var t=hp(e,0,1),r=hp(e,-1);if("%"===t&&"%"!==r)throw new Kd("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Kd("invalid intrinsic syntax, expected opening `%`");var i=[];return up(e,fp,(function(e,t,r,n){i[i.length]=r?up(n,mp,"$1"):t||e})),i},yp=function(e,t){var r,i=e;if(dp(op,i)&&(i="%"+(r=op[i])[0]+"%"),dp(sp,i)){var n=sp[i];if(n===ip&&(n=ap(i)),void 0===n&&!t)throw new Jd("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:n}}throw new Kd("intrinsic "+e+" does not exist!")},vp=function(e,t){if("string"!=typeof e||0===e.length)throw new Jd("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new Jd('"allowMissing" argument must be a boolean');var r=gp(e),i=r.length>0?r[0]:"",n=yp("%"+i+"%",t),s=n.name,a=n.value,o=!1,c=n.alias;c&&(i=c[0],lp(r,pp([0,1],c)));for(var d=1,p=!0;d<r.length;d+=1){var l=r[d],u=hp(l,0,1),h=hp(l,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Kd("property names with quotes must have matching quotes");if("constructor"!==l&&p||(o=!0),dp(sp,s="%"+(i+="."+l)+"%"))a=sp[s];else if(null!=a){if(!(l in a)){if(!t)throw new Jd("base intrinsic for "+e+" exists, but the property is not available.");return}if(Xd&&d+1>=r.length){var f=Xd(a,l);a=(p=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:a[l]}else p=dp(a,l),a=a[l];p&&!o&&(sp[s]=a)}}return a},bp={exports:{}};!function(e){var t=Gd,r=vp,i=r("%Function.prototype.apply%"),n=r("%Function.prototype.call%"),s=r("%Reflect.apply%",!0)||t.call(n,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=s(t,n,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 s(t,i,arguments)};o?o(e.exports,"apply",{value:d}):e.exports.apply=d}(bp);var wp=vp,_p=bp.exports,Sp=_p(wp("String.prototype.indexOf")),Rp=Q(Object.freeze({__proto__:null,default:{}})),kp="function"==typeof Map&&Map.prototype,Pp=Object.getOwnPropertyDescriptor&&kp?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Cp=kp&&Pp&&"function"==typeof Pp.get?Pp.get:null,Tp=kp&&Map.prototype.forEach,Ep="function"==typeof Set&&Set.prototype,Dp=Object.getOwnPropertyDescriptor&&Ep?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Mp=Ep&&Dp&&"function"==typeof Dp.get?Dp.get:null,Op=Ep&&Set.prototype.forEach,xp="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,Ip="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,Lp="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,jp=Boolean.prototype.valueOf,Ap=Object.prototype.toString,Fp=Function.prototype.toString,Np=String.prototype.match,Bp="function"==typeof BigInt?BigInt.prototype.valueOf:null,Up=Object.getOwnPropertySymbols,qp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,$p="function"==typeof Symbol&&"object"==typeof Symbol.iterator,zp=Object.prototype.propertyIsEnumerable,Vp=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Wp=Rp.custom,Gp=Wp&&Yp(Wp)?Wp:null,Hp="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Kp(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function Qp(e){return String(e).replace(/"/g,"&quot;")}function Jp(e){return!("[object Array]"!==el(e)||Hp&&"object"==typeof e&&Hp in e)}function Yp(e){if($p)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!qp)return!1;try{return qp.call(e),!0}catch(e){}return!1}var Xp=Object.prototype.hasOwnProperty||function(e){return e in this};function Zp(e,t){return Xp.call(e,t)}function el(e){return Ap.call(e)}function tl(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 rl(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return rl(e.slice(0,t.maxStringLength),t)+i}return Kp(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,il),"single",t)}function il(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 nl(e){return"Object("+e+")"}function sl(e){return e+" { ? }"}function al(e,t,r,i){return e+" ("+t+") {"+(i?ol(r,i):r.join(", "))+"}"}function ol(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function cl(e,t){var r=Jp(e),i=[];if(r){i.length=e.length;for(var n=0;n<e.length;n++)i[n]=Zp(e,n)?t(e[n],e):""}var s,a="function"==typeof Up?Up(e):[];if($p){s={};for(var o=0;o<a.length;o++)s["$"+a[o]]=a[o]}for(var c in e)Zp(e,c)&&(r&&String(Number(c))===c&&c<e.length||$p&&s["$"+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 Up)for(var d=0;d<a.length;d++)zp.call(e,a[d])&&i.push("["+t(a[d])+"]: "+t(e[a[d]],e));return i}var dl=vp,pl=function(e,t){var r=wp(e,!!t);return"function"==typeof r&&Sp(e,".prototype.")>-1?_p(r):r},ll=function e(t,r,i,n){var s=r||{};if(Zp(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Zp(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=!Zp(s,"customInspect")||s.customInspect;if("boolean"!=typeof a&&"symbol"!==a)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Zp(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.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 rl(t,s);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===s.depth?5:s.depth;if(void 0===i&&(i=0),i>=o&&o>0&&"object"==typeof t)return Jp(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)}}(s,i);if(void 0===n)n=[];else if(tl(n,t)>=0)return"[Circular]";function d(t,r,a){if(r&&(n=n.slice()).push(r),a){var o={depth:s.depth};return Zp(s,"quoteStyle")&&(o.quoteStyle=s.quoteStyle),e(t,o,i+1,n)}return e(t,s,i+1,n)}if("function"==typeof t){var p=function(e){if(e.name)return e.name;var t=Np.call(Fp.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),l=cl(t,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(l.length>0?" { "+l.join(", ")+" }":"")}if(Yp(t)){var u=$p?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):qp.call(t);return"object"!=typeof t||$p?u:nl(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+"="+Kp(Qp(f[m].value),"double",s);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(Jp(t)){if(0===t.length)return"[]";var g=cl(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(tl(e[t],"\n")>=0)return!1;return!0}(g)?"["+ol(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==el(e)||Hp&&"object"==typeof e&&Hp in e)}(t)){var y=cl(t,d);return 0===y.length?"["+String(t)+"]":"{ ["+String(t)+"] "+y.join(", ")+" }"}if("object"==typeof t&&a){if(Gp&&"function"==typeof t[Gp])return t[Gp]();if("symbol"!==a&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!Cp||!e||"object"!=typeof e)return!1;try{Cp.call(e);try{Mp.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var v=[];return Tp.call(t,(function(e,r){v.push(d(r,t,!0)+" => "+d(e,t))})),al("Map",Cp.call(t),v,c)}if(function(e){if(!Mp||!e||"object"!=typeof e)return!1;try{Mp.call(e);try{Cp.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return Op.call(t,(function(e){b.push(d(e,t))})),al("Set",Mp.call(t),b,c)}if(function(e){if(!xp||!e||"object"!=typeof e)return!1;try{xp.call(e,xp);try{Ip.call(e,Ip)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return sl("WeakMap");if(function(e){if(!Ip||!e||"object"!=typeof e)return!1;try{Ip.call(e,Ip);try{xp.call(e,xp)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return sl("WeakSet");if(function(e){if(!Lp||!e||"object"!=typeof e)return!1;try{return Lp.call(e),!0}catch(e){}return!1}(t))return sl("WeakRef");if(function(e){return!("[object Number]"!==el(e)||Hp&&"object"==typeof e&&Hp in e)}(t))return nl(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Bp)return!1;try{return Bp.call(e),!0}catch(e){}return!1}(t))return nl(d(Bp.call(t)));if(function(e){return!("[object Boolean]"!==el(e)||Hp&&"object"==typeof e&&Hp in e)}(t))return nl(jp.call(t));if(function(e){return!("[object String]"!==el(e)||Hp&&"object"==typeof e&&Hp in e)}(t))return nl(d(String(t)));if(!function(e){return!("[object Date]"!==el(e)||Hp&&"object"==typeof e&&Hp in e)}(t)&&!function(e){return!("[object RegExp]"!==el(e)||Hp&&"object"==typeof e&&Hp in e)}(t)){var w=cl(t,d),_=Vp?Vp(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",R=!_&&Hp&&Object(t)===t&&Hp in t?el(t).slice(8,-1):S?"Object":"",k=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(R||S?"["+[].concat(R||[],S||[]).join(": ")+"] ":"");return 0===w.length?k+"{}":c?k+"{"+ol(w,c)+"}":k+"{ "+w.join(", ")+" }"}return String(t)},ul=dl("%TypeError%"),hl=dl("%WeakMap%",!0),fl=dl("%Map%",!0),ml=pl("WeakMap.prototype.get",!0),gl=pl("WeakMap.prototype.set",!0),yl=pl("WeakMap.prototype.has",!0),vl=pl("Map.prototype.get",!0),bl=pl("Map.prototype.set",!0),wl=pl("Map.prototype.has",!0),_l=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},Sl=String.prototype.replace,Rl=/%20/g,kl="RFC3986",Pl={default:kl,formatters:{RFC1738:function(e){return Sl.call(e,Rl,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:kl},Cl=Pl,Tl=Object.prototype.hasOwnProperty,El=Array.isArray,Dl=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),Ml=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},Ol={arrayToObject:Ml,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 n=t[i],s=n.obj[n.prop],a=Object.keys(s),o=0;o<a.length;++o){var c=a[o],d=s[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:s,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(El(r)){for(var i=[],n=0;n<r.length;++n)void 0!==r[n]&&i.push(r[n]);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,n){if(0===e.length)return e;var s=e;if("symbol"==typeof e?s=Symbol.prototype.toString.call(e):"string"!=typeof e&&(s=String(e)),"iso-8859-1"===r)return escape(s).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var a="",o=0;o<s.length;++o){var c=s.charCodeAt(o);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||n===Cl.RFC1738&&(40===c||41===c)?a+=s.charAt(o):c<128?a+=Dl[c]:c<2048?a+=Dl[192|c>>6]+Dl[128|63&c]:c<55296||c>=57344?a+=Dl[224|c>>12]+Dl[128|c>>6&63]+Dl[128|63&c]:(o+=1,c=65536+((1023&c)<<10|1023&s.charCodeAt(o)),a+=Dl[240|c>>18]+Dl[128|c>>12&63]+Dl[128|c>>6&63]+Dl[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(El(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(El(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!Tl.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var n=t;return El(t)&&!El(r)&&(n=Ml(t,i)),El(t)&&El(r)?(r.forEach((function(r,n){if(Tl.call(t,n)){var s=t[n];s&&"object"==typeof s&&r&&"object"==typeof r?t[n]=e(s,r,i):t.push(r)}else t[n]=r})),t):Object.keys(r).reduce((function(t,n){var s=r[n];return Tl.call(t,n)?t[n]=e(t[n],s,i):t[n]=s,t}),n)}},xl=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new ul("Side channel does not contain "+ll(e))},get:function(i){if(hl&&i&&("object"==typeof i||"function"==typeof i)){if(e)return ml(e,i)}else if(fl){if(t)return vl(t,i)}else if(r)return function(e,t){var r=_l(e,t);return r&&r.value}(r,i)},has:function(i){if(hl&&i&&("object"==typeof i||"function"==typeof i)){if(e)return yl(e,i)}else if(fl){if(t)return wl(t,i)}else if(r)return function(e,t){return!!_l(e,t)}(r,i);return!1},set:function(i,n){hl&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new hl),gl(e,i,n)):fl?(t||(t=new fl),bl(t,i,n)):(r||(r={key:{},next:null}),function(e,t,r){var i=_l(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,n))}};return i},Il=Ol,Ll=Pl,jl=Object.prototype.hasOwnProperty,Al={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Fl=Array.isArray,Nl=Array.prototype.push,Bl=function(e,t){Nl.apply(e,Fl(t)?t:[t])},Ul=Date.prototype.toISOString,ql=Ll.default,$l={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:Il.encode,encodeValuesOnly:!1,format:ql,formatter:Ll.formatters[ql],indices:!1,serializeDate:function(e){return Ul.call(e)},skipNulls:!1,strictNullHandling:!1},zl=function e(t,r,i,n,s,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&&Fl(y)&&(y=Il.maybeMap(y,(function(e){return e instanceof Date?p(e):e}))),null===y){if(n)return a&&!h?a(r,$l.encoder,f,"key",l):r;y=""}if("string"==typeof(g=y)||"number"==typeof g||"boolean"==typeof g||"symbol"==typeof g||"bigint"==typeof g||Il.isBuffer(y))return a?[u(h?r:a(r,$l.encoder,f,"key",l))+"="+u(a(y,$l.encoder,f,"value",l))]:[u(r)+"="+u(String(y))];var v,b=[];if(void 0===y)return b;if("comma"===i&&Fl(y))v=[{value:y.length>0?y.join(",")||null:void 0}];else if(Fl(o))v=o;else{var w=Object.keys(y);v=c?w.sort(c):w}for(var _=0;_<v.length;++_){var S=v[_],R="object"==typeof S&&void 0!==S.value?S.value:y[S];if(!s||null!==R){var k=Fl(y)?"function"==typeof i?i(r,S):r:r+(d?"."+S:"["+S+"]");m.set(t,!0);var P=xl();Bl(b,e(R,k,i,n,s,a,o,c,d,p,l,u,h,f,P))}}return b},Vl=Ol,Wl=Object.prototype.hasOwnProperty,Gl=Array.isArray,Hl={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Vl.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},Kl=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Ql=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Jl=function(e,t,r,i){if(e){var n=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/g,a=r.depth>0&&/(\[[^[\]]*])/.exec(n),o=a?n.slice(0,a.index):n,c=[];if(o){if(!r.plainObjects&&Wl.call(Object.prototype,o)&&!r.allowPrototypes)return;c.push(o)}for(var d=0;r.depth>0&&null!==(a=s.exec(n))&&d<r.depth;){if(d+=1,!r.plainObjects&&Wl.call(Object.prototype,a[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(a[1])}return a&&c.push("["+n.slice(a.index)+"]"),function(e,t,r,i){for(var n=i?t:Ql(t,r),s=e.length-1;s>=0;--s){var a,o=e[s];if("[]"===o&&r.parseArrays)a=[].concat(n);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]=n:a[c]=n:a={0:n}}n=a}return n}(c,t,r,i)}},Yl=function(e,t){var r,i=e,n=function(e){if(!e)return $l;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||$l.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=Ll.default;if(void 0!==e.format){if(!jl.call(Ll.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=Ll.formatters[r],n=$l.filter;return("function"==typeof e.filter||Fl(e.filter))&&(n=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:$l.addQueryPrefix,allowDots:void 0===e.allowDots?$l.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:$l.charsetSentinel,delimiter:void 0===e.delimiter?$l.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:$l.encode,encoder:"function"==typeof e.encoder?e.encoder:$l.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:$l.encodeValuesOnly,filter:n,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:$l.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:$l.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:$l.strictNullHandling}}(t);"function"==typeof n.filter?i=(0,n.filter)("",i):Fl(n.filter)&&(r=n.filter);var s,a=[];if("object"!=typeof i||null===i)return"";s=t&&t.arrayFormat in Al?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var o=Al[s];r||(r=Object.keys(i)),n.sort&&r.sort(n.sort);for(var c=xl(),d=0;d<r.length;++d){var p=r[d];n.skipNulls&&null===i[p]||Bl(a,zl(i[p],p,o,n.strictNullHandling,n.skipNulls,n.encode?n.encoder:null,n.filter,n.sort,n.allowDots,n.serializeDate,n.format,n.formatter,n.encodeValuesOnly,n.charset,c))}var l=a.join(n.delimiter),u=!0===n.addQueryPrefix?"?":"";return n.charsetSentinel&&("iso-8859-1"===n.charset?u+="utf8=%26%2310003%3B&":u+="utf8=%E2%9C%93&"),l.length>0?u+l:""},Xl=function(e,t){var r=function(e){if(!e)return Hl;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?Hl.charset:e.charset;return{allowDots:void 0===e.allowDots?Hl.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:Hl.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:Hl.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:Hl.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Hl.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:Hl.comma,decoder:"function"==typeof e.decoder?e.decoder:Hl.decoder,delimiter:"string"==typeof e.delimiter||Vl.isRegExp(e.delimiter)?e.delimiter:Hl.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:Hl.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:Hl.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:Hl.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:Hl.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Hl.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},n=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,s=t.parameterLimit===1/0?void 0:t.parameterLimit,a=n.split(t.delimiter,s),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,Hl.decoder,c,"key"),p=t.strictNullHandling?null:""):(d=t.decoder(l.slice(0,h),Hl.decoder,c,"key"),p=Vl.maybeMap(Ql(l.slice(h+1),t),(function(e){return t.decoder(e,Hl.decoder,c,"value")}))),p&&t.interpretNumericEntities&&"iso-8859-1"===c&&(p=Kl(p)),l.indexOf("[]=")>-1&&(p=Gl(p)?[p]:p),Wl.call(i,d)?i[d]=Vl.combine(i[d],p):i[d]=p}return i}(e,r):e,n=r.plainObjects?Object.create(null):{},s=Object.keys(i),a=0;a<s.length;++a){var o=s[a],c=Jl(o,i[o],r,"string"==typeof e);n=Vl.merge(n,c,r)}return!0===r.allowSparse?n:Vl.compact(n)},Zl={formats:Pl,parse:Xl,stringify:Yl};class eu{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=Bd.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>Zl.stringify(e)}),this.customNode=i}getNode(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:e});return t}))}}class tu{createSystem(e){return new Qs({clientEventEmitter:e})}createMedia(){return new zs}createNetwork(e){const{loadbalancer:t}=e,r=new dc,i=new eu(t);return new Ks({socketClient:r,loadBalancerApiClient:i})}createChannelEventHandler(e){return new Js(e)}createMediaSoupEventHandler(e){return new Ys(e)}createIssueDetector(e){return new Va({onIssue:t=>{t.forEach((t=>{e.logger.warn("webRtcIssueDetector",t)}))}})}}class ru{constructor(e){var t,r;const{observer:i,network:n,onLogMessage:a}=e;this._observer=null!=i?i:new s;const o=new tu;this.engine=new Hs({dependenciesFactory:o,clientEventEmitter:this.observer,network:{loadbalancer:{baseURL:null===(t=null==n?void 0:n.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==n?void 0:n.loadbalancer)||void 0===r?void 0:r.customNode}},onLogMessage:a})}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{ru as default};
15
+ ***************************************************************************** */function r(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?n(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)}function n(e,t,r,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,r):n?n.value=r:t.set(e,r),r}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 a,o,c;!function(e){e.VIDEO="video",e.AUDIO="audio"}(a||(a={})),function(e){e[e.BAD=1]="BAD",e[e.MEDIUM=2]="MEDIUM",e[e.GOOD=3]="GOOD"}(o||(o={})),function(e){e.Camera="camera",e.Microphone="microphone",e.ScreenVideo="screen-video",e.ScreenAudio="screen-audio",e.Unknown="unknown"}(c||(c={}));const d="channel.event",p="channel.join",l="channel.getPeers",u="peer.disconnected",h="channel-event",f="peer-joined",m="peer-left",g="channel-rejoin-required",y="devices-list-updated",v="media-published",b="media-unpublished",w="connection-quality-changed",_="track-start",S="track-end",R="track-paused",k="track-resumed";var P;!function(e){e.Connected="connected",e.Reconnecting="reconnecting",e.Reconnected="reconnected",e.Disconnected="disconnected",e.Reconnect="reconnect",e.Error="error"}(P||(P={}));const C="peer.newProducer",T="producer.close",E="producer.pause",D="producer.resume",M="producer.scoreChanged",O="producer.setMaxSpatialLayer",x="producer.requestMaxSpatialLayer",I="consumer.create",L="consumer.close",j="consumer.pause",A="consumer.resume",F="consumer.scoreChanged",N="consumer.changeConsumerPreferredLayers",B="consumer.setConsumerPriority",U="transport.create",q="transport.close",$="transport.connect",z="transport.produce",V="connectionstatechange",W="getIceParameters",G="connect",H="produce";var K="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Q(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 J={exports:{}},Y=1e3,X=6e4,Z=60*X,ee=24*Z,te=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*ee;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Z;case"minutes":case"minute":case"mins":case"min":case"m":return r*X;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>=ee)return re(e,t,ee,"day");if(t>=Z)return re(e,t,Z,"hour");if(t>=X)return re(e,t,X,"minute");if(t>=1e3)return re(e,t,1e3,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=ee)return Math.round(e/ee)+"d";if(t>=Z)return Math.round(e/Z)+"h";if(t>=X)return Math.round(e/X)+"m";if(t>=Y)return Math.round(e/Y)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function re(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}var ie=function(e){function t(e){let i,n,s,a=null;function o(...e){if(!o.enabled)return;const r=o,n=Number(new Date),s=n-(i||n);r.diff=s,r.prev=i,r.curr=n,i=n,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,n)=>{if("%%"===i)return"%";a++;const s=t.formatters[n];if("function"==typeof s){const t=e[a];i=s.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:(n!==t.namespaces&&(n=t.namespaces,s=t.enabled(e)),s),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,]+/),n=i.length;for(r=0;r<n;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=te,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,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(n=i))})),t.splice(n,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=ie(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(J,J.exports);var ne=J.exports;const se=3,ae=4,oe=6,ce=7;var de,pe,le;class ue{constructor(e){de.set(this,void 0),pe.set(this,void 0),le.set(this,void 0);const{logLevel:t,namespace:r,onLogMessage:s}=e;n(this,de,r,"f"),n(this,pe,t,"f"),this._debug=ne("LiveDigital").extend("debug").extend(i(this,de,"f")),this._info=ne("LiveDigital").extend("info").extend(i(this,de,"f")),this._warn=ne("LiveDigital").extend("warn").extend(i(this,de,"f")),this._error=ne("LiveDigital").extend("error").extend(i(this,de,"f")),this._debug.log=console.info.bind(console),this._info.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console),n(this,le,((e,...t)=>{"function"==typeof s&&s(e,...t)}),"f")}debug(e,...t){this._debug(e,...t),i(this,pe,"f")>=ce&&i(this,le,"f").call(this,e,...t)}info(e,...t){this._debug(e,...t),i(this,pe,"f")>=oe&&i(this,le,"f").call(this,e,...t)}warn(e,...t){this._warn(e,...t),i(this,pe,"f")>=ae&&i(this,le,"f").call(this,e,...t)}error(e,...t){this._error(e,...t),i(this,pe,"f")>=se&&i(this,le,"f").call(this,e,...t)}}de=new WeakMap,pe=new WeakMap,le=new WeakMap;class he{constructor(e){this.score=10;const{id:t,kind:r,peerId:i,label:n}=e;this.id=t,this.kind=r,this.peerId=i,this.label=n,this.encodings=e.encodings,this.trackTransformParams=e.trackTransformParams,this.maxSpatialLayer=e.maxSpatialLayer}}var fe={},me={exports:{}},ge=1e3,ye=60*ge,ve=60*ye,be=24*ve,we=7*be,_e=365.25*be,Se=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*_e;case"weeks":case"week":case"w":return r*we;case"days":case"day":case"d":return r*be;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ve;case"minutes":case"minute":case"mins":case"min":case"m":return r*ye;case"seconds":case"second":case"secs":case"sec":case"s":return r*ge;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>=be)return Re(e,t,be,"day");if(t>=ve)return Re(e,t,ve,"hour");if(t>=ye)return Re(e,t,ye,"minute");if(t>=ge)return Re(e,t,ge,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=be)return Math.round(e/be)+"d";if(t>=ve)return Math.round(e/ve)+"h";if(t>=ye)return Math.round(e/ye)+"m";if(t>=ge)return Math.round(e/ge)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function Re(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}var ke=function(e){function t(e){let i,n,s,a=null;function o(...e){if(!o.enabled)return;const r=o,n=Number(new Date),s=n-(i||n);r.diff=s,r.prev=i,r.curr=n,i=n,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,n)=>{if("%%"===i)return"%";a++;const s=t.formatters[n];if("function"==typeof s){const t=e[a];i=s.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:(n!==t.namespaces&&(n=t.namespaces,s=t.enabled(e)),s),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,]+/),n=i.length;for(r=0;r<n;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=Se,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,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(n=i))})),t.splice(n,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=ke(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(me,me.exports);var Pe={},Ce={exports:{}};Ce.exports=function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.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 n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));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),n=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 n=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(n,s),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(n,s)),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 n=e[r];if(t(n,r))return n}},e.assign=function(e){for(var t,r,i=e,n=arguments.length,s=new Array(n>1?n-1:0),a=1;a<n;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){i[t]=e[t]}))};for(t=0,r=s.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=n,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,n=(i=r(91))&&i.__esModule?i:{default:i},s=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 n.default(e,t)},e.parse=function(e){return new n.default(e).getResult()},t=e,i=[{key:"BROWSER_MAP",get:function(){return s.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s.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)),n=c(r(93)),s=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(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.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(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.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,n={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(n[t]=a,s+=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(s>0){var u=Object.keys(n),h=o.default.find(u,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(n[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),n=o.default.getBrowserTypeByAlias(i);return t&&n&&(i=n.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,n=this.getBrowserVersion();if("string"==typeof n)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(n,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,n=(i=r(17))&&i.__esModule?i:{default:i},s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=n.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=n.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=n.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=n.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,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=n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=n.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=n.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=n.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=n.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=n.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=n.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=n.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=n.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(s,e)||n.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=n.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=n.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=n.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=n.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=n.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=n.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=n.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=n.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=n.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=n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:n.default.getFirstMatch(t,e),version:n.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,n=(i=r(17))&&i.__esModule?i:{default:i},s=r(18),a=[{test:[/Roku\/DVP/],describe:function(e){var t=n.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=n.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=n.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=n.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=n.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=n.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=n.default.getMacOSVersionName(t),i={name:s.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=n.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:s.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=n.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=n.default.getAndroidVersionName(t),i={name:s.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=n.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=n.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||n.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||n.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=n.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=n.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=n.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:s.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,n=(i=r(17))&&i.__esModule?i:{default:i},s=r(18),a=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=n.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.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=n.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:s.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:s.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},s=r(18),a=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=n.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=n.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:s.ENGINE_MAP.Presto},r=n.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:s.ENGINE_MAP.Gecko},r=n.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=n.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}});var Te={},Ee=K&&K.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Te,"__esModule",{value:!0}),Te.Logger=void 0;const De=Ee(me.exports),Me="mediasoup-client";Te.Logger=class{constructor(e){e?(this._debug=(0,De.default)(`${Me}:${e}`),this._warn=(0,De.default)(`${Me}:WARN:${e}`),this._error=(0,De.default)(`${Me}:ERROR:${e}`)):(this._debug=(0,De.default)(Me),this._warn=(0,De.default)(`${Me}:WARN`),this._error=(0,De.default)(`${Me}: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 Oe={};Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.EnhancedEventEmitter=void 0;const xe=e,Ie=new Te.Logger("EnhancedEventEmitter");class Le extends xe.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(t){return Ie.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){Ie.error("safeEmitAsPromise() | event listener threw an error [event:%s]:%o",e,t),i(t)}}))}}Oe.EnhancedEventEmitter=Le;var je={};Object.defineProperty(je,"__esModule",{value:!0}),je.InvalidStateError=je.UnsupportedError=void 0;class Ae extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Ae):this.stack=new Error(e).stack}}je.UnsupportedError=Ae;class Fe extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Fe):this.stack=new Error(e).stack}}je.InvalidStateError=Fe;var Ne={};Object.defineProperty(Ne,"__esModule",{value:!0}),Ne.generateRandomNumber=Ne.clone=void 0,Ne.clone=function(e,t){return void 0===e?t:JSON.parse(JSON.stringify(e))},Ne.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var Be={},Ue={};!function(e){const t=J.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 n=new i(1,31);class s{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 s("x1xx0000"),1),new a(77,new s("1xxx0000"),1),new a(88,new s("11xx0000"),1),new a(66,new s("x0xx0000"),2),new a(88,new s("10xx0000"),2),new a(77,new s("0x0x0000"),3),new a(100,new s("00000000"),5),new a(100,new s("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 n=255&r,s=r>>8&255,a=r>>16&255;let c;switch(n){case 11:c=0!=(16&s)?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=n;break;default:return t("parseProfileLevelId() | unrecognized level_idc:%s",n),null}for(const e of o)if(a===e.profile_idc&&e.profile_iop.isMatch(s))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):n},e.isSameProfile=function(t={},r={}){const i=e.parseSdpProfileLevelId(t),n=e.parseSdpProfileLevelId(r);return Boolean(i&&n&&i.profile===n.profile)},e.generateProfileLevelIdForAnswer=function(n={},s={}){if(!n["profile-level-id"]&&!s["profile-level-id"])return t("generateProfileLevelIdForAnswer() | no profile-level-id in local and remote params"),null;const a=e.parseSdpProfileLevelId(n),o=e.parseSdpProfileLevelId(s);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(n)&&d(s),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))}}(Ue);var qe=K&&K.__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]}),$e=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ze=K&&K.__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)&&qe(t,e,r);return $e(t,e),t};Object.defineProperty(Be,"__esModule",{value:!0}),Be.canReceive=Be.canSend=Be.generateProbatorRtpParameters=Be.reduceCodecs=Be.getSendingRemoteRtpParameters=Be.getSendingRtpParameters=Be.getRecvRtpCapabilities=Be.getExtendedRtpCapabilities=Be.validateSctpStreamParameters=Be.validateSctpParameters=Be.validateNumSctpStreams=Be.validateSctpCapabilities=Be.validateRtcpParameters=Be.validateRtpEncodingParameters=Be.validateRtpHeaderExtensionParameters=Be.validateRtpCodecParameters=Be.validateRtpParameters=Be.validateRtpHeaderExtension=Be.validateRtcpFeedback=Be.validateRtpCodecCapability=Be.validateRtpCapabilities=void 0;const Ve=ze(Ue),We=ze(Ne);function Ge(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)He(t)}function He(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 Ke(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 Qe(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)Je(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)Ye(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={}),Ze(e.rtcp)}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("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)He(t)}function Ye(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 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 et(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 tt(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function rt(e,t,{strict:r=!1,modify:i=!1}={}){const n=e.mimeType.toLowerCase();if(n!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(n){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!Ve.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Ve.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 it(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function nt(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}Be.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)Ge(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)Ke(t)},Be.validateRtpCodecCapability=Ge,Be.validateRtcpFeedback=He,Be.validateRtpHeaderExtension=Ke,Be.validateRtpParameters=Qe,Be.validateRtpCodecParameters=Je,Be.validateRtpHeaderExtensionParameters=Ye,Be.validateRtpEncodingParameters=Xe,Be.validateRtcpParameters=Ze,Be.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");et(e.numStreams)},Be.validateNumSctpStreams=et,Be.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")},Be.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")},Be.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(tt(i))continue;const t=(e.codecs||[]).find((e=>rt(e,i,{strict:!0,modify:!0})));if(!t)continue;const n={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:nt(t,i)};r.codecs.push(n)}for(const i of r.codecs){const r=e.codecs.find((e=>tt(e)&&e.parameters.apt===i.localPayloadType)),n=t.codecs.find((e=>tt(e)&&e.parameters.apt===i.remotePayloadType));r&&n&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=n.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>it(e,i)));if(!t)continue;const n={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":n.direction="sendrecv";break;case"recvonly":n.direction="sendonly";break;case"sendonly":n.direction="recvonly";break;case"inactive":n.direction="inactive"}r.headerExtensions.push(n)}return r},Be.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},Be.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},Be.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},Be.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(rt(e[i],t)){r.push(e[i]),tt(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]),tt(e[1])&&r.push(e[1]);return r},Be.generateProbatorRtpParameters=function(e){Qe(e=We.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},Be.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Be.canReceive=function(e,t){if(Qe(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var st={},at={},ot=K&&K.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?n(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(at,"__esModule",{value:!0});at.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 ot(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 n={task:e,name:t,resolve:r,reject:i,stopped:!1,enqueuedAt:new Date,executedAt:void 0};this.pendingTasks.push(n),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 ot(this,void 0,void 0,(function*(){const e=this.pendingTasks[0];e&&(yield this.executeTask(e),this.pendingTasks.shift(),this.next())}))}executeTask(e){return ot(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 ct={};Object.defineProperty(ct,"__esModule",{value:!0}),ct.Producer=void 0;const dt=Oe,pt=je,lt=new Te.Logger("Producer");class ut extends dt.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:n,stopTracks:s,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new dt.EnhancedEventEmitter,lt.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=n,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,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||(lt.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(lt.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new pt.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){lt.debug("pause()"),this._closed?lt.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(){lt.debug("resume()"),this._closed?lt.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(lt.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new pt.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new pt.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()):lt.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new pt.InvalidStateError("closed");if("video"!==this._kind)throw new pt.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 pt.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await this.safeEmitAsPromise("@setrtpencodingparameters",e)}_onTrackEnded(){lt.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){}}}ct.Producer=ut;var ht={};Object.defineProperty(ht,"__esModule",{value:!0}),ht.Consumer=void 0;const ft=Oe,mt=je,gt=new Te.Logger("Consumer");class yt extends ft.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:n,rtpParameters:s,appData:a}){super(),this._closed=!1,this._observer=new ft.EnhancedEventEmitter,gt.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=n,this._rtpParameters=s,this._paused=!n.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||(gt.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(gt.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new mt.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){gt.debug("pause()"),this._closed?gt.error("pause() | Consumer closed"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){gt.debug("resume()"),this._closed?gt.error("resume() | Consumer closed"):(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume"))}_onTrackEnded(){gt.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){}}}ht.Consumer=yt;var vt={};Object.defineProperty(vt,"__esModule",{value:!0}),vt.DataProducer=void 0;const bt=Oe,wt=je,_t=new Te.Logger("DataProducer");class St extends bt.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new bt.EnhancedEventEmitter,_t.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||(_t.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(_t.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(_t.debug("send()"),this._closed)throw new wt.InvalidStateError("closed");this._dataChannel.send(e)}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(_t.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?_t.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):_t.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(_t.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||_t.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}vt.DataProducer=St;var Rt={};Object.defineProperty(Rt,"__esModule",{value:!0}),Rt.DataConsumer=void 0;const kt=Oe,Pt=new Te.Logger("DataConsumer");class Ct extends kt.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:n}){super(),this._closed=!1,this._observer=new kt.EnhancedEventEmitter,Pt.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=n,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||(Pt.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Pt.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Pt.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?Pt.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Pt.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Pt.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=Ct;var Tt=K&&K.__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]}),Et=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Dt=K&&K.__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)&&Tt(t,e,r);return Et(t,e),t};Object.defineProperty(st,"__esModule",{value:!0}),st.Transport=void 0;const Mt=at,Ot=Te,xt=Oe,It=je,Lt=Dt(Ne),jt=Dt(Be),At=ct,Ft=ht,Nt=vt,Bt=Rt;class Ut{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const qt=new Ot.Logger("Transport");class $t extends xt.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,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 Mt.AwaitQueue({ClosedErrorClass:It.InvalidStateError}),this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._observer=new xt.EnhancedEventEmitter,qt.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=Lt.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:n,sctpParameters:s,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){qt.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 It.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(qt.debug("restartIce()"),this._closed)throw new It.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(qt.debug("updateIceServers()"),this._closed)throw new It.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:n=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:a=!1,appData:o={}}={}){if(qt.debug("produce() [track:%o]",e),!e)throw new TypeError("missing track");if("send"!==this._direction)throw new It.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new It.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new It.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{jt.validateRtpParameters(p);const{id:t}=await this.safeEmitAsPromise("produce",{kind:e.kind,rtpParameters:p,appData:o}),r=new At.Producer({id:t,localId:d,rtpSender:l,track:e,rtpParameters:p,stopTracks:n,disableTrackOnPause:s,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(n)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,appData:n={}}){if(qt.debug("consume()"),i=Lt.clone(i,void 0),this._closed)throw new It.InvalidStateError("closed");if("recv"!==this._direction)throw new It.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(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");if(!jt.canReceive(i,this._extendedRtpCapabilities))throw new It.UnsupportedError("cannot consume this Producer");const s=new Ut({id:e,producerId:t,kind:r,rtpParameters:i,appData:n});return this._pendingConsumerTasks.push(s),!1===this._consumerCreationInProgress&&this._createPendingConsumers(),s.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:n="",appData:s={}}={}){if(qt.debug("produceData()"),"send"!==this._direction)throw new It.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new It.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(s&&"object"!=typeof s)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:n});jt.validateSctpStreamParameters(o);const{id:c}=await this.safeEmitAsPromise("producedata",{sctpStreamParameters:o,label:i,protocol:n,appData:s}),d=new Nt.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:s});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:n="",appData:s={}}){if(qt.debug("consumeData()"),r=Lt.clone(r,void 0),this._closed)throw new It.InvalidStateError("closed");if("recv"!==this._direction)throw new It.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new It.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(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return jt.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:n}),o=new Bt.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,appData:s});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:n}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:n})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;r++){const n=e[r],s=i[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:p}=n.consumerOptions,{localId:l,rtpReceiver:u,track:h}=s,f=new Ft.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),n.resolve(f)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=jt.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),qt.debug("_createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){qt.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 It.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(qt.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=>qt.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 It.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 It.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)}))}}st.Transport=$t;var zt={},Vt={},Wt={},Gt={exports:{}},Ht=Gt.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(Ht).forEach((function(e){Ht[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 n=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:n&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:n?r[e.name]:r;!function(e,r,i,n){if(n&&!i)r[n]=t(e[1]);else for(var s=0;s<i.length;s+=1)null!=e[s+1]&&(r[i[s]]=t(e[s+1]))}(i.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},i=Gt.exports,n=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(n).forEach((function(e){var t=e[0],n=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),a=s[s.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(n))return r(c,a,n)}})),t.media=s,t};var s=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(s,{})},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),n=0;n<i.length;n+=3)r.push({component:i[n],ip:i[n+1],port:i[n+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},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}}))}))}}(Wt);var Kt=Gt.exports,Qt=/%[sdv%]/g,Jt=function(e){var t=1,r=arguments,i=r.length;return e.replace(Qt,(function(e){if(t>=i)return e;var n=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(n);case"%d":return Number(n);case"%v":return""}}))},Yt=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 n=0;n<t.names.length;n+=1){var s=t.names[n];t.name?i.push(r[t.name][s]):i.push(r[t.names[n]])}else i.push(r[t.name]);return Jt.apply(null,i)},Xt=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Zt=["i","c","b","a"],er=Wt,tr=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||Xt,i=t.innerOrder||Zt,n=[];return r.forEach((function(t){Kt[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Yt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Yt(t,r,e))}))}))})),e.media.forEach((function(e){n.push(Yt("m",Kt.m[0],e)),i.forEach((function(t){Kt[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Yt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Yt(t,r,e))}))}))}))})),n.join("\r\n")+"\r\n"};Vt.write=tr,Vt.parse=er.parse,Vt.parseParams=er.parseParams,Vt.parseFmtpConfig=er.parseFmtpConfig,Vt.parsePayloads=er.parsePayloads,Vt.parseRemoteCandidates=er.parseRemoteCandidates,Vt.parseImageAttributes=er.parseImageAttributes,Vt.parseSimulcastStreamList=er.parseSimulcastStreamList;var rr={},ir=K&&K.__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]}),nr=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),sr=K&&K.__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)&&ir(t,e,r);return nr(t,e),t};Object.defineProperty(rr,"__esModule",{value:!0}),rr.applyCodecParameters=rr.getCname=rr.extractDtlsParameters=rr.extractRtpCapabilities=void 0;const ar=sr(Vt);rr.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,n=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(n)continue;n=!0;break;default:continue}for(const r of s.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 s.fmtp||[]){const r=ar.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 s.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 s.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}},rr.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}]}},rr.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},rr.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 n=ar.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(n.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(n))i.config&&(i.config+=";"),i.config+=`${e}=${n[e]}`}};var or={};Object.defineProperty(or,"__esModule",{value:!0}),or.addLegacySimulcast=or.getRtpEncodings=void 0,or.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,n]=i.ssrcs.split(/\s+/);e=Number(e),n=Number(n),t.has(e)&&(t.delete(e),t.delete(n),r.set(e,n))}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},or.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,n]=r.value.split(" "),s=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(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(s+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} ${n}`})}for(let t=0;t<p.length;++t){const r=d[t],s=p[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${i} ${n}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var cr={};Object.defineProperty(cr,"__esModule",{value:!0}),cr.HandlerInterface=void 0;const dr=Oe;class pr extends dr.EnhancedEventEmitter{constructor(){super()}}cr.HandlerInterface=pr;var lr={},ur={},hr=K&&K.__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]}),fr=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),mr=K&&K.__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)&&hr(t,e,r);return fr(t,e),t};Object.defineProperty(ur,"__esModule",{value:!0}),ur.OfferMediaSection=ur.AnswerMediaSection=ur.MediaSection=void 0;const gr=mr(Ne);class yr{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}}ur.MediaSection=yr;ur.AnswerMediaSection=class extends yr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.port=n.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:vr(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=gr.clone(e.parameters,{});if(d){const{opusStereo:t,opusFec:i,opusDtx:n,opusMaxPlaybackRate:s,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!==n&&(h.parameters.usedtx=n?1:0,r.usedtx=n?1:0),void 0!==s&&(r.maxplaybackrate=s),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 vr(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}ur.OfferMediaSection=class extends yr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:p,oldDataChannelSpec:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a),this._mediaObject.type=o,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=n.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:vr(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],n=i.ssrc,s=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:vr(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:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(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}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${s}`}))}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 br=K&&K.__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]}),wr=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),_r=K&&K.__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)&&br(t,e,r);return wr(t,e),t};Object.defineProperty(lr,"__esModule",{value:!0}),lr.RemoteSdp=void 0;const Sr=_r(Vt),Rr=ur,kr=new Te.Logger("RemoteSdp");lr.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=n,this._planB=s,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:""}]}n&&(this._sdpObject.origin.address=n.ip,this._sdpObject.origin.ipVer=n.ipVersion)}updateIceParameters(e){kr.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){kr.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:n,extmapAllowMixed:s=!1}){const a=new Rr.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s});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:n}){const s=this._midToIndex.get(e);let a;if(void 0!==s&&(a=this._mediaSections[s]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:n}),this._replaceMediaSection(a);else{a=new Rr.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:n});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(a,s.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 kr.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 Rr.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 Rr.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++,Sr.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 Pr={};Object.defineProperty(Pr,"__esModule",{value:!0}),Pr.parse=void 0;const Cr=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");Pr.parse=function(e){const t=Cr.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var Tr=K&&K.__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]}),Er=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Dr=K&&K.__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 Er(t,e),t};Object.defineProperty(zt,"__esModule",{value:!0}),zt.Chrome74=void 0;const Mr=Dr(Vt),Or=Te,xr=Dr(Ne),Ir=Dr(Be),Lr=Dr(rr),jr=Dr(or),Ar=cr,Fr=lr,Nr=Pr,Br=new Or.Logger("Chrome74"),Ur={OS:1024,MIS:1024};class qr extends Ar.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new qr}get name(){return"Chrome74"}close(){if(Br.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Br.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=Mr.parse(t.sdp);return Lr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Br.debug("getNativeSctpCapabilities()"),{numStreams:Ur}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Br.debug("run()"),this._direction=e,this._remoteSdp=new Fr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Ir.getSendingRtpParameters("audio",d),video:Ir.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ir.getSendingRemoteRtpParameters("audio",d),video:Ir.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){Br.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Br.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Br.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Br.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Br.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Br.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 n;this._assertSendDirection(),Br.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=xr.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Ir.reduceCodecs(s.codecs,i);const a=xr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Ir.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=Mr.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:l});let u=!1;const h=(0,Nr.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Br.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Mr.parse(p.sdp),d=l.media[o.idx],jr.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:Mr.write(l)}),Br.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const f=c.mid;if(s.mid=f,l=Mr.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=Lr.getCname({offerMediaObject:d}),t)if(1===t.length){let e=jr.getRtpEncodings({offerMediaObject:d});Object.assign(e[0],t[0]),u&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=jr.getRtpEncodings({offerMediaObject:d});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:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Br.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),Br.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();Br.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Br.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Br.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Br.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(),Br.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(),Br.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Br.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ur.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Mr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Br.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()};Br.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:n}=t;Br.debug("receive() [trackId:%s, kind:%s]",e,r);const s=n.mid||String(this._mapMidTransceiver.size);i.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Br.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=Mr.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,n=i.get(e),s=a.media.find((e=>String(e.mid)===n));Lr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Mr.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Br.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,n=i.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),r.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),Br.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()};Br.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Br.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),Br.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()};Br.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Br.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),Br.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()};Br.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Br.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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};Br.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()};Br.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Mr.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Br.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=Mr.parse(this._pc.localDescription.sdp));const r=Lr.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')}}zt.Chrome74=qr;var $r={},zr=K&&K.__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]}),Vr=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wr=K&&K.__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)&&zr(t,e,r);return Vr(t,e),t};Object.defineProperty($r,"__esModule",{value:!0}),$r.Chrome70=void 0;const Gr=Wr(Vt),Hr=Te,Kr=Wr(Ne),Qr=Wr(Be),Jr=Wr(rr),Yr=Wr(or),Xr=cr,Zr=lr,ei=Pr,ti=new Hr.Logger("Chrome70"),ri={OS:1024,MIS:1024};class ii extends Xr.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new ii}get name(){return"Chrome70"}close(){if(ti.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){ti.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=Gr.parse(t.sdp);return Jr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ti.debug("getNativeSctpCapabilities()"),{numStreams:ri}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ti.debug("run()"),this._direction=e,this._remoteSdp=new Zr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Qr.getSendingRtpParameters("audio",d),video:Qr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Qr.getSendingRemoteRtpParameters("audio",d),video:Qr.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){ti.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(ti.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ti.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ti.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ti.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ti.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 n;this._assertSendDirection(),ti.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=Kr.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Qr.reduceCodecs(s.codecs,i);const a=Kr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Qr.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=Gr.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:l}),t&&t.length>1&&(ti.debug("send() | enabling legacy simulcast"),l=Gr.parse(p.sdp),d=l.media[o.idx],Yr.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:Gr.write(l)});let u=!1;const h=(0,ei.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(ti.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Gr.parse(p.sdp),d=l.media[o.idx],Yr.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:Gr.write(l)}),ti.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p),t){ti.debug("send() | applying given encodings");const e=c.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],n=t[r];if(!n)break;e.encodings[r]=Object.assign(i,n)}await c.sender.setParameters(e)}const f=c.mid;if(s.mid=f,l=Gr.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=Jr.getCname({offerMediaObject:d}),s.encodings=Yr.getRtpEncodings({offerMediaObject:d}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);if(u&&(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:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return ti.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),ti.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();ti.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ti.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?ti.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ti.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(),ti.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(),ti.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};ti.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ri.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Gr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),ti.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()};ti.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:n}=t;ti.debug("receive() [trackId:%s, kind:%s]",e,r);const s=n.mid||String(this._mapMidTransceiver.size);i.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};ti.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=Gr.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,n=i.get(e),s=a.media.find((e=>String(e.mid)===n));Jr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Gr.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),ti.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,n=i.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),r.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),ti.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()};ti.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();ti.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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};ti.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()};ti.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Gr.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}ti.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=Gr.parse(this._pc.localDescription.sdp));const r=Jr.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=ii;var ni={},si={};Object.defineProperty(si,"__esModule",{value:!0}),si.addLegacySimulcast=si.getRtpEncodings=void 0,si.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,n]=t.ssrcs.split(/\s+/);e=Number(e),n=Number(n),r.has(e)&&(r.delete(e),r.delete(n),i.set(e,n))}for(const e of r)i.set(e,null);const n=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},si.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,n,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,s=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&&(n=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),n&&d.push(n+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:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],n=d[r];e.ssrcs.push({id:n,attribute:"cname",value:o}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${n}`})}};var ai=K&&K.__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]}),oi=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ci=K&&K.__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)&&ai(t,e,r);return oi(t,e),t};Object.defineProperty(ni,"__esModule",{value:!0}),ni.Chrome67=void 0;const di=ci(Vt),pi=Te,li=ci(Ne),ui=ci(Be),hi=ci(rr),fi=ci(si),mi=cr,gi=lr,yi=new pi.Logger("Chrome67"),vi={OS:1024,MIS:1024};class bi extends mi.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 bi}get name(){return"Chrome67"}close(){if(yi.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){yi.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=di.parse(t.sdp);return hi.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return yi.debug("getNativeSctpCapabilities()"),{numStreams:vi}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){yi.debug("run()"),this._direction=e,this._remoteSdp=new gi.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:ui.getSendingRtpParameters("audio",d),video:ui.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ui.getSendingRemoteRtpParameters("audio",d),video:ui.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){yi.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(yi.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});yi.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};yi.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};yi.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();yi.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 n;this._assertSendDirection(),yi.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&yi.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,a=await this._pc.createOffer(),o=di.parse(a.sdp);const c=li.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=ui.reduceCodecs(c.codecs);const d=li.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=ui.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(yi.debug("send() | enabling simulcast"),o=di.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),fi.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:di.write(o)}),yi.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=di.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=hi.getCname({offerMediaObject:s}),c.encodings=fi.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};yi.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(),yi.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();yi.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void yi.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()};yi.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?yi.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):yi.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(),yi.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(),yi.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};yi.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%vi.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=di.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),yi.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()};yi.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;yi.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};yi.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=di.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));hi.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:di.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),yi.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:i,rtpParameters:n}=t,s=i,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:a,rtpParameters:n,rtpReceiver:o}),r.push({localId:s,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),yi.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()};yi.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();yi.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};yi.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()};yi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=di.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}yi.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=di.parse(this._pc.localDescription.sdp));const r=hi.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')}}ni.Chrome67=bi;var wi={},_i=K&&K.__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]}),Si=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ri=K&&K.__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)&&_i(t,e,r);return Si(t,e),t};Object.defineProperty(wi,"__esModule",{value:!0}),wi.Chrome55=void 0;const ki=Ri(Vt),Pi=Te,Ci=je,Ti=Ri(Ne),Ei=Ri(Be),Di=Ri(rr),Mi=Ri(si),Oi=cr,xi=lr,Ii=new Pi.Logger("Chrome55"),Li={OS:1024,MIS:1024};class ji extends Oi.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 ji}get name(){return"Chrome55"}close(){if(Ii.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Ii.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=ki.parse(t.sdp);return Di.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ii.debug("getNativeSctpCapabilities()"),{numStreams:Li}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ii.debug("run()"),this._direction=e,this._remoteSdp=new xi.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,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:s||[],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){Ii.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Ii.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ii.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ii.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ii.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ii.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 n;this._assertSendDirection(),Ii.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Ii.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,a=await this._pc.createOffer(),o=ki.parse(a.sdp);const c=Ti.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=Ei.reduceCodecs(c.codecs);const d=Ti.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=Ei.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Ii.debug("send() | enabling simulcast"),o=ki.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),Mi.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:ki.write(o)}),Ii.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=ki.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=Di.getCname({offerMediaObject:s}),c.encodings=Mi.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};Ii.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(),Ii.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();Ii.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Ii.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()};Ii.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new Ci.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Ci.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new Ci.UnsupportedError("not supported")}async getSenderStats(e){throw new Ci.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Ii.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Li.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ki.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Ii.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()};Ii.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;Ii.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r,s=i.rtcp.cname;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Ii.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ki.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Di.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:ki.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),Ii.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:i,rtpParameters:n}=t,s=e,a=i,o=n.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:s,rtpParameters:n}),r.push({localId:a,track:d})}return r}async stopReceiving(e){this._assertRecvDirection(),Ii.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()};Ii.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();Ii.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Ci.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};Ii.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()};Ii.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ki.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Ii.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=ki.parse(this._pc.localDescription.sdp));const r=Di.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')}}wi.Chrome55=ji;var Ai={},Fi=K&&K.__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]}),Ni=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bi=K&&K.__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)&&Fi(t,e,r);return Ni(t,e),t};Object.defineProperty(Ai,"__esModule",{value:!0}),Ai.Firefox60=void 0;const Ui=Bi(Vt),qi=Te,$i=je,zi=Bi(Ne),Vi=Bi(Be),Wi=Bi(rr),Gi=Bi(or),Hi=cr,Ki=lr,Qi=new qi.Logger("Firefox60"),Ji={OS:16,MIS:2048};class Yi extends Hi.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Yi}get name(){return"Firefox60"}close(){if(Qi.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Qi.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"}),n=i.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];n.encodings=s,await i.sender.setParameters(n);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=Ui.parse(a.sdp);return Wi.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 Qi.debug("getNativeSctpCapabilities()"),{numStreams:Ji}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Qi.debug("run()"),this._direction=e,this._remoteSdp=new Ki.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Vi.getSendingRtpParameters("audio",d),video:Vi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Vi.getSendingRemoteRtpParameters("audio",d),video:Vi.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],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(Qi.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Qi.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Qi.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Qi.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Qi.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(),Qi.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=zi.clone(t,[])).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const n=zi.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Vi.reduceCodecs(n.codecs,i);const s=zi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=Vi.reduceCodecs(s.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=Ui.parse(o.sdp);this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:c}),Qi.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const d=a.mid;n.mid=d,c=Ui.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(n.rtcp.cname=Wi.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Gi.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t.reverse();else n.encodings=Gi.getRtpEncodings({offerMediaObject:p});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:p,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const l={type:"answer",sdp:this._remoteSdp.getSdp()};return Qi.debug("send() | calling pc.setRemoteDescription() [answer:%o]",l),await this._pc.setRemoteDescription(l),this._mapMidTransceiver.set(d,a),{localId:d,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){Qi.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();Qi.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Qi.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Qi.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Qi.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(),Qi.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(),Qi.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:n}){this._assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Qi.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ji.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:"client",localSdpObject:t}),Qi.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()};Qi.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this._assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n}=t;Qi.debug("receive() [trackId:%s, kind:%s]",e,i);const s=n.mid||String(this._mapMidTransceiver.size);r.set(e,s),this._remoteSdp.receive({mid:s,kind:i,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Qi.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Ui.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=s.media.find((e=>String(e.mid)===a));Wi.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),n={type:"answer",sdp:Ui.write(s)}}this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:s}),Qi.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this._assertRecvDirection(),Qi.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()};Qi.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Qi.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),Qi.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()};Qi.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Qi.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),Qi.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()};Qi.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Qi.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:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};Qi.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()};Qi.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:"client",localSdpObject:e})}Qi.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=Ui.parse(this._pc.localDescription.sdp));const r=Wi.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')}}Ai.Firefox60=Yi;var Xi={},Zi=K&&K.__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]}),en=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tn=K&&K.__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 en(t,e),t};Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.Safari12=void 0;const rn=tn(Vt),nn=Te,sn=tn(Ne),an=tn(Be),on=tn(rr),cn=tn(or),dn=cr,pn=lr,ln=new nn.Logger("Safari12"),un={OS:1024,MIS:1024};class hn extends dn.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new hn}get name(){return"Safari12"}close(){if(ln.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){ln.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=rn.parse(t.sdp);return on.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ln.debug("getNativeSctpCapabilities()"),{numStreams:un}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ln.debug("run()"),this._direction=e,this._remoteSdp=new pn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:an.getSendingRtpParameters("audio",d),video:an.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:an.getSendingRemoteRtpParameters("audio",d),video:an.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){ln.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(ln.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ln.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ln.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ln.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ln.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 n;this._assertSendDirection(),ln.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=sn.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=an.reduceCodecs(s.codecs,i);const a=sn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=an.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=rn.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:l}),t&&t.length>1&&(ln.debug("send() | enabling legacy simulcast"),l=rn.parse(p.sdp),d=l.media[o.idx],cn.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:rn.write(l)}),ln.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const u=c.mid;if(s.mid=u,l=rn.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=on.getCname({offerMediaObject:d}),s.encodings=cn.getRtpEncodings({offerMediaObject:d}),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:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return ln.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,c),{localId:u,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),ln.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();ln.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ln.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?ln.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ln.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(),ln.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(),ln.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};ln.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%un.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=rn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),ln.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()};ln.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:n}=t;ln.debug("receive() [trackId:%s, kind:%s]",e,r);const s=n.mid||String(this._mapMidTransceiver.size);i.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};ln.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=rn.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,n=i.get(e),s=a.media.find((e=>String(e.mid)===n));on.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:rn.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),ln.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,n=i.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),r.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),ln.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()};ln.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();ln.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),ln.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()};ln.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();ln.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),ln.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()};ln.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();ln.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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};ln.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()};ln.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=rn.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}ln.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=rn.parse(this._pc.localDescription.sdp));const r=on.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')}}Xi.Safari12=hn;var fn={},mn=K&&K.__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]}),gn=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),yn=K&&K.__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)&&mn(t,e,r);return gn(t,e),t};Object.defineProperty(fn,"__esModule",{value:!0}),fn.Safari11=void 0;const vn=yn(Vt),bn=Te,wn=yn(Ne),_n=yn(Be),Sn=yn(rr),Rn=yn(si),kn=cr,Pn=lr,Cn=new bn.Logger("Safari11"),Tn={OS:1024,MIS:1024};class En extends kn.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 En}get name(){return"Safari11"}close(){if(Cn.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Cn.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=vn.parse(t.sdp);return Sn.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Cn.debug("getNativeSctpCapabilities()"),{numStreams:Tn}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Cn.debug("run()"),this._direction=e,this._remoteSdp=new Pn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:_n.getSendingRtpParameters("audio",d),video:_n.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:_n.getSendingRemoteRtpParameters("audio",d),video:_n.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){Cn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Cn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Cn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Cn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Cn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Cn.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 n;this._assertSendDirection(),Cn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Cn.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,a=await this._pc.createOffer(),o=vn.parse(a.sdp);const c=wn.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=_n.reduceCodecs(c.codecs);const d=wn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=_n.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Cn.debug("send() | enabling simulcast"),o=vn.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),Rn.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:vn.write(o)}),Cn.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=vn.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=Sn.getCname({offerMediaObject:s}),c.encodings=Rn.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};Cn.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();Cn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Cn.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()};Cn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?Cn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Cn.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(),Cn.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(),Cn.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Cn.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Tn.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=vn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Cn.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()};Cn.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;Cn.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Cn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=vn.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Sn.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:vn.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),Cn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:i,rtpParameters:n}=t,s=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:s,rtpParameters:n,rtpReceiver:o}),r.push({localId:a,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),Cn.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()};Cn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();Cn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}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:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};Cn.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()};Cn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=vn.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Cn.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=vn.parse(this._pc.localDescription.sdp));const r=Sn.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')}}fn.Safari11=En;var Dn={},Mn={},On=K&&K.__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]}),xn=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),In=K&&K.__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)&&On(t,e,r);return xn(t,e),t};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.mangleRtpParameters=Mn.getCapabilities=void 0;const Ln=In(Ne);Mn.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=Ln.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},Mn.mangleRtpParameters=function(e){const t=Ln.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 jn=K&&K.__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]}),An=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fn=K&&K.__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)&&jn(t,e,r);return An(t,e),t};Object.defineProperty(Dn,"__esModule",{value:!0}),Dn.Edge11=void 0;const Nn=Te,Bn=je,Un=Fn(Ne),qn=Fn(Be),$n=Fn(Mn),zn=cr,Vn=new Nn.Logger("Edge11");class Wn extends zn.HandlerInterface{constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}static createFactory(){return()=>new Wn}get name(){return"Edge11"}close(){Vn.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 Vn.debug("getNativeRtpCapabilities()"),$n.getCapabilities()}async getNativeSctpCapabilities(){return Vn.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Vn.debug("run()"),this._sendingRtpParametersByKind={audio:qn.getSendingRtpParameters("audio",d),video:qn.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${Un.generateRandomNumber()}`,this._setIceGatherer({iceServers:s,iceTransportPolicy:a}),this._setIceTransport(),this._setDtlsTransport()}async updateIceServers(e){throw new Bn.UnsupportedError("not supported")}async restartIce(e){if(Vn.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){Vn.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}){Vn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this._setupTransport({localDtlsRole:"server"}),Vn.debug("send() | calling new RTCRtpSender()");const n=new RTCRtpSender(e,this._dtlsTransport),s=Un.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=qn.reduceCodecs(s.codecs,i);const a=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Un.generateRandomNumber(),a&&(e.rtx={ssrc:Un.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=$n.mangleRtpParameters(s);Vn.debug("send() | calling rtpSender.send() [params:%o]",o),await n.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,n),{localId:c,rtpParameters:s,rtpSender:n}}async stopSending(e){Vn.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{Vn.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw Vn.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async replaceTrack(e,t){t?Vn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Vn.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){Vn.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){Vn.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 Bn.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;Vn.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:n}=r;Vn.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,i);s.addEventListener("error",(e=>{Vn.error('rtpReceiver "error" event [event:%o]',e)}));const a=$n.mangleRtpParameters(n);Vn.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await s.receive(a);const o=e;this._rtpReceivers.set(o,s),t.push({localId:o,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){Vn.debug("stopReceiving() [localId:%s]",e);const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(e);try{Vn.debug("stopReceiving() | calling rtpReceiver.stop()"),t.stop()}catch(e){Vn.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 Bn.UnsupportedError("not implemented")}_setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{Vn.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){Vn.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=>{Vn.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}_setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{Vn.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{Vn.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{Vn.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async _setupTransport({localDtlsRole:e}){Vn.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}}Dn.Edge11=Wn;var Gn={},Hn=K&&K.__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]}),Kn=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Qn=K&&K.__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)&&Hn(t,e,r);return Kn(t,e),t};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.ReactNative=void 0;const Jn=Qn(Vt),Yn=Te,Xn=je,Zn=Qn(Ne),es=Qn(Be),ts=Qn(rr),rs=Qn(si),is=cr,ns=lr,ss=new Yn.Logger("ReactNative"),as={OS:1024,MIS:1024};class os 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 os}get name(){return"ReactNative"}close(){if(ss.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){ss.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=Jn.parse(t.sdp);return ts.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ss.debug("getNativeSctpCapabilities()"),{numStreams:as}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ss.debug("run()"),this._direction=e,this._remoteSdp=new ns.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:es.getSendingRtpParameters("audio",d),video:es.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:es.getSendingRemoteRtpParameters("audio",d),video:es.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],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){ss.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(ss.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ss.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ss.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ss.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ss.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 n;this._assertSendDirection(),ss.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&ss.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,a=await this._pc.createOffer(),o=Jn.parse(a.sdp);const c=Zn.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=es.reduceCodecs(c.codecs);const d=Zn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=es.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(ss.debug("send() | enabling simulcast"),o=Jn.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),rs.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:Jn.write(o)}),ss.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=Jn.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=ts.getCname({offerMediaObject:s}),c.encodings=rs.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};ss.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(),ss.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();ss.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void ss.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()};ss.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new Xn.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Xn.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Xn.UnsupportedError("not implemented")}async getSenderStats(e){throw new Xn.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};ss.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%as.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Jn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),ss.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()};ss.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:n}=t;ss.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;let a=n.rtcp.cname;ss.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Zn.generateRandomNumber()}`,i.set(e,a),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:a,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};ss.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=Jn.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=a.media.find((e=>String(e.mid)===i));ts.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}s={type:"answer",sdp:Jn.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),ss.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{kind:e,trackId:n,rtpParameters:s}=t,a=n,o=e,c=i.get(n),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:s}),r.push({localId:a,track:p})}return r}async stopReceiving(e){this._assertRecvDirection(),ss.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()};ss.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();ss.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Xn.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};ss.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()};ss.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Jn.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}ss.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=Jn.parse(this._pc.localDescription.sdp));const r=ts.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')}}Gn.ReactNative=os;var cs=K&&K.__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=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ps=K&&K.__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)&&cs(t,e,r);return ds(t,e),t},ls=K&&K.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Pe,"__esModule",{value:!0}),Pe.Device=Pe.detectDevice=void 0;const us=ls(Ce.exports),hs=Te,fs=Oe,ms=je,gs=ps(Ne),ys=ps(Be),vs=st,bs=zt,ws=$r,_s=ni,Ss=wi,Rs=Ai,ks=Xi,Ps=fn,Cs=Dn,Ts=Gn,Es=new hs.Logger("Device");function Ds(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return"undefined"==typeof RTCPeerConnection?void Es.warn("this._detectDevice() | unsupported ReactNative without RTCPeerConnection"):(Es.debug("this._detectDevice() | ReactNative handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Es.warn("this._detectDevice() | unknown device");else{const e=navigator.userAgent,t=us.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"}Es.warn("this._detectDevice() | browser not supported [name:%s, version:%s]",t.getBrowserName(),t.getBrowserVersion())}}Pe.detectDevice=Ds;Pe.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new fs.EnhancedEventEmitter,Es.debug("constructor()"),r){if(Es.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)Es.debug("constructor() | handler given: %s",e);else{if(!(e=Ds()))throw new ms.UnsupportedError("device not supported");Es.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome74":this._handlerFactory=bs.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=ws.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=_s.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=Ss.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=Rs.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=ks.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Ps.Safari11.createFactory();break;case"Edge11":this._handlerFactory=Cs.Edge11.createFactory();break;case"ReactNative":this._handlerFactory=Ts.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 ms.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new ms.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Es.debug("load() [routerRtpCapabilities:%o]",e),e=gs.clone(e,void 0);try{if(this._loaded)throw new ms.InvalidStateError("already loaded");ys.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Es.debug("load() | got native RTP capabilities:%o",r),ys.validateRtpCapabilities(r),this._extendedRtpCapabilities=ys.getExtendedRtpCapabilities(r,e),Es.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=ys.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=ys.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=ys.getRecvRtpCapabilities(this._extendedRtpCapabilities),ys.validateRtpCapabilities(this._recvRtpCapabilities),Es.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Es.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),ys.validateSctpCapabilities(this._sctpCapabilities),Es.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new ms.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:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return Es.debug("createSendTransport()"),this._createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return Es.debug("createRecvTransport()"),this._createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}_createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p={}}){if(!this._loaded)throw new ms.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 n)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(p&&"object"!=typeof p)throw new TypeError("if given, appData must be an object");const l=new vs.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,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 Ms={},Os={};Object.defineProperty(Os,"__esModule",{value:!0});var xs,Is,Ls,js,As,Fs={};Object.defineProperty(Fs,"__esModule",{value:!0}),function(e){var t=K&&K.__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=K&&K.__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(Pe,e),r(st,e),r(ct,e),r(ht,e),r(vt,e),r(Rt,e),r(Os,e),r(Fs,e),r(cr,e),r(je,e)}(Ms),function(e){var t=K&&K.__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=K&&K.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=K&&K.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i},n=K&&K.__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 s=n(me.exports);e.debug=s.default;const a=Pe;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(Ms);e.types=o,e.version="3.6.50";var c=Pr;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(fe);class Ns{constructor(e){this.score=10,this.producerScore=10,this.spatialLayers=0,this.temporalLayers=0,this.currentSpatialLayer=0,this.currentTemporalLayer=0,this.availableSpatialLayers=[];const{logLevel:t,consumer:r}=e;this.id=r.id,this.kind=r.kind,this.producerId=r.producerId,this.appData=r.appData,this.consumer=r,this.logger=new ue({logLevel:t,namespace:"PeerConsumer"}),this.currentMaxSpatialLayer=this.appData.producerData.maxSpatialLayer,this.parseScalabilityMode(),this.setSpatialLayersParams(),this.setCurrentSpatialLayerParams()}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}=fe.parseScalabilityMode(e);this.spatialLayers=t,this.temporalLayers=r,this.logger.debug("parseScalabilityMode()",{scalabilityMode:e,spatialLayers:t,temporalLayers:r})}}setSpatialLayersParams(){const{encodings:e}=this.appData.producerData;e&&(this.availableSpatialLayers=e.map((e=>this.parseSpatialLayerParams(e))))}setCurrentSpatialLayerParams(){const{encodings:e}=this.appData.producerData;e&&(this.currentSpatialLayerParams=this.parseSpatialLayerParams(e[this.currentSpatialLayer]),this.logger.debug("setCurrentSpatialLayerParams()",{currentSpatialLayerParams:this.currentSpatialLayerParams}))}parseSpatialLayerParams(e){const{trackTransformParams:t}=this.appData.producerData;if(!t)return e;const{width:r,height:i}=t,n=e.scaleResolutionDownBy||1;return r&&i?Object.assign({width:r/n,height:i/n},e):e}setCurrentSpatialLayer(e){if(!this.isVideo)throw new Error("setCurrentSpatialLayer applies to video consumers only");this.currentSpatialLayer=e,this.logger.debug("setCurrentSpatialLayer()",{currentSpatialLayer:e}),this.setCurrentSpatialLayerParams()}setCurrentTemporalLayer(e){if(!this.isVideo)throw new Error("setCurrentTemporalLayer applies to video consumers only");this.currentTemporalLayer=e,this.logger.debug("setCurrentTemporalLayer()",{currentTemporalLayer:e})}setRequestedSpatialLayer(e){this.requestedSpatialLayer=e}setCurrentMaxSpatialLayer(e){this.currentMaxSpatialLayer=e}}class Bs{constructor(e){this.label=c.Unknown,xs.set(this,void 0),Is.set(this,void 0),Ls.set(this,void 0),js.set(this,void 0),this.mediaStreamTrack=e.mediaStreamTrack,this.label=e.label,this.consumer=e.consumer,n(this,xs,e.engine,"f"),n(this,Is,new ue({logLevel:e.engine.logLevel,namespace:"PeerTrack"}),"f"),n(this,Ls,e.peerEventEmitter,"f"),n(this,js,e.isPaused,"f"),i(this,Ls,"f").safeEmit(_,this)}get isPaused(){return i(this,js,"f")}get consumerId(){var e;return null===(e=this.consumer)||void 0===e?void 0:e.id}get currentSpatialLayer(){var e;return(null===(e=this.consumer)||void 0===e?void 0:e.currentSpatialLayer)||0}close(){var e;null===(e=this.consumer)||void 0===e||e.close(),i(this,Ls,"f").safeEmit(S,this)}pause(){return r(this,void 0,void 0,(function*(){if(!this.consumer)return n(this,js,!0,"f"),void i(this,Ls,"f").safeEmit(R,this);if(i(this,js,"f"))i(this,Is,"f").debug("pause()",{message:"Already paused",peer:this,consumer:this.consumer});else try{yield this.pauseRemoteConsumer(this.consumer.id),this.consumer.pause(),n(this,js,!0,"f"),i(this,Ls,"f").safeEmit(R,this),i(this,Is,"f").debug("pause()",{peer:this,consumer:this.consumer})}catch(e){i(this,Is,"f").warn("pause()",e)}}))}resume(){return r(this,void 0,void 0,(function*(){if(!this.consumer)return n(this,js,!1,"f"),void i(this,Ls,"f").safeEmit(k,this);if(i(this,js,"f"))try{yield this.resumeRemoteConsumer(this.consumer.id),this.consumer.resume(),n(this,js,!1,"f"),i(this,Ls,"f").safeEmit(k,this),i(this,Is,"f").debug("resume()",{peer:this})}catch(e){i(this,Is,"f").warn("resume()",e)}else i(this,Is,"f").debug("resume()",{message:"Already playing",peer:this,consumer:this.consumer})}))}setPriority(e){return r(this,void 0,void 0,(function*(){this.consumer&&(yield this.setConsumerPriority({consumerId:this.consumer.id,priority:e}))}))}setConsumerPriority(e){return r(this,void 0,void 0,(function*(){try{yield i(this,xs,"f").network.socket.request(B,e),i(this,Is,"f").debug("setConsumerPriority()",{peer:this,params:e})}catch(t){throw i(this,Is,"f").error("setConsumerPriority()",{peer:this,params:e}),new Error("Can`t change stream priority")}}))}pauseRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return i(this,xs,"f").network.socket.request(j,{consumerId:e})}))}resumeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return i(this,xs,"f").network.socket.request(A,{consumerId:e})}))}requestVideoPreferredLayers({spatialLayer:e,temporalLayer:t}){return r(this,void 0,void 0,(function*(){if(this.consumer)try{if(this.consumer.isAudio)return void i(this,Is,"f").warn("requestVideoPreferredLayers()",{message:"Only video consumers support"});if(e===this.consumer.currentSpatialLayer)return;if(e>this.consumer.spatialLayers)return void i(this,Is,"f").warn("requestVideoPreferredLayers()",{message:"Invalid spatial layer"});if(e>this.consumer.currentMaxSpatialLayer)return void(yield this.requestMaxSpatialLayer(this.consumer.id,e));yield i(this,xs,"f").network.socket.request(N,{consumerId:this.consumer.id,spatialLayer:e,temporalLayer:t}),i(this,Is,"f").debug("requestVideoPreferredLayers()",{peer:this,consumer:this.consumer,spatialLayer:e,temporalLayer:t})}catch(e){throw i(this,Is,"f").error("requestVideoPreferredLayers()",{peer:this,consumerId:this.consumer.id,error:e}),new Error("Error request preferred layers")}}))}getVideoAvailableLayers(){if(this.consumer){if(!this.consumer.isAudio)return this.consumer.availableSpatialLayers;i(this,Is,"f").warn("getVideoAvailableLayers()",{message:"Only video consumers support"})}}requestMaxSpatialLayer(e,t){return r(this,void 0,void 0,(function*(){try{if(!this.consumer)return;if(this.consumer.isAudio||0===this.consumer.spatialLayers||this.consumer.currentMaxSpatialLayer===t||t<this.consumer.currentMaxSpatialLayer)return void i(this,Is,"f").warn("requestMaxSpatialLayer()",{message:"Can`t request this spatial layer",consumerId:e,spatialLayer:t});this.consumer.setRequestedSpatialLayer(t),yield i(this,xs,"f").network.socket.request(x,{producerId:this.consumer.producerId,spatialLayer:t}),i(this,Is,"f").debug("requestMaxSpatialLayer()",{consumerId:e,spatialLayer:t})}catch(r){i(this,Is,"f").warn("requestMaxSpatialLayer()",{message:"Error request spatial layer",consumerId:e,spatialLayer:t,error:r})}}))}}xs=new WeakMap,Is=new WeakMap,Ls=new WeakMap,js=new WeakMap,function(e){e[e.BAD=4]="BAD",e[e.MEDIUM=6]="MEDIUM",e[e.GOOD=10]="GOOD"}(As||(As={}));class Us{constructor({id:e,channelIds:t,appId:r,loginDate:i=new Date,producers:n=[],engine:a,appData:c,uid:d,role:p}){this.producers=new Map,this.tracks=new Map,this._observer=new s,this.incomingConnectionQuality=o.GOOD,this.outgoingConnectionQuality=o.GOOD,this.overallConnectionQuality=o.GOOD,this.id=e,this.channelIds=t,this.appId=r,this.loginDate=i,this.appData=c||{},this.uid=d,this.role=p,this.engine=a,this.logger=new ue({logLevel:a.logLevel,namespace:"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)}))}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(I,{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);r.producerPaused||(yield this.engine.network.socket.request(A,{consumerId:i.id})),this.logger.debug(`Subscribed for ${e.kind}`,{peer:this});const n=new Bs({mediaStreamTrack:i.track,label:e.label,consumer:new Ns({consumer:i,logLevel:this.engine.logLevel}),engine:this.engine,isPaused:r.producerPaused,peerEventEmitter:this.observer});this.tracks.set(n.label,n)}catch(t){throw this.logger.error("createConsumer()",e,t),new Error("Error subscribe media")}}))}handleNewProducer(e){if(this.producers.get(e.id))return;const t=new he(e);this.producers.set(t.id,t),this.logger.debug("Peer published media:",{peer:this,producer:t}),this.observer.safeEmit(v,{producerId:t.id,kind:t.kind,label:t.label})}handlePeerEvents(){this.observer.on(C,this.handleNewProducer.bind(this)),this.observer.on(T,(e=>{this.producers.delete(e.id),this.logger.debug("Peer unpublished media:",{peer:this,producer:e}),this.observer.safeEmit(b,{producerId:e.id,kind:e.kind,label:e.label})})),this.observer.on(L,(e=>{const t=this.getTrackByConsumerId(e);t&&(t.close(),this.tracks.delete(t.label),this.logger.debug("Peer video track was ended:",{peer:this}))})),this.observer.on(j,(e=>r(this,void 0,void 0,(function*(){const t=this.getTrackByConsumerId(e);t&&(yield t.pause())})))),this.observer.on(A,(e=>r(this,void 0,void 0,(function*(){const t=this.getTrackByConsumerId(e);t&&(yield t.resume())})))),this.observer.on(F,(e=>{if(this.isMe)return;const t=this.getConsumerById(e.consumerId);if(!t)return;const{score:r,producerScore:i}=e;t.score=r,t.producerScore=i;const n=this.getAllConsumers().map((e=>e.producerScore)),s=Math.min(...n);this.outgoingConnectionQuality=Us.getConnectionQualityByScore(s),this.emitConnectionQuality()})),this.observer.on(F,(()=>{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=o.GOOD;else{const t=e.map((e=>e)).reduce(((e,t)=>e+t),0),r=Math.floor(t/e.length);this.incomingConnectionQuality=Us.getConnectionQualityByScore(r)}this.emitConnectionQuality()})),this.observer.on(M,(e=>{var t;if(!this.isMe)return;const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e.producerId}));if(!r)return;const i=null===(t=r.getProducer())||void 0===t?void 0:t.maxSpatialLayer,{scores:n}=e;if(0===n.length)return;let{score:s}=n[0];if(n.length>1&&0!==i){i&&n.splice(i+1);const e=n.map((({score:e})=>e)).reduce(((e,t)=>e+t),0);s=Math.floor(e/n.length)}this.outgoingConnectionQuality=Us.getConnectionQualityByScore(s),this.emitConnectionQuality()})),this.observer.on(N,(e=>{const t=this.getConsumerById(e.consumerId);(null==t?void 0:t.isVideo)&&(t.setCurrentTemporalLayer(e.temporalLayer),t.setCurrentSpatialLayer(e.spatialLayer),e.spatialLayer===t.requestedSpatialLayer&&t.setRequestedSpatialLayer(void 0),this.logger.debug("consumerChangePreferredLayers()",Object.assign({consumer:t},e)))})),this.observer.on(O,(e=>r(this,void 0,void 0,(function*(){const{producerId:t,spatialLayer:r}=e,i=this.getConsumerByProducerId(t);i?(i.setCurrentMaxSpatialLayer(r),this.logger.debug("producerSetMaxSpatialLayer()",{producerId:t,consumerId:i.id,spatialLayer:r}),i.requestedSpatialLayer===r?(yield this.engine.network.socket.request(N,{consumerId:i.id,spatialLayer:r}),this.logger.debug("requestVideoPreferredLayers()",{producerId:t,consumerId:i.id,spatialLayer:r})):this.logger.debug("producerSetMaxSpatialLayer()",{message:"No need to request new preferred layer",currentMaxSpatialLayer:r,requestedMaxSpatialLayer:i.requestedSpatialLayer})):this.logger.debug("producerSetMaxSpatialLayer()",{message:"Consumer for producer not created, ignore MaxSpatialLayer change"})}))))}emitConnectionQuality(){setTimeout((()=>{const e=Math.min(this.outgoingConnectionQuality,this.incomingConnectionQuality);e!==this.overallConnectionQuality&&(this.observer.safeEmit(w,{connectionQuality:e}),this.overallConnectionQuality=e,this.logger.debug("emitConnectionQuality()",{peer:this,connectionQuality:e}))}),1e3)}static getConnectionQualityByScore(e){return e<As.BAD?o.BAD:e<As.MEDIUM?o.MEDIUM:o.GOOD}getAllConsumers(){return Array.from(this.tracks.values()).map((e=>e.consumer)).filter((e=>!!e))}getConsumerByProducerId(e){return this.getAllConsumers().find((t=>t.producerId===e))}getConsumerById(e){return this.getAllConsumers().find((t=>t.id===e))}getTrackByConsumerId(e){return Array.from(this.tracks.values()).find((t=>t.consumerId===e))}}const qs=[{scaleResolutionDownBy:4,maxBitrate:15e4,maxFramerate:12},{scaleResolutionDownBy:2,maxBitrate:35e4,maxFramerate:18},{scaleResolutionDownBy:1,maxBitrate:9e5,maxFramerate:24}],$s=[{maxBitrate:1e6,dtx:!0}];var zs;class Vs{constructor(e){zs.set(this,void 0),this.encoderConfig={},this.label=c.Unknown;const{mediaStreamTrack:t,logLevel:r}=e;n(this,zs,t,"f"),this.logger=new ue({namespace:"Track",logLevel:r})}get mediaStreamTrack(){return i(this,zs,"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}setPriority(e){return r(this,void 0,void 0,(function*(){this.producer?(yield this.producer.setRtpEncodingParameters({priority:e}),this.logger.debug("setPriority()",{label:this.getLabel(),priority:e})):this.logger.warn("setPriority()","Not published yet")}))}}zs=new WeakMap;class Ws extends Vs{constructor(){super(...arguments),this.transformParams={}}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){return this.getEncoderConfig().preferredCodec||"h264"}getEncodings(){return this.getEncoderConfig().encodings||qs}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return r(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}}class Gs extends Vs{getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{opusFec:this.getEncoderConfig().enableFec||!0}}}const Hs={width:1280,height:720},Ks={width:1920,height:1080};var Qs,Js;class Ys{constructor(e){this.isDeviceLoaded=!1,this.tracks=new Map,Qs.set(this,void 0),Js.set(this,void 0),n(this,Js,e.logLevel,"f"),n(this,Qs,new ue({namespace:"Media",logLevel:e.logLevel}),"f")}get mediasoupDevice(){return this.device||(this.device=new fe.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 Ws&&(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 Gs({mediaStreamTrack:t,logLevel:i(this,Js,"f")}):new Ws({mediaStreamTrack:t,logLevel:i(this,Js,"f")});return this.tracks.set(r.id,r),i(this,Qs,"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,Qs,"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,Qs,"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)||Ks.width},height:{ideal:(null==e?void 0:e.height)||Ks.height}},transformParams:{width:(null==e?void 0:e.width)||Hs.width,height:(null==e?void 0:e.height)||Hs.height},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:$s}}}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)||Hs.width},height:{ideal:(null==e?void 0:e.height)||Hs.height}},transformParams:{width:(null==e?void 0:e.width)||Hs.width,height:(null==e?void 0:e.height)||Hs.height},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:qs}}}}Qs=new WeakMap,Js=new WeakMap;const Xs=new class{sleepMs(e){return r(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},Zs=(e,t={})=>r(void 0,void 0,void 0,(function*(){var r;const i=t.maxRetries||2,n=t.minBackoffDelayMs||50;let s,a=0;for(;a<i;){a+=1;try{return yield e()}catch(e){if(s=e,t.logger&&t.logger.info("Action retry failed",a,t.actionName,e),a<i){const e=Math.pow(2,a-1)*n;yield Xs.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw s}));class ea{constructor(e){this.initialized=!1,this.isJoined=!1,this.isRoomJoining=!1;const{clientEventEmitter:t,network:r,dependenciesFactory:i,logLevel:n}=e;this.logLevel=n||se,this.system=i.createSystem({logLevel:this.logLevel,clientEventEmitter:t}),this.media=i.createMedia({logLevel:this.logLevel}),this.network=i.createNetwork({logLevel:this.logLevel,loadbalancer:r.loadbalancer}),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=i.createChannelEventHandler(this),this.mediaSoupEventsHandler=i.createMediaSoupEventHandler(this),this.logger=new ue({logLevel:this.logLevel,namespace:"Engine",onLogMessage:e.onLogMessage}),this.webRtcIssueDetector=i.createIssueDetector({onIssues:e.onIssues}),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),this.webRtcIssueDetector.watchNewPeerConnections(),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.webRtcIssueDetector.stopWatchingNewPeerConnections(),this.webRtcIssueDetector.resetWatchedPeerConnectionsList(),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(E,{producerId:e})}))}resumeRemoteProducer(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(D,{producerId:e})}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{const{state:t,code:r}=e;this.clientEventEmitter.emit(t,{code:r}),t===P.Reconnecting&&(this.network.socket.disconnect(),this.clientEventEmitter.emit(g))}))}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,yield this.connectToSocketServerWithRetry(e),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(l,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=new Us(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){var t;return r(this,void 0,void 0,(function*(){const r=e.getProducer();if(r)try{yield this.pauseRemoteProducer(r.id),r.pause();const i=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==i||i.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){var t;return r(this,void 0,void 0,(function*(){const r=e.getProducer();if(r)try{yield this.resumeRemoteProducer(r.id),r.resume(),this.logger.debug("resume()",{kind:e.kind});const i=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==i||i.resume()}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=Ys.getCameraVideoTrackParams(e);try{const[e]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});return e instanceof Ws&&(e.setLabel(c.Camera),e.setEncoderConfig(t.encoderConfig),e.setTransformParams(t.transformParams)),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(c.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=Ys.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)})),r instanceof Ws)return r.setLabel(c.ScreenVideo),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(t.transformParams),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,track:r});r.setLabel(c.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,r;const i="getEncodings"in e?e.getEncodings():void 0,n="getCodecOptions"in e?e.getCodecOptions():void 0,s=i&&i.length>=1?1:0,a={peerId:this.mySocketId,label:e.getLabel(),trackTransformParams:{},maxSpatialLayer:0};e instanceof Ws&&(a.maxSpatialLayer=s,a.trackTransformParams=e.transformParams);const o=yield null===(t=this.network.sendTransport)||void 0===t?void 0:t.produce({track:e.mediaStreamTrack,encodings:i,codecOptions:n,codec:this.media.getTrackCodec(e),stopTracks:!0,disableTrackOnPause:!0,zeroRtpOnPause:!0,appData:a});if(!o)return;e.setProducer(o),e instanceof Ws&&(yield e.setMaxSpatialLayer(s),yield this.network.socket.request(O,{producerId:null===(r=e.getProducer())||void 0===r?void 0:r.id,maxSpatialLayer:s})),e instanceof Gs&&(yield e.setPriority("high"));const c=this.peersRepository.get(this.mySocketId);if(!c)return;const d=new Bs({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this,isPaused:o.paused,peerEventEmitter:c.observer});c.tracks.set(d.label,d),this.logger.debug("publish()",{track:e,encodings:i,codecOptions:n})}))));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;const i=e.getProducer();i&&(null===(t=this.network.socket.connection)||void 0===t?void 0:t.connected)&&(yield this.network.closeRemoteProducer(i.id));const n=null===(r=this.myPeer)||void 0===r?void 0:r.tracks.get(e.getLabel());null==n||n.close(),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}connectToSocketServerWithRetry(e){return r(this,void 0,void 0,(function*(){return Zs((()=>r(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new ue({namespace:"RetrySocketConnect",logLevel:this.logLevel})})}))}connectToSocketServer(e){return r(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t);try{yield this.waitForSocketConnection()}catch(t){throw this.logger.error("Failed to connect to socket server",{error:t,role:e.role,channelId:e.channelId}),this.network.socket.disconnect(),t}}))}getAvailableNode(e){return r(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const i=n=>r(this,void 0,void 0,(function*(){const{error:r,state:s}=n,a=()=>this.network.socket.observer.removeListener("state",i),o=[P.Disconnected,P.Reconnecting].includes(s);if(r||this.isRoomJoining&&o)return a(),void t(r||"Not expected socket state for new connection");this.isRoomJoining&&[P.Connected,P.Reconnected].includes(s)&&(a(),e())}));this.network.socket.observer.on("state",i)}))}performJoin(e){return r(this,void 0,void 0,(function*(){try{yield this.sendJoinChannelRequestWithRetry(e),this.app=e.appId,this.channel=e.channelId,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),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}}))}sendJoinChannelRequestWithRetry(e){return r(this,void 0,void 0,(function*(){return Zs((()=>r(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new ue({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(p,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}get myPeer(){return this.peers.find((e=>e.isMe))}}class ta{constructor(e){const{socketClient:t,loadBalancerApiClient:r}=e;this.socket=t,this.loadBalancerClient=r,this.logger=new ue({namespace:"Network",logLevel:e.logLevel})}closeRemoteProducer(e){return r(this,void 0,void 0,(function*(){yield this.socket.request(T,{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(q,{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(U,{sctpCapabilities:e.sctpCapabilities,localDirection:"out"});this.sendTransport=e.createSendTransport(t),this.logger.debug("createSendTransport()",{transport:this.sendTransport}),this.sendTransport.on(G,(({dtlsParameters:e},i,n)=>r(this,void 0,void 0,(function*(){var r;try{yield this.socket.request($,{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}),n(r)}})))),this.sendTransport.on(H,((e,t,i)=>r(this,void 0,void 0,(function*(){var r;try{const{id:i}=yield this.socket.request(z,{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(V,(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(U,{sctpCapabilities:e.sctpCapabilities,localDirection:"in"});this.receiveTransport=e.createRecvTransport(t),this.logger.debug("createRecvTransport()",{transport:this.receiveTransport}),this.receiveTransport.on(G,(({dtlsParameters:e},t,i)=>r(this,void 0,void 0,(function*(){var r;try{yield this.socket.request($,{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(V,(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(W,{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})}}))}}class ra{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[],this.isMediaDevicesAccessGranted=!1;const{clientEventEmitter:t,logLevel:r}=e;this.clientEventEmitter=t,this.logger=new ue({namespace:"System",logLevel:r}),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(y,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}}class ia{constructor(e){this.engine=e,this.logger=new ue({logLevel:e.logLevel,namespace:"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(d,(e=>{this.engine.clientEventEmitter.safeEmit(h,e),this.logger.debug("New channel event",{event:e})})),e.on(p,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(f,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(u,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(m,e),this.logger.debug("Peer left the channel",{peerId:e})}))}}class na{constructor(e){this.engine=e,this.logger=new ue({logLevel:e.logLevel,namespace:"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(T,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(T,e)})),e.on(C,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(C,e)})),e.on(L,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(L,e)})),e.on(A,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(A,e)})),e.on(j,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(j,e)})),e.on(N,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const n=this.engine.peers.find((t=>t.id===e));n&&!n.isMe&&n.observer.safeEmit(N,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(F,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(F,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(F,e)})),e.on(M,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(M,e)})),e.on(x,(({producerId:e,spatialLayer:t})=>r(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof Ws))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const i=r.getMaxSpatialLayer();i!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(O,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})})))),e.on(O,(({peerId:e,producerId:t,spatialLayer:i})=>r(this,void 0,void 0,(function*(){const r=this.engine.peers.find((t=>t.id===e));r&&!r.isMe&&r.observer.safeEmit(O,{peerId:e,producerId:t,spatialLayer:i})}))))}}var sa={};function aa(){}function oa(){oa.init.call(this)}function ca(e){return void 0===e._maxListeners?oa.defaultMaxListeners:e._maxListeners}function da(e,t,r){if(t)e.call(r);else for(var i=e.length,n=ya(e,i),s=0;s<i;++s)n[s].call(r)}function pa(e,t,r,i){if(t)e.call(r,i);else for(var n=e.length,s=ya(e,n),a=0;a<n;++a)s[a].call(r,i)}function la(e,t,r,i,n){if(t)e.call(r,i,n);else for(var s=e.length,a=ya(e,s),o=0;o<s;++o)a[o].call(r,i,n)}function ua(e,t,r,i,n,s){if(t)e.call(r,i,n,s);else for(var a=e.length,o=ya(e,a),c=0;c<a;++c)o[c].call(r,i,n,s)}function ha(e,t,r,i){if(t)e.apply(r,i);else for(var n=e.length,s=ya(e,n),a=0;a<n;++a)s[a].apply(r,i)}function fa(e,t,r,i){var n,s,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]):(s=e._events=new aa,e._eventsCount=0),a){if("function"==typeof a?a=s[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&((n=ca(e))&&0<n&&a.length>n)){a.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=e,o.type=t,o.count=a.length,function(e){"function"==typeof console.warn?console.warn(e):console.log(e)}(o)}}else a=s[t]=r,++e._eventsCount;return e}function ma(e,t,r){function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}var n=!1;return i.listener=r,i}function ga(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function ya(e,t){for(var r=Array(t);t--;)r[t]=e[t];return r}Object.defineProperty(sa,"__esModule",{value:!0}),aa.prototype=Object.create(null),oa.EventEmitter=oa,oa.usingDomains=!1,oa.prototype.domain=void 0,oa.prototype._events=void 0,oa.prototype._maxListeners=void 0,oa.defaultMaxListeners=10,oa.init=function(){this.domain=null,oa.usingDomains&&undefined.active&&!(this instanceof undefined.Domain)&&(this.domain=undefined.active),this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new aa,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},oa.prototype.setMaxListeners=function(e){if("number"!=typeof e||0>e||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},oa.prototype.getMaxListeners=function(){return ca(this)},oa.prototype.emit=function(e){var t,r,i,n,s,a,o,c="error"===e;if(a=this._events)c=c&&null==a.error;else if(!c)return!1;if(o=this.domain,c){if(t=arguments[1],!o){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=o,t.domainThrown=!1,o.emit("error",t),!1}if(!(r=a[e]))return!1;var p="function"==typeof r;switch(i=arguments.length){case 1:da(r,p,this);break;case 2:pa(r,p,this,arguments[1]);break;case 3:la(r,p,this,arguments[1],arguments[2]);break;case 4:ua(r,p,this,arguments[1],arguments[2],arguments[3]);break;default:for(n=Array(i-1),s=1;s<i;s++)n[s-1]=arguments[s];ha(r,p,this,n)}return!0},oa.prototype.addListener=function(e,t){return fa(this,e,t,!1)},oa.prototype.on=oa.prototype.addListener,oa.prototype.prependListener=function(e,t){return fa(this,e,t,!0)},oa.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,ma(this,e,t)),this},oa.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,ma(this,e,t)),this},oa.prototype.removeListener=function(e,t){var r,i,n,s,a;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new aa:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length;0<s--;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=r[s].listener,n=s;break}if(0>n)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new aa,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,n=e.length;i<n;r+=1,i+=1)e[r]=e[i];e.pop()}(r,n);i.removeListener&&this.emit("removeListener",e,a||t)}return this},oa.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new aa,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new aa:delete r[e]),this;if(0===arguments.length){for(var i,n=Object.keys(r),s=0;s<n.length;++s)"removeListener"!==(i=n[s])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new aa,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},oa.prototype.listeners=function(e){var t,r,i=this._events;return i?r=(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]:r=[],r},oa.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):ga.call(e,t)},oa.prototype.listenerCount=ga,oa.prototype.eventNames=function(){return 0<this._eventsCount?Reflect.ownKeys(this._events):[]};var va,ba=new Uint8Array(16);function wa(){if(!va&&!(va="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return va(ba)}var _a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Sa(e){return"string"==typeof e&&_a.test(e)}for(var Ra=[],ka=0;256>ka;++ka)Ra.push((ka+256).toString(16).substr(1));function Pa(e,t,r){var i=(e=e||{}).random||(e.rng||wa)();if(i[6]=64|15&i[6],i[8]=128|63&i[8],t){r=r||0;for(var n=0;16>n;++n)t[r+n]=i[n];return t}return function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,r=(Ra[e[t+0]]+Ra[e[t+1]]+Ra[e[t+2]]+Ra[e[t+3]]+"-"+Ra[e[t+4]]+Ra[e[t+5]]+"-"+Ra[e[t+6]]+Ra[e[t+7]]+"-"+Ra[e[t+8]]+Ra[e[t+9]]+"-"+Ra[e[t+10]]+Ra[e[t+11]]+Ra[e[t+12]]+Ra[e[t+13]]+Ra[e[t+14]]+Ra[e[t+15]]).toLowerCase();if(!Sa(r))throw TypeError("Stringified UUID is invalid");return r}(i)}function Ca(e,t){if(!e||!t)return{};const r={...e};if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}return r}function Ta(e,t,r){return 8*function(e,t,r){const i=e[r],n=t?t[r]:null;return null===i||null===n?null:(i-n)/(e.timestamp-t.timestamp)*1e3}(e,t,r)}function Ea(e){if(!e.entries)return e;const t={};return e.forEach((function(e,r){t[r]=e})),t}function Da(e,t,r={}){if(!e)return null;let i={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{inbound:[],outbound:[]}};r.remote&&(i.remote={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]}});for(const t of e.values())switch(t.type){case"outbound-rtp":{const r=t.mediaType||t.kind,n={};let s={};if(!["audio","video"].includes(r))continue;if(t.codecId){const r=e.get(t.codecId);r&&(n.clockRate=r.clockRate,n.mimeType=r.mimeType,n.payloadType=r.payloadType)}s=e.get(t.mediaSourceId)||e.get(t.trackId)||{},i[r].outbound.push({...t,...n,track:{...s}});break}case"inbound-rtp":{let r=t.mediaType||t.kind,n={};const s={};if(!["audio","video"].includes(r))if(t.id.includes("Video"))r="video";else{if(!t.id.includes("Audio"))continue;r="audio"}if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}if(!i.connection.id&&t.transportId){const r=e.get(t.transportId);if(r&&r.selectedCandidatePairId){const t=e.get(r.selectedCandidatePairId);i.connection=Ca(t,e)}}n=e.get(t.mediaSourceId)||e.get(t.trackId)||{},i[r].inbound.push({...t,...s,track:{...n}});break}case"peer-connection":i.connection.dataChannelsClosed=t.dataChannelsClosed,i.connection.dataChannelsOpened=t.dataChannelsOpened;break;case"remote-inbound-rtp":{if(!r.remote)break;let n=t.mediaType||t.kind;const s={};if(!["audio","video"].includes(n))if(t.id.includes("Video"))n="video";else{if(!t.id.includes("Audio"))continue;n="audio"}if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}if(!i.connection.id&&t.transportId){const r=e.get(t.transportId);if(r&&r.selectedCandidatePairId){const t=e.get(r.selectedCandidatePairId);i.connection=Ca(t,e)}}i.remote[n].inbound.push({...t,...s});break}case"remote-outbound-rtp":{if(!r.remote)break;const n=t.mediaType||t.kind,s={};if(!["audio","video"].includes(n))continue;if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}i.remote[n].outbound.push({...t,...s});break}}if(!i.connection.id)for(const t of e.values())"candidate-pair"===t.type&&t.nominated&&"succeeded"===t.state&&(i.connection=Ca(t,e));return i=function(e,t){return t?(e.audio.inbound.map((e=>{let r=t.audio.inbound.find((t=>t.id===e.id));e.bitrate=Ta(e,r,"bytesReceived"),e.packetRate=Ta(e,r,"packetsReceived")})),e.audio.outbound.map((e=>{let r=t.audio.outbound.find((t=>t.id===e.id));e.bitrate=Ta(e,r,"bytesSent"),e.packetRate=Ta(e,r,"packetsSent")})),e.video.inbound.map((e=>{let r=t.video.inbound.find((t=>t.id===e.id));e.bitrate=Ta(e,r,"bytesReceived"),e.packetRate=Ta(e,r,"packetsReceived")})),e.video.outbound.map((e=>{let r=t.video.outbound.find((t=>t.id===e.id));e.bitrate=Ta(e,r,"bytesSent"),e.packetRate=Ta(e,r,"packetsSent")})),e):e}(i,t),i}let Ma={};var Oa,xa,Ia,La,ja,Aa,Fa,Na,Ba,Ua,qa,$a,za=sa.WebRTCStats=class extends oa{constructor(e){if(super(),this.monitoringSetInterval=0,this.connectionMonitoringSetInterval=0,this.connectionMonitoringInterval=1e3,this.remote=!0,this.peersToMonitor={},this.timeline=[],this.statsToMonitor=["inbound-rtp","outbound-rtp","remote-inbound-rtp","remote-outbound-rtp","peer-connection","data-channel","stream","track","sender","receiver","transport","candidate-pair","local-candidate","remote-candidate"],"undefined"==typeof window)throw new Error("WebRTCStats only works in browser");const t={...e};this.isEdge=!!window.RTCIceGatherer,this.getStatsInterval=t.getStatsInterval||1e3,this.rawStats=!!t.rawStats,this.statsObject=!!t.statsObject,this.filteredStats=!!t.filteredStats,this.shouldWrapGetUserMedia=!!t.wrapGetUserMedia,"boolean"==typeof t.remote&&(this.remote=t.remote),this.debug=!!t.debug,this.logLevel=t.logLevel||"none",this.shouldWrapGetUserMedia&&this.wrapGetUserMedia()}async addPeer(e,t){return console.warn("The addPeer() method has been deprecated, please use addConnection()"),this.addConnection({peerId:e,pc:t})}async addConnection(e){const{pc:t,peerId:r}=e;let{connectionId:i,remote:n}=e;if(n="boolean"==typeof n?n:this.remote,!(t&&t instanceof RTCPeerConnection))throw new Error("Missing argument 'pc' or is not of instance RTCPeerConnection");if(!r)throw new Error("Missing argument peerId");if(this.isEdge)throw new Error("Can't monitor peers in Edge at this time.");if(this.peersToMonitor[r]){if(i&&i in this.peersToMonitor[r])throw new Error(`We are already monitoring connection with id ${i}.`);for(let e in this.peersToMonitor[r]){const i=this.peersToMonitor[r][e];if(i.pc===t)throw new Error(`We are already monitoring peer with id ${r}.`);"closed"===i.pc.connectionState&&this.removeConnection({peerId:r,pc:i.pc})}}const s=t.getConfiguration();return s.iceServers&&s.iceServers.forEach((function(e){delete e.credential})),i||(i=Pa()),this.emitEvent({event:"addConnection",tag:"peer",peerId:r,connectionId:i,data:{options:e,peerConfiguration:s}}),this.monitorPeer({peerId:r,connectionId:i,pc:t,remote:n}),{connectionId:i}}getTimeline(e){return this.timeline=this.timeline.sort(((e,t)=>e.timestamp.getTime()-t.timestamp.getTime())),e?this.timeline.filter((t=>t.tag===e)):this.timeline}monitorPeer(e){let{peerId:t,connectionId:r,pc:i,remote:n}=e;if(!i)return void this.logger.warn("Did not receive pc argument when calling monitorPeer()");const s={pc:i,connectionId:r,stream:null,stats:{parsed:null,raw:null},options:{remote:n}};if(this.peersToMonitor[t]){if(r in this.peersToMonitor[t])return void this.logger.warn(`Already watching connection with ID ${r}`);this.peersToMonitor[t][r]=s}else this.peersToMonitor[t]={[r]:s};this.addPeerConnectionEventListeners(t,r,i),1===this.numberOfMonitoredPeers&&(this.startStatsMonitoring(),this.startConnectionStateMonitoring())}startStatsMonitoring(){this.monitoringSetInterval||(this.monitoringSetInterval=window.setInterval((()=>{this.numberOfMonitoredPeers||this.stopStatsMonitoring(),this.getStats().then((e=>{e.forEach((e=>{this.emitEvent(e)}))}))}),this._getStatsInterval))}stopStatsMonitoring(){this.monitoringSetInterval&&(window.clearInterval(this.monitoringSetInterval),this.monitoringSetInterval=0)}async getStats(e=null){this.logger.info(e?`Getting stats from peer ${e}`:"Getting stats from all peers");let t={};if(e){if(!this.peersToMonitor[e])throw new Error(`Cannot get stats. Peer with id ${e} does not exist`);t[e]=this.peersToMonitor[e]}else t=this.peersToMonitor;let r=[];for(const e in t)for(const i in t[e]){const n=t[e][i],s=n.pc;if(s&&!this.checkIfConnectionIsClosed(e,i,s))try{const t=this.getTimestamp(),a=s.getStats(null);if(a){const s=await a,o=this.getTimestamp(),c=Ea(s),d={remote:n.options.remote},p=Da(s,n.stats.parsed,d),l={event:"stats",tag:"stats",peerId:e,connectionId:i,timeTaken:o-t,data:p};!0===this.rawStats&&(l.rawStats=s),!0===this.statsObject&&(l.statsObject=c),!0===this.filteredStats&&(l.filteredStats=this.filteroutStats(c)),r.push(l),n.stats.parsed=p}else this.logger.error(`PeerConnection from peer ${e} did not return any stats data`)}catch(e){this.logger.error(e)}}return r}startConnectionStateMonitoring(){this.connectionMonitoringSetInterval=window.setInterval((()=>{this.numberOfMonitoredPeers||this.stopConnectionStateMonitoring();for(const e in this.peersToMonitor)for(const t in this.peersToMonitor[e]){const r=this.peersToMonitor[e][t].pc;this.checkIfConnectionIsClosed(e,t,r)}}),this.connectionMonitoringInterval)}checkIfConnectionIsClosed(e,t,r){const i=this.isConnectionClosed(r);if(i){this.removeConnection({peerId:e,pc:r});let i="closed"===r.connectionState?"onconnectionstatechange":"oniceconnectionstatechange";this.emitEvent({event:i,peerId:e,connectionId:t,tag:"connection",data:"closed"})}return i}isConnectionClosed(e){return"closed"===e.connectionState||"closed"===e.iceConnectionState}stopConnectionStateMonitoring(){this.connectionMonitoringSetInterval&&(window.clearInterval(this.connectionMonitoringSetInterval),this.connectionMonitoringSetInterval=0)}wrapGetUserMedia(){if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)return void this.logger.warn("'navigator.mediaDevices.getUserMedia' is not available in browser. Will not wrap getUserMedia.");this.logger.info("Wrapping getUsermedia functions.");const e=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices),t=this.parseGetUserMedia.bind(this);navigator.mediaDevices.getUserMedia=function(){return t({constraints:arguments[0]}),e.apply(navigator.mediaDevices,arguments).then((e=>(t({stream:e}),e)),(e=>(t({error:e}),Promise.reject(e))))}.bind(navigator.mediaDevices)}filteroutStats(e={}){const t={...e};for(const e in t){var r=t[e];this.statsToMonitor.includes(r.type)||delete t[e]}return t}get peerConnectionListeners(){return{icecandidate:(e,t,r,i)=>{this.logger.debug("[pc-event] icecandidate | peerId: ${peerId}",i),this.emitEvent({event:"onicecandidate",tag:"connection",peerId:e,connectionId:t,data:i.candidate})},track:(e,t,r,i)=>{this.logger.debug(`[pc-event] track | peerId: ${e}`,i);const n=i.track,s=i.streams[0];e in this.peersToMonitor&&t in this.peersToMonitor[e]&&(this.peersToMonitor[e][t].stream=s),this.addTrackEventListeners(n),this.emitEvent({event:"ontrack",tag:"track",peerId:e,connectionId:t,data:{stream:s?this.getStreamDetails(s):null,track:n?this.getMediaTrackDetails(n):null,title:i.track.kind+":"+i.track.id+" "+i.streams.map((function(e){return"stream:"+e.id}))}})},signalingstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] signalingstatechange | peerId: ${e}`),this.emitEvent({event:"onsignalingstatechange",tag:"connection",peerId:e,connectionId:t,data:{signalingState:r.signalingState,localDescription:r.localDescription,remoteDescription:r.remoteDescription}})},iceconnectionstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] iceconnectionstatechange | peerId: ${e}`),this.emitEvent({event:"oniceconnectionstatechange",tag:"connection",peerId:e,connectionId:t,data:r.iceConnectionState})},icegatheringstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] icegatheringstatechange | peerId: ${e}`),this.emitEvent({event:"onicegatheringstatechange",tag:"connection",peerId:e,connectionId:t,data:r.iceGatheringState})},icecandidateerror:(e,t,r,i)=>{this.logger.debug(`[pc-event] icecandidateerror | peerId: ${e}`),this.emitEvent({event:"onicecandidateerror",tag:"connection",peerId:e,connectionId:t,error:{errorCode:i.errorCode}})},connectionstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] connectionstatechange | peerId: ${e}`),this.emitEvent({event:"onconnectionstatechange",tag:"connection",peerId:e,connectionId:t,data:r.connectionState})},negotiationneeded:(e,t,r)=>{this.logger.debug(`[pc-event] negotiationneeded | peerId: ${e}`),this.emitEvent({event:"onnegotiationneeded",tag:"connection",peerId:e,connectionId:t})},datachannel:(e,t,r,i)=>{this.logger.debug(`[pc-event] datachannel | peerId: ${e}`,i),this.emitEvent({event:"ondatachannel",tag:"datachannel",peerId:e,connectionId:t,data:i.channel})}}}addPeerConnectionEventListeners(e,t,r){this.logger.debug(`Adding event listeners for peer ${e} and connection ${t}.`),Ma[t]={},Object.keys(this.peerConnectionListeners).forEach((i=>{Ma[t][i]=this.peerConnectionListeners[i].bind(this,e,t,r),r.addEventListener(i,Ma[t][i],!1)}))}parseGetUserMedia(e){const t={event:"getUserMedia",tag:"getUserMedia",data:{...e}};e.stream&&(t.data.details=this.parseStream(e.stream)),this.emitEvent(t)}parseStream(e){const t={audio:[],video:[]};return e.getTracks().forEach((e=>{t[e.kind].push(this.getMediaTrackDetails(e))})),t}getMediaTrackDetails(e){return{enabled:e.enabled,id:e.id,contentHint:e.contentHint,kind:e.kind,label:e.label,muted:e.muted,readyState:e.readyState,constructorName:e.constructor.name,capabilities:e.getCapabilities?e.getCapabilities():{},constraints:e.getConstraints?e.getConstraints():{},settings:e.getSettings?e.getSettings():{},_track:e}}getStreamDetails(e){return{active:e.active,id:e.id,_stream:e}}get getTrackEventObject(){return{mute:e=>{this.emitEvent({event:"mute",tag:"track",data:{event:e}})},unmute:e=>{this.emitEvent({event:"unmute",tag:"track",data:{event:e}})},overconstrained:e=>{this.emitEvent({event:"overconstrained",tag:"track",data:{event:e}})},ended:e=>{this.emitEvent({event:"ended",tag:"track",data:{event:e}}),this.removeTrackEventListeners(e.target)}}}addTrackEventListeners(e){Ma[e.id]={},Object.keys(this.getTrackEventObject).forEach((t=>{Ma[e.id][t]=this.getTrackEventObject[t].bind(this),e.addEventListener(t,Ma[e.id][t])})),Ma[e.id].readyState=setInterval((()=>{if("ended"===e.readyState){let t=new CustomEvent("ended",{detail:{check:"readyState"}});e.dispatchEvent(t)}}),1e3)}removeTrackEventListeners(e){e.id in Ma&&(Object.keys(this.getTrackEventObject).forEach((t=>{e.removeEventListener(t,Ma[e.id][t])})),clearInterval(Ma[e.id].readyState),delete Ma[e.id])}addToTimeline(e){this.timeline.push(e),this.emit("timeline",e)}emitEvent(e){const t={...e,timestamp:new Date};this.addToTimeline(t),t.tag&&this.emit(t.tag,t)}set getStatsInterval(e){if(!Number.isInteger(e))throw new Error(`getStatsInterval should be an integer, got: ${e}`);this._getStatsInterval=e,this.monitoringSetInterval&&(this.stopStatsMonitoring(),this.startStatsMonitoring())}get logger(){const e=e=>{const t=["none","error","warn","info","debug"];return t.slice(0,t.indexOf(this.logLevel)+1).indexOf(e)>-1};return{error(...t){this.debug&&e("error")&&console.error("[webrtc-stats][error] ",...t)},warn(...t){this.debug&&e("warn")&&console.warn("[webrtc-stats][warn] ",...t)},info(...t){this.debug&&e("info")&&console.log("[webrtc-stats][info] ",...t)},debug(...t){this.debug&&e("debug")&&console.debug("[webrtc-stats][debug] ",...t)}}}removeConnection(e){let{peerId:t,connectionId:r,pc:i}=e;if(!t&&!i&&!r)throw new Error("Missing arguments. You need to either send a peerId and pc, or a connectionId.");if(t&&!i||i&&!t)throw new Error("By not sending a connectionId, you need to send a peerId and a pc (RTCPeerConnection instance)");if(r)for(let e in this.peersToMonitor)r in this.peersToMonitor[e]&&(t=e,this.removePeerConnectionEventListeners(t,r,i),delete this.peersToMonitor[e][r]);else if(t&&i&&t in this.peersToMonitor)for(let e in this.peersToMonitor[t])this.peersToMonitor[t][e].pc===i&&(this.removePeerConnectionEventListeners(t,e,i),delete this.peersToMonitor[t][e],r=e);return 0===Object.values(this.peersToMonitor[t]).length&&delete this.peersToMonitor[t],{connectionId:r}}removePeer(e){if(this.logger.info(`Removing PeerConnection with id ${e}.`),this.peersToMonitor[e]){for(let t in this.peersToMonitor[e]){let r=this.peersToMonitor[e][t].pc;this.removePeerConnectionEventListeners(e,t,r)}delete this.peersToMonitor[e]}}get numberOfMonitoredPeers(){return Object.keys(this.peersToMonitor).length}removePeerConnectionEventListeners(e,t,r){t in Ma&&(Object.keys(this.peerConnectionListeners).forEach((e=>{r.removeEventListener(e,Ma[t][e],!1)})),delete Ma[t]),r.getSenders().forEach((e=>{e.track&&this.removeTrackEventListeners(e.track)})),r.getReceivers().forEach((e=>{e.track&&this.removeTrackEventListeners(e.track)}))}getTimestamp(){return Date.now()}wrapGetDisplayMedia(){const e=this;if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){const t=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices),r=function(){return e.debug("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),t.apply(navigator.mediaDevices,arguments).then((function(e){return e}),(function(t){return e.debug("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))};navigator.mediaDevices.getDisplayMedia=r.bind(navigator.mediaDevices)}}};class Va extends t{}!function(e){e.Issue="issue"}(Oa||(Oa={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server"}(xa||(xa={})),function(e){e.NetworkQuality="network-quality",e.NetworkMediaLatency="network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.LowMOS="low-mean-opinion-score"}(Ia||(Ia={}));class Wa{constructor(){La.set(this,{})}detect(e){const t=this.processData(e);return i(this,La,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),n=[],s=null===(t=i(this,La,"f")[e.connection.id])||void 0===t?void 0:t.video.outbound;return s?(r.forEach((e=>{const t=s.find((t=>t.ssrc===e.ssrc));t&&(e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&n.push({type:xa.CPU,reason:Ia.EncoderCPUThrottling,ssrc:e.ssrc,debug:"qualityLimitationReason: cpu"}),"bandwidth"===e.qualityLimitationReason&&n.push({type:xa.Network,reason:Ia.OutboundNetworkThroughput,ssrc:e.ssrc,debug:"qualityLimitationReason: bandwidth"})))})),n):n}}La=new WeakMap;class Ga{constructor(){ja.set(this,{}),Aa.set(this,.5)}detect(e){const t=this.processData(e);return i(this,ja,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.inbound.filter((e=>e.framesDropped>0)),n=[],s=null===(t=i(this,ja,"f")[e.connection.id])||void 0===t?void 0:t.video.inbound;return s?(r.forEach((e=>{const t=s.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const r=e.framesReceived-t.framesReceived,a=e.framesDecoded-t.framesDecoded,o=e.framesDropped-t.framesDropped;if(0===r&&0===a)return;const c=o/r;c>=i(this,Aa,"f")&&n.push({type:xa.CPU,reason:Ia.DecoderCPUThrottling,ssrc:e.ssrc,debug:`framesDropped: ${Math.round(100*c)} , deltaFramesDropped: ${o}, deltaFramesReceived: ${r}`})})),n):n}}ja=new WeakMap,Aa=new WeakMap;class Ha{constructor(){Fa.set(this,{}),Na.set(this,.15)}detect(e){const t=this.processData(e);return i(this,Fa,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.outbound.filter((e=>e.framesEncoded>0)),n=[],s=null===(t=i(this,Fa,"f")[e.connection.id])||void 0===t?void 0:t.video.outbound;return s?(r.forEach((e=>{const t=s.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const r=e.framesEncoded-t.framesEncoded,a=e.framesSent-t.framesSent;if(0===r)return;if(r===a)return;const o=a/r;o>=i(this,Na,"f")&&n.push({type:xa.Network,reason:Ia.OutboundNetworkThroughput,ssrc:e.ssrc,debug:`missedFrames: ${Math.round(100*o)}%`})})),n):n}}Fa=new WeakMap,Na=new WeakMap;class Ka{constructor(){Ba.set(this,{})}detect(e){const t=this.processData(e);return i(this,Ba,"f")[e.connection.id]=e,t}processData(e){var t,r,n,s;const a=[],o=[...null===(t=e.audio)||void 0===t?void 0:t.inbound,...null===(r=e.video)||void 0===r?void 0:r.inbound];if(!o.length)return a;const c=i(this,Ba,"f")[e.connection.id];if(!c)return a;const d=[...null===(n=c.video)||void 0===n?void 0:n.inbound,...null===(s=c.audio)||void 0===s?void 0:s.inbound],{packetsReceived:p}=e.connection,l=c.connection.packetsReceived,u=o.reduce(((e,t)=>{const r=d.find((e=>e.ssrc===t.ssrc)),i=(null==r?void 0:r.jitterBufferDelay)||0,n=(null==r?void 0:r.jitterBufferEmittedCount)||0,s=t.jitterBufferDelay-i,a=t.jitterBufferEmittedCount-n,o=s&&a?1e3*s/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+o,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+((null==r?void 0:r.packetsLost)||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),h=1e3*e.connection.currentRoundTripTime||0,{sumJitter:f,sumJitterBufferDelayMs:m}=u,g=f/o.length,y=m/o.length,v=p-l,b=u.packetsLost-u.lastPacketsLost,w=v&&b?Math.round(100*b/(v+b)):0,_=h+2*g+10;let S=_<160?93.2-_/40:93.2-_/120-10;S-=2.5*w;const R=1+.035*S+7e-6*S*(S-60)*(100-S),k=w>5,P=g>=200,C=!k&&P||P||k,T=h>=250&&!P&&!k,E=k&&P,D=P&&y>500,M=`packetLoss: ${w}%, jitter: ${g}, rtt: ${h}, jitterBuffer: ${y}ms, MOS: ${R}`;return R<3.1&&a.push({type:xa.Network,reason:Ia.LowMOS,iceCandidate:e.connection.local.id,debug:M}),C&&a.push({type:xa.Network,reason:Ia.NetworkQuality,iceCandidate:e.connection.local.id,debug:M}),T&&a.push({type:xa.Server,reason:Ia.ServerIssue,iceCandidate:e.connection.remote.id,debug:M}),E&&a.push({type:xa.Network,reason:Ia.NetworkMediaLatency,iceCandidate:e.connection.local.id,debug:M}),D&&a.push({type:xa.Network,reason:Ia.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id,debug:M}),a}}Ba=new WeakMap;class Qa{constructor(){Ua.set(this,{})}detect(e){const t=this.processData(e);return i(this,Ua,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.audio.inbound,n=[],s=null===(t=i(this,Ua,"f")[e.connection.id])||void 0===t?void 0:t.audio.inbound;return s?(r.forEach((e=>{const t=s.find((t=>t.ssrc===e.ssrc));if(!t)return;const r=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,i=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(r===i)return;const a=e.track.totalSamplesReceived-t.track.totalSamplesReceived,o=r-i,c=Math.round(100*o/a);c>5&&n.push({type:xa.Network,reason:Ia.NetworkMediaSyncFailure,ssrc:e.ssrc,debug:`correctedSamplesPercentage: ${c}%`})})),n):n}}Ua=new WeakMap;class Ja{constructor(){qa.set(this,3e5)}detect(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const n=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),s=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);return n||s?n>r?(t.push({type:xa.Network,reason:Ia.OutboundNetworkThroughput,debug:`availableOutgoingBitrate: ${r}, audioStreamsTotalTargetBitrate: ${n}`}),t):s>0&&r<i(this,qa,"f")?(t.push({type:xa.Network,reason:Ia.OutboundNetworkThroughput,debug:`availableOutgoingBitrate: ${r}, videoStreamsTotalBitrate: ${s}`}),t):t:t}}qa=new WeakMap;class Ya{constructor(e){this.webrtcStatsPeerId="peerId",this.getStatsInterval=5e3,this.detectors=[],this.eventEmitter=new Va,$a.set(this,!1),e.onIssues&&this.eventEmitter.on(Oa.Issue,e.onIssues),this.webrtcStats=new za({getStatsInterval:this.getStatsInterval}),window.wid=this,this.wrapRTCPeerConnection(),this.detectors=[new Wa,new Ga,new Ha,new Ka,new Qa,new Ja],this.webrtcStats.on("stats",(e=>{this.detectIssues(e.data)}))}watchNewPeerConnections(){if(i(this,$a,"f"))throw new Error("WebRTCIssueDetector is already started");n(this,$a,!0,"f")}stopWatchingNewPeerConnections(){if(!i(this,$a,"f"))throw new Error("WebRTCIssueDetector is already stopped");n(this,$a,!1,"f")}resetWatchedPeerConnectionsList(){this.webrtcStats.removePeer(this.webrtcStatsPeerId)}handleNewPeerConnection(e){i(this,$a,"f")&&this.webrtcStats.addConnection({pc:e,peerId:this.webrtcStatsPeerId})}emitIssues(e){this.eventEmitter.emit(Oa.Issue,e)}detectIssues(e){const t=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t.length>0&&this.emitIssues(t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return;const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const i=new e(r);return t(i),i}r.prototype=e.prototype,window.RTCPeerConnection=r}}$a=new WeakMap;var Xa=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Za=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],eo=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 n,s,a=Xa.exec(e||""),o={},c=14;c--;)o[Za[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=(n=o.query,s={},n.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(s[t]=r)})),s),o};var to={exports:{}};try{to.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){to.exports=!1}var ro=to.exports,io="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function no(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||ro))return new XMLHttpRequest}catch(e){}if(!t)try{return new(io[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function so(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const ao=setTimeout,oo=clearTimeout;function co(e,t){t.useNativeTimers?(e.setTimeoutFn=ao.bind(io),e.clearTimeoutFn=oo.bind(io)):(e.setTimeoutFn=setTimeout.bind(io),e.clearTimeoutFn=clearTimeout.bind(io))}var po=lo;function lo(e){if(e)return function(e){for(var t in lo.prototype)e[t]=lo.prototype[t];return e}(e)}lo.prototype.on=lo.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},lo.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},lo.prototype.off=lo.prototype.removeListener=lo.prototype.removeAllListeners=lo.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 n=0;n<i.length;n++)if((r=i[n])===t||r.fn===t){i.splice(n,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},lo.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 n=(r=r.slice(0)).length;i<n;++i)r[i].apply(this,t)}return this},lo.prototype.emitReserved=lo.prototype.emit,lo.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},lo.prototype.hasListeners=function(e){return!!this.listeners(e).length};const uo=Object.create(null);uo.open="0",uo.close="1",uo.ping="2",uo.pong="3",uo.message="4",uo.upgrade="5",uo.noop="6";const ho=Object.create(null);Object.keys(uo).forEach((e=>{ho[uo[e]]=e}));const fo={type:"error",data:"parser error"},mo="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),go="function"==typeof ArrayBuffer,yo=({type:e,data:t},r,i)=>{return mo&&t instanceof Blob?r?i(t):vo(t,i):go&&(t instanceof ArrayBuffer||(n=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(n):n&&n.buffer instanceof ArrayBuffer))?r?i(t):vo(new Blob([t]),i):i(uo[e]+(t||""));var n},vo=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var bo="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",wo="undefined"==typeof Uint8Array?[]:new Uint8Array(256),_o=0;_o<bo.length;_o++)wo[bo.charCodeAt(_o)]=_o;const So="function"==typeof ArrayBuffer,Ro=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Po(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:ko(e.substring(1),t)};return ho[r]?e.length>1?{type:ho[r],data:e.substring(1)}:{type:ho[r]}:fo},ko=(e,t)=>{if(So){const r=function(e){var t,r,i,n,s,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=wo[e.charCodeAt(t)],i=wo[e.charCodeAt(t+1)],n=wo[e.charCodeAt(t+2)],s=wo[e.charCodeAt(t+3)],p[c++]=r<<2|i>>4,p[c++]=(15&i)<<4|n>>2,p[c++]=(3&n)<<6|63&s;return d}(e);return Po(r,t)}return{base64:!0,data:e}},Po=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,Co=String.fromCharCode(30);class To extends po{constructor(e){super(),this.writable=!1,co(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=Ro(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var Eo,Do="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Mo={},Oo=0,xo=0;function Io(e){var t="";do{t=Do[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function Lo(){var e=Io(+new Date);return e!==Eo?(Oo=0,Eo=e):e+"."+Io(Oo++)}for(;xo<64;xo++)Mo[Do[xo]]=xo;Lo.encode=Io,Lo.decode=function(e){var t=0;for(xo=0;xo<e.length;xo++)t=64*t+Mo[e.charAt(xo)];return t};var jo=Lo,Ao={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,n=r.length;i<n;i++){var s=r[i].split("=");t[decodeURIComponent(s[0])]=decodeURIComponent(s[1])}return t}};class Fo extends To{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(Co),i=[];for(let e=0;e<r.length;e++){const n=Ro(r[e],t);if(i.push(n),"error"===n.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 n=0;e.forEach(((e,s)=>{yo(e,!1,(e=>{i[s]=e,++n===r&&t(i.join(Co))}))}))})(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]=jo()),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=Ao.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function No(){}const Bo=null!=new no({xdomain:!1}).responseType;class Uo extends po{constructor(e,t){super(),co(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=so(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 no(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=Uo.requestsCount++,Uo.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=No,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Uo.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(Uo.requestsCount=0,Uo.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",qo);else if("function"==typeof addEventListener){addEventListener("onpagehide"in io?"pagehide":"unload",qo,!1)}function qo(){for(let e in Uo.requests)Uo.requests.hasOwnProperty(e)&&Uo.requests[e].abort()}const $o="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),zo=io.WebSocket||io.MozWebSocket,Vo="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class Wo extends To{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=Vo?{}:so(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=Vo?new zo(e,t,r):t?new zo(e,t):new zo(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;yo(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&$o((()=>{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]=jo()),this.supportsBinary||(e.b64=1);const i=Ao.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!zo||"__initialize"in zo&&this.name===Wo.prototype.name)}}const Go={websocket:Wo,polling:class extends Fo{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=Bo&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new Uo(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 Ho extends po{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=eo(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=eo(t.host).host),co(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=Ao.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 Go[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Ho.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;Ho.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;Ho.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 n(){r||(r=!0,d(),t.close(),t=null)}const s=e=>{const r=new Error("probe error: "+e);r.transport=t.name,n(),this.emitReserved("upgradeError",r)};function a(){s("transport closed")}function o(){s("socket closed")}function c(e){t&&e.name!==t.name&&n()}const d=()=>{t.removeListener("open",i),t.removeListener("error",s),t.removeListener("close",a),this.off("close",o),this.off("upgrading",c)};t.once("open",i),t.once("error",s),t.once("close",a),this.once("close",o),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",Ho.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 n={type:e,data:t,options:r};this.emitReserved("packetCreate",n),this.writeBuffer.push(n),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){Ho.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}}Ho.protocol=4,Ho.protocol;const Ko="function"==typeof ArrayBuffer,Qo=Object.prototype.toString,Jo="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Qo.call(Blob),Yo="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Qo.call(File);function Xo(e){return Ko&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Jo&&e instanceof Blob||Yo&&e instanceof File}function Zo(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Zo(e[t]))return!0;return!1}if(Xo(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Zo(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Zo(e[t]))return!0;return!1}function ec(e){const t=[],r=e.data,i=e;return i.data=tc(r,t),i.attachments=t.length,{packet:i,buffers:t}}function tc(e,t){if(!e)return e;if(Xo(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]=tc(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=tc(e[i],t));return r}return e}function rc(e,t){return e.data=ic(e.data,t),e.attachments=void 0,e}function ic(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]=ic(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=ic(e[r],t));return e}var nc;!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"}(nc||(nc={}));class sc extends po{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===nc.BINARY_EVENT||t.type===nc.BINARY_ACK?(this.reconstructor=new ac(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!Xo(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===nc[r.type])throw new Error("unknown packet type "+r.type);if(r.type===nc.BINARY_EVENT||r.type===nc.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const n=e.substring(i,t);if(n!=Number(n)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(n)}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(!sc.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case nc.CONNECT:return"object"==typeof t;case nc.DISCONNECT:return void 0===t;case nc.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case nc.EVENT:case nc.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case nc.ACK:case nc.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class ac{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=rc(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var oc=Object.freeze({__proto__:null,protocol:5,get PacketType(){return nc},Encoder:class{encode(e){return e.type!==nc.EVENT&&e.type!==nc.ACK||!Zo(e)?[this.encodeAsString(e)]:(e.type=e.type===nc.EVENT?nc.BINARY_EVENT:nc.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==nc.BINARY_EVENT&&e.type!==nc.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=ec(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:sc});function cc(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const dc=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class pc extends po{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=[cc(e,"open",this.onopen.bind(this)),cc(e,"packet",this.onpacket.bind(this)),cc(e,"error",this.onerror.bind(this)),cc(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(dc.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:nc.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:nc.CONNECT,data:e})})):this.packet({type:nc.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 nc.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 nc.EVENT:case nc.BINARY_EVENT:this.onevent(e);break;case nc.ACK:case nc.BINARY_ACK:this.onack(e);break;case nc.DISCONNECT:this.ondisconnect();break;case nc.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:nc.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:nc.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 lc=uc;function uc(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}uc.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)},uc.prototype.reset=function(){this.attempts=0},uc.prototype.setMin=function(e){this.ms=e},uc.prototype.setMax=function(e){this.max=e},uc.prototype.setJitter=function(e){this.jitter=e};class hc extends po{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,co(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 lc({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||oc;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 Ho(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=cc(t,"open",(function(){r.onopen(),e&&e()})),n=cc(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(n),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(cc(e,"ping",this.onping.bind(this)),cc(e,"data",this.ondata.bind(this)),cc(e,"error",this.onerror.bind(this)),cc(e,"close",this.onclose.bind(this)),cc(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 pc(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 fc={};function mc(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=eo(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 n=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+n+":"+i.port+t,i.href=i.protocol+"://"+n+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,n=r.id,s=r.path,a=fc[n]&&s in fc[n].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new hc(i,t):(fc[n]||(fc[n]=new hc(i,t)),o=fc[n]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}class gc{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new s,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new ue({namespace:"Socket",logLevel:e.logLevel})}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=mc(e);this.connection=t,this.serverUrl=e,t.on("connect",(()=>{const e=this.reconnectingAttempt?P.Reconnected:P.Connected;this.isConnected=!0,this.setReconnectingAttempt(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:P.Error,error:e})})),t.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",e),this.observer.safeEmit("state",{state:P.Disconnected,code:this.getDisconnectReasonCode(e)})})),t.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",e),this.observer.safeEmit("state",{state:P.Reconnecting})})),t.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)"),this.observer.safeEmit("state",{state:P.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}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)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var yc={exports:{}},vc=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)}},bc=vc,wc=Object.prototype.toString;function _c(e){return"[object Array]"===wc.call(e)}function Sc(e){return void 0===e}function Rc(e){return null!==e&&"object"==typeof e}function kc(e){if("[object Object]"!==wc.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function Pc(e){return"[object Function]"===wc.call(e)}function Cc(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),_c(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.call(null,e[n],n,e)}var Tc={isArray:_c,isArrayBuffer:function(e){return"[object ArrayBuffer]"===wc.call(e)},isBuffer:function(e){return null!==e&&!Sc(e)&&null!==e.constructor&&!Sc(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:Rc,isPlainObject:kc,isUndefined:Sc,isDate:function(e){return"[object Date]"===wc.call(e)},isFile:function(e){return"[object File]"===wc.call(e)},isBlob:function(e){return"[object Blob]"===wc.call(e)},isFunction:Pc,isStream:function(e){return Rc(e)&&Pc(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:Cc,merge:function e(){var t={};function r(r,i){kc(t[i])&&kc(r)?t[i]=e(t[i],r):kc(r)?t[i]=e({},r):_c(r)?t[i]=r.slice():t[i]=r}for(var i=0,n=arguments.length;i<n;i++)Cc(arguments[i],r);return t},extend:function(e,t,r){return Cc(t,(function(t,i){e[i]=r&&"function"==typeof t?bc(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}},Ec=Tc;function Dc(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Mc=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(Ec.isURLSearchParams(t))i=t.toString();else{var n=[];Ec.forEach(t,(function(e,t){null!=e&&(Ec.isArray(e)?t+="[]":e=[e],Ec.forEach(e,(function(e){Ec.isDate(e)?e=e.toISOString():Ec.isObject(e)&&(e=JSON.stringify(e)),n.push(Dc(t)+"="+Dc(e))})))})),i=n.join("&")}if(i){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},Oc=Tc;function xc(){this.handlers=[]}xc.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},xc.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},xc.prototype.forEach=function(e){Oc.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var Ic=xc,Lc=Tc,jc=function(e,t,r,i,n){return e.config=t,r&&(e.code=r),e.request=i,e.response=n,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},Ac=jc,Fc=function(e,t,r,i,n){var s=new Error(e);return Ac(s,t,r,i,n)},Nc=Fc,Bc=Tc,Uc=Bc.isStandardBrowserEnv()?{write:function(e,t,r,i,n,s){var a=[];a.push(e+"="+encodeURIComponent(t)),Bc.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),Bc.isString(i)&&a.push("path="+i),Bc.isString(n)&&a.push("domain="+n),!0===s&&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(){}},qc=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},$c=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},zc=Tc,Vc=["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"],Wc=Tc,Gc=Wc.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=Wc.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Hc=Tc,Kc=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(Nc("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},Qc=Uc,Jc=Mc,Yc=function(e,t){return e&&!qc(t)?$c(e,t):t},Xc=function(e){var t,r,i,n={};return e?(zc.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=zc.trim(e.substr(0,i)).toLowerCase(),r=zc.trim(e.substr(i+1)),t){if(n[t]&&Vc.indexOf(t)>=0)return;n[t]="set-cookie"===t?(n[t]?n[t]:[]).concat([r]):n[t]?n[t]+", "+r:r}})),n):n},Zc=Gc,ed=Fc,td=function(e){return new Promise((function(t,r){var i=e.data,n=e.headers,s=e.responseType;Hc.isFormData(i)&&delete n["Content-Type"];var a=new XMLHttpRequest;if(e.auth){var o=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.Authorization="Basic "+btoa(o+":"+c)}var d=Yc(e.baseURL,e.url);function p(){if(a){var i="getAllResponseHeaders"in a?Xc(a.getAllResponseHeaders()):null,n={data:s&&"text"!==s&&"json"!==s?a.response:a.responseText,status:a.status,statusText:a.statusText,headers:i,config:e,request:a};Kc(t,r,n),a=null}}if(a.open(e.method.toUpperCase(),Jc(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(ed("Request aborted",e,"ECONNABORTED",a)),a=null)},a.onerror=function(){r(ed("Network Error",e,null,a)),a=null},a.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(ed(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",a)),a=null},Hc.isStandardBrowserEnv()){var l=(e.withCredentials||Zc(d))&&e.xsrfCookieName?Qc.read(e.xsrfCookieName):void 0;l&&(n[e.xsrfHeaderName]=l)}"setRequestHeader"in a&&Hc.forEach(n,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete n[t]:a.setRequestHeader(t,e)})),Hc.isUndefined(e.withCredentials)||(a.withCredentials=!!e.withCredentials),s&&"json"!==s&&(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)}))},rd=Tc,id=function(e,t){Lc.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},nd=jc,sd={"Content-Type":"application/x-www-form-urlencoded"};function ad(e,t){!rd.isUndefined(e)&&rd.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var od,cd={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(od=td),od),transformRequest:[function(e,t){return id(t,"Accept"),id(t,"Content-Type"),rd.isFormData(e)||rd.isArrayBuffer(e)||rd.isBuffer(e)||rd.isStream(e)||rd.isFile(e)||rd.isBlob(e)?e:rd.isArrayBufferView(e)?e.buffer:rd.isURLSearchParams(e)?(ad(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):rd.isObject(e)||t&&"application/json"===t["Content-Type"]?(ad(t,"application/json"),function(e,t,r){if(rd.isString(e))try{return(t||JSON.parse)(e),rd.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,n=!r&&"json"===this.responseType;if(n||i&&rd.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw nd(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}};cd.headers={common:{Accept:"application/json, text/plain, */*"}},rd.forEach(["delete","get","head"],(function(e){cd.headers[e]={}})),rd.forEach(["post","put","patch"],(function(e){cd.headers[e]=rd.merge(sd)}));var dd=cd,pd=Tc,ld=dd,ud=function(e){return!(!e||!e.__CANCEL__)},hd=Tc,fd=function(e,t,r){var i=this||ld;return pd.forEach(r,(function(r){e=r.call(i,e,t)})),e},md=ud,gd=dd;function yd(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var vd=Tc,bd=function(e,t){t=t||{};var r={},i=["url","method","data"],n=["headers","auth","proxy","params"],s=["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 vd.isPlainObject(e)&&vd.isPlainObject(t)?vd.merge(e,t):vd.isPlainObject(t)?vd.merge({},t):vd.isArray(t)?t.slice():t}function c(i){vd.isUndefined(t[i])?vd.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(e[i],t[i])}vd.forEach(i,(function(e){vd.isUndefined(t[e])||(r[e]=o(void 0,t[e]))})),vd.forEach(n,c),vd.forEach(s,(function(i){vd.isUndefined(t[i])?vd.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(void 0,t[i])})),vd.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(n).concat(s).concat(a),p=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return vd.forEach(p,c),r},wd={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"}]},_d={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){_d[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var Sd={},Rd=wd.version.split(".");function kd(e,t){for(var r=t?t.split("."):Rd,i=e.split("."),n=0;n<3;n++){if(r[n]>i[n])return!0;if(r[n]<i[n])return!1}return!1}_d.transitional=function(e,t,r){var i=t&&kd(t);function n(e,t){return"[Axios v"+wd.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,s,a){if(!1===e)throw new Error(n(s," has been removed in "+t));return i&&!Sd[s]&&(Sd[s]=!0,console.warn(n(s," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,s,a)}};var Pd={isOlderVersion:kd,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),n=i.length;n-- >0;){var s=i[n],a=t[s];if(a){var o=e[s],c=void 0===o||a(o,s,e);if(!0!==c)throw new TypeError("option "+s+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+s)}},validators:_d},Cd=Tc,Td=Mc,Ed=Ic,Dd=function(e){return yd(e),e.headers=e.headers||{},e.data=fd.call(e,e.data,e.headers,e.transformRequest),e.headers=hd.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),hd.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||gd.adapter)(e).then((function(t){return yd(e),t.data=fd.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return md(t)||(yd(e),t&&t.response&&(t.response.data=fd.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Md=bd,Od=Pd,xd=Od.validators;function Id(e){this.defaults=e,this.interceptors={request:new Ed,response:new Ed}}Id.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=Md(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&&Od.assertOptions(t,{silentJSONParsing:xd.transitional(xd.boolean,"1.0.0"),forcedJSONParsing:xd.transitional(xd.boolean,"1.0.0"),clarifyTimeoutError:xd.transitional(xd.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 n,s=[];if(this.interceptors.response.forEach((function(e){s.push(e.fulfilled,e.rejected)})),!i){var a=[Dd,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(s),n=Promise.resolve(e);a.length;)n=n.then(a.shift(),a.shift());return n}for(var o=e;r.length;){var c=r.shift(),d=r.shift();try{o=c(o)}catch(e){d(e);break}}try{n=Dd(o)}catch(e){return Promise.reject(e)}for(;s.length;)n=n.then(s.shift(),s.shift());return n},Id.prototype.getUri=function(e){return e=Md(this.defaults,e),Td(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},Cd.forEach(["delete","get","head","options"],(function(e){Id.prototype[e]=function(t,r){return this.request(Md(r||{},{method:e,url:t,data:(r||{}).data}))}})),Cd.forEach(["post","put","patch"],(function(e){Id.prototype[e]=function(t,r,i){return this.request(Md(i||{},{method:e,url:t,data:r}))}}));var Ld=Id;function jd(e){this.message=e}jd.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},jd.prototype.__CANCEL__=!0;var Ad=jd,Fd=Ad;function Nd(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 Fd(e),t(r.reason))}))}Nd.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Nd.source=function(){var e;return{token:new Nd((function(t){e=t})),cancel:e}};var Bd=Nd,Ud=Tc,qd=vc,$d=Ld,zd=bd;function Vd(e){var t=new $d(e),r=qd($d.prototype.request,t);return Ud.extend(r,$d.prototype,t),Ud.extend(r,t),r}var Wd=Vd(dd);Wd.Axios=$d,Wd.create=function(e){return Vd(zd(Wd.defaults,e))},Wd.Cancel=Ad,Wd.CancelToken=Bd,Wd.isCancel=ud,Wd.all=function(e){return Promise.all(e)},Wd.spread=function(e){return function(t){return e.apply(null,t)}},Wd.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},yc.exports=Wd,yc.exports.default=Wd;var Gd=yc.exports,Hd="undefined"!=typeof Symbol&&Symbol,Kd=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 n=Object.getOwnPropertyDescriptor(e,t);if(42!==n.value||!0!==n.enumerable)return!1}return!0},Qd="Function.prototype.bind called on incompatible ",Jd=Array.prototype.slice,Yd=Object.prototype.toString,Xd=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Yd.call(t))throw new TypeError(Qd+t);for(var r,i=Jd.call(arguments,1),n=function(){if(this instanceof r){var n=t.apply(this,i.concat(Jd.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(Jd.call(arguments)))},s=Math.max(0,t.length-i.length),a=[],o=0;o<s;o++)a.push("$"+o);if(r=Function("binder","return function ("+a.join(",")+"){ return binder.apply(this,arguments); }")(n),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Zd=Function.prototype.bind||Xd,ep=Zd.call(Function.call,Object.prototype.hasOwnProperty),tp=SyntaxError,rp=Function,ip=TypeError,np=function(e){try{return rp('"use strict"; return ('+e+").constructor;")()}catch(e){}},sp=Object.getOwnPropertyDescriptor;if(sp)try{sp({},"")}catch(e){sp=null}var ap=function(){throw new ip},op=sp?function(){try{return ap}catch(e){try{return sp(arguments,"callee").get}catch(e){return ap}}}():ap,cp="function"==typeof Hd&&"function"==typeof Symbol&&"symbol"==typeof Hd("foo")&&"symbol"==typeof Symbol("bar")&&Kd(),dp=Object.getPrototypeOf||function(e){return e.__proto__},pp={},lp="undefined"==typeof Uint8Array?undefined:dp(Uint8Array),up={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":cp?dp([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":pp,"%AsyncGenerator%":pp,"%AsyncGeneratorFunction%":pp,"%AsyncIteratorPrototype%":pp,"%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%":rp,"%GeneratorFunction%":pp,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":cp?dp(dp([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&cp?dp((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&&cp?dp((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":cp?dp(""[Symbol.iterator]()):undefined,"%Symbol%":cp?Symbol:undefined,"%SyntaxError%":tp,"%ThrowTypeError%":op,"%TypedArray%":lp,"%TypeError%":ip,"%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},hp=function e(t){var r;if("%AsyncFunction%"===t)r=np("async function () {}");else if("%GeneratorFunction%"===t)r=np("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=np("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var n=e("%AsyncGenerator%");n&&(r=dp(n.prototype))}return up[t]=r,r},fp={"%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"]},mp=Zd,gp=ep,yp=mp.call(Function.call,Array.prototype.concat),vp=mp.call(Function.apply,Array.prototype.splice),bp=mp.call(Function.call,String.prototype.replace),wp=mp.call(Function.call,String.prototype.slice),_p=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Sp=/\\(\\)?/g,Rp=function(e){var t=wp(e,0,1),r=wp(e,-1);if("%"===t&&"%"!==r)throw new tp("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new tp("invalid intrinsic syntax, expected opening `%`");var i=[];return bp(e,_p,(function(e,t,r,n){i[i.length]=r?bp(n,Sp,"$1"):t||e})),i},kp=function(e,t){var r,i=e;if(gp(fp,i)&&(i="%"+(r=fp[i])[0]+"%"),gp(up,i)){var n=up[i];if(n===pp&&(n=hp(i)),void 0===n&&!t)throw new ip("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:n}}throw new tp("intrinsic "+e+" does not exist!")},Pp=function(e,t){if("string"!=typeof e||0===e.length)throw new ip("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new ip('"allowMissing" argument must be a boolean');var r=Rp(e),i=r.length>0?r[0]:"",n=kp("%"+i+"%",t),s=n.name,a=n.value,o=!1,c=n.alias;c&&(i=c[0],vp(r,yp([0,1],c)));for(var d=1,p=!0;d<r.length;d+=1){var l=r[d],u=wp(l,0,1),h=wp(l,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new tp("property names with quotes must have matching quotes");if("constructor"!==l&&p||(o=!0),gp(up,s="%"+(i+="."+l)+"%"))a=up[s];else if(null!=a){if(!(l in a)){if(!t)throw new ip("base intrinsic for "+e+" exists, but the property is not available.");return}if(sp&&d+1>=r.length){var f=sp(a,l);a=(p=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:a[l]}else p=gp(a,l),a=a[l];p&&!o&&(up[s]=a)}}return a},Cp={exports:{}};!function(e){var t=Zd,r=Pp,i=r("%Function.prototype.apply%"),n=r("%Function.prototype.call%"),s=r("%Reflect.apply%",!0)||t.call(n,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=s(t,n,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 s(t,i,arguments)};o?o(e.exports,"apply",{value:d}):e.exports.apply=d}(Cp);var Tp=Pp,Ep=Cp.exports,Dp=Ep(Tp("String.prototype.indexOf")),Mp=Q(Object.freeze({__proto__:null,default:{}})),Op="function"==typeof Map&&Map.prototype,xp=Object.getOwnPropertyDescriptor&&Op?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Ip=Op&&xp&&"function"==typeof xp.get?xp.get:null,Lp=Op&&Map.prototype.forEach,jp="function"==typeof Set&&Set.prototype,Ap=Object.getOwnPropertyDescriptor&&jp?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Fp=jp&&Ap&&"function"==typeof Ap.get?Ap.get:null,Np=jp&&Set.prototype.forEach,Bp="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,Up="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,qp="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,$p=Boolean.prototype.valueOf,zp=Object.prototype.toString,Vp=Function.prototype.toString,Wp=String.prototype.match,Gp="function"==typeof BigInt?BigInt.prototype.valueOf:null,Hp=Object.getOwnPropertySymbols,Kp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Qp="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Jp=Object.prototype.propertyIsEnumerable,Yp=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Xp=Mp.custom,Zp=Xp&&nl(Xp)?Xp:null,el="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function tl(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function rl(e){return String(e).replace(/"/g,"&quot;")}function il(e){return!("[object Array]"!==ol(e)||el&&"object"==typeof e&&el in e)}function nl(e){if(Qp)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!Kp)return!1;try{return Kp.call(e),!0}catch(e){}return!1}var sl=Object.prototype.hasOwnProperty||function(e){return e in this};function al(e,t){return sl.call(e,t)}function ol(e){return zp.call(e)}function cl(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 dl(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return dl(e.slice(0,t.maxStringLength),t)+i}return tl(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,pl),"single",t)}function pl(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 ll(e){return"Object("+e+")"}function ul(e){return e+" { ? }"}function hl(e,t,r,i){return e+" ("+t+") {"+(i?fl(r,i):r.join(", "))+"}"}function fl(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function ml(e,t){var r=il(e),i=[];if(r){i.length=e.length;for(var n=0;n<e.length;n++)i[n]=al(e,n)?t(e[n],e):""}var s,a="function"==typeof Hp?Hp(e):[];if(Qp){s={};for(var o=0;o<a.length;o++)s["$"+a[o]]=a[o]}for(var c in e)al(e,c)&&(r&&String(Number(c))===c&&c<e.length||Qp&&s["$"+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 Hp)for(var d=0;d<a.length;d++)Jp.call(e,a[d])&&i.push("["+t(a[d])+"]: "+t(e[a[d]],e));return i}var gl=Pp,yl=function(e,t){var r=Tp(e,!!t);return"function"==typeof r&&Dp(e,".prototype.")>-1?Ep(r):r},vl=function e(t,r,i,n){var s=r||{};if(al(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(al(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=!al(s,"customInspect")||s.customInspect;if("boolean"!=typeof a&&"symbol"!==a)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(al(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.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 dl(t,s);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===s.depth?5:s.depth;if(void 0===i&&(i=0),i>=o&&o>0&&"object"==typeof t)return il(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)}}(s,i);if(void 0===n)n=[];else if(cl(n,t)>=0)return"[Circular]";function d(t,r,a){if(r&&(n=n.slice()).push(r),a){var o={depth:s.depth};return al(s,"quoteStyle")&&(o.quoteStyle=s.quoteStyle),e(t,o,i+1,n)}return e(t,s,i+1,n)}if("function"==typeof t){var p=function(e){if(e.name)return e.name;var t=Wp.call(Vp.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),l=ml(t,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(l.length>0?" { "+l.join(", ")+" }":"")}if(nl(t)){var u=Qp?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):Kp.call(t);return"object"!=typeof t||Qp?u:ll(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+"="+tl(rl(f[m].value),"double",s);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(il(t)){if(0===t.length)return"[]";var g=ml(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(cl(e[t],"\n")>=0)return!1;return!0}(g)?"["+fl(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==ol(e)||el&&"object"==typeof e&&el in e)}(t)){var y=ml(t,d);return 0===y.length?"["+String(t)+"]":"{ ["+String(t)+"] "+y.join(", ")+" }"}if("object"==typeof t&&a){if(Zp&&"function"==typeof t[Zp])return t[Zp]();if("symbol"!==a&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!Ip||!e||"object"!=typeof e)return!1;try{Ip.call(e);try{Fp.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var v=[];return Lp.call(t,(function(e,r){v.push(d(r,t,!0)+" => "+d(e,t))})),hl("Map",Ip.call(t),v,c)}if(function(e){if(!Fp||!e||"object"!=typeof e)return!1;try{Fp.call(e);try{Ip.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return Np.call(t,(function(e){b.push(d(e,t))})),hl("Set",Fp.call(t),b,c)}if(function(e){if(!Bp||!e||"object"!=typeof e)return!1;try{Bp.call(e,Bp);try{Up.call(e,Up)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return ul("WeakMap");if(function(e){if(!Up||!e||"object"!=typeof e)return!1;try{Up.call(e,Up);try{Bp.call(e,Bp)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return ul("WeakSet");if(function(e){if(!qp||!e||"object"!=typeof e)return!1;try{return qp.call(e),!0}catch(e){}return!1}(t))return ul("WeakRef");if(function(e){return!("[object Number]"!==ol(e)||el&&"object"==typeof e&&el in e)}(t))return ll(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Gp)return!1;try{return Gp.call(e),!0}catch(e){}return!1}(t))return ll(d(Gp.call(t)));if(function(e){return!("[object Boolean]"!==ol(e)||el&&"object"==typeof e&&el in e)}(t))return ll($p.call(t));if(function(e){return!("[object String]"!==ol(e)||el&&"object"==typeof e&&el in e)}(t))return ll(d(String(t)));if(!function(e){return!("[object Date]"!==ol(e)||el&&"object"==typeof e&&el in e)}(t)&&!function(e){return!("[object RegExp]"!==ol(e)||el&&"object"==typeof e&&el in e)}(t)){var w=ml(t,d),_=Yp?Yp(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",R=!_&&el&&Object(t)===t&&el in t?ol(t).slice(8,-1):S?"Object":"",k=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(R||S?"["+[].concat(R||[],S||[]).join(": ")+"] ":"");return 0===w.length?k+"{}":c?k+"{"+fl(w,c)+"}":k+"{ "+w.join(", ")+" }"}return String(t)},bl=gl("%TypeError%"),wl=gl("%WeakMap%",!0),_l=gl("%Map%",!0),Sl=yl("WeakMap.prototype.get",!0),Rl=yl("WeakMap.prototype.set",!0),kl=yl("WeakMap.prototype.has",!0),Pl=yl("Map.prototype.get",!0),Cl=yl("Map.prototype.set",!0),Tl=yl("Map.prototype.has",!0),El=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},Dl=String.prototype.replace,Ml=/%20/g,Ol="RFC3986",xl={default:Ol,formatters:{RFC1738:function(e){return Dl.call(e,Ml,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:Ol},Il=xl,Ll=Object.prototype.hasOwnProperty,jl=Array.isArray,Al=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),Fl=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},Nl={arrayToObject:Fl,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 n=t[i],s=n.obj[n.prop],a=Object.keys(s),o=0;o<a.length;++o){var c=a[o],d=s[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:s,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(jl(r)){for(var i=[],n=0;n<r.length;++n)void 0!==r[n]&&i.push(r[n]);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,n){if(0===e.length)return e;var s=e;if("symbol"==typeof e?s=Symbol.prototype.toString.call(e):"string"!=typeof e&&(s=String(e)),"iso-8859-1"===r)return escape(s).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var a="",o=0;o<s.length;++o){var c=s.charCodeAt(o);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||n===Il.RFC1738&&(40===c||41===c)?a+=s.charAt(o):c<128?a+=Al[c]:c<2048?a+=Al[192|c>>6]+Al[128|63&c]:c<55296||c>=57344?a+=Al[224|c>>12]+Al[128|c>>6&63]+Al[128|63&c]:(o+=1,c=65536+((1023&c)<<10|1023&s.charCodeAt(o)),a+=Al[240|c>>18]+Al[128|c>>12&63]+Al[128|c>>6&63]+Al[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(jl(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(jl(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!Ll.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var n=t;return jl(t)&&!jl(r)&&(n=Fl(t,i)),jl(t)&&jl(r)?(r.forEach((function(r,n){if(Ll.call(t,n)){var s=t[n];s&&"object"==typeof s&&r&&"object"==typeof r?t[n]=e(s,r,i):t.push(r)}else t[n]=r})),t):Object.keys(r).reduce((function(t,n){var s=r[n];return Ll.call(t,n)?t[n]=e(t[n],s,i):t[n]=s,t}),n)}},Bl=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new bl("Side channel does not contain "+vl(e))},get:function(i){if(wl&&i&&("object"==typeof i||"function"==typeof i)){if(e)return Sl(e,i)}else if(_l){if(t)return Pl(t,i)}else if(r)return function(e,t){var r=El(e,t);return r&&r.value}(r,i)},has:function(i){if(wl&&i&&("object"==typeof i||"function"==typeof i)){if(e)return kl(e,i)}else if(_l){if(t)return Tl(t,i)}else if(r)return function(e,t){return!!El(e,t)}(r,i);return!1},set:function(i,n){wl&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new wl),Rl(e,i,n)):_l?(t||(t=new _l),Cl(t,i,n)):(r||(r={key:{},next:null}),function(e,t,r){var i=El(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,n))}};return i},Ul=Nl,ql=xl,$l=Object.prototype.hasOwnProperty,zl={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Vl=Array.isArray,Wl=Array.prototype.push,Gl=function(e,t){Wl.apply(e,Vl(t)?t:[t])},Hl=Date.prototype.toISOString,Kl=ql.default,Ql={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:Ul.encode,encodeValuesOnly:!1,format:Kl,formatter:ql.formatters[Kl],indices:!1,serializeDate:function(e){return Hl.call(e)},skipNulls:!1,strictNullHandling:!1},Jl=function e(t,r,i,n,s,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&&Vl(y)&&(y=Ul.maybeMap(y,(function(e){return e instanceof Date?p(e):e}))),null===y){if(n)return a&&!h?a(r,Ql.encoder,f,"key",l):r;y=""}if("string"==typeof(g=y)||"number"==typeof g||"boolean"==typeof g||"symbol"==typeof g||"bigint"==typeof g||Ul.isBuffer(y))return a?[u(h?r:a(r,Ql.encoder,f,"key",l))+"="+u(a(y,Ql.encoder,f,"value",l))]:[u(r)+"="+u(String(y))];var v,b=[];if(void 0===y)return b;if("comma"===i&&Vl(y))v=[{value:y.length>0?y.join(",")||null:void 0}];else if(Vl(o))v=o;else{var w=Object.keys(y);v=c?w.sort(c):w}for(var _=0;_<v.length;++_){var S=v[_],R="object"==typeof S&&void 0!==S.value?S.value:y[S];if(!s||null!==R){var k=Vl(y)?"function"==typeof i?i(r,S):r:r+(d?"."+S:"["+S+"]");m.set(t,!0);var P=Bl();Gl(b,e(R,k,i,n,s,a,o,c,d,p,l,u,h,f,P))}}return b},Yl=Nl,Xl=Object.prototype.hasOwnProperty,Zl=Array.isArray,eu={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Yl.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},tu=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},ru=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},iu=function(e,t,r,i){if(e){var n=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/g,a=r.depth>0&&/(\[[^[\]]*])/.exec(n),o=a?n.slice(0,a.index):n,c=[];if(o){if(!r.plainObjects&&Xl.call(Object.prototype,o)&&!r.allowPrototypes)return;c.push(o)}for(var d=0;r.depth>0&&null!==(a=s.exec(n))&&d<r.depth;){if(d+=1,!r.plainObjects&&Xl.call(Object.prototype,a[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(a[1])}return a&&c.push("["+n.slice(a.index)+"]"),function(e,t,r,i){for(var n=i?t:ru(t,r),s=e.length-1;s>=0;--s){var a,o=e[s];if("[]"===o&&r.parseArrays)a=[].concat(n);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]=n:a[c]=n:a={0:n}}n=a}return n}(c,t,r,i)}},nu=function(e,t){var r,i=e,n=function(e){if(!e)return Ql;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||Ql.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=ql.default;if(void 0!==e.format){if(!$l.call(ql.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=ql.formatters[r],n=Ql.filter;return("function"==typeof e.filter||Vl(e.filter))&&(n=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:Ql.addQueryPrefix,allowDots:void 0===e.allowDots?Ql.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Ql.charsetSentinel,delimiter:void 0===e.delimiter?Ql.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:Ql.encode,encoder:"function"==typeof e.encoder?e.encoder:Ql.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:Ql.encodeValuesOnly,filter:n,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:Ql.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:Ql.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Ql.strictNullHandling}}(t);"function"==typeof n.filter?i=(0,n.filter)("",i):Vl(n.filter)&&(r=n.filter);var s,a=[];if("object"!=typeof i||null===i)return"";s=t&&t.arrayFormat in zl?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var o=zl[s];r||(r=Object.keys(i)),n.sort&&r.sort(n.sort);for(var c=Bl(),d=0;d<r.length;++d){var p=r[d];n.skipNulls&&null===i[p]||Gl(a,Jl(i[p],p,o,n.strictNullHandling,n.skipNulls,n.encode?n.encoder:null,n.filter,n.sort,n.allowDots,n.serializeDate,n.format,n.formatter,n.encodeValuesOnly,n.charset,c))}var l=a.join(n.delimiter),u=!0===n.addQueryPrefix?"?":"";return n.charsetSentinel&&("iso-8859-1"===n.charset?u+="utf8=%26%2310003%3B&":u+="utf8=%E2%9C%93&"),l.length>0?u+l:""},su=function(e,t){var r=function(e){if(!e)return eu;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?eu.charset:e.charset;return{allowDots:void 0===e.allowDots?eu.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:eu.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:eu.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:eu.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:eu.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:eu.comma,decoder:"function"==typeof e.decoder?e.decoder:eu.decoder,delimiter:"string"==typeof e.delimiter||Yl.isRegExp(e.delimiter)?e.delimiter:eu.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:eu.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:eu.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:eu.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:eu.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:eu.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},n=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,s=t.parameterLimit===1/0?void 0:t.parameterLimit,a=n.split(t.delimiter,s),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,eu.decoder,c,"key"),p=t.strictNullHandling?null:""):(d=t.decoder(l.slice(0,h),eu.decoder,c,"key"),p=Yl.maybeMap(ru(l.slice(h+1),t),(function(e){return t.decoder(e,eu.decoder,c,"value")}))),p&&t.interpretNumericEntities&&"iso-8859-1"===c&&(p=tu(p)),l.indexOf("[]=")>-1&&(p=Zl(p)?[p]:p),Xl.call(i,d)?i[d]=Yl.combine(i[d],p):i[d]=p}return i}(e,r):e,n=r.plainObjects?Object.create(null):{},s=Object.keys(i),a=0;a<s.length;++a){var o=s[a],c=iu(o,i[o],r,"string"==typeof e);n=Yl.merge(n,c,r)}return!0===r.allowSparse?n:Yl.compact(n)},au={formats:xl,parse:su,stringify:nu};class ou{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=Gd.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>au.stringify(e)}),this.customNode=i}getNode(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:e});return t}))}}class cu{createSystem(e){return new ra(e)}createMedia(e){return new Ys(e)}createNetwork(e){const{loadbalancer:t,logLevel:r}=e,i=new gc({logLevel:r}),n=new ou(t);return new ta({logLevel:r,socketClient:i,loadBalancerApiClient:n})}createChannelEventHandler(e){return new ia(e)}createMediaSoupEventHandler(e){return new na(e)}createIssueDetector(e){return new Ya({onIssues:e.onIssues})}}class du{constructor(e){var t,r;const{observer:i,network:n,onLogMessage:a,onIssues:o,logLevel:c}=e;this._observer=null!=i?i:new s;const d=new cu;this.engine=new ea({dependenciesFactory:d,clientEventEmitter:this.observer,network:{loadbalancer:{baseURL:null===(t=null==n?void 0:n.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==n?void 0:n.loadbalancer)||void 0===r?void 0:r.customNode}},logLevel:c,onLogMessage:a,onIssues:o})}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{du as default};