@whereby.com/browser-sdk 2.5.0 → 2.6.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.
- package/dist/cdn/v2-embed.js +1 -1
- package/dist/cdn/v2-react.js +2 -2
- package/dist/embed/index.d.ts +4 -0
- package/dist/embed/index.esm.js +4 -0
- package/package.json +4 -5
package/dist/cdn/v2-react.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
this.whereby=this.whereby||{},this.whereby.react=function(e,t){"use strict";function r(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}function i(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}}))})),Object.freeze(e)}var n=r(t);function s(e,{delay:t=500,edges:r}={}){let i,n=0;return(...s)=>{n+=1,r&&1===n&&e(...s),clearTimeout(i),i=setTimeout((()=>{(!r||n>1)&&e(...s),i=void 0,n=0}),t)}}"function"==typeof SuppressedError&&SuppressedError;var a=e=>{var{muted:t,mirror:r=!1,stream:i,onResize:a,onSetAspectRatio:o}=e,c=function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}(e,["muted","mirror","stream","onResize","onSetAspectRatio"]);const d=n.useRef(null);return n.useEffect((()=>{if(!d.current)return;const e=new ResizeObserver(s((()=>{if(d.current&&(null==i?void 0:i.id)){a&&a({width:d.current.clientWidth,height:d.current.clientHeight,stream:i});const e=d.current.videoHeight,t=d.current.videoWidth;o&&t&&e&&t+e>20&&o({aspectRatio:t/e})}}),{delay:1e3,edges:!0}));return e.observe(d.current),()=>{e.disconnect()}}),[i]),n.useEffect((()=>{d.current&&(d.current.srcObject!==i&&(d.current.srcObject=i),d.current.muted!==t&&(d.current.muted=Boolean(t)))}),[t,i,d]),n.createElement("video",Object.assign({ref:d,autoPlay:!0,playsInline:!0},c,{style:Object.assign({transform:r?"scaleX(-1)":"none",width:"100%",height:"100%"},c.style)}))},o=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),c=()=>Math.random().toString(36).substring(7).split("").join("."),d={INIT:`@@redux/INIT${c()}`,REPLACE:`@@redux/REPLACE${c()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${c()}`};function l(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function p(e){if(void 0===e)return"undefined";if(null===e)return"null";const t=typeof e;switch(t){case"boolean":case"string":case"number":case"symbol":case"function":return t}if(Array.isArray(e))return"array";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";const r=function(e){return"function"==typeof e.constructor?e.constructor.name:null}(e);switch(r){case"Symbol":case"Promise":case"WeakMap":case"WeakSet":case"Map":case"Set":return r}return Object.prototype.toString.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"")}function u(e){let t=typeof e;return t=p(e),t}function h(e,t,r){if("function"!=typeof e)throw new Error(`Expected the root reducer to be a function. Instead, received: '${u(e)}'`);if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.");if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(`Expected the enhancer to be a function. Instead, received: '${u(r)}'`);return r(h)(e,t)}let i=e,n=t,s=new Map,a=s,c=0,p=!1;function m(){a===s&&(a=new Map,s.forEach(((e,t)=>{a.set(t,e)})))}function f(){if(p)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return n}function g(e){if("function"!=typeof e)throw new Error(`Expected the listener to be a function. Instead, received: '${u(e)}'`);if(p)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.");let t=!0;m();const r=c++;return a.set(r,e),function(){if(t){if(p)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.");t=!1,m(),a.delete(r),s=null}}}function v(e){if(!l(e))throw new Error(`Actions must be plain objects. Instead, the actual type was: '${u(e)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');if("string"!=typeof e.type)throw new Error(`Action "type" property must be a string. Instead, the actual type was: '${u(e.type)}'. Value was: '${e.type}' (stringified)`);if(p)throw new Error("Reducers may not dispatch actions.");try{p=!0,n=i(n,e)}finally{p=!1}return(s=a).forEach((e=>{e()})),e}v({type:d.INIT});return{dispatch:v,subscribe:g,getState:f,replaceReducer:function(e){if("function"!=typeof e)throw new Error(`Expected the nextReducer to be a function. Instead, received: '${u(e)}`);i=e,v({type:d.REPLACE})},[o]:function(){const e=g;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(`Expected the observer to be an object. Instead, received: '${u(t)}'`);function r(){const e=t;e.next&&e.next(f())}r();return{unsubscribe:e(r)}},[o](){return this}}}}}function m(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function f(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const n=t[i];void 0===e[n]&&m(`No reducer provided for key "${n}"`),"function"==typeof e[n]&&(r[n]=e[n])}const i=Object.keys(r);let n,s;n={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:d.INIT}))throw new Error(`The slice reducer for key "${t}" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(void 0===r(void 0,{type:d.PROBE_UNKNOWN_ACTION()}))throw new Error(`The slice reducer for key "${t}" returned undefined when probed with a random type. Don't try to handle '${d.INIT}' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`)}))}(r)}catch(e){s=e}return function(e={},t){if(s)throw s;{const i=function(e,t,r,i){const n=Object.keys(t),s=r&&r.type===d.INIT?"preloadedState argument passed to createStore":"previous state received by the reducer";if(0===n.length)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";if(!l(e))return`The ${s} has unexpected type of "${u(e)}". Expected argument to be an object with the following keys: "${n.join('", "')}"`;const a=Object.keys(e).filter((e=>!t.hasOwnProperty(e)&&!i[e]));return a.forEach((e=>{i[e]=!0})),r&&r.type===d.REPLACE?void 0:a.length>0?`Unexpected ${a.length>1?"keys":"key"} "${a.join('", "')}" found in ${s}. Expected to find one of the known reducer keys instead: "${n.join('", "')}". Unexpected keys will be ignored.`:void 0}(e,r,t,n);i&&m(i)}let a=!1;const o={};for(let n=0;n<i.length;n++){const s=i[n],c=r[s],d=e[s],l=c(d,t);if(void 0===l){const e=t&&t.type;throw new Error(`When called with an action of type ${e?`"${String(e)}"`:"(unknown type)"}, the slice reducer for key "${s}" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`)}o[s]=l,a=a||l!==d}return a=a||i.length!==Object.keys(e).length,a?o:e}}function g(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...r)=>e(t(...r))))}function v(e){return l(e)&&"type"in e&&"string"==typeof e.type}var _=Symbol.for("immer-nothing"),y=Symbol.for("immer-draftable"),b=Symbol.for("immer-state"),w=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function S(e,...t){{const r=w[e],i="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${i}`)}}var C=Object.getPrototypeOf;function R(e){return!!e&&!!e[b]}function T(e){return!!e&&(k(e)||Array.isArray(e)||!!e[y]||!!e.constructor?.[y]||x(e)||M(e))}var P=Object.prototype.constructor.toString();function k(e){if(!e||"object"!=typeof e)return!1;const t=C(e);if(null===t)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object||"function"==typeof r&&Function.toString.call(r)===P}function D(e,t){0===E(e)?Object.entries(e).forEach((([r,i])=>{t(r,i,e)})):e.forEach(((r,i)=>t(i,r,e)))}function E(e){const t=e[b];return t?t.type_:Array.isArray(e)?1:x(e)?2:M(e)?3:0}function I(e,t){return 2===E(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function O(e,t,r){const i=E(e);2===i?e.set(t,r):3===i?e.add(r):e[t]=r}function x(e){return e instanceof Map}function M(e){return e instanceof Set}function j(e){return e.copy_||e.base_}function L(e,t){if(x(e))return new Map(e);if(M(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&k(e)){if(!C(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[b];let i=Reflect.ownKeys(r);for(let t=0;t<i.length;t++){const n=i[t],s=r[n];!1===s.writable&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(r[n]={configurable:!0,writable:!0,enumerable:s.enumerable,value:e[n]})}return Object.create(C(e),r)}function A(e,t=!1){return B(e)||R(e)||!T(e)||(E(e)>1&&(e.set=e.add=e.clear=e.delete=N),Object.freeze(e),t&&D(e,((e,t)=>A(t,!0)))),e}function N(){S(2)}function B(e){return Object.isFrozen(e)}var F,U={};function $(e){const t=U[e];return t||S(0,e),t}function z(){return F}function V(e,t){t&&($("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function q(e){G(e),e.drafts_.forEach(W),e.drafts_=null}function G(e){e===F&&(F=e.parent_)}function H(e){return F={drafts_:[],parent_:F,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function W(e){const t=e[b];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function K(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[b].modified_&&(q(t),S(4)),T(e)&&(e=J(t,e),t.parent_||Z(t,e)),t.patches_&&$("Patches").generateReplacementPatches_(r[b].base_,e,t.patches_,t.inversePatches_)):e=J(t,r,[]),q(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==_?e:void 0}function J(e,t,r){if(B(t))return t;const i=t[b];if(!i)return D(t,((n,s)=>Q(e,i,t,n,s,r))),t;if(i.scope_!==e)return t;if(!i.modified_)return Z(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let n=t,s=!1;3===i.type_&&(n=new Set(t),t.clear(),s=!0),D(n,((n,a)=>Q(e,i,t,n,a,r,s))),Z(e,t,!1),r&&e.patches_&&$("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function Q(e,t,r,i,n,s,a){if(n===r&&S(5),R(n)){const a=J(e,n,s&&t&&3!==t.type_&&!I(t.assigned_,i)?s.concat(i):void 0);if(O(r,i,a),!R(a))return;e.canAutoFreeze_=!1}else a&&r.add(n);if(T(n)&&!B(n)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;J(e,n),t&&t.scope_.parent_||Z(e,n)}}function Z(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&A(t,r)}var Y={get(e,t){if(t===b)return e;const r=j(e);if(!I(r,t))return function(e,t,r){const i=te(t,r);return i?"value"in i?i.value:i.get?.call(e.draft_):void 0}(e,r,t);const i=r[t];return e.finalized_||!T(i)?i:i===ee(e.base_,t)?(ie(e),e.copy_[t]=ne(i,e)):i},has:(e,t)=>t in j(e),ownKeys:e=>Reflect.ownKeys(j(e)),set(e,t,r){const i=te(j(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=ee(j(e),t),a=i?.[b];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((n=r)===(s=i)?0!==n||1/n==1/s:n!=n&&s!=s)&&(void 0!==r||I(e.base_,t)))return!0;ie(e),re(e)}var n,s;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==ee(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,ie(e),re(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=j(e),i=Reflect.getOwnPropertyDescriptor(r,t);return i?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:i.enumerable,value:r[t]}:i},defineProperty(){S(11)},getPrototypeOf:e=>C(e.base_),setPrototypeOf(){S(12)}},X={};function ee(e,t){const r=e[b];return(r?j(r):e)[t]}function te(e,t){if(!(t in e))return;let r=C(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=C(r)}}function re(e){e.modified_||(e.modified_=!0,e.parent_&&re(e.parent_))}function ie(e){e.copy_||(e.copy_=L(e.base_,e.scope_.immer_.useStrictShallowCopy_))}D(Y,((e,t)=>{X[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),X.deleteProperty=function(e,t){return isNaN(parseInt(t))&&S(13),X.set.call(this,e,t,void 0)},X.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&S(14),Y.set.call(this,e[0],t,r,e[0])};function ne(e,t){const r=x(e)?$("MapSet").proxyMap_(e,t):M(e)?$("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),i={type_:r?1:0,scope_:t?t.scope_:z(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let n=i,s=Y;r&&(n=[i],s=X);const{revoke:a,proxy:o}=Proxy.revocable(n,s);return i.draft_=o,i.revoke_=a,o}(e,t);return(t?t.scope_:z()).drafts_.push(r),r}function se(e){return R(e)||S(10,e),ae(e)}function ae(e){if(!T(e)||B(e))return e;const t=e[b];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=L(e,t.scope_.immer_.useStrictShallowCopy_)}else r=L(e,!0);return D(r,((e,t)=>{O(r,e,ae(t))})),t&&(t.finalized_=!1),r}var oe=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const i=this;return function(e=r,...n){return i.produce(e,(e=>t.call(this,e,...n)))}}let i;if("function"!=typeof t&&S(6),void 0!==r&&"function"!=typeof r&&S(7),T(e)){const n=H(this),s=ne(e,void 0);let a=!0;try{i=t(s),a=!1}finally{a?q(n):G(n)}return V(n,r),K(i,n)}if(!e||"object"!=typeof e){if(i=t(e),void 0===i&&(i=e),i===_&&(i=void 0),this.autoFreeze_&&A(i,!0),r){const t=[],n=[];$("Patches").generateReplacementPatches_(e,i,t,n),r(t,n)}return i}S(1,e)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,(t=>e(t,...r)));let r,i;return[this.produce(e,t,((e,t)=>{r=e,i=t})),r,i]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){T(e)||S(8),R(e)&&(e=se(e));const t=H(this),r=ne(e,void 0);return r[b].isManual_=!0,G(t),r}finishDraft(e,t){const r=e&&e[b];r&&r.isManual_||S(9);const{scope_:i}=r;return V(i,t),K(void 0,i)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const i=t[r];if(0===i.path.length&&"replace"===i.op){e=i.value;break}}r>-1&&(t=t.slice(r+1));const i=$("Patches").applyPatches_;return R(e)?i(e,t):this.produce(e,(e=>i(e,t)))}},ce=oe.produce;oe.produceWithPatches.bind(oe),oe.setAutoFreeze.bind(oe),oe.setUseStrictShallowCopy.bind(oe),oe.applyPatches.bind(oe),oe.createDraft.bind(oe),oe.finishDraft.bind(oe);var de=(e,t,r)=>{if(1===t.length&&t[0]===r){let t=!1;try{const r={};e(r)===r&&(t=!0)}catch{}if(t){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("The result function returned its own inputs without modification. e.g\n`createSelector([state => state.todos], todos => todos)`\nThis could lead to inefficient memoization and unnecessary re-renders.\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.",{stack:e})}}},le=(e,t,r)=>{const{memoize:i,memoizeOptions:n}=t,{inputSelectorResults:s,inputSelectorResultsCopy:a}=e,o=i((()=>({})),...n);if(!(o.apply(null,s)===o.apply(null,a))){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("An input selector returned a different result when passed same arguments.\nThis means your output selector will likely run more frequently than intended.\nAvoid returning a new reference inside your input selector, e.g.\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`",{arguments:r,firstInputs:s,secondInputs:a,stack:e})}},pe={inputStabilityCheck:"once",identityFunctionCheck:"once"};var ue=e=>Array.isArray(e)?e:[e];function he(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every((e=>"function"==typeof e))){const r=e.map((e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e)).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function me(e,t){const r=[],{length:i}=e;for(let n=0;n<i;n++)r.push(e[n].apply(null,t));return r}var fe="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},ge=0,ve=1;function _e(){return{s:ge,v:void 0,o:null,p:null}}function ye(e,t={}){let r=_e();const{resultEqualityCheck:i}=t;let n,s=0;function a(){let t=r;const{length:a}=arguments;for(let e=0,r=a;e<r;e++){const r=arguments[e];if("function"==typeof r||"object"==typeof r&&null!==r){let e=t.o;null===e&&(t.o=e=new WeakMap);const i=e.get(r);void 0===i?(t=_e(),e.set(r,t)):t=i}else{let e=t.p;null===e&&(t.p=e=new Map);const i=e.get(r);void 0===i?(t=_e(),e.set(r,t)):t=i}}const o=t;let c;if(t.s===ve?c=t.v:(c=e.apply(null,arguments),s++),o.s=ve,i){const e=n?.deref?.()??n;null!=e&&i(e,c)&&(c=e,0!==s&&s--);n="object"==typeof c&&null!==c||"function"==typeof c?new fe(c):c}return o.v=c,c}return a.clearCache=()=>{r=_e(),a.resetResultsCount()},a.resultsCount=()=>s,a.resetResultsCount=()=>{s=0},a}function be(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,i=(...e)=>{let t,i=0,n=0,s={},a=e.pop();"object"==typeof a&&(s=a,a=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(a,`createSelector expects an output function after the inputs, but received: [${typeof a}]`);const o={...r,...s},{memoize:c,memoizeOptions:d=[],argsMemoize:l=ye,argsMemoizeOptions:p=[],devModeChecks:u={}}=o,h=ue(d),m=ue(p),f=he(e),g=c((function(){return i++,a.apply(null,arguments)}),...h);let v=!0;const _=l((function(){n++;const e=me(f,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:i}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:i}={...pe,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:de},inputStabilityCheck:{shouldRun:"always"===i||"once"===i&&e,run:le}}})(v,u);if(r.shouldRun&&r.run(a,e,t),i.shouldRun){const t=me(f,arguments);i.run({inputSelectorResults:e,inputSelectorResultsCopy:t},{memoize:c,memoizeOptions:h},arguments)}v&&(v=!1)}return t}),...m);return Object.assign(_,{resultFunc:a,memoizedResultFunc:g,dependencies:f,dependencyRecomputations:()=>n,resetDependencyRecomputations:()=>{n=0},lastResult:()=>t,recomputations:()=>i,resetRecomputations:()=>{i=0},memoize:c,argsMemoize:l})};return Object.assign(i,{withTypes:()=>i}),i}var we=be(ye),Se=Object.assign(((e,t=we)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e),i=t(r.map((t=>e[t])),((...e)=>e.reduce(((e,t,i)=>(e[r[i]]=t,e)),{})));return i}),{withTypes:()=>Se});function Ce(e){return({dispatch:t,getState:r})=>i=>n=>"function"==typeof n?n(t,r,e):i(n)}var Re=Ce(),Te=Ce;((...e)=>{const t=be(...e),r=Object.assign(((...e)=>{const r=t(...e),i=(e,...t)=>r(R(e)?se(e):e,...t);return Object.assign(i,r),i}),{withTypes:()=>r})})(ye);var Pe="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?g:g.apply(null,arguments)},ke=e=>e&&"function"==typeof e.match;function De(e,t){function r(...r){if(t){let i=t(...r);if(!i)throw new Error("prepareAction did not return an object");return{type:e,payload:i.payload,..."meta"in i&&{meta:i.meta},..."error"in i&&{error:i.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>v(t)&&t.type===e,r}function Ee(e){return"function"==typeof e&&"type"in e&&ke(e)}function Ie(e,t){let r=0;return{measureTime(e){const t=Date.now();try{return e()}finally{const e=Date.now();r+=e-t}},warnIfExceeded(){r>e&&console.warn(`${t} took ${r}ms, which is more than the warning threshold of ${e}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`)}}}function Oe(e,t){for(const r of e)if(t(r))return r}var xe=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function Me(e){return T(e)?ce(e,(()=>{})):e}function je(e,t,r){if(e.has(t)){let i=e.get(t);return r.update&&(i=r.update(i,t,e),e.set(t,i)),i}if(!r.insert)throw new Error("No insert provided for key not already in map");const i=r.insert(t,e);return e.set(t,i),i}function Le(e){return"object"!=typeof e||null==e||Object.isFrozen(e)}function Ae(e,t,r){const i=Ne(e,t,r);return{detectMutations:()=>Be(e,t,i,r)}}function Ne(e,t=[],r,i="",n=new Set){const s={value:r};if(!e(r)&&!n.has(r)){n.add(r),s.children={};for(const n in r){const a=i?i+"."+n:n;t.length&&-1!==t.indexOf(a)||(s.children[n]=Ne(e,t,r[n],a))}}return s}function Be(e,t=[],r,i,n=!1,s=""){const a=r?r.value:void 0,o=a===i;if(n&&!o&&!Number.isNaN(i))return{wasMutated:!0,path:s};if(e(a)||e(i))return{wasMutated:!1};const c={};for(let e in r.children)c[e]=!0;for(let e in i)c[e]=!0;const d=t.length>0;for(let n in c){const a=s?s+"."+n:n;if(d){if(t.some((e=>e instanceof RegExp?e.test(a):a===e)))continue}const c=Be(e,t,r.children[n],i[n],o,a);if(c.wasMutated)return c}return{wasMutated:!1}}function Fe(e){const t=typeof e;return null==e||"string"===t||"boolean"===t||"number"===t||Array.isArray(e)||l(e)}function Ue(e,t="",r=Fe,i,n=[],s){let a;if(!r(e))return{keyPath:t||"<root>",value:e};if("object"!=typeof e||null===e)return!1;if(s?.has(e))return!1;const o=null!=i?i(e):Object.entries(e),c=n.length>0;for(const[e,d]of o){const o=t?t+"."+e:e;if(c){if(n.some((e=>e instanceof RegExp?e.test(o):o===e)))continue}if(!r(d))return{keyPath:o,value:d};if("object"==typeof d&&(a=Ue(d,o,r,i,n,s),a))return a}return s&&$e(e)&&s.add(e),!1}function $e(e){if(!Object.isFrozen(e))return!1;for(const t of Object.values(e))if("object"==typeof t&&null!==t&&!$e(t))return!1;return!0}function ze(e){return"boolean"==typeof e}var Ve=()=>function(e){const{thunk:t=!0,immutableCheck:r=!0,serializableCheck:i=!0,actionCreatorCheck:n=!0}=e??{};let s=new xe;if(t&&(ze(t)?s.push(Re):s.push(Te(t.extraArgument))),r){let e={};ze(r)||(e=r),s.unshift(function(e={}){{let t=function(e,t,i,n){return JSON.stringify(e,r(t,n),i)},r=function(e,t){let r=[],i=[];return t||(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,r.indexOf(t)).join(".")+"]"}),function(n,s){if(r.length>0){var a=r.indexOf(this);~a?r.splice(a+1):r.push(this),~a?i.splice(a,1/0,n):i.push(n),~r.indexOf(s)&&(s=t.call(this,n,s))}else r.push(s);return null==e?s:e.call(this,n,s)}},{isImmutable:i=Le,ignoredPaths:n,warnAfter:s=32}=e;const a=Ae.bind(null,i,n);return({getState:e})=>{let r,i=e(),n=a(i);return o=>c=>{const d=Ie(s,"ImmutableStateInvariantMiddleware");d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=a(i),r.wasMutated)throw new Error(`A state mutation was detected between dispatches, in the path '${r.path||""}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)}));const l=o(c);return d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=a(i),r.wasMutated)throw new Error(`A state mutation was detected inside a dispatch, in the path: ${r.path||""}. Take a look at the reducer(s) handling the action ${t(c)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)})),d.warnIfExceeded(),l}}}}(e))}if(i){let e={};ze(i)||(e=i),s.push(function(e={}){{const{isSerializable:t=Fe,getEntries:r,ignoredActions:i=[],ignoredActionPaths:n=["meta.arg","meta.baseQueryMeta"],ignoredPaths:s=[],warnAfter:a=32,ignoreState:o=!1,ignoreActions:c=!1,disableCache:d=!1}=e,l=!d&&WeakSet?new WeakSet:void 0;return e=>d=>p=>{if(!v(p))return d(p);const u=d(p),h=Ie(a,"SerializableStateInvariantMiddleware");return c||i.length&&-1!==i.indexOf(p.type)||h.measureTime((()=>{const e=Ue(p,"",t,r,n,l);if(e){const{keyPath:t,value:r}=e;console.error(`A non-serializable value was detected in an action, in the path: \`${t}\`. Value:`,r,"\nTake a look at the logic that dispatched this action: ",p,"\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)","\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)")}})),o||(h.measureTime((()=>{const i=Ue(e.getState(),"",t,r,s,l);if(i){const{keyPath:e,value:t}=i;console.error(`A non-serializable value was detected in the state, in the path: \`${e}\`. Value:`,t,`\nTake a look at the reducer(s) handling this action type: ${p.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`)}})),h.warnIfExceeded()),u}}}(e))}if(n){let e={};ze(n)||(e=n),s.unshift(function(e={}){const{isActionCreator:t=Ee}=e;return()=>e=>r=>(t(r)&&console.warn(function(e){const t=e?`${e}`.split("/"):[],r=t[t.length-1]||"actionCreator";return`Detected an action creator with type "${e||"unknown"}" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \`dispatch(${r}())\` instead of \`dispatch(${r})\`. This is necessary even if the action has no payload.`}(r.type)),e(r))}(e))}return s},qe=e=>t=>{setTimeout(t,e)},Ge="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:qe(10),He=e=>function(t){const{autoBatch:r=!0}=t??{};let i=new xe(e);return r&&i.push(((e={type:"raf"})=>t=>(...r)=>{const i=t(...r);let n=!0,s=!1,a=!1;const o=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?Ge:"callback"===e.type?e.queueNotification:qe(e.timeout),d=()=>{a=!1,s&&(s=!1,o.forEach((e=>e())))};return Object.assign({},i,{subscribe(e){const t=i.subscribe((()=>n&&e()));return o.add(e),()=>{t(),o.delete(e)}},dispatch(e){try{return n=!e?.meta?.RTK_autoBatch,s=!n,s&&(a||(a=!0,c(d))),i.dispatch(e)}finally{n=!0}}})})("object"==typeof r?r:void 0)),i};function We(e){const t=Ve(),{reducer:r,middleware:i,devTools:n=!0,preloadedState:s,enhancers:a}=e||{};let o,c;if("function"==typeof r)o=r;else{if(!l(r))throw new Error("`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers");o=f(r)}if(i&&"function"!=typeof i)throw new Error("`middleware` field must be a callback");if("function"==typeof i){if(c=i(t),!Array.isArray(c))throw new Error("when using a middleware builder function, an array of middleware must be returned")}else c=t();if(c.some((e=>"function"!=typeof e)))throw new Error("each middleware provided to configureStore must be a function");let d=g;n&&(d=Pe({trace:!0,..."object"==typeof n&&n}));const p=function(...e){return t=>(r,i)=>{const n=t(r,i);let s=()=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")};const a={getState:n.getState,dispatch:(e,...t)=>s(e,...t)},o=e.map((e=>e(a)));return s=g(...o)(n.dispatch),{...n,dispatch:s}}}(...c),u=He(p);if(a&&"function"!=typeof a)throw new Error("`enhancers` field must be a callback");let m="function"==typeof a?a(u):u();if(!Array.isArray(m))throw new Error("`enhancers` callback must return an array");if(m.some((e=>"function"!=typeof e)))throw new Error("each enhancer provided to configureStore must be a function");c.length&&!m.includes(p)&&console.error("middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`");return h(o,s,d(...m))}function Ke(e){const t={},r=[];let i;const n={addCase(e,s){if(r.length>0)throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");if(i)throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");const a="string"==typeof e?e:e.type;if(!a)throw new Error("`builder.addCase` cannot be called with an empty action type");if(a in t)throw new Error(`\`builder.addCase\` cannot be called with two reducers for the same action type '${a}'`);return t[a]=s,n},addMatcher(e,t){if(i)throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");return r.push({matcher:e,reducer:t}),n},addDefaultCase(e){if(i)throw new Error("`builder.addDefaultCase` can only be called once");return i=e,n}};return e(n),[t,r,i]}var Je=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function Qe(...e){return t=>e.some((e=>((e,t)=>ke(e)?e.match(t):e(t))(e,t)))}var Ze=["name","message","stack","code"],Ye=class{constructor(e,t){this.payload=e,this.meta=t}_type},Xe=class{constructor(e,t){this.payload=e,this.meta=t}_type},et=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of Ze)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},tt=(()=>{function e(e,t,r){const i=De(e+"/fulfilled",((e,t,r,i)=>({payload:e,meta:{...i||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),n=De(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),s=De(e+"/rejected",((e,t,i,n,s)=>({payload:n,error:(r&&r.serializeError||et)(e||"Rejected"),meta:{...s||{},arg:i,requestId:t,rejectedWithValue:!!n,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}})));return Object.assign((function(e){return(a,o,c)=>{const d=r?.idGenerator?r.idGenerator(e):Je(),l=new AbortController;let p,u;function h(e){u=e,l.abort()}const m=async function(){let m;try{let s=r?.condition?.(e,{getState:o,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(s)&&(s=await s),!1===s||l.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const f=new Promise(((e,t)=>{p=()=>{t({name:"AbortError",message:u||"Aborted"})},l.signal.addEventListener("abort",p)}));a(n(d,e,r?.getPendingMeta?.({requestId:d,arg:e},{getState:o,extra:c}))),m=await Promise.race([f,Promise.resolve(t(e,{dispatch:a,getState:o,extra:c,requestId:d,signal:l.signal,abort:h,rejectWithValue:(e,t)=>new Ye(e,t),fulfillWithValue:(e,t)=>new Xe(e,t)})).then((t=>{if(t instanceof Ye)throw t;return t instanceof Xe?i(t.payload,d,e,t.meta):i(t,d,e)}))])}catch(t){m=t instanceof Ye?s(null,d,e,t.payload,t.meta):s(t,d,e)}finally{p&&l.signal.removeEventListener("abort",p)}return r&&!r.dispatchConditionRejection&&s.match(m)&&m.meta.condition||a(m),m}();return Object.assign(m,{abort:h,requestId:d,arg:e,unwrap:()=>m.then(rt)})}}),{pending:n,rejected:s,fulfilled:i,settled:Qe(s,i),typePrefix:e})}return e.withTypes=()=>e,e})();function rt(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var it=Symbol.for("rtk-slice-createasyncthunk");function nt(e,t){return`${e}/${t}`}function st(e,t,r,i){function n(n,...s){let a=t(n);if(void 0===a){if(!i)throw new Error("selectState returned undefined for an uninjected slice reducer");a=r()}return e(a,...s)}return n.unwrapped=e,n}var at=function({creators:e}={}){const t=e?.asyncThunk?.[it];return function(e){const{name:r,reducerPath:i=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const n=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},s=Object.keys(n),a={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},o={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error("`context.addCase` cannot be called with an empty action type");if(r in a.sliceCaseReducersByType)throw new Error("`context.addCase` cannot be called with two reducers for the same action type: "+r);return a.sliceCaseReducersByType[r]=t,o},addMatcher:(e,t)=>(a.sliceMatchers.push({matcher:e,reducer:t}),o),exposeAction:(e,t)=>(a.actionCreators[e]=t,o),exposeCaseReducer:(e,t)=>(a.sliceCaseReducersByName[e]=t,o)};function c(){if("object"==typeof e.extraReducers)throw new Error("The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice");const[t={},r=[],i]="function"==typeof e.extraReducers?Ke(e.extraReducers):[e.extraReducers],n={...t,...a.sliceCaseReducersByType};return function(e,t){if("object"==typeof t)throw new Error("The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer");let r,[i,n,s]=Ke(t);if("function"==typeof e)r=()=>Me(e());else{const t=Me(e);r=()=>t}function a(e=r(),t){let a=[i[t.type],...n.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===a.filter((e=>!!e)).length&&(a=[s]),a.reduce(((e,r)=>{if(r){if(R(e)){const i=r(e,t);return void 0===i?e:i}if(T(e))return ce(e,(e=>r(e,t)));{const i=r(e,t);if(void 0===i){if(null===e)return e;throw new Error("A case reducer on a non-draftable value must not return undefined")}return i}}return e}),e)}return a.getInitialState=r,a}(e.initialState,(e=>{for(let t in n)e.addCase(t,n[t]);for(let t of a.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);i&&e.addDefaultCase(i)}))}s.forEach((i=>{const s=n[i],a={reducerName:i,type:nt(r,i),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(s)?function({type:e,reducerName:t,createNotation:r},i,n){let s,a;if("reducer"in i){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(i))throw new Error("Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.");s=i.reducer,a=i.prepare}else s=i;n.addCase(e,s).exposeCaseReducer(t,s).exposeAction(t,a?De(e,a):De(e))}(a,s,o):function({type:e,reducerName:t},r,i,n){if(!n)throw new Error("Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.");const{payloadCreator:s,fulfilled:a,pending:o,rejected:c,settled:d,options:l}=r,p=n(e,s,l);i.exposeAction(t,p),a&&i.addCase(p.fulfilled,a);o&&i.addCase(p.pending,o);c&&i.addCase(p.rejected,c);d&&i.addMatcher(p.settled,d);i.exposeCaseReducer(t,{fulfilled:a||ot,pending:o||ot,rejected:c||ot,settled:d||ot})}(a,s,o,t)}));const d=e=>e,l=new Map;let p;function u(e,t){return p||(p=c()),p(e,t)}function h(){return p||(p=c()),p.getInitialState()}function m(t,r=!1){function i(e){let i=e[t];if(void 0===i){if(!r)throw new Error("selectSlice returned undefined for an uninjected slice reducer");i=h()}return i}function n(t=d){const i=je(l,r,{insert:()=>new WeakMap});return je(i,t,{insert:()=>{const i={};for(const[n,s]of Object.entries(e.selectors??{}))i[n]=st(s,t,h,r);return i}})}return{reducerPath:t,getSelectors:n,get selectors(){return n(i)},selectSlice:i}}const f={name:r,reducer:u,actions:a.actionCreators,caseReducers:a.sliceCaseReducersByName,getInitialState:h,...m(i),injectInto(e,{reducerPath:t,...r}={}){const n=t??i;return e.inject({reducerPath:n,reducer:u},r),{...f,...m(n,!0)}}};return f}}();function ot(){}var ct="listener",dt="completed",lt="cancelled",pt=`task-${lt}`,ut=`task-${dt}`,ht=`${ct}-${lt}`,mt=`${ct}-${dt}`,ft=class{constructor(e){this.code=e,this.message=`task ${lt} (reason: ${e})`}name="TaskAbortError";message},gt=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},vt=()=>{},_t=(e,t=vt)=>(e.catch(t),e),yt=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),bt=(e,t)=>{const r=e.signal;r.aborted||("reason"in r||Object.defineProperty(r,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},wt=e=>{if(e.aborted){const{reason:t}=e;throw new ft(t)}};function St(e,t){let r=vt;return new Promise(((i,n)=>{const s=()=>n(new ft(e.reason));e.aborted?s():(r=yt(e,s),t.finally((()=>r())).then(i,n))})).finally((()=>{r=vt}))}var Ct=e=>t=>_t(St(e,t).then((t=>(wt(e),t)))),Rt=e=>{const t=Ct(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Tt}=Object,Pt={},kt="listenerMiddleware",Dt=(e,t)=>(r,i)=>{gt(r,"taskExecutor");const n=new AbortController;var s;s=n,yt(e,(()=>bt(s,e.reason)));const a=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof ft?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{wt(e),wt(n.signal);const t=await r({pause:Ct(n.signal),delay:Rt(n.signal),signal:n.signal});return wt(n.signal),t}),(()=>bt(n,ut)));return i?.autoJoin&&t.push(a.catch(vt)),{result:Ct(e)(a),cancel(){bt(n,pt)}}},Et=(e,t)=>(r,i)=>_t((async(r,i)=>{wt(t);let n=()=>{};const s=[new Promise(((t,i)=>{let s=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});n=()=>{s(),i()}}))];null!=i&&s.push(new Promise((e=>setTimeout(e,i,null))));try{const e=await St(t,Promise.race(s));return wt(t),e}finally{n()}})(r,i)),It=e=>{let{type:t,actionCreator:r,matcher:i,predicate:n,effect:s}=e;if(t)n=De(t).match;else if(r)t=r.type,n=r.match;else if(i)n=i;else if(!n)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return gt(s,"options.listener"),{predicate:n,type:t,effect:s}},Ot=Object.assign((e=>{const{type:t,predicate:r,effect:i}=It(e);return{id:Je(),effect:i,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>Ot}),xt=e=>{e.pending.forEach((e=>{bt(e,ht)}))},Mt=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},jt=Object.assign(De(`${kt}/add`),{withTypes:()=>jt}),Lt=De(`${kt}/removeAll`),At=Object.assign(De(`${kt}/remove`),{withTypes:()=>At}),Nt=(...e)=>{console.error(`${kt}/error`,...e)};const Bt=Object.create(null);Bt.open="0",Bt.close="1",Bt.ping="2",Bt.pong="3",Bt.message="4",Bt.upgrade="5",Bt.noop="6";const Ft=Object.create(null);Object.keys(Bt).forEach((e=>{Ft[Bt[e]]=e}));const Ut={type:"error",data:"parser error"},$t="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),zt="function"==typeof ArrayBuffer,Vt=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,qt=({type:e,data:t},r,i)=>$t&&t instanceof Blob?r?i(t):Gt(t,i):zt&&(t instanceof ArrayBuffer||Vt(t))?r?i(t):Gt(new Blob([t]),i):i(Bt[e]+(t||"")),Gt=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function Ht(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Wt;const Kt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Jt="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let Zy=0;Zy<64;Zy++)Jt[Kt.charCodeAt(Zy)]=Zy;const Qt="function"==typeof ArrayBuffer,Zt=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Xt(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:Yt(e.substring(1),t)};return Ft[r]?e.length>1?{type:Ft[r],data:e.substring(1)}:{type:Ft[r]}:Ut},Yt=(e,t)=>{if(Qt){const r=(e=>{let t,r,i,n,s,a=.75*e.length,o=e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const d=new ArrayBuffer(a),l=new Uint8Array(d);for(t=0;t<o;t+=4)r=Jt[e.charCodeAt(t)],i=Jt[e.charCodeAt(t+1)],n=Jt[e.charCodeAt(t+2)],s=Jt[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|n>>2,l[c++]=(3&n)<<6|63&s;return d})(e);return Xt(r,t)}return{base64:!0,data:e}},Xt=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,er=String.fromCharCode(30);function tr(){return new TransformStream({transform(e,t){!function(e,t){$t&&e.data instanceof Blob?e.data.arrayBuffer().then(Ht).then(t):zt&&(e.data instanceof ArrayBuffer||Vt(e.data))?t(Ht(e.data)):qt(e,!1,(e=>{Wt||(Wt=new TextEncoder),t(Wt.encode(e))}))}(e,(r=>{const i=r.length;let n;if(i<126)n=new Uint8Array(1),new DataView(n.buffer).setUint8(0,i);else if(i<65536){n=new Uint8Array(3);const e=new DataView(n.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{n=new Uint8Array(9);const e=new DataView(n.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(n[0]|=128),t.enqueue(n),t.enqueue(r)}))}})}let rr;function ir(e){return e.reduce(((e,t)=>e+t.length),0)}function nr(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let n=0;n<t;n++)r[n]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),r}function sr(e){if(e)return function(e){for(var t in sr.prototype)e[t]=sr.prototype[t];return e}(e)}sr.prototype.on=sr.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},sr.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},sr.prototype.off=sr.prototype.removeListener=sr.prototype.removeAllListeners=sr.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},sr.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},sr.prototype.emitReserved=sr.prototype.emit,sr.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},sr.prototype.hasListeners=function(e){return!!this.listeners(e).length};const ar="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function or(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const cr=ar.setTimeout,dr=ar.clearTimeout;function lr(e,t){t.useNativeTimers?(e.setTimeoutFn=cr.bind(ar),e.clearTimeoutFn=dr.bind(ar)):(e.setTimeoutFn=ar.setTimeout.bind(ar),e.clearTimeoutFn=ar.clearTimeout.bind(ar))}class pr extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}let ur=class extends sr{constructor(e){super(),this.writable=!1,lr(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new pr(e,t,r)),this}open(){return 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.emitReserved("open")}onData(e){const t=Zt(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}};const hr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),mr=64,fr={};let gr,vr=0,_r=0;function yr(e){let t="";do{t=hr[e%mr]+t,e=Math.floor(e/mr)}while(e>0);return t}function br(){const e=yr(+new Date);return e!==gr?(vr=0,gr=e):e+"."+yr(vr++)}for(;_r<mr;_r++)fr[hr[_r]]=_r;let wr=!1;try{wr="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(Yy){}const Sr=wr;function Cr(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Sr))return new XMLHttpRequest}catch(e){}if(!t)try{return new(ar[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Rr(){}const Tr=null!=new Cr({xdomain:!1}).responseType;class Pr extends sr{constructor(e,t){super(),lr(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=or(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new Cr(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=Pr.requestsCount++,Pr.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Rr,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Pr.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(Pr.requestsCount=0,Pr.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",kr);else if("function"==typeof addEventListener){addEventListener("onpagehide"in ar?"pagehide":"unload",kr,!1)}function kr(){for(let e in Pr.requests)Pr.requests.hasOwnProperty(e)&&Pr.requests[e].abort()}const Dr="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Er=ar.WebSocket||ar.MozWebSocket,Ir="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const Or={websocket:class extends ur{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=Ir?{}:or(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=Ir?new Er(e,t,r):t?new Er(e,t):new Er(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),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;qt(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Dr((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=br()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Er}},webtransport:class extends ur{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){rr||(rr=new TextDecoder);const r=[];let i=0,n=-1,s=!1;return new TransformStream({transform(a,o){for(r.push(a);;){if(0===i){if(ir(r)<1)break;const e=nr(r,1);s=128==(128&e[0]),n=127&e[0],i=n<126?3:126===n?1:2}else if(1===i){if(ir(r)<2)break;const e=nr(r,2);n=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(ir(r)<8)break;const e=nr(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),s=t.getUint32(0);if(s>Math.pow(2,21)-1){o.enqueue(Ut);break}n=s*Math.pow(2,32)+t.getUint32(4),i=3}else{if(ir(r)<n)break;const e=nr(r,n);o.enqueue(Zt(s?e:rr.decode(e),t)),i=0}if(0===n||n>e){o.enqueue(Ut);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=tr();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const n=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),n())})).catch((e=>{}))};n();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;this.writer.write(r).then((()=>{i&&Dr((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends ur{constructor(e){if(super(e),this.polling=!1,"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}const t=e&&e.forceBase64;this.supportsBinary=Tr&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}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.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(er),i=[];for(let e=0;e<r.length;e++){const n=Zt(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({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("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)=>{qt(e,!1,(e=>{i[s]=e,++n===r&&t(i.join(er))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=br()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new Pr(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},xr=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Mr=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function jr(e){if(e.length>2e3)throw"URI too long";const 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));let n=xr.exec(e||""),s={},a=14;for(;a--;)s[Mr[a]]=n[a]||"";return-1!=r&&-1!=i&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||i.splice(0,1);"/"==t.slice(-1)&&i.splice(i.length-1,1);return i}(0,s.path),s.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,s.query),s}let Lr=class e extends sr{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=jr(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=jr(t.host).host),lr(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","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,i=r.length;e<i;e++){let i=r[e].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Or[e](r)}open(){let t;if(this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(e){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}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",(e=>this.onClose("transport close",e)))}probe(t){let r=this.createTransport(t),i=!1;e.priorWebsocketSuccess=!1;const n=()=>{i||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(t=>{if(!i)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;e.priorWebsocketSuccess="websocket"===r.name,this.transport.pause((()=>{i||"closed"!==this.readyState&&(l(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=r.name,this.emitReserved("upgradeError",e)}})))};function s(){i||(i=!0,l(),r.close(),r=null)}const a=e=>{const t=new Error("probe error: "+e);t.transport=r.name,s(),this.emitReserved("upgradeError",t)};function o(){a("transport closed")}function c(){a("socket closed")}function d(e){r&&e.name!==r.name&&s()}const l=()=>{r.removeListener("open",n),r.removeListener("error",a),r.removeListener("close",o),this.off("close",c),this.off("upgrading",d)};r.once("open",n),r.once("error",a),r.once("close",o),this.once("close",c),this.once("upgrading",d),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{i||r.open()}),200):r.open()}onOpen(){if(this.readyState="open",e.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){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"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":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.maxPayload=e.maxPayload,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(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const i=this.writeBuffer[r].data;if(i&&(e+="string"==typeof(t=i)?function(e){let t=0,r=0;for(let i=0,n=e.length;i<n;i++)t=e.charCodeAt(i),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(i++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}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(t){e.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}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("beforeunload",this.beforeunloadEventListener,!1),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}};Lr.protocol=4;const Ar="function"==typeof ArrayBuffer,Nr=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Br=Object.prototype.toString,Fr="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Br.call(Blob),Ur="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Br.call(File);function $r(e){return Ar&&(e instanceof ArrayBuffer||Nr(e))||Fr&&e instanceof Blob||Ur&&e instanceof File}function zr(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(zr(e[t]))return!0;return!1}if($r(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return zr(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&zr(e[t]))return!0;return!1}function Vr(e){const t=[],r=e.data,i=e;return i.data=qr(r,t),i.attachments=t.length,{packet:i,buffers:t}}function qr(e,t){if(!e)return e;if($r(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]=qr(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=qr(e[i],t));return r}return e}function Gr(e,t){return e.data=Hr(e.data,t),delete e.attachments,e}function Hr(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Hr(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=Hr(e[r],t));return e}const Wr=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Kr;!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"}(Kr||(Kr={}));function Jr(e){return"[object Object]"===Object.prototype.toString.call(e)}class Qr extends sr{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===Kr.BINARY_EVENT;r||t.type===Kr.BINARY_ACK?(t.type=r?Kr.EVENT:Kr.ACK,this.reconstructor=new Zr(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!$r(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===Kr[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Kr.BINARY_EVENT||r.type===Kr.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=this.tryParse(e.substr(t));if(!Qr.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Kr.CONNECT:return Jr(t);case Kr.DISCONNECT:return void 0===t;case Kr.CONNECT_ERROR:return"string"==typeof t||Jr(t);case Kr.EVENT:case Kr.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===Wr.indexOf(t[0]));case Kr.ACK:case Kr.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Zr{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=Gr(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Yr=Object.freeze({__proto__:null,Decoder:Qr,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Kr.EVENT&&e.type!==Kr.ACK||!zr(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Kr.EVENT?Kr.BINARY_EVENT:Kr.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Kr.BINARY_EVENT&&e.type!==Kr.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,this.replacer)),t}encodeAsBinary(e){const t=Vr(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return Kr},protocol:5});function Xr(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const ei=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class ti extends sr{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Xr(e,"open",this.onopen.bind(this)),Xr(e,"packet",this.onpacket.bind(this)),Xr(e,"error",this.onerror.bind(this)),Xr(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(ei.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:Kr.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,i=t.pop();this._registerAckCallback(e,i),r.id=e}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const i=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===i)return void(this.acks[e]=t);const n=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),i);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(n),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,n)=>{t.push(((e,t)=>r?e?n(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Kr.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Kr.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):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 Kr.EVENT:case Kr.BINARY_EVENT:this.onevent(e);break;case Kr.ACK:case Kr.BINARY_ACK:this.onack(e);break;case Kr.DISCONNECT:this.ondisconnect();break;case Kr.CONNECT_ERROR:this.destroy();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),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Kr.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,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(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:Kr.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}timeout(e){return this.flags.timeout=e,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||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function ri(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}ri.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)},ri.prototype.reset=function(){this.attempts=0},ri.prototype.setMin=function(e){this.ms=e},ri.prototype.setMax=function(e){this.max=e},ri.prototype.setJitter=function(e){this.jitter=e};class ii extends sr{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,lr(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 ri({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||Yr;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 Lr(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Xr(t,"open",(function(){r.onopen(),e&&e()})),n=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=Xr(t,"error",n);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),n(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Xr(e,"ping",this.onping.bind(this)),Xr(e,"data",this.ondata.bind(this)),Xr(e,"error",this.onerror.bind(this)),Xr(e,"close",this.onclose.bind(this)),Xr(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){Dr((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new ti(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,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),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((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const ni={};function si(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=jr(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=ni[n]&&s in ni[n].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new ii(i,t):(ni[n]||(ni[n]=new ii(i,t)),o=ni[n]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}Object.assign(si,{Manager:ii,Socket:ti,io:si,connect:si});let ai=!0,oi=!0;function ci(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function di(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,n=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return n.apply(this,arguments);const s=e=>{const t=r(e);t&&(i.handleEvent?i.handleEvent(t):i(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(i,s),n.apply(this,[e,s])};const s=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.apply(this,arguments);const i=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,i])},Object.defineProperty(i,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function li(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(ai=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function pi(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(oi=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function ui(){if("object"==typeof window){if(ai)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function hi(e,t){oi&&console.warn(e+" is deprecated, please use "+t+" instead.")}function mi(e){return"[object Object]"===Object.prototype.toString.call(e)}function fi(e){return mi(e)?Object.keys(e).reduce((function(t,r){const i=mi(e[r]),n=i?fi(e[r]):e[r],s=i&&!Object.keys(n).length;return void 0===n||s?t:Object.assign(t,{[r]:n})}),{}):e}function gi(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?gi(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{gi(e,e.get(t),r)}))})))}function vi(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&gi(e,r,n)}))})),n}const _i=ui;function yi(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const i="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==i.exact&&"number"==typeof i.exact&&(i.min=i.max=i.exact);const n=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==i.ideal){t.optional=t.optional||[];let e={};"number"==typeof i.ideal?(e[n("min",r)]=i.ideal,t.optional.push(e),e={},e[n("max",r)]=i.ideal,t.optional.push(e)):(e[n("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[n("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[n(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},n=function(e,n){if(t.version>=61)return n(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const a=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||a)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let a=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!a&&r.length&&t.includes("back")&&(a=r[r.length-1]),a&&(e.video.deviceId=s.exact?{exact:a.deviceId}:{ideal:a.deviceId}),e.video=i(e.video),_i("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return _i("chrome: "+JSON.stringify(e)),n(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,i){n(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(s(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return n(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function bi(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function wi(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const n=new Event("track");n.track=r.track,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)})),t.stream.getTracks().forEach((r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const n=new Event("track");n.track=r,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else di(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function Si(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){let n=r.apply(this,arguments);return n||(n=t(this,e),this._senders.push(n)),n};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){i.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function Ci(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,i]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const n=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(s(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(n(t)))},r])})).then(r,i)}}function Ri(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>vi(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),di(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>vi(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,i;return this.getSenders().forEach((r=>{r.track===e&&(t?i=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?i=!0:r=t),t.track===e))),i||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function Ti(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const i=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(i)&&this._shimmedLocalStreams[r.id].push(i):this._shimmedLocalStreams[r.id]=[r,i],i};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const i=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(i)};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],i.apply(this,arguments)};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),n.apply(this,arguments)}}function Pi(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return Ti(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}i.apply(this,[t])};const n=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},n.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const n=this._streams[r.id];if(n)n.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const i=new e.MediaStream([t]);this._streams[r.id]=i,this._reverseStreams[i.id]=r,this.addStream(i)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const o=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=o.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function ki(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}))}function Di(e,t){di(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var Ei=Object.freeze({__proto__:null,fixNegotiationNeeded:Di,shimAddTrackRemoveTrack:Pi,shimAddTrackRemoveTrackWithNative:Ti,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const i=r.video&&r.video.width,n=r.video&&r.video.height,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},i&&(r.video.mandatory.maxWidth=i),n&&(r.video.mandatory.maxHeight=n),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:Si,shimGetStats:Ci,shimGetUserMedia:yi,shimMediaStream:bi,shimOnTrack:wi,shimPeerConnection:ki,shimSenderReceiverGetStats:Ri});function Ii(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){hi("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,i)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},i&&i.prototype.getSettings){const t=i.prototype.getSettings;i.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(i&&i.prototype.applyConstraints){const t=i.prototype.applyConstraints;i.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function Oi(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function xi(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,n,s]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!n)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,i)=>{e.set(i,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(n,s)}}function Mi(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function ji(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),di(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Li(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){hi("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Ai(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Ni(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const r=e.length>0;r&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const i=t.apply(this,arguments);if(r){const{sender:t}=i,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function Bi(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function Fi(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function Ui(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var $i=Object.freeze({__proto__:null,shimAddTransceiver:Ni,shimCreateAnswer:Ui,shimCreateOffer:Fi,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})},shimGetParameters:Bi,shimGetUserMedia:Ii,shimOnTrack:Oi,shimPeerConnection:xi,shimRTCDataChannel:Ai,shimReceiverGetStats:ji,shimRemoveStream:Li,shimSenderGetStats:Mi});function zi(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function Vi(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function qi(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,s=t.setRemoteDescription,a=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],n=r.apply(this,[i]);return t?(n.then(e,t),Promise.resolve()):n},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],n=i.apply(this,[r]);return t?(n.then(e,t),Promise.resolve()):n};let o=function(e,t,r){const i=n.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=o,o=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=o,o=function(e,t,r){const i=a.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=o}function Gi(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(Hi(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function Hi(e){return e&&void 0!==e.video?Object.assign({},e,{video:fi(e.video)}):e}function Wi(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let i=e.iceServers[r];void 0===i.urls&&i.url?(hi("RTCIceServer.url","RTCIceServer.urls"),i=JSON.parse(JSON.stringify(i)),i.urls=i.url,delete i.url,t.push(i)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function Ki(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Ji(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function Qi(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Zi=Object.freeze({__proto__:null,shimAudioContext:Qi,shimCallbacksAPI:qi,shimConstraints:Hi,shimCreateOfferLegacy:Ji,shimGetUserMedia:Gi,shimLocalStreamsAPI:zi,shimRTCIceServerUrls:Wi,shimRemoteStreamsAPI:Vi,shimTrackEventTransceiver:Ki}),Yi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Xi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function en(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})})),r}var tn={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const i=e.type;return t.push("typ"),t.push(i),"host"!==i&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let r;const i=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<i.length;e++)r=i[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const i=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)})),t+="a=fmtp:"+r+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substring(7,t),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substring(t+1,i),r.value=e.substring(i+1)):r.attribute=e.substring(t+1),r},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){const i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substring(12),password:n.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" ");r.profile=i[2];for(let n=3;n<i.length;n++){const s=i[n],a=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(a){const i=t.parseRtpMap(a),n=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(i.parameters=n.length?t.parseFmtp(n[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(i.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))}));const n=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{n.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),r},t.writeRtpDescription=function(e,r){let i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" "+(r.profile||"UDP/TLS/RTP/SAVPF")+" ",i+=r.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((e=>{i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));let n=0;return r.codecs.forEach((e=>{e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){const r=[],i=t.parseRtpParameters(e),n=-1!==i.fecMechanisms.indexOf("RED"),s=-1!==i.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),o=a.length>0&&a[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===o&&(c=d[0][1]),i.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:o,codecPayloadType:parseInt(e.parameters.apt,10)};o&&c&&(t.rtx={ssrc:c}),r.push(t),n&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:o,mechanism:s?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&o&&r.push({ssrc:o});let l=t.matchPrefix(e,"b=");return l.length&&(l=0===l[0].indexOf("b=TIAS:")?parseInt(l[0].substring(7),10):0===l[0].indexOf("b=AS:")?1e3*parseInt(l[0].substring(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=l}))),r},t.parseRtcpParameters=function(e){const r={},i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);const n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;const s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let r;const i=t.matchPrefix(e,"a=msid:");if(1===i.length)return r=i[0].substring(7).split(" "),{stream:r[0],track:r[1]};const n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return n.length>0?(r=n[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),i=t.matchPrefix(e,"a=max-message-size:");let n;i.length>0&&(n=parseInt(i[0].substring(19),10)),isNaN(n)&&(n=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:r.fmt,maxMessageSize:n};const a=t.matchPrefix(e,"a=sctpmap:");if(a.length>0){const e=a[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:n}}},t.writeSctpDescription=function(e,t){let r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,r,i){let n;const s=void 0!==r?r:2;n=e||t.generateSessionId();return"v=0\r\no="+(i||"thisisadapterortc")+" "+n+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const i=t.splitLines(e);for(let e=0;e<i.length;e++)switch(i[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[e].substring(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substring(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(tn);var rn=tn.exports,nn=Xi(rn),sn=i({__proto__:null,default:nn},[rn]);function an(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const r=new t(e),i=nn.parseCandidate(e.candidate);for(const e in i)e in r||Object.defineProperty(r,e,{value:i[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,di(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function on(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||di(e,"icecandidate",(e=>{if(e.candidate){const t=nn.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function cn(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const t=nn.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=nn.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r}(arguments[0]),r=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r}(e),i=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=nn.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let n;n=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>n}),this._sctp=s}return r.apply(this,arguments)}}function dn(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const i=arguments[0],n=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&n>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},di(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function ln(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function pn(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function un(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function hn(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.setLocalDescription;r&&0!==r.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return r.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return r.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>r.apply(this,[e])))})}var mn=Object.freeze({__proto__:null,removeExtmapAllowMixed:pn,shimAddIceCandidateNullOrEmpty:un,shimConnectionState:ln,shimMaxMessageSize:cn,shimParameterlessSetLocalDescription:hn,shimRTCIceCandidate:an,shimRTCIceCandidateRelayProtocol:on,shimSendThrowTypeError:dn});const fn=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=ui,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=ci(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=ci(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=ci(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:mn,extractVersion:ci,disableLog:li,disableWarnings:pi,sdp:sn};switch(i.browser){case"chrome":if(!Ei||!ki||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),n;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),n;r("adapter.js shimming chrome."),n.browserShim=Ei,un(e,i),hn(e),yi(e,i),bi(e),ki(e,i),wi(e),Pi(e,i),Si(e),Ci(e),Ri(e),Di(e,i),an(e),on(e),ln(e),cn(e,i),dn(e),pn(e,i);break;case"firefox":if(!$i||!xi||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=$i,un(e,i),hn(e),Ii(e,i),xi(e,i),Oi(e),Li(e),Mi(e),ji(e),Ai(e),Ni(e),Bi(e),Fi(e),Ui(e),an(e),ln(e),cn(e,i),dn(e);break;case"safari":if(!Zi||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=Zi,un(e,i),hn(e),Wi(e),Ji(e),qi(e),zi(e),Vi(e),Ki(e),Gi(e),Qi(e),an(e),on(e),cn(e,i),dn(e),pn(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});function gn(){}function vn(){vn.init.call(this)}function _n(e){return void 0===e._maxListeners?vn.defaultMaxListeners:e._maxListeners}function yn(e,t,r,i){var n,s,a,o;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 gn,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=_n(e))&&n>0&&a.length>n){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,o=c,"function"==typeof console.warn?console.warn(o):console.log(o)}}else a=s[t]=r,++e._eventsCount;return e}function bn(e,t,r){var i=!1;function n(){e.removeListener(t,n),i||(i=!0,r.apply(e,arguments))}return n.listener=r,n}function wn(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 Sn(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}gn.prototype=Object.create(null),vn.EventEmitter=vn,vn.usingDomains=!1,vn.prototype.domain=void 0,vn.prototype._events=void 0,vn.prototype._maxListeners=void 0,vn.defaultMaxListeners=10,vn.init=function(){this.domain=null,vn.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new gn,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},vn.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},vn.prototype.getMaxListeners=function(){return _n(this)},vn.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 l="function"==typeof r;switch(i=arguments.length){case 1:!function(e,t,r){if(t)e.call(r);else for(var i=e.length,n=Sn(e,i),s=0;s<i;++s)n[s].call(r)}(r,l,this);break;case 2:!function(e,t,r,i){if(t)e.call(r,i);else for(var n=e.length,s=Sn(e,n),a=0;a<n;++a)s[a].call(r,i)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,i,n){if(t)e.call(r,i,n);else for(var s=e.length,a=Sn(e,s),o=0;o<s;++o)a[o].call(r,i,n)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,i,n,s){if(t)e.call(r,i,n,s);else for(var a=e.length,o=Sn(e,a),c=0;c<a;++c)o[c].call(r,i,n,s)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(n=new Array(i-1),s=1;s<i;s++)n[s-1]=arguments[s];!function(e,t,r,i){if(t)e.apply(r,i);else for(var n=e.length,s=Sn(e,n),a=0;a<n;++a)s[a].apply(r,i)}(r,l,this,n)}return!0},vn.prototype.addListener=function(e,t){return yn(this,e,t,!1)},vn.prototype.on=vn.prototype.addListener,vn.prototype.prependListener=function(e,t){return yn(this,e,t,!0)},vn.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,bn(this,e,t)),this},vn.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,bn(this,e,t)),this},vn.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 gn:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=r[s].listener,n=s;break}if(n<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new gn,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},vn.prototype.off=function(e,t){return this.removeListener(e,t)},vn.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new gn,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new gn: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 gn,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},vn.prototype.listeners=function(e){var t,r,i=this._events;return r=i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[],r},vn.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):wn.call(e,t)},vn.prototype.listenerCount=wn,vn.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var Cn=Object.freeze({__proto__:null,EventEmitter:vn,default:vn});let Rn;const Tn=new Uint8Array(16);function Pn(){if(!Rn&&(Rn="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Rn))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Rn(Tn)}const kn=[];for(let Xy=0;Xy<256;++Xy)kn.push((Xy+256).toString(16).slice(1));var Dn={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function En(e,t,r){if(Dn.randomUUID&&!t&&!e)return Dn.randomUUID();const i=(e=e||{}).random||(e.rng||Pn)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return kn[e[t+0]]+kn[e[t+1]]+kn[e[t+2]]+kn[e[t+3]]+"-"+kn[e[t+4]]+kn[e[t+5]]+"-"+kn[e[t+6]]+kn[e[t+7]]+"-"+kn[e[t+8]]+kn[e[t+9]]+"-"+kn[e[t+10]]+kn[e[t+11]]+kn[e[t+12]]+kn[e[t+13]]+kn[e[t+14]]+kn[e[t+15]]}(i)}var In={},On={},xn={exports:{}},Mn=xn.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(Mn).forEach((function(e){Mn[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var jn=xn.exports;!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=jn,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}}))}))}}(On);var Ln=jn,An=/%[sdv%]/g,Nn=function(e){var t=1,r=arguments,i=r.length;return e.replace(An,(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""}}))},Bn=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 Nn.apply(null,i)},Fn=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Un=["i","c","b","a"],$n=On,zn=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||Fn,i=t.innerOrder||Un,n=[];return r.forEach((function(t){Ln[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Bn(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Bn(t,r,e))}))}))})),e.media.forEach((function(e){n.push(Bn("m",Ln.m[0],e)),i.forEach((function(t){Ln[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Bn(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Bn(t,r,e))}))}))}))})),n.join("\r\n")+"\r\n"},Vn=In.write=zn,qn=In.parse=$n.parse;In.parseParams=$n.parseParams,In.parseFmtpConfig=$n.parseFmtpConfig,In.parsePayloads=$n.parsePayloads,In.parseRemoteCandidates=$n.parseRemoteCandidates,In.parseImageAttributes=$n.parseImageAttributes,In.parseSimulcastStreamList=$n.parseSimulcastStreamList;var Gn={},Hn={},Wn={};Object.defineProperty(Wn,"__esModule",{value:!0}),Wn.isCorrect=Wn.isInSubnet=void 0,Wn.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},Wn.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.RE_SUBNET_STRING=Kn.RE_ADDRESS=Kn.GROUPS=Kn.BITS=void 0,Kn.BITS=32,Kn.GROUPS=4,Kn.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,Kn.RE_SUBNET_STRING=/\/\d{1,2}$/;var Jn={};Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.AddressError=void 0;class Qn extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}Jn.AddressError=Qn;var Zn,Yn={exports:{}};Zn=Yn,function(){var e;function t(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function r(){return new t(null)}var i="undefined"!=typeof navigator;i&&"Microsoft Internet Explorer"==navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(var a=32767&t,o=t>>15;--s>=0;){var c=32767&this[e],d=this[e++]>>15,l=o*c+d*a;n=((c=a*c+((32767&l)<<15)+r[i]+(1073741823&n))>>>30)+(l>>>15)+o*d+(n>>>30),r[i++]=1073741823&c}return n},e=30):i&&"Netscape"!=navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(;--s>=0;){var a=t*this[e++]+r[i]+n;n=Math.floor(a/67108864),r[i++]=67108863&a}return n},e=26):(t.prototype.am=function(e,t,r,i,n,s){for(var a=16383&t,o=t>>14;--s>=0;){var c=16383&this[e],d=this[e++]>>14,l=o*c+d*a;n=((c=a*c+((16383&l)<<14)+r[i]+n)>>28)+(l>>14)+o*d,r[i++]=268435455&c}return n},e=28),t.prototype.DB=e,t.prototype.DM=(1<<e)-1,t.prototype.DV=1<<e,t.prototype.FV=Math.pow(2,52),t.prototype.F1=52-e,t.prototype.F2=2*e-52;var n,s,a="0123456789abcdefghijklmnopqrstuvwxyz",o=new Array;for(n="0".charCodeAt(0),s=0;s<=9;++s)o[n++]=s;for(n="a".charCodeAt(0),s=10;s<36;++s)o[n++]=s;for(n="A".charCodeAt(0),s=10;s<36;++s)o[n++]=s;function c(e){return a.charAt(e)}function d(e,t){var r=o[e.charCodeAt(t)];return null==r?-1:r}function l(e){var t=r();return t.fromInt(e),t}function p(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function u(e){this.m=e}function h(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function m(e,t){return e&t}function f(e,t){return e|t}function g(e,t){return e^t}function v(e,t){return e&~t}function _(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function y(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function b(){}function w(e){return e}function S(e){this.r2=r(),this.q3=r(),t.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}u.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},u.prototype.revert=function(e){return e},u.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},u.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},u.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},h.prototype.convert=function(e){var i=r();return e.abs().dlShiftTo(this.m.t,i),i.divRemTo(this.m,null,i),e.s<0&&i.compareTo(t.ZERO)>0&&this.m.subTo(i,i),i},h.prototype.revert=function(e){var t=r();return e.copyTo(t),this.reduce(t),t},h.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],i=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,i,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},h.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},h.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},t.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},t.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},t.prototype.fromString=function(e,r){var i;if(16==r)i=4;else if(8==r)i=3;else if(256==r)i=8;else if(2==r)i=1;else if(32==r)i=5;else{if(4!=r)return void this.fromRadix(e,r);i=2}this.t=0,this.s=0;for(var n=e.length,s=!1,a=0;--n>=0;){var o=8==i?255&e[n]:d(e,n);o<0?"-"==e.charAt(n)&&(s=!0):(s=!1,0==a?this[this.t++]=o:a+i>this.DB?(this[this.t-1]|=(o&(1<<this.DB-a)-1)<<a,this[this.t++]=o>>this.DB-a):this[this.t-1]|=o<<a,(a+=i)>=this.DB&&(a-=this.DB))}8==i&&0!=(128&e[0])&&(this.s=-1,a>0&&(this[this.t-1]|=(1<<this.DB-a)-1<<a)),this.clamp(),s&&t.ZERO.subTo(this,this)},t.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},t.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},t.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},t.prototype.lShiftTo=function(e,t){var r,i=e%this.DB,n=this.DB-i,s=(1<<n)-1,a=Math.floor(e/this.DB),o=this.s<<i&this.DM;for(r=this.t-1;r>=0;--r)t[r+a+1]=this[r]>>n|o,o=(this[r]&s)<<i;for(r=a-1;r>=0;--r)t[r]=0;t[a]=o,t.t=this.t+a+1,t.s=this.s,t.clamp()},t.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var i=e%this.DB,n=this.DB-i,s=(1<<i)-1;t[0]=this[r]>>i;for(var a=r+1;a<this.t;++a)t[a-r-1]|=(this[a]&s)<<n,t[a-r]=this[a]>>i;i>0&&(t[this.t-r-1]|=(this.s&s)<<n),t.t=this.t-r,t.clamp()}},t.prototype.subTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]-e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i-=e[r],t[r++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=i<0?-1:0,i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i),t.t=r,t.clamp()},t.prototype.multiplyTo=function(e,r){var i=this.abs(),n=e.abs(),s=i.t;for(r.t=s+n.t;--s>=0;)r[s]=0;for(s=0;s<n.t;++s)r[s+i.t]=i.am(0,n[s],r,s,0,i.t);r.s=0,r.clamp(),this.s!=e.s&&t.ZERO.subTo(r,r)},t.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;--r>=0;)e[r]=0;for(r=0;r<t.t-1;++r){var i=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,i,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},t.prototype.divRemTo=function(e,i,n){var s=e.abs();if(!(s.t<=0)){var a=this.abs();if(a.t<s.t)return null!=i&&i.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=r());var o=r(),c=this.s,d=e.s,l=this.DB-p(s[s.t-1]);l>0?(s.lShiftTo(l,o),a.lShiftTo(l,n)):(s.copyTo(o),a.copyTo(n));var u=o.t,h=o[u-1];if(0!=h){var m=h*(1<<this.F1)+(u>1?o[u-2]>>this.F2:0),f=this.FV/m,g=(1<<this.F1)/m,v=1<<this.F2,_=n.t,y=_-u,b=null==i?r():i;for(o.dlShiftTo(y,b),n.compareTo(b)>=0&&(n[n.t++]=1,n.subTo(b,n)),t.ONE.dlShiftTo(u,b),b.subTo(o,o);o.t<u;)o[o.t++]=0;for(;--y>=0;){var w=n[--_]==h?this.DM:Math.floor(n[_]*f+(n[_-1]+v)*g);if((n[_]+=o.am(0,w,n,y,0,u))<w)for(o.dlShiftTo(y,b),n.subTo(b,n);n[_]<--w;)n.subTo(b,n)}null!=i&&(n.drShiftTo(u,i),c!=d&&t.ZERO.subTo(i,i)),n.t=u,n.clamp(),l>0&&n.rShiftTo(l,n),c<0&&t.ZERO.subTo(n,n)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,i){if(e>4294967295||e<1)return t.ONE;var n=r(),s=r(),a=i.convert(this),o=p(e)-1;for(a.copyTo(n);--o>=0;)if(i.sqrTo(n,s),(e&1<<o)>0)i.mulTo(s,a,n);else{var c=n;n=s,s=c}return i.revert(n)},t.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,i=(1<<t)-1,n=!1,s="",a=this.t,o=this.DB-a*this.DB%t;if(a-- >0)for(o<this.DB&&(r=this[a]>>o)>0&&(n=!0,s=c(r));a>=0;)o<t?(r=(this[a]&(1<<o)-1)<<t-o,r|=this[--a]>>(o+=this.DB-t)):(r=this[a]>>(o-=t)&i,o<=0&&(o+=this.DB,--a)),r>0&&(n=!0),n&&(s+=c(r));return n?s:"0"},t.prototype.negate=function(){var e=r();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+p(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var i=r();return this.abs().divRemTo(e,null,i),this.s<0&&i.compareTo(t.ZERO)>0&&e.subTo(i,i),i},t.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new u(t):new h(t),this.exp(e,r)},t.ZERO=l(0),t.ONE=l(1),b.prototype.convert=w,b.prototype.revert=w,b.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},b.prototype.sqrTo=function(e,t){e.squareTo(t)},S.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=r();return e.copyTo(t),this.reduce(t),t},S.prototype.revert=function(e){return e},S.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},S.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var C,R,T,P=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],k=(1<<26)/P[P.length-1];function D(){var e;e=(new Date).getTime(),R[T++]^=255&e,R[T++]^=e>>8&255,R[T++]^=e>>16&255,R[T++]^=e>>24&255,T>=L&&(T-=L)}if(t.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},t.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),i=Math.pow(e,t),n=l(i),s=r(),a=r(),o="";for(this.divRemTo(n,s,a);s.signum()>0;)o=(i+a.intValue()).toString(e).substr(1)+o,s.divRemTo(n,s,a);return a.intValue().toString(e)+o},t.prototype.fromRadix=function(e,r){this.fromInt(0),null==r&&(r=10);for(var i=this.chunkSize(r),n=Math.pow(r,i),s=!1,a=0,o=0,c=0;c<e.length;++c){var l=d(e,c);l<0?"-"==e.charAt(c)&&0==this.signum()&&(s=!0):(o=r*o+l,++a>=i&&(this.dMultiply(n),this.dAddOffset(o,0),a=0,o=0))}a>0&&(this.dMultiply(Math.pow(r,a)),this.dAddOffset(o,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,r,i){if("number"==typeof r)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),f,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(r);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var n=new Array,s=7&e;n.length=1+(e>>3),r.nextBytes(n),s>0?n[0]&=(1<<s)-1:n[0]=0,this.fromString(n,256)}},t.prototype.bitwiseTo=function(e,t,r){var i,n,s=Math.min(e.t,this.t);for(i=0;i<s;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(n=e.s&this.DM,i=s;i<this.t;++i)r[i]=t(this[i],n);r.t=this.t}else{for(n=this.s&this.DM,i=s;i<e.t;++i)r[i]=t(n,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},t.prototype.changeBit=function(e,r){var i=t.ONE.shiftLeft(e);return this.bitwiseTo(i,r,i),i},t.prototype.addTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]+e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i+=e[r],t[r++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=i<0?-1:0,i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i),t.t=r,t.clamp()},t.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},t.prototype.multiplyLowerTo=function(e,t,r){var i,n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n<i;++n)r[n+this.t]=this.am(0,e[n],r,n,0,this.t);for(i=Math.min(e.t,t);n<i;++n)this.am(0,e[n],r,n,0,t-n);r.clamp()},t.prototype.multiplyUpperTo=function(e,t,r){--t;var i=r.t=this.t+e.t-t;for(r.s=0;--i>=0;)r[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)r[this.t+i-t]=this.am(t-i,e[i],r,0,0,this.t+i-t);r.clamp(),r.drShiftTo(1,r)},t.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this[0]%e;else for(var i=this.t-1;i>=0;--i)r=(t*r+this[i])%e;return r},t.prototype.millerRabin=function(e){var i=this.subtract(t.ONE),n=i.getLowestSetBit();if(n<=0)return!1;var s=i.shiftRight(n);(e=e+1>>1)>P.length&&(e=P.length);for(var a=r(),o=0;o<e;++o){a.fromInt(P[Math.floor(Math.random()*P.length)]);var c=a.modPow(s,this);if(0!=c.compareTo(t.ONE)&&0!=c.compareTo(i)){for(var d=1;d++<n&&0!=c.compareTo(i);)if(0==(c=c.modPowInt(2,this)).compareTo(t.ONE))return!1;if(0!=c.compareTo(i))return!1}}return!0},t.prototype.clone=function(){var e=r();return this.copyTo(e),e},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},t.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,n=0;if(e-- >0)for(i<this.DB&&(r=this[e]>>i)!=(this.s&this.DM)>>i&&(t[n++]=r|this.s<<this.DB-i);e>=0;)i<8?(r=(this[e]&(1<<i)-1)<<8-i,r|=this[--e]>>(i+=this.DB-8)):(r=this[e]>>(i-=8)&255,i<=0&&(i+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(t[n++]=r);return t},t.prototype.equals=function(e){return 0==this.compareTo(e)},t.prototype.min=function(e){return this.compareTo(e)<0?this:e},t.prototype.max=function(e){return this.compareTo(e)>0?this:e},t.prototype.and=function(e){var t=r();return this.bitwiseTo(e,m,t),t},t.prototype.or=function(e){var t=r();return this.bitwiseTo(e,f,t),t},t.prototype.xor=function(e){var t=r();return this.bitwiseTo(e,g,t),t},t.prototype.andNot=function(e){var t=r();return this.bitwiseTo(e,v,t),t},t.prototype.not=function(){for(var e=r(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},t.prototype.shiftLeft=function(e){var t=r();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},t.prototype.shiftRight=function(e){var t=r();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},t.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+_(this[e]);return this.s<0?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=y(this[r]^t);return e},t.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},t.prototype.setBit=function(e){return this.changeBit(e,f)},t.prototype.clearBit=function(e){return this.changeBit(e,v)},t.prototype.flipBit=function(e){return this.changeBit(e,g)},t.prototype.add=function(e){var t=r();return this.addTo(e,t),t},t.prototype.subtract=function(e){var t=r();return this.subTo(e,t),t},t.prototype.multiply=function(e){var t=r();return this.multiplyTo(e,t),t},t.prototype.divide=function(e){var t=r();return this.divRemTo(e,t,null),t},t.prototype.remainder=function(e){var t=r();return this.divRemTo(e,null,t),t},t.prototype.divideAndRemainder=function(e){var t=r(),i=r();return this.divRemTo(e,t,i),new Array(t,i)},t.prototype.modPow=function(e,t){var i,n,s=e.bitLength(),a=l(1);if(s<=0)return a;i=s<18?1:s<48?3:s<144?4:s<768?5:6,n=s<8?new u(t):t.isEven()?new S(t):new h(t);var o=new Array,c=3,d=i-1,m=(1<<i)-1;if(o[1]=n.convert(this),i>1){var f=r();for(n.sqrTo(o[1],f);c<=m;)o[c]=r(),n.mulTo(f,o[c-2],o[c]),c+=2}var g,v,_=e.t-1,y=!0,b=r();for(s=p(e[_])-1;_>=0;){for(s>=d?g=e[_]>>s-d&m:(g=(e[_]&(1<<s+1)-1)<<d-s,_>0&&(g|=e[_-1]>>this.DB+s-d)),c=i;0==(1&g);)g>>=1,--c;if((s-=c)<0&&(s+=this.DB,--_),y)o[g].copyTo(a),y=!1;else{for(;c>1;)n.sqrTo(a,b),n.sqrTo(b,a),c-=2;c>0?n.sqrTo(a,b):(v=a,a=b,b=v),n.mulTo(b,o[g],a)}for(;_>=0&&0==(e[_]&1<<s);)n.sqrTo(a,b),v=a,a=b,b=v,--s<0&&(s=this.DB-1,--_)}return n.revert(a)},t.prototype.modInverse=function(e){var r=e.isEven();if(this.isEven()&&r||0==e.signum())return t.ZERO;for(var i=e.clone(),n=this.clone(),s=l(1),a=l(0),o=l(0),c=l(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),r?(s.isEven()&&a.isEven()||(s.addTo(this,s),a.subTo(e,a)),s.rShiftTo(1,s)):a.isEven()||a.subTo(e,a),a.rShiftTo(1,a);for(;n.isEven();)n.rShiftTo(1,n),r?(o.isEven()&&c.isEven()||(o.addTo(this,o),c.subTo(e,c)),o.rShiftTo(1,o)):c.isEven()||c.subTo(e,c),c.rShiftTo(1,c);i.compareTo(n)>=0?(i.subTo(n,i),r&&s.subTo(o,s),a.subTo(c,a)):(n.subTo(i,n),r&&o.subTo(s,o),c.subTo(a,c))}return 0!=n.compareTo(t.ONE)?t.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},t.prototype.pow=function(e){return this.exp(e,new b)},t.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var i=t;t=r,r=i}var n=t.getLowestSetBit(),s=r.getLowestSetBit();if(s<0)return t;for(n<s&&(s=n),s>0&&(t.rShiftTo(s,t),r.rShiftTo(s,r));t.signum()>0;)(n=t.getLowestSetBit())>0&&t.rShiftTo(n,t),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return s>0&&r.lShiftTo(s,r),r},t.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=P[P.length-1]){for(t=0;t<P.length;++t)if(r[0]==P[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<P.length;){for(var i=P[t],n=t+1;n<P.length&&i<k;)i*=P[n++];for(i=r.modInt(i);t<n;)if(i%P[t++]==0)return!1}return r.millerRabin(e)},t.prototype.square=function(){var e=r();return this.squareTo(e),e},t.prototype.Barrett=S,null==R){var E;if(R=new Array,T=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var I=new Uint8Array(32);for(window.crypto.getRandomValues(I),E=0;E<32;++E)R[T++]=I[E]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var O=window.crypto.random(32);for(E=0;E<O.length;++E)R[T++]=255&O.charCodeAt(E)}for(;T<L;)E=Math.floor(65536*Math.random()),R[T++]=E>>>8,R[T++]=255&E;T=0,D()}function x(){if(null==C){for(D(),(C=new j).init(R),T=0;T<R.length;++T)R[T]=0;T=0}return C.next()}function M(){}function j(){this.i=0,this.j=0,this.S=new Array}M.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=x()},j.prototype.init=function(e){var t,r,i;for(t=0;t<256;++t)this.S[t]=t;for(r=0,t=0;t<256;++t)r=r+this.S[t]+e[t%e.length]&255,i=this.S[t],this.S[t]=this.S[r],this.S[r]=i;this.i=0,this.j=0},j.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};var L=256;Zn.exports={default:t,BigInteger:t,SecureRandom:M}}.call(Yi);var Xn=Yn.exports,es={};!function(e){!function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return function(e,i){var n,s,a,o,c,d,l,p,u,h=1,m=e.length,f="";for(s=0;s<m;s++)if("string"==typeof e[s])f+=e[s];else if("object"==typeof e[s]){if((o=e[s]).keys)for(n=i[h],a=0;a<o.keys.length;a++){if(null==n)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',o.keys[a],o.keys[a-1]));n=n[o.keys[a]]}else n=o.param_no?i[o.param_no]:i[h++];if(t.not_type.test(o.type)&&t.not_primitive.test(o.type)&&n instanceof Function&&(n=n()),t.numeric_arg.test(o.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(r("[sprintf] expecting number but found %T",n));switch(t.number.test(o.type)&&(p=n>=0),o.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,o.width?parseInt(o.width):0);break;case"e":n=o.precision?parseFloat(n).toExponential(o.precision):parseFloat(n).toExponential();break;case"f":n=o.precision?parseFloat(n).toFixed(o.precision):parseFloat(n);break;case"g":n=o.precision?String(Number(n.toPrecision(o.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=o.precision?n.substring(0,o.precision):n;break;case"t":n=String(!!n),n=o.precision?n.substring(0,o.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=o.precision?n.substring(0,o.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=o.precision?n.substring(0,o.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}t.json.test(o.type)?f+=n:(!t.number.test(o.type)||p&&!o.sign?u="":(u=p?"+":"-",n=n.toString().replace(t.sign,"")),d=o.pad_char?"0"===o.pad_char?"0":o.pad_char.charAt(1):" ",l=o.width-(u+n).length,c=o.width&&l>0?d.repeat(l):"",f+=o.align?u+n+c:"0"===d?u+c+n:c+u+n)}return f}(function(e){if(n[e])return n[e];var r,i=e,s=[],a=0;for(;i;){if(null!==(r=t.text.exec(i)))s.push(r[0]);else if(null!==(r=t.modulo.exec(i)))s.push("%");else{if(null===(r=t.placeholder.exec(i)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){a|=1;var o=[],c=r[2],d=[];if(null===(d=t.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(d[1]);""!==(c=c.substring(d[0].length));)if(null!==(d=t.key_access.exec(c)))o.push(d[1]);else{if(null===(d=t.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(d[1])}r[2]=o}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");s.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}i=i.substring(r[0].length)}return n[e]=s}(e),arguments)}function i(e,t){return r.apply(null,[e].concat(t||[]))}var n=Object.create(null);e.sprintf=r,e.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=i)}()}(es);var ts=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),rs=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),is=Yi&&Yi.__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};Object.defineProperty(Hn,"__esModule",{value:!0}),Hn.Address4=void 0;const ns=is(Wn),ss=is(Kn),as=Jn,os=Xn,cs=es;class ds{constructor(e){this.groups=ss.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=ns.isCorrect(ss.BITS),this.isInSubnet=ns.isInSubnet,this.address=e;const t=ss.RE_SUBNET_STRING.exec(e);if(t){if(this.parsedSubnet=t[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>ss.BITS)throw new as.AddressError("Invalid subnet mask.");e=e.replace(ss.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new ds(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(ss.RE_ADDRESS))throw new as.AddressError("Invalid IPv4 address.");return t}correctForm(){return this.parsedAddress.map((e=>parseInt(e,10))).join(".")}static fromHex(e){const t=e.replace(/:/g,"").padStart(8,"0"),r=[];let i;for(i=0;i<8;i+=2){const e=t.slice(i,i+2);r.push(parseInt(e,16))}return new ds(r.join("."))}static fromInteger(e){return ds.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new ds(t)}toHex(){return this.parsedAddress.map((e=>(0,cs.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<ss.GROUPS;t+=2){const r=(0,cs.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,cs.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new os.BigInteger(this.parsedAddress.map((e=>(0,cs.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new os.BigInteger(this.mask()+"0".repeat(ss.BITS-this.subnetMask),2)}startAddress(){return ds.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new os.BigInteger("1");return ds.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new os.BigInteger(this.mask()+"1".repeat(ss.BITS-this.subnetMask),2)}endAddress(){return ds.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new os.BigInteger("1");return ds.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return ds.fromInteger(parseInt(e.toString(),10))}mask(e){return void 0===e&&(e=this.subnetMask),this.getBitsBase2(0,e)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}reverseForm(e){e||(e={});const t=this.correctForm().split(".").reverse().join(".");return e.omitSuffix?t:(0,cs.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new ds("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(ss.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(ss.RE_ADDRESS,(0,cs.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',e.slice(0,2).join("."),e.slice(2,4).join(".")))}}Hn.Address4=ds;var ls={},ps={};Object.defineProperty(ps,"__esModule",{value:!0}),ps.RE_URL_WITH_PORT=ps.RE_URL=ps.RE_ZONE_STRING=ps.RE_SUBNET_STRING=ps.RE_BAD_ADDRESS=ps.RE_BAD_CHARACTERS=ps.TYPES=ps.SCOPES=ps.GROUPS=ps.BITS=void 0,ps.BITS=128,ps.GROUPS=8,ps.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},ps.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},ps.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,ps.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,ps.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,ps.RE_ZONE_STRING=/%.*$/,ps.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),ps.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var us={};Object.defineProperty(us,"__esModule",{value:!0}),us.simpleGroup=us.spanLeadingZeroes=us.spanAll=us.spanAllZeroes=void 0;const hs=es;function ms(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function fs(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}us.spanAllZeroes=ms,us.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,hs.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,ms(e)))).join("")},us.spanLeadingZeroes=function(e){return e.split(":").map((e=>fs(e))).join(":")},us.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,hs.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,fs(e))))};var gs={},vs=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),_s=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ys=Yi&&Yi.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&vs(t,e,r);return _s(t,e),t};Object.defineProperty(gs,"__esModule",{value:!0}),gs.possibleElisions=gs.simpleRegularExpression=gs.ADDRESS_BOUNDARY=gs.padGroup=gs.groupPossibilities=void 0;const bs=ys(ps),ws=es;function Ss(e){return(0,ws.sprintf)("(%s)",e.join("|"))}function Cs(e){return e.length<4?(0,ws.sprintf)("0{0,%d}%s",4-e.length,e):e}gs.groupPossibilities=Ss,gs.padGroup=Cs,gs.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",gs.simpleRegularExpression=function(e){const t=[];e.forEach(((e,r)=>{0===parseInt(e,16)&&t.push(r)}));const r=t.map((t=>e.map(((e,r)=>{if(r===t){const t=0===r||r===bs.GROUPS-1?":":"";return Ss([Cs(e),t])}return Cs(e)})).join(":")));return r.push(e.map(Cs).join(":")),Ss(r)},gs.possibleElisions=function(e,t,r){const i=t?"":":",n=r?"":":",s=[];t||r||s.push("::"),t&&r&&s.push(""),(r&&!t||!r&&t)&&s.push(":"),s.push((0,ws.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),s.push((0,ws.sprintf)("(0{1,4}:){1,%d}%s",e-1,n)),s.push((0,ws.sprintf)("(0{1,4}:){%d}0{1,4}",e-1));for(let t=1;t<e-1;t++)for(let r=1;r<e-t;r++)s.push((0,ws.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Ss(s)};var Rs=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ts=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ps=Yi&&Yi.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Rs(t,e,r);return Ts(t,e),t};Object.defineProperty(ls,"__esModule",{value:!0}),ls.Address6=void 0;const ks=Ps(Wn),Ds=Ps(Kn),Es=Ps(ps),Is=Ps(us),Os=Hn,xs=gs,Ms=Jn,js=Xn,Ls=es;function As(e){if(!e)throw new Error("Assertion failed.")}function Ns(e){return e=(e=e.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2')).replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2')}function Bs(e){return(0,Ls.sprintf)("%04x",parseInt(e,16))}function Fs(e){return 255&e}class Us{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=ks.isInSubnet,this.isCorrect=ks.isCorrect(Es.BITS),this.groups=void 0===t?Es.GROUPS:t,this.address=e;const r=Es.RE_SUBNET_STRING.exec(e);if(r){if(this.parsedSubnet=r[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>Es.BITS)throw new Ms.AddressError("Invalid subnet mask.");e=e.replace(Es.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new Ms.AddressError("Invalid subnet mask.");const i=Es.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(Es.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new Us(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<Es.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new Us(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=Es.RE_URL_WITH_PORT.exec(e),null===r)return{error:"failed to parse address with port",address:null,port:null};t=r[1],i=r[2]}else if(-1!==e.indexOf("/")){if(e=e.replace(/^[a-z0-9]+:\/\//,""),r=Es.RE_URL.exec(e),null===r)return{error:"failed to parse address from URL",address:null,port:null};t=r[1]}else t=e;return i?(i=parseInt(i,10),(i<0||i>65536)&&(i=null)):i=null,{address:new Us(t),port:i}}static fromAddress4(e){const t=new Os.Address4(e),r=Es.BITS-(Ds.BITS-t.subnetMask);return new Us(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new Ms.AddressError("Invalid 'ip6.arpa' form.");const r=t.split(".").reverse();for(let e=7;e>0;e--){const t=4*e;r.splice(t,0,":")}return t=r.join(""),new Us(t)}microsoftTranscription(){return(0,Ls.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=Es.BITS-this.subnetMask-Math.abs(e-Es.BITS);return t<0?"0":function(e){const t=/(\d+)(\d{3})/;for(;t.test(e);)e=e.replace(t,"$1,$2");return e}(new js.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new js.BigInteger(this.mask()+"0".repeat(Es.BITS-this.subnetMask),2)}startAddress(){return Us.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new js.BigInteger("1");return Us.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new js.BigInteger(this.mask()+"1".repeat(Es.BITS-this.subnetMask),2)}endAddress(){return Us.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new js.BigInteger("1");return Us.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=Es.SCOPES[this.getBits(12,16).intValue()];return"Global unicast"===this.getType()&&"Link local"!==e&&(e="Global"),e||"Unknown"}getType(){for(const e of Object.keys(Es.TYPES))if(this.isInSubnet(new Us(e)))return Es.TYPES[e];return"Global unicast"}getBits(e,t){return new js.BigInteger(this.getBitsBase2(e,t),2)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}getBitsBase16(e,t){const r=t-e;if(r%4!=0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(e,t).toString(16).padStart(r/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,Es.BITS)}reverseForm(e){e||(e={});const t=Math.floor(this.subnetMask/4),r=this.canonicalForm().replace(/:/g,"").split("").slice(0,t).reverse().join(".");return t>0?e.omitSuffix?r:(0,Ls.sprintf)("%s.ip6.arpa.",r):e.omitSuffix?"":"ip6.arpa."}correctForm(){let e,t=[],r=0;const i=[];for(e=0;e<this.parsedAddress.length;e++){const t=parseInt(this.parsedAddress[e],16);0===t&&r++,0!==t&&r>0&&(r>1&&i.push([e-r,e-1]),r=0)}r>1&&i.push([this.parsedAddress.length-r,this.parsedAddress.length-1]);const n=i.map((e=>e[1]-e[0]+1));if(i.length>0){const e=n.indexOf(Math.max(...n));t=function(e,t){const r=[],i=[];let n;for(n=0;n<e.length;n++)n<t[0]?r.push(e[n]):n>t[1]&&i.push(e[n]);return r.concat(["compact"]).concat(i)}(this.parsedAddress,i[e])}else t=this.parsedAddress;for(e=0;e<t.length;e++)"compact"!==t[e]&&(t[e]=parseInt(t[e],16).toString(16));let s=t.join(":");return s=s.replace(/^compact$/,"::"),s=s.replace(/^compact|compact$/,":"),s=s.replace(/compact/,""),s}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Es.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(Ds.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new Os.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new Ms.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(Ds.RE_ADDRESS,this.address4.parsedAddress.map(Ns).join(".")));this.v4=!0,t[t.length-1]=this.address4.toGroup6(),e=t.join(":")}return e}parse(e){const t=(e=this.parse4in6(e)).match(Es.RE_BAD_CHARACTERS);if(t)throw new Ms.AddressError((0,Ls.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(Es.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(Es.RE_BAD_ADDRESS);if(r)throw new Ms.AddressError((0,Ls.sprintf)("Address failed regex: %s",r.join("")),e.replace(Es.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let i=[];const n=e.split("::");if(2===n.length){let e=n[0].split(":"),t=n[1].split(":");1===e.length&&""===e[0]&&(e=[]),1===t.length&&""===t[0]&&(t=[]);const r=this.groups-(e.length+t.length);if(!r)throw new Ms.AddressError("Error parsing groups");this.elidedGroups=r,this.elisionBegin=e.length,this.elisionEnd=e.length+this.elidedGroups,i=i.concat(e);for(let e=0;e<r;e++)i.push("0");i=i.concat(t)}else{if(1!==n.length)throw new Ms.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,Ls.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new Ms.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(Bs).join(":")}decimal(){return this.parsedAddress.map((e=>(0,Ls.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new js.BigInteger(this.parsedAddress.map(Bs).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return Os.Address4.fromHex(new js.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new Us(this.parsedAddress.slice(0,6).join(":"),6).correctForm();let r="";return/:$/.test(t)||(r=":"),t+r+e.address}inspectTeredo(){const e=this.getBitsBase16(0,32),t=this.getBits(80,96).xor(new js.BigInteger("ffff",16)).toString(),r=Os.Address4.fromHex(this.getBitsBase16(32,64)),i=Os.Address4.fromHex(this.getBits(96,128).xor(new js.BigInteger("ffffffff",16)).toString(16)),n=this.getBits(64,80),s=this.getBitsBase2(64,80),a=n.testBit(15),o=n.testBit(14),c=n.testBit(8),d=n.testBit(9),l=new js.BigInteger(s.slice(2,6)+s.slice(8,16),2).toString(10);return{prefix:(0,Ls.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:i.address,flags:s,coneNat:a,microsoft:{reserved:o,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=Os.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,Ls.sprintf)("%s",e.slice(0,4)),gateway:t.address}}to6to4(){if(!this.is4())return null;const e=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new Us(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(Fs)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(Fs))}static fromUnsignedByteArray(e){const t=new js.BigInteger("256",10);let r=new js.BigInteger("0",10),i=new js.BigInteger("1",10);for(let n=e.length-1;n>=0;n--)r=r.add(i.multiply(new js.BigInteger(e[n].toString(10),10))),i=i.multiply(t);return Us.fromBigInteger(r)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return"1111111010000000000000000000000000000000000000000000000000000000"===this.getBitsBase2(0,64)}isMulticast(){return"Multicast"===this.getType()}is4(){return this.v4}isTeredo(){return this.isInSubnet(new Us("2001::/32"))}is6to4(){return this.isInSubnet(new Us("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,Ls.sprintf)(":%s",e),(0,Ls.sprintf)("http://[%s]%s/",this.correctForm(),e)}link(e){e||(e={}),void 0===e.className&&(e.className=""),void 0===e.prefix&&(e.prefix="/#address="),void 0===e.v4&&(e.v4=!1);let t=this.correctForm;return e.v4&&(t=this.to4in6),e.className?(0,Ls.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,Ls.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return Is.simpleGroup(this.address).join(":");As("number"==typeof this.elidedGroups),As("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...Is.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,Ls.sprintf)("group-%d",e));return e.push((0,Ls.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...Is.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(As(this.address4 instanceof Os.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new Us(this.correctForm());if(0===r.elidedGroups)t.push((0,xs.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===Es.GROUPS)t.push((0,xs.possibleElisions)(Es.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,xs.simpleRegularExpression)(e[0].split(":"))),As("number"==typeof r.elidedGroups),t.push((0,xs.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,xs.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",xs.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",xs.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}ls.Address6=Us,function(e){var t=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Yi&&Yi.__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};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const n=Hn;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return n.Address4}});const s=ls;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return s.Address6}});const a=Jn;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const o=i(us);e.v6={helpers:o}}(Gn);var $s={exports:{}};!function(e){(function(){var t,r,i,n,s,a,o,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,o=function(e,t,r,i){var n,s;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(n=0;i>0;){if((s=r-i)<0&&(s=0),e[n]>>s!=t[n]>>s)return!1;i-=r,n+=1}return!0},r.subnetMatch=function(e,t,r){var i,n,s,a,o;for(s in null==r&&(r="unicast"),t)for(!(a=t[s])[0]||a[0]instanceof Array||(a=[a]),i=0,n=a.length;i<n;i++)if(o=a[i],e.kind()===o[0].kind()&&e.match.apply(e,o))return s;return r},r.IPv4=function(){function e(e){var t,r,i;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,r=e.length;t<r;t++)if(!(0<=(i=e[t])&&i<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return o(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,a;for(a={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,n=!1,t=r=3;r>=0;t=r+=-1){if(!((i=this.octets[t])in a))return null;if(s=a[i],n&&0!==s)return null;8!==s&&(n=!0),e+=s}return 32-e},e}(),i="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+i+"\\."+i+"\\."+i+"\\."+i+"$","i"),longValue:new RegExp("^"+i+"$","i")},r.IPv4.parser=function(e){var t,r,i,s,a;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(n.fourOctet))return function(){var e,n,s,a;for(a=[],e=0,n=(s=t.slice(1,6)).length;e<n;e++)i=s[e],a.push(r(i));return a}();if(t=e.match(n.longValue)){if((a=r(t[1]))>4294967295||a<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],s=e=0;e<=24;s=e+=8)t.push(a>>s&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,i,n,s,a,o;if(16===e.length)for(this.parts=[],r=i=0;i<=14;r=i+=2)this.parts.push(e[r]<<8|e[r+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(n=0,s=(o=this.parts).length;n<s;n++)if(!(0<=(a=o[n])&&a<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,r,i,n;for(i=/((^|:)(0(:|$)){2,})/g,n=this.toNormalizedString(),e=0,t=-1;r=i.exec(n);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?n:n.substring(0,e)+"::"+n.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,i,n;for(e=[],t=0,r=(n=this.parts).length;t<r;t++)i=n[t],e.push(i>>8),e.push(255&i);return e},e.prototype.toNormalizedString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.toFixedLengthString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16).padStart(4,"0"));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return o(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,i;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(i=this.parts.slice(-2))[0],t=i[1],new r.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,a;for(a={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,n=!1,t=r=7;r>=0;t=r+=-1){if(!((i=this.parts[t])in a))return null;if(s=a[i],n&&0!==s)return null;16!==s&&(n=!0),e+=s}return 128-e},e}(),s="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",a={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+i+"\\."+i+"\\."+i+"\\."+i+"("+c+")?$","i")},t=function(e,t){var r,i,n,s,o,c;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((c=(e.match(a.zoneIndex)||[])[0])&&(c=c.substring(1),e=e.replace(/%.+$/,"")),r=0,i=-1;(i=e.indexOf(":",i+1))>=0;)r++;if("::"===e.substr(0,2)&&r--,"::"===e.substr(-2,2)&&r--,r>t)return null;for(o=t-r,s=":";o--;)s+="0:";return":"===(e=e.replace("::",s))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){var t,r,i,s;for(s=[],t=0,r=(i=e.split(":")).length;t<r;t++)n=i[t],s.push(parseInt(n,16));return s}(),zoneId:c}},r.IPv6.parser=function(e){var r,i,n,s,o,c,d;if(a.native.test(e))return t(e,8);if((s=e.match(a.transitional))&&(d=s[6]||"",(r=t(s[1].slice(0,-1)+d,6)).parts)){for(i=0,n=(c=[parseInt(s[2]),parseInt(s[3]),parseInt(s[4]),parseInt(s[5])]).length;i<n;i++)if(!(0<=(o=c[i])&&o<=255))return null;return r.parts.push(c[0]<<8|c[1]),r.parts.push(c[2]<<8|c[3]),{parts:r.parts,zoneId:r.zoneId}}return null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(e){return null!==this.parser(e)},r.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},r.IPv4.isValidFourPartDecimal=function(e){return!(!r.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},r.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},r.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},r.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},r.IPv4.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=32)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},r.IPv4.subnetMaskFromPrefixLength=function(e){var t,r,i;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(i=[0,0,0,0],r=0,t=Math.floor(e/8);r<t;)i[r]=255,r++;return t<4&&(i[t]=Math.pow(2,e%8)-1<<8-e%8),new this(i)},r.IPv4.broadcastAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)|255^parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)&parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv6.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=128)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},r.isValid=function(e){return r.IPv6.isValid(e)||r.IPv4.isValid(e)},r.parse=function(e){if(r.IPv6.isValid(e))return r.IPv6.parse(e);if(r.IPv4.isValid(e))return r.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.parseCIDR=function(e){try{return r.IPv6.parseCIDR(e)}catch(t){try{return r.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},r.fromByteArray=function(e){var t;if(4===(t=e.length))return new r.IPv4(e);if(16===t)return new r.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},r.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(Yi)}($s);var zs=$s.exports,Vs=function(e,t){if("string"==typeof t)return qs(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(qs(e,t[i])){r=!0;break}return r}};function qs(e,t){try{var r=zs.process(e);if(-1===t.indexOf("/")){var i=zs.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var n=zs.parseCIDR(t);return r.match(n)}catch(e){return!1}}var Gs=Vs,Hs=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Ws=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/3"],Ks=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var Js=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(Hs.test(e)){r.isValid=!0;for(var i=e.split("."),n=0;n<4;n++)t.push(parseInt(i[n],10));r.boiledIp=t.join("."),Gs(r.boiledIp,Ws)&&(r.isBogon=!0),Gs(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),Gs(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),Gs(r.boiledIp,Ks)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},Qs=Xi(Js),Zs={exports:{}},Ys=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Xs=[],ea=0;ea<256;ea++)Xs[ea]=(ea+256).toString(16).substr(1);Zs.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=Xs;return i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]}(e);else{if("[object String]"!==Object.prototype.toString.call(e))return!1;r=e}if(r=r.toLowerCase(),!Ys.test(r))return!1;if(void 0===t)t=ia(r);else if(ia(r)!==t)return!1;switch(t){case 1:case 2:return!0;case 3:case 4:case 5:return-1!==["8","9","a","b"].indexOf(r.charAt(19));default:throw new Error("Invalid version provided.")}};var ta,ra,ia=Zs.exports.version=function(e){return 0|e.charAt(14)},na=Xi(Zs.exports),sa={},aa={exports:{}};function oa(){if(ra)return ta;ra=1;var e=1e3,t=60*e,r=60*t,i=24*r,n=7*i,s=365.25*i;function a(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}return ta=function(o,c){c=c||{};var d=typeof o;if("string"===d&&o.length>0)return function(a){if((a=String(a)).length>100)return;var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(a);if(!o)return;var c=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*s;case"weeks":case"week":case"w":return c*n;case"days":case"day":case"d":return c*i;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(o);if("number"===d&&isFinite(o))return c.long?function(n){var s=Math.abs(n);if(s>=i)return a(n,s,i,"day");if(s>=r)return a(n,s,r,"hour");if(s>=t)return a(n,s,t,"minute");if(s>=e)return a(n,s,e,"second");return n+" ms"}(o):function(n){var s=Math.abs(n);if(s>=i)return Math.round(n/i)+"d";if(s>=r)return Math.round(n/r)+"h";if(s>=t)return Math.round(n/t)+"m";if(s>=e)return Math.round(n/e)+"s";return n+"ms"}(o);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(o))}}var ca=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.slice(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=oa(),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=ca(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(aa,aa.exports);var da=aa.exports,la={},pa={exports:{}};!function(e,t){!function(r,i){var n="function",s="undefined",a="object",o="string",c="major",d="model",l="name",p="type",u="vendor",h="version",m="architecture",f="console",g="mobile",v="tablet",_="smarttv",y="wearable",b="embedded",w="Amazon",S="Apple",C="ASUS",R="BlackBerry",T="Browser",P="Chrome",k="Firefox",D="Google",E="Huawei",I="LG",O="Microsoft",x="Motorola",M="Opera",j="Samsung",L="Sharp",A="Sony",N="Xiaomi",B="Zebra",F="Facebook",U="Chromium OS",$="Mac OS",z=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},V=function(e,t){return typeof e===o&&-1!==q(t).indexOf(q(e))},q=function(e){return e.toLowerCase()},G=function(e,t){if(typeof e===o)return e=e.replace(/^\s\s*/,""),typeof t===s?e:e.substring(0,500)},H=function(e,t){for(var r,s,o,c,d,l,p=0;p<t.length&&!d;){var u=t[p],h=t[p+1];for(r=s=0;r<u.length&&!d&&u[r];)if(d=u[r++].exec(e))for(o=0;o<h.length;o++)l=d[++s],typeof(c=h[o])===a&&c.length>0?2===c.length?typeof c[1]==n?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==n||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):i:this[c[0]]=l?c[1].call(this,l,c[2]):i:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):i):this[c]=l||i;p+=2}},W=function(e,t){for(var r in t)if(typeof t[r]===a&&t[r].length>0){for(var n=0;n<t[r].length;n++)if(V(t[r][n],e))return"?"===r?i:r}else if(V(t[r],e))return"?"===r?i:r;return e},K={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},J={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,h],[/opios[\/ ]+([\w\.]+)/i],[h,[l,M+" Mini"]],[/\bopr\/([\w\.]+)/i],[h,[l,M]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[h,[l,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[l,h],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[l,"UC"+T]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[h,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[h,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[h,[l,"Smart Lenovo "+T]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+T],h],[/\bfocus\/([\w\.]+)/i],[h,[l,k+" Focus"]],[/\bopt\/([\w\.]+)/i],[h,[l,M+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[l,M+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[l,"MIUI "+T]],[/fxios\/([-\w\.]+)/i],[h,[l,k]],[/\bqihu|(qi?ho?o?|360)browser/i],[[l,"360 "+T]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1 "+T],h],[/samsungbrowser\/([\w\.]+)/i],[h,[l,j+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[l,/_/g," "],h],[/metasr[\/ ]?([\d\.]+)/i],[h,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[l,h],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,F],h],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[l,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[h,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[l,P+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,P+" WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[l,"Android "+T]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,h],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[h,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[h,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[h,W,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[l,k+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[l,h],[/(cobalt)\/([\w\.]+)/i],[l,[h,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[m,"amd64"]],[/(ia32(?=;))/i],[[m,q]],[/((?:i[346]|x)86)[;\)]/i],[[m,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/windows (ce|mobile); ppc;/i],[[m,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[m,/ower/,"",q]],[/(sun4\w)[;\)]/i],[[m,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[m,q]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[d,[u,j],[p,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[d,[u,j],[p,g]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[d,[u,S],[p,g]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[d,[u,S],[p,v]],[/(macintosh);/i],[d,[u,S]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[d,[u,L],[p,g]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[d,[u,E],[p,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[d,[u,E],[p,g]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,g]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[d,[u,"OPPO"],[p,g]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[d,[u,"Vivo"],[p,g]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[d,[u,"Realme"],[p,g]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[d,[u,x],[p,g]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[d,[u,x],[p,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[d,[u,I],[p,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[d,[u,I],[p,g]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[d,[u,"Lenovo"],[p,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[d,/_/g," "],[u,"Nokia"],[p,g]],[/(pixel c)\b/i],[d,[u,D],[p,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[d,[u,D],[p,g]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[d,[u,A],[p,g]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[d,"Xperia Tablet"],[u,A],[p,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[d,[u,"OnePlus"],[p,g]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[d,[u,w],[p,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[d,/(.+)/g,"Fire Phone $1"],[u,w],[p,g]],[/(playbook);[-\w\),; ]+(rim)/i],[d,u,[p,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[d,[u,R],[p,g]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[d,[u,C],[p,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[d,[u,C],[p,g]],[/(nexus 9)/i],[d,[u,"HTC"],[p,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[u,[d,/_/g," "],[p,g]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[d,[u,"Acer"],[p,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[d,[u,"Meizu"],[p,g]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[d,[u,"Ulefone"],[p,g]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[u,d,[p,g]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[u,d,[p,v]],[/(surface duo)/i],[d,[u,O],[p,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[d,[u,"Fairphone"],[p,g]],[/(u304aa)/i],[d,[u,"AT&T"],[p,g]],[/\bsie-(\w*)/i],[d,[u,"Siemens"],[p,g]],[/\b(rct\w+) b/i],[d,[u,"RCA"],[p,v]],[/\b(venue[\d ]{2,7}) b/i],[d,[u,"Dell"],[p,v]],[/\b(q(?:mv|ta)\w+) b/i],[d,[u,"Verizon"],[p,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[d,[u,"Barnes & Noble"],[p,v]],[/\b(tm\d{3}\w+) b/i],[d,[u,"NuVision"],[p,v]],[/\b(k88) b/i],[d,[u,"ZTE"],[p,v]],[/\b(nx\d{3}j) b/i],[d,[u,"ZTE"],[p,g]],[/\b(gen\d{3}) b.+49h/i],[d,[u,"Swiss"],[p,g]],[/\b(zur\d{3}) b/i],[d,[u,"Swiss"],[p,v]],[/\b((zeki)?tb.*\b) b/i],[d,[u,"Zeki"],[p,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[u,"Dragon Touch"],d,[p,v]],[/\b(ns-?\w{0,9}) b/i],[d,[u,"Insignia"],[p,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[d,[u,"NextBook"],[p,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[u,"Voice"],d,[p,g]],[/\b(lvtel\-)?(v1[12]) b/i],[[u,"LvTel"],d,[p,g]],[/\b(ph-1) /i],[d,[u,"Essential"],[p,g]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[d,[u,"Envizen"],[p,v]],[/\b(trio[-\w\. ]+) b/i],[d,[u,"MachSpeed"],[p,v]],[/\btu_(1491) b/i],[d,[u,"Rotor"],[p,v]],[/(shield[\w ]+) b/i],[d,[u,"Nvidia"],[p,v]],[/(sprint) (\w+)/i],[u,d,[p,g]],[/(kin\.[onetw]{3})/i],[[d,/\./g," "],[u,O],[p,g]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[d,[u,B],[p,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[d,[u,B],[p,g]],[/smart-tv.+(samsung)/i],[u,[p,_]],[/hbbtv.+maple;(\d+)/i],[[d,/^/,"SmartTV"],[u,j],[p,_]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[u,I],[p,_]],[/(apple) ?tv/i],[u,[d,S+" TV"],[p,_]],[/crkey/i],[[d,P+"cast"],[u,D],[p,_]],[/droid.+aft(\w+)( bui|\))/i],[d,[u,w],[p,_]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[d,[u,L],[p,_]],[/(bravia[\w ]+)( bui|\))/i],[d,[u,A],[p,_]],[/(mitv-\w{5}) bui/i],[d,[u,N],[p,_]],[/Hbbtv.*(technisat) (.*);/i],[u,d,[p,_]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[u,G],[d,G],[p,_]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,_]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[u,d,[p,f]],[/droid.+; (shield) bui/i],[d,[u,"Nvidia"],[p,f]],[/(playstation [345portablevi]+)/i],[d,[u,A],[p,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[d,[u,O],[p,f]],[/((pebble))app/i],[u,d,[p,y]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[d,[u,S],[p,y]],[/droid.+; (glass) \d/i],[d,[u,D],[p,y]],[/droid.+; (wt63?0{2,3})\)/i],[d,[u,B],[p,y]],[/(quest( 2| pro)?)/i],[d,[u,F],[p,y]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[u,[p,b]],[/(aeobc)\b/i],[d,[u,w],[p,b]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[d,[p,g]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[d,[p,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,g]],[/(android[-\w\. ]{0,9});.+buil/i],[d,[u,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[l,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[l,h],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,h],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[l,[h,W,K]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,W,K],[l,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,$],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[h,l],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[l,h],[/\(bb(10);/i],[h,[l,R]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[h,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[l,k+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[h,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[h,[l,P+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,U],h],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,h],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,h]]},Q=function(e,t){if(typeof e===a&&(t=e,e=i),!(this instanceof Q))return new Q(e,t).getResult();var f=typeof r!==s&&r.navigator?r.navigator:i,_=e||(f&&f.userAgent?f.userAgent:""),y=f&&f.userAgentData?f.userAgentData:i,b=t?function(e,t){var r={};for(var i in e)t[i]&&t[i].length%2==0?r[i]=t[i].concat(e[i]):r[i]=e[i];return r}(J,t):J,w=f&&f.userAgent==_;return this.getBrowser=function(){var e,t={};return t[l]=i,t[h]=i,H.call(t,_,b.browser),t[c]=typeof(e=t[h])===o?e.replace(/[^\d\.]/g,"").split(".")[0]:i,w&&f&&f.brave&&typeof f.brave.isBrave==n&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[m]=i,H.call(e,_,b.cpu),e},this.getDevice=function(){var e={};return e[u]=i,e[d]=i,e[p]=i,H.call(e,_,b.device),w&&!e[p]&&y&&y.mobile&&(e[p]=g),w&&"Macintosh"==e[d]&&f&&typeof f.standalone!==s&&f.maxTouchPoints&&f.maxTouchPoints>2&&(e[d]="iPad",e[p]=v),e},this.getEngine=function(){var e={};return e[l]=i,e[h]=i,H.call(e,_,b.engine),e},this.getOS=function(){var e={};return e[l]=i,e[h]=i,H.call(e,_,b.os),w&&!e[l]&&y&&"Unknown"!=y.platform&&(e[l]=y.platform.replace(/chrome os/i,U).replace(/macos/i,$)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return _},this.setUA=function(e){return _=typeof e===o&&e.length>500?G(e,500):e,this},this.setUA(_),this};Q.VERSION="1.0.37",Q.BROWSER=z([l,h,c]),Q.CPU=z([m]),Q.DEVICE=z([d,u,p,f,g,_,v,y,b]),Q.ENGINE=Q.OS=z([l,h]),e.exports&&(t=e.exports=Q),t.UAParser=Q;var Z=typeof r!==s&&(r.jQuery||r.Zepto);if(Z&&!Z.ua){var Y=new Q;Z.ua=Y.getResult(),Z.ua.get=function(){return Y.getUA()},Z.ua.set=function(e){Y.setUA(e);var t=Y.getResult();for(var r in t)Z.ua[r]=t[r]}}}("object"==typeof window?window:Yi)}(pa,pa.exports);var ua=pa.exports,ha={},ma=Yi&&Yi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ha,"__esModule",{value:!0}),ha.Logger=void 0;const fa=ma(da),ga="mediasoup-client";ha.Logger=class{constructor(e){e?(this._debug=(0,fa.default)(`${ga}:${e}`),this._warn=(0,fa.default)(`${ga}:WARN:${e}`),this._error=(0,fa.default)(`${ga}:ERROR:${e}`)):(this._debug=(0,fa.default)(ga),this._warn=(0,fa.default)(`${ga}:WARN`),this._error=(0,fa.default)(`${ga}: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 va={},_a=en(Cn);Object.defineProperty(va,"__esModule",{value:!0}),va.EnhancedEventEmitter=void 0;const ya=_a,ba=new ha.Logger("EnhancedEventEmitter");class wa extends ya.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}emit(e,...t){return super.emit(e,...t)}safeEmit(e,...t){const r=super.listenerCount(e);try{return super.emit(e,...t)}catch(t){return ba.error("safeEmit() | event listener threw an error [eventName:%s]:%o",e,t),Boolean(r)}}on(e,t){return super.on(e,t),this}off(e,t){return super.off(e,t),this}addListener(e,t){return super.on(e,t),this}prependListener(e,t){return super.prependListener(e,t),this}once(e,t){return super.once(e,t),this}prependOnceListener(e,t){return super.prependOnceListener(e,t),this}removeListener(e,t){return super.off(e,t),this}removeAllListeners(e){return super.removeAllListeners(e),this}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}rawListeners(e){return super.rawListeners(e)}}va.EnhancedEventEmitter=wa;var Sa={};Object.defineProperty(Sa,"__esModule",{value:!0}),Sa.InvalidStateError=Sa.UnsupportedError=void 0;class Ca extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Ca):this.stack=new Error(e).stack}}Sa.UnsupportedError=Ca;class Ra extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Ra):this.stack=new Error(e).stack}}Sa.InvalidStateError=Ra;var Ta={};Object.defineProperty(Ta,"__esModule",{value:!0}),Ta.generateRandomNumber=Ta.clone=void 0,Ta.clone=function(e,t){return void 0===e?t:JSON.parse(JSON.stringify(e))},Ta.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var Pa={},ka={};!function(e){const t=da("h264-profile-level-id"),r=da("h264-profile-level-id:WARN");t.log=console.info.bind(console),r.log=console.warn.bind(console);e.ProfileConstrainedBaseline=1,e.ProfileBaseline=2,e.ProfileMain=3,e.ProfileConstrainedHigh=4,e.ProfileHigh=5,e.ProfilePredictiveHigh444=6;const i=0,n=10;e.Level1_b=i,e.Level1=n,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 s{constructor(e,t){this.profile=e,this.level=t}}e.ProfileLevelId=s;class a{constructor(e){this._mask=~d("x",e),this._maskedValue=d("1",e)}isMatch(e){return this._maskedValue===(e&this._mask)}}class o{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const c=[new o(66,new a("x1xx0000"),1),new o(77,new a("1xxx0000"),1),new o(88,new a("11xx0000"),1),new o(66,new a("x0xx0000"),2),new o(88,new a("10xx0000"),2),new o(77,new a("0x0x0000"),3),new o(100,new a("00000000"),5),new o(100,new a("00001100"),4),new o(244,new a("00000000"),6)];function d(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 l(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 t=parseInt(e,16);if(0===t)return null;const a=255&t,o=t>>8&255,d=t>>16&255;let l;switch(a){case 11:l=0!=(16&o)?i:11;break;case n: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:l=a;break;default:return r(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${a}]`),null}for(const e of c)if(d===e.profile_idc&&e.profile_iop.isMatch(o))return new s(e.profile,l);return r(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${d}, profile_iop:${o}]`),null},e.profileLevelIdToString=function(e){if(e.level==i)switch(e.profile){case 1:return"42f00b";case 2:return"42100b";case 3:return"4d100b";default:return r(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`),null}let t;switch(e.profile){case 1:t="42e0";break;case 2:t="4200";break;case 3:t="4d00";break;case 4:t="640c";break;case 5:t="6400";break;case 6:t="f400";break;default:return r(`profileLevelIdToString() | unrecognized profile ${e.profile}`),null}let n=e.level.toString(16);return 1===n.length&&(n=`0${n}`),`${t}${n}`},e.profileToString=function(e){switch(e){case 1:return"ConstrainedBaseline";case 2:return"Baseline";case 3:return"Main";case 4:return"ConstrainedHigh";case 5:return"High";case 6:return"PredictiveHigh444";default:return r(`profileToString() | unrecognized profile ${e}`),null}},e.levelToString=function(e){switch(e){case i:return"1b";case n:return"1";case 11:return"1.1";case 12:return"1.2";case 13:return"1.3";case 20:return"2";case 21:return"2.1";case 22:return"2.2";case 30:return"3";case 31:return"3.1";case 32:return"3.2";case 40:return"4";case 41:return"4.1";case 42:return"4.2";case 50:return"5";case 51:return"5.1";case 52:return"5.2";default:return r(`levelToString() | unrecognized level ${e}`),null}},e.parseSdpProfileLevelId=function(t={}){const r=new s(1,31),i=t["profile-level-id"];return i?e.parseProfileLevelId(i):r},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(a={},o={}){if(!a["profile-level-id"]&&!o["profile-level-id"])return r("generateProfileLevelIdForAnswer() | profile-level-id missing in local and remote params"),null;const c=e.parseSdpProfileLevelId(a),d=e.parseSdpProfileLevelId(o);if(!c)throw new TypeError("invalid local_profile_level_id");if(!d)throw new TypeError("invalid remote_profile_level_id");if(c.profile!==d.profile)throw new TypeError("H264 Profile mismatch");const p=l(a)&&l(o),u=c.level,h=d.level,m=function(e,t){return e===i?t!==n&&t!==i:t===i?e!==n:e<t}(f=u,g=h)?f:g;var f,g;const v=p?u:m;return t(`generateProfileLevelIdForAnswer() | result [profile:${c.profile}, level:${v}]`),e.profileLevelIdToString(new s(c.profile,v))}}(ka);var Da=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ea=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ia=Yi&&Yi.__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)&&Da(t,e,r);return Ea(t,e),t};Object.defineProperty(Pa,"__esModule",{value:!0}),Pa.canReceive=Pa.canSend=Pa.generateProbatorRtpParameters=Pa.reduceCodecs=Pa.getSendingRemoteRtpParameters=Pa.getSendingRtpParameters=Pa.getRecvRtpCapabilities=Pa.getExtendedRtpCapabilities=Pa.validateSctpStreamParameters=Pa.validateSctpParameters=Pa.validateNumSctpStreams=Pa.validateSctpCapabilities=Pa.validateRtcpParameters=Pa.validateRtpEncodingParameters=Pa.validateRtpHeaderExtensionParameters=Pa.validateRtpCodecParameters=Pa.validateRtpParameters=Pa.validateRtpHeaderExtension=Pa.validateRtcpFeedback=Pa.validateRtpCodecCapability=Pa.validateRtpCapabilities=void 0;const Oa=Ia(ka),xa=Ia(Ta);function Ma(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)ja(t)}function ja(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 La(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 Aa(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)Na(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)Ba(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)Fa(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),Ua(e.rtcp)}function Na(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)ja(t)}function Ba(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 Fa(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 Ua(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 $a(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 za(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Va(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(!Oa.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Oa.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 qa(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Ga(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}Pa.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)Ma(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)La(t)},Pa.validateRtpCodecCapability=Ma,Pa.validateRtcpFeedback=ja,Pa.validateRtpHeaderExtension=La,Pa.validateRtpParameters=Aa,Pa.validateRtpCodecParameters=Na,Pa.validateRtpHeaderExtensionParameters=Ba,Pa.validateRtpEncodingParameters=Fa,Pa.validateRtcpParameters=Ua,Pa.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");$a(e.numStreams)},Pa.validateNumSctpStreams=$a,Pa.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")},Pa.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")},Pa.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(za(i))continue;const t=(e.codecs||[]).find((e=>Va(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:Ga(t,i)};r.codecs.push(n)}for(const i of r.codecs){const r=e.codecs.find((e=>za(e)&&e.parameters.apt===i.localPayloadType)),n=t.codecs.find((e=>za(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=>qa(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},Pa.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},Pa.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},Pa.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},Pa.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Va(e[i],t)){r.push(e[i]),za(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]),za(e[1])&&r.push(e[1]);return r},Pa.generateProbatorRtpParameters=function(e){Aa(e=xa.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},Pa.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Pa.canReceive=function(e,t){if(Aa(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Ha={},Wa={},Ka={};Object.defineProperty(Ka,"__esModule",{value:!0}),Ka.Logger=void 0;const Ja=da,Qa="awaitqueue";Ka.Logger=class{constructor(e){e?(this._debug=(0,Ja.default)(`${Qa}:${e}`),this._warn=(0,Ja.default)(`${Qa}:WARN:${e}`),this._error=(0,Ja.default)(`${Qa}:ERROR:${e}`)):(this._debug=(0,Ja.default)(Qa),this._warn=(0,Ja.default)(`${Qa}:WARN`),this._error=(0,Ja.default)(`${Qa}: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}},Object.defineProperty(Wa,"__esModule",{value:!0}),Wa.AwaitQueue=Wa.AwaitQueueRemovedTaskError=Wa.AwaitQueueStoppedError=void 0;const Za=new Ka.Logger;class Ya extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,Ya)}}Wa.AwaitQueueStoppedError=Ya;class Xa extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,Xa)}}Wa.AwaitQueueRemovedTaskError=Xa;
|
|
1
|
+
this.whereby=this.whereby||{},this.whereby.react=function(e,t){"use strict";function r(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}function i(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}}))})),Object.freeze(e)}var n=r(t);"function"==typeof SuppressedError&&SuppressedError;var s=e=>{var{muted:t,mirror:r=!1,stream:i,onResize:s,onSetAspectRatio:a}=e,o=function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}(e,["muted","mirror","stream","onResize","onSetAspectRatio"]);const c=n.useRef(null);return n.useEffect((()=>{if(!c.current)return;const e=new ResizeObserver(function(e,{delay:t=500,edges:r}={}){let i,n=0;return(...s)=>{n+=1,r&&1===n&&e(...s),clearTimeout(i),i=setTimeout((()=>{(!r||n>1)&&e(...s),i=void 0,n=0}),t)}}((()=>{if(c.current&&(null==i?void 0:i.id)){s&&s({width:c.current.clientWidth,height:c.current.clientHeight,stream:i});const e=c.current.videoHeight,t=c.current.videoWidth;a&&t&&e&&t+e>20&&a({aspectRatio:t/e})}}),{delay:1e3,edges:!0}));return e.observe(c.current),()=>{e.disconnect()}}),[i]),n.useEffect((()=>{c.current&&(c.current.srcObject!==i&&(c.current.srcObject=i),c.current.muted!==t&&(c.current.muted=Boolean(t)))}),[t,i,c]),n.createElement("video",Object.assign({ref:c,autoPlay:!0,playsInline:!0},o,{style:Object.assign({transform:r?"scaleX(-1)":"none",width:"100%",height:"100%"},o.style)}))},a=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),o=()=>Math.random().toString(36).substring(7).split("").join("."),c={INIT:`@@redux/INIT${o()}`,REPLACE:`@@redux/REPLACE${o()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${o()}`};function d(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function l(e){if(void 0===e)return"undefined";if(null===e)return"null";const t=typeof e;switch(t){case"boolean":case"string":case"number":case"symbol":case"function":return t}if(Array.isArray(e))return"array";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";const r=function(e){return"function"==typeof e.constructor?e.constructor.name:null}(e);switch(r){case"Symbol":case"Promise":case"WeakMap":case"WeakSet":case"Map":case"Set":return r}return Object.prototype.toString.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"")}function p(e){let t=typeof e;return t=l(e),t}function u(e,t,r){if("function"!=typeof e)throw new Error(`Expected the root reducer to be a function. Instead, received: '${p(e)}'`);if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.");if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(`Expected the enhancer to be a function. Instead, received: '${p(r)}'`);return r(u)(e,t)}let i=e,n=t,s=new Map,o=s,l=0,h=!1;function m(){o===s&&(o=new Map,s.forEach(((e,t)=>{o.set(t,e)})))}function f(){if(h)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return n}function g(e){if("function"!=typeof e)throw new Error(`Expected the listener to be a function. Instead, received: '${p(e)}'`);if(h)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.");let t=!0;m();const r=l++;return o.set(r,e),function(){if(t){if(h)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.");t=!1,m(),o.delete(r),s=null}}}function v(e){if(!d(e))throw new Error(`Actions must be plain objects. Instead, the actual type was: '${p(e)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');if("string"!=typeof e.type)throw new Error(`Action "type" property must be a string. Instead, the actual type was: '${p(e.type)}'. Value was: '${e.type}' (stringified)`);if(h)throw new Error("Reducers may not dispatch actions.");try{h=!0,n=i(n,e)}finally{h=!1}return(s=o).forEach((e=>{e()})),e}v({type:c.INIT});return{dispatch:v,subscribe:g,getState:f,replaceReducer:function(e){if("function"!=typeof e)throw new Error(`Expected the nextReducer to be a function. Instead, received: '${p(e)}`);i=e,v({type:c.REPLACE})},[a]:function(){const e=g;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(`Expected the observer to be an object. Instead, received: '${p(t)}'`);function r(){const e=t;e.next&&e.next(f())}r();return{unsubscribe:e(r)}},[a](){return this}}}}}function h(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function m(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const n=t[i];void 0===e[n]&&h(`No reducer provided for key "${n}"`),"function"==typeof e[n]&&(r[n]=e[n])}const i=Object.keys(r);let n,s;n={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:c.INIT}))throw new Error(`The slice reducer for key "${t}" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(void 0===r(void 0,{type:c.PROBE_UNKNOWN_ACTION()}))throw new Error(`The slice reducer for key "${t}" returned undefined when probed with a random type. Don't try to handle '${c.INIT}' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`)}))}(r)}catch(e){s=e}return function(e={},t){if(s)throw s;{const i=function(e,t,r,i){const n=Object.keys(t),s=r&&r.type===c.INIT?"preloadedState argument passed to createStore":"previous state received by the reducer";if(0===n.length)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";if(!d(e))return`The ${s} has unexpected type of "${p(e)}". Expected argument to be an object with the following keys: "${n.join('", "')}"`;const a=Object.keys(e).filter((e=>!t.hasOwnProperty(e)&&!i[e]));return a.forEach((e=>{i[e]=!0})),r&&r.type===c.REPLACE?void 0:a.length>0?`Unexpected ${a.length>1?"keys":"key"} "${a.join('", "')}" found in ${s}. Expected to find one of the known reducer keys instead: "${n.join('", "')}". Unexpected keys will be ignored.`:void 0}(e,r,t,n);i&&h(i)}let a=!1;const o={};for(let n=0;n<i.length;n++){const s=i[n],c=r[s],d=e[s],l=c(d,t);if(void 0===l){const e=t&&t.type;throw new Error(`When called with an action of type ${e?`"${String(e)}"`:"(unknown type)"}, the slice reducer for key "${s}" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`)}o[s]=l,a=a||l!==d}return a=a||i.length!==Object.keys(e).length,a?o:e}}function f(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...r)=>e(t(...r))))}function g(e){return d(e)&&"type"in e&&"string"==typeof e.type}var v=Symbol.for("immer-nothing"),_=Symbol.for("immer-draftable"),y=Symbol.for("immer-state"),b=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function w(e,...t){{const r=b[e],i="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${i}`)}}var S=Object.getPrototypeOf;function C(e){return!!e&&!!e[y]}function R(e){return!!e&&(P(e)||Array.isArray(e)||!!e[_]||!!e.constructor?.[_]||I(e)||x(e))}var T=Object.prototype.constructor.toString();function P(e){if(!e||"object"!=typeof e)return!1;const t=S(e);if(null===t)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object||"function"==typeof r&&Function.toString.call(r)===T}function k(e,t){0===D(e)?Object.entries(e).forEach((([r,i])=>{t(r,i,e)})):e.forEach(((r,i)=>t(i,r,e)))}function D(e){const t=e[y];return t?t.type_:Array.isArray(e)?1:I(e)?2:x(e)?3:0}function E(e,t){return 2===D(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function O(e,t,r){const i=D(e);2===i?e.set(t,r):3===i?e.add(r):e[t]=r}function I(e){return e instanceof Map}function x(e){return e instanceof Set}function M(e){return e.copy_||e.base_}function j(e,t){if(I(e))return new Map(e);if(x(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&P(e)){if(!S(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[y];let i=Reflect.ownKeys(r);for(let t=0;t<i.length;t++){const n=i[t],s=r[n];!1===s.writable&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(r[n]={configurable:!0,writable:!0,enumerable:s.enumerable,value:e[n]})}return Object.create(S(e),r)}function L(e,t=!1){return N(e)||C(e)||!R(e)||(D(e)>1&&(e.set=e.add=e.clear=e.delete=A),Object.freeze(e),t&&k(e,((e,t)=>L(t,!0)))),e}function A(){w(2)}function N(e){return Object.isFrozen(e)}var B,F={};function U(e){const t=F[e];return t||w(0,e),t}function $(){return B}function z(e,t){t&&(U("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function V(e){q(e),e.drafts_.forEach(W),e.drafts_=null}function q(e){e===B&&(B=e.parent_)}function G(e){return B={drafts_:[],parent_:B,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function W(e){const t=e[y];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function H(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[y].modified_&&(V(t),w(4)),R(e)&&(e=K(t,e),t.parent_||Q(t,e)),t.patches_&&U("Patches").generateReplacementPatches_(r[y].base_,e,t.patches_,t.inversePatches_)):e=K(t,r,[]),V(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==v?e:void 0}function K(e,t,r){if(N(t))return t;const i=t[y];if(!i)return k(t,((n,s)=>J(e,i,t,n,s,r))),t;if(i.scope_!==e)return t;if(!i.modified_)return Q(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let n=t,s=!1;3===i.type_&&(n=new Set(t),t.clear(),s=!0),k(n,((n,a)=>J(e,i,t,n,a,r,s))),Q(e,t,!1),r&&e.patches_&&U("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function J(e,t,r,i,n,s,a){if(n===r&&w(5),C(n)){const a=K(e,n,s&&t&&3!==t.type_&&!E(t.assigned_,i)?s.concat(i):void 0);if(O(r,i,a),!C(a))return;e.canAutoFreeze_=!1}else a&&r.add(n);if(R(n)&&!N(n)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;K(e,n),t&&t.scope_.parent_||Q(e,n)}}function Q(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&L(t,r)}var Z={get(e,t){if(t===y)return e;const r=M(e);if(!E(r,t))return function(e,t,r){const i=ee(t,r);return i?"value"in i?i.value:i.get?.call(e.draft_):void 0}(e,r,t);const i=r[t];return e.finalized_||!R(i)?i:i===X(e.base_,t)?(re(e),e.copy_[t]=ie(i,e)):i},has:(e,t)=>t in M(e),ownKeys:e=>Reflect.ownKeys(M(e)),set(e,t,r){const i=ee(M(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=X(M(e),t),a=i?.[y];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((n=r)===(s=i)?0!==n||1/n==1/s:n!=n&&s!=s)&&(void 0!==r||E(e.base_,t)))return!0;re(e),te(e)}var n,s;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==X(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,re(e),te(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=M(e),i=Reflect.getOwnPropertyDescriptor(r,t);return i?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:i.enumerable,value:r[t]}:i},defineProperty(){w(11)},getPrototypeOf:e=>S(e.base_),setPrototypeOf(){w(12)}},Y={};function X(e,t){const r=e[y];return(r?M(r):e)[t]}function ee(e,t){if(!(t in e))return;let r=S(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=S(r)}}function te(e){e.modified_||(e.modified_=!0,e.parent_&&te(e.parent_))}function re(e){e.copy_||(e.copy_=j(e.base_,e.scope_.immer_.useStrictShallowCopy_))}k(Z,((e,t)=>{Y[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),Y.deleteProperty=function(e,t){return isNaN(parseInt(t))&&w(13),Y.set.call(this,e,t,void 0)},Y.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&w(14),Z.set.call(this,e[0],t,r,e[0])};function ie(e,t){const r=I(e)?U("MapSet").proxyMap_(e,t):x(e)?U("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),i={type_:r?1:0,scope_:t?t.scope_:$(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let n=i,s=Z;r&&(n=[i],s=Y);const{revoke:a,proxy:o}=Proxy.revocable(n,s);return i.draft_=o,i.revoke_=a,o}(e,t);return(t?t.scope_:$()).drafts_.push(r),r}function ne(e){return C(e)||w(10,e),se(e)}function se(e){if(!R(e)||N(e))return e;const t=e[y];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=j(e,t.scope_.immer_.useStrictShallowCopy_)}else r=j(e,!0);return k(r,((e,t)=>{O(r,e,se(t))})),t&&(t.finalized_=!1),r}var ae=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const i=this;return function(e=r,...n){return i.produce(e,(e=>t.call(this,e,...n)))}}let i;if("function"!=typeof t&&w(6),void 0!==r&&"function"!=typeof r&&w(7),R(e)){const n=G(this),s=ie(e,void 0);let a=!0;try{i=t(s),a=!1}finally{a?V(n):q(n)}return z(n,r),H(i,n)}if(!e||"object"!=typeof e){if(i=t(e),void 0===i&&(i=e),i===v&&(i=void 0),this.autoFreeze_&&L(i,!0),r){const t=[],n=[];U("Patches").generateReplacementPatches_(e,i,t,n),r(t,n)}return i}w(1,e)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,(t=>e(t,...r)));let r,i;return[this.produce(e,t,((e,t)=>{r=e,i=t})),r,i]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){R(e)||w(8),C(e)&&(e=ne(e));const t=G(this),r=ie(e,void 0);return r[y].isManual_=!0,q(t),r}finishDraft(e,t){const r=e&&e[y];r&&r.isManual_||w(9);const{scope_:i}=r;return z(i,t),H(void 0,i)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const i=t[r];if(0===i.path.length&&"replace"===i.op){e=i.value;break}}r>-1&&(t=t.slice(r+1));const i=U("Patches").applyPatches_;return C(e)?i(e,t):this.produce(e,(e=>i(e,t)))}},oe=ae.produce;ae.produceWithPatches.bind(ae),ae.setAutoFreeze.bind(ae),ae.setUseStrictShallowCopy.bind(ae),ae.applyPatches.bind(ae),ae.createDraft.bind(ae),ae.finishDraft.bind(ae);var ce=(e,t,r)=>{if(1===t.length&&t[0]===r){let t=!1;try{const r={};e(r)===r&&(t=!0)}catch{}if(t){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("The result function returned its own inputs without modification. e.g\n`createSelector([state => state.todos], todos => todos)`\nThis could lead to inefficient memoization and unnecessary re-renders.\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.",{stack:e})}}},de=(e,t,r)=>{const{memoize:i,memoizeOptions:n}=t,{inputSelectorResults:s,inputSelectorResultsCopy:a}=e,o=i((()=>({})),...n);if(!(o.apply(null,s)===o.apply(null,a))){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("An input selector returned a different result when passed same arguments.\nThis means your output selector will likely run more frequently than intended.\nAvoid returning a new reference inside your input selector, e.g.\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`",{arguments:r,firstInputs:s,secondInputs:a,stack:e})}},le={inputStabilityCheck:"once",identityFunctionCheck:"once"};var pe=e=>Array.isArray(e)?e:[e];function ue(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every((e=>"function"==typeof e))){const r=e.map((e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e)).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function he(e,t){const r=[],{length:i}=e;for(let n=0;n<i;n++)r.push(e[n].apply(null,t));return r}var me="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},fe=0,ge=1;function ve(){return{s:fe,v:void 0,o:null,p:null}}function _e(e,t={}){let r=ve();const{resultEqualityCheck:i}=t;let n,s=0;function a(){let t=r;const{length:a}=arguments;for(let e=0,r=a;e<r;e++){const r=arguments[e];if("function"==typeof r||"object"==typeof r&&null!==r){let e=t.o;null===e&&(t.o=e=new WeakMap);const i=e.get(r);void 0===i?(t=ve(),e.set(r,t)):t=i}else{let e=t.p;null===e&&(t.p=e=new Map);const i=e.get(r);void 0===i?(t=ve(),e.set(r,t)):t=i}}const o=t;let c;if(t.s===ge?c=t.v:(c=e.apply(null,arguments),s++),o.s=ge,i){const e=n?.deref?.()??n;null!=e&&i(e,c)&&(c=e,0!==s&&s--);n="object"==typeof c&&null!==c||"function"==typeof c?new me(c):c}return o.v=c,c}return a.clearCache=()=>{r=ve(),a.resetResultsCount()},a.resultsCount=()=>s,a.resetResultsCount=()=>{s=0},a}function ye(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,i=(...e)=>{let t,i=0,n=0,s={},a=e.pop();"object"==typeof a&&(s=a,a=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(a,`createSelector expects an output function after the inputs, but received: [${typeof a}]`);const o={...r,...s},{memoize:c,memoizeOptions:d=[],argsMemoize:l=_e,argsMemoizeOptions:p=[],devModeChecks:u={}}=o,h=pe(d),m=pe(p),f=ue(e),g=c((function(){return i++,a.apply(null,arguments)}),...h);let v=!0;const _=l((function(){n++;const e=he(f,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:i}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:i}={...le,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:ce},inputStabilityCheck:{shouldRun:"always"===i||"once"===i&&e,run:de}}})(v,u);if(r.shouldRun&&r.run(a,e,t),i.shouldRun){const t=he(f,arguments);i.run({inputSelectorResults:e,inputSelectorResultsCopy:t},{memoize:c,memoizeOptions:h},arguments)}v&&(v=!1)}return t}),...m);return Object.assign(_,{resultFunc:a,memoizedResultFunc:g,dependencies:f,dependencyRecomputations:()=>n,resetDependencyRecomputations:()=>{n=0},lastResult:()=>t,recomputations:()=>i,resetRecomputations:()=>{i=0},memoize:c,argsMemoize:l})};return Object.assign(i,{withTypes:()=>i}),i}var be=ye(_e),we=Object.assign(((e,t=be)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e),i=t(r.map((t=>e[t])),((...e)=>e.reduce(((e,t,i)=>(e[r[i]]=t,e)),{})));return i}),{withTypes:()=>we});function Se(e){return({dispatch:t,getState:r})=>i=>n=>"function"==typeof n?n(t,r,e):i(n)}var Ce=Se(),Re=Se;((...e)=>{const t=ye(...e),r=Object.assign(((...e)=>{const r=t(...e),i=(e,...t)=>r(C(e)?ne(e):e,...t);return Object.assign(i,r),i}),{withTypes:()=>r})})(_e);var Te="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?f:f.apply(null,arguments)},Pe=e=>e&&"function"==typeof e.match;function ke(e,t){function r(...r){if(t){let i=t(...r);if(!i)throw new Error("prepareAction did not return an object");return{type:e,payload:i.payload,..."meta"in i&&{meta:i.meta},..."error"in i&&{error:i.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>g(t)&&t.type===e,r}function De(e){return"function"==typeof e&&"type"in e&&Pe(e)}function Ee(e,t){let r=0;return{measureTime(e){const t=Date.now();try{return e()}finally{const e=Date.now();r+=e-t}},warnIfExceeded(){r>e&&console.warn(`${t} took ${r}ms, which is more than the warning threshold of ${e}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`)}}}function Oe(e,t){for(const r of e)if(t(r))return r}var Ie=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function xe(e){return R(e)?oe(e,(()=>{})):e}function Me(e,t,r){if(e.has(t)){let i=e.get(t);return r.update&&(i=r.update(i,t,e),e.set(t,i)),i}if(!r.insert)throw new Error("No insert provided for key not already in map");const i=r.insert(t,e);return e.set(t,i),i}function je(e){return"object"!=typeof e||null==e||Object.isFrozen(e)}function Le(e,t,r){const i=Ae(e,t,r);return{detectMutations:()=>Ne(e,t,i,r)}}function Ae(e,t=[],r,i="",n=new Set){const s={value:r};if(!e(r)&&!n.has(r)){n.add(r),s.children={};for(const n in r){const a=i?i+"."+n:n;t.length&&-1!==t.indexOf(a)||(s.children[n]=Ae(e,t,r[n],a))}}return s}function Ne(e,t=[],r,i,n=!1,s=""){const a=r?r.value:void 0,o=a===i;if(n&&!o&&!Number.isNaN(i))return{wasMutated:!0,path:s};if(e(a)||e(i))return{wasMutated:!1};const c={};for(let e in r.children)c[e]=!0;for(let e in i)c[e]=!0;const d=t.length>0;for(let n in c){const a=s?s+"."+n:n;if(d){if(t.some((e=>e instanceof RegExp?e.test(a):a===e)))continue}const c=Ne(e,t,r.children[n],i[n],o,a);if(c.wasMutated)return c}return{wasMutated:!1}}function Be(e){const t=typeof e;return null==e||"string"===t||"boolean"===t||"number"===t||Array.isArray(e)||d(e)}function Fe(e,t="",r=Be,i,n=[],s){let a;if(!r(e))return{keyPath:t||"<root>",value:e};if("object"!=typeof e||null===e)return!1;if(s?.has(e))return!1;const o=null!=i?i(e):Object.entries(e),c=n.length>0;for(const[e,d]of o){const o=t?t+"."+e:e;if(c){if(n.some((e=>e instanceof RegExp?e.test(o):o===e)))continue}if(!r(d))return{keyPath:o,value:d};if("object"==typeof d&&(a=Fe(d,o,r,i,n,s),a))return a}return s&&Ue(e)&&s.add(e),!1}function Ue(e){if(!Object.isFrozen(e))return!1;for(const t of Object.values(e))if("object"==typeof t&&null!==t&&!Ue(t))return!1;return!0}function $e(e){return"boolean"==typeof e}var ze=()=>function(e){const{thunk:t=!0,immutableCheck:r=!0,serializableCheck:i=!0,actionCreatorCheck:n=!0}=e??{};let s=new Ie;if(t&&($e(t)?s.push(Ce):s.push(Re(t.extraArgument))),r){let e={};$e(r)||(e=r),s.unshift(function(e={}){{let t=function(e,t,i,n){return JSON.stringify(e,r(t,n),i)},r=function(e,t){let r=[],i=[];return t||(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,r.indexOf(t)).join(".")+"]"}),function(n,s){if(r.length>0){var a=r.indexOf(this);~a?r.splice(a+1):r.push(this),~a?i.splice(a,1/0,n):i.push(n),~r.indexOf(s)&&(s=t.call(this,n,s))}else r.push(s);return null==e?s:e.call(this,n,s)}},{isImmutable:i=je,ignoredPaths:n,warnAfter:s=32}=e;const a=Le.bind(null,i,n);return({getState:e})=>{let r,i=e(),n=a(i);return o=>c=>{const d=Ee(s,"ImmutableStateInvariantMiddleware");d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=a(i),r.wasMutated)throw new Error(`A state mutation was detected between dispatches, in the path '${r.path||""}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)}));const l=o(c);return d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=a(i),r.wasMutated)throw new Error(`A state mutation was detected inside a dispatch, in the path: ${r.path||""}. Take a look at the reducer(s) handling the action ${t(c)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)})),d.warnIfExceeded(),l}}}}(e))}if(i){let e={};$e(i)||(e=i),s.push(function(e={}){{const{isSerializable:t=Be,getEntries:r,ignoredActions:i=[],ignoredActionPaths:n=["meta.arg","meta.baseQueryMeta"],ignoredPaths:s=[],warnAfter:a=32,ignoreState:o=!1,ignoreActions:c=!1,disableCache:d=!1}=e,l=!d&&WeakSet?new WeakSet:void 0;return e=>d=>p=>{if(!g(p))return d(p);const u=d(p),h=Ee(a,"SerializableStateInvariantMiddleware");return c||i.length&&-1!==i.indexOf(p.type)||h.measureTime((()=>{const e=Fe(p,"",t,r,n,l);if(e){const{keyPath:t,value:r}=e;console.error(`A non-serializable value was detected in an action, in the path: \`${t}\`. Value:`,r,"\nTake a look at the logic that dispatched this action: ",p,"\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)","\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)")}})),o||(h.measureTime((()=>{const i=Fe(e.getState(),"",t,r,s,l);if(i){const{keyPath:e,value:t}=i;console.error(`A non-serializable value was detected in the state, in the path: \`${e}\`. Value:`,t,`\nTake a look at the reducer(s) handling this action type: ${p.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`)}})),h.warnIfExceeded()),u}}}(e))}if(n){let e={};$e(n)||(e=n),s.unshift(function(e={}){const{isActionCreator:t=De}=e;return()=>e=>r=>(t(r)&&console.warn(function(e){const t=e?`${e}`.split("/"):[],r=t[t.length-1]||"actionCreator";return`Detected an action creator with type "${e||"unknown"}" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \`dispatch(${r}())\` instead of \`dispatch(${r})\`. This is necessary even if the action has no payload.`}(r.type)),e(r))}(e))}return s},Ve=e=>t=>{setTimeout(t,e)},qe="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:Ve(10),Ge=e=>function(t){const{autoBatch:r=!0}=t??{};let i=new Ie(e);return r&&i.push(((e={type:"raf"})=>t=>(...r)=>{const i=t(...r);let n=!0,s=!1,a=!1;const o=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?qe:"callback"===e.type?e.queueNotification:Ve(e.timeout),d=()=>{a=!1,s&&(s=!1,o.forEach((e=>e())))};return Object.assign({},i,{subscribe(e){const t=i.subscribe((()=>n&&e()));return o.add(e),()=>{t(),o.delete(e)}},dispatch(e){try{return n=!e?.meta?.RTK_autoBatch,s=!n,s&&(a||(a=!0,c(d))),i.dispatch(e)}finally{n=!0}}})})("object"==typeof r?r:void 0)),i};function We(e){const t=ze(),{reducer:r,middleware:i,devTools:n=!0,preloadedState:s,enhancers:a}=e||{};let o,c;if("function"==typeof r)o=r;else{if(!d(r))throw new Error("`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers");o=m(r)}if(i&&"function"!=typeof i)throw new Error("`middleware` field must be a callback");if("function"==typeof i){if(c=i(t),!Array.isArray(c))throw new Error("when using a middleware builder function, an array of middleware must be returned")}else c=t();if(c.some((e=>"function"!=typeof e)))throw new Error("each middleware provided to configureStore must be a function");let l=f;n&&(l=Te({trace:!0,..."object"==typeof n&&n}));const p=function(...e){return t=>(r,i)=>{const n=t(r,i);let s=()=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")};const a={getState:n.getState,dispatch:(e,...t)=>s(e,...t)},o=e.map((e=>e(a)));return s=f(...o)(n.dispatch),{...n,dispatch:s}}}(...c),h=Ge(p);if(a&&"function"!=typeof a)throw new Error("`enhancers` field must be a callback");let g="function"==typeof a?a(h):h();if(!Array.isArray(g))throw new Error("`enhancers` callback must return an array");if(g.some((e=>"function"!=typeof e)))throw new Error("each enhancer provided to configureStore must be a function");c.length&&!g.includes(p)&&console.error("middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`");return u(o,s,l(...g))}function He(e){const t={},r=[];let i;const n={addCase(e,s){if(r.length>0)throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");if(i)throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");const a="string"==typeof e?e:e.type;if(!a)throw new Error("`builder.addCase` cannot be called with an empty action type");if(a in t)throw new Error(`\`builder.addCase\` cannot be called with two reducers for the same action type '${a}'`);return t[a]=s,n},addMatcher(e,t){if(i)throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");return r.push({matcher:e,reducer:t}),n},addDefaultCase(e){if(i)throw new Error("`builder.addDefaultCase` can only be called once");return i=e,n}};return e(n),[t,r,i]}var Ke=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function Je(...e){return t=>e.some((e=>((e,t)=>Pe(e)?e.match(t):e(t))(e,t)))}var Qe=["name","message","stack","code"],Ze=class{constructor(e,t){this.payload=e,this.meta=t}_type},Ye=class{constructor(e,t){this.payload=e,this.meta=t}_type},Xe=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of Qe)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},et=(()=>{function e(e,t,r){const i=ke(e+"/fulfilled",((e,t,r,i)=>({payload:e,meta:{...i||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),n=ke(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),s=ke(e+"/rejected",((e,t,i,n,s)=>({payload:n,error:(r&&r.serializeError||Xe)(e||"Rejected"),meta:{...s||{},arg:i,requestId:t,rejectedWithValue:!!n,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}})));return Object.assign((function(e){return(a,o,c)=>{const d=r?.idGenerator?r.idGenerator(e):Ke(),l=new AbortController;let p,u;function h(e){u=e,l.abort()}const m=async function(){let m;try{let s=r?.condition?.(e,{getState:o,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(s)&&(s=await s),!1===s||l.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const f=new Promise(((e,t)=>{p=()=>{t({name:"AbortError",message:u||"Aborted"})},l.signal.addEventListener("abort",p)}));a(n(d,e,r?.getPendingMeta?.({requestId:d,arg:e},{getState:o,extra:c}))),m=await Promise.race([f,Promise.resolve(t(e,{dispatch:a,getState:o,extra:c,requestId:d,signal:l.signal,abort:h,rejectWithValue:(e,t)=>new Ze(e,t),fulfillWithValue:(e,t)=>new Ye(e,t)})).then((t=>{if(t instanceof Ze)throw t;return t instanceof Ye?i(t.payload,d,e,t.meta):i(t,d,e)}))])}catch(t){m=t instanceof Ze?s(null,d,e,t.payload,t.meta):s(t,d,e)}finally{p&&l.signal.removeEventListener("abort",p)}return r&&!r.dispatchConditionRejection&&s.match(m)&&m.meta.condition||a(m),m}();return Object.assign(m,{abort:h,requestId:d,arg:e,unwrap:()=>m.then(tt)})}}),{pending:n,rejected:s,fulfilled:i,settled:Je(s,i),typePrefix:e})}return e.withTypes=()=>e,e})();function tt(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var rt=Symbol.for("rtk-slice-createasyncthunk");function it(e,t){return`${e}/${t}`}function nt({creators:e}={}){const t=e?.asyncThunk?.[rt];return function(e){const{name:r,reducerPath:i=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const n=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},s=Object.keys(n),a={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},o={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error("`context.addCase` cannot be called with an empty action type");if(r in a.sliceCaseReducersByType)throw new Error("`context.addCase` cannot be called with two reducers for the same action type: "+r);return a.sliceCaseReducersByType[r]=t,o},addMatcher:(e,t)=>(a.sliceMatchers.push({matcher:e,reducer:t}),o),exposeAction:(e,t)=>(a.actionCreators[e]=t,o),exposeCaseReducer:(e,t)=>(a.sliceCaseReducersByName[e]=t,o)};function c(){if("object"==typeof e.extraReducers)throw new Error("The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice");const[t={},r=[],i]="function"==typeof e.extraReducers?He(e.extraReducers):[e.extraReducers],n={...t,...a.sliceCaseReducersByType};return function(e,t){if("object"==typeof t)throw new Error("The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer");let r,[i,n,s]=He(t);if("function"==typeof e)r=()=>xe(e());else{const t=xe(e);r=()=>t}function a(e=r(),t){let a=[i[t.type],...n.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===a.filter((e=>!!e)).length&&(a=[s]),a.reduce(((e,r)=>{if(r){if(C(e)){const i=r(e,t);return void 0===i?e:i}if(R(e))return oe(e,(e=>r(e,t)));{const i=r(e,t);if(void 0===i){if(null===e)return e;throw new Error("A case reducer on a non-draftable value must not return undefined")}return i}}return e}),e)}return a.getInitialState=r,a}(e.initialState,(e=>{for(let t in n)e.addCase(t,n[t]);for(let t of a.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);i&&e.addDefaultCase(i)}))}s.forEach((i=>{const s=n[i],a={reducerName:i,type:it(r,i),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(s)?function({type:e,reducerName:t,createNotation:r},i,n){let s,a;if("reducer"in i){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(i))throw new Error("Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.");s=i.reducer,a=i.prepare}else s=i;n.addCase(e,s).exposeCaseReducer(t,s).exposeAction(t,a?ke(e,a):ke(e))}(a,s,o):function({type:e,reducerName:t},r,i,n){if(!n)throw new Error("Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.");const{payloadCreator:s,fulfilled:a,pending:o,rejected:c,settled:d,options:l}=r,p=n(e,s,l);i.exposeAction(t,p),a&&i.addCase(p.fulfilled,a);o&&i.addCase(p.pending,o);c&&i.addCase(p.rejected,c);d&&i.addMatcher(p.settled,d);i.exposeCaseReducer(t,{fulfilled:a||ot,pending:o||ot,rejected:c||ot,settled:d||ot})}(a,s,o,t)}));const d=e=>e,l=new Map;let p;function u(e,t){return p||(p=c()),p(e,t)}function h(){return p||(p=c()),p.getInitialState()}function m(t,r=!1){function i(e){let i=e[t];if(void 0===i){if(!r)throw new Error("selectSlice returned undefined for an uninjected slice reducer");i=h()}return i}function n(t=d){const i=Me(l,r,{insert:()=>new WeakMap});return Me(i,t,{insert:()=>{const i={};for(const[n,s]of Object.entries(e.selectors??{}))i[n]=st(s,t,h,r);return i}})}return{reducerPath:t,getSelectors:n,get selectors(){return n(i)},selectSlice:i}}const f={name:r,reducer:u,actions:a.actionCreators,caseReducers:a.sliceCaseReducersByName,getInitialState:h,...m(i),injectInto(e,{reducerPath:t,...r}={}){const n=t??i;return e.inject({reducerPath:n,reducer:u},r),{...f,...m(n,!0)}}};return f}}function st(e,t,r,i){function n(n,...s){let a=t(n);if(void 0===a){if(!i)throw new Error("selectState returned undefined for an uninjected slice reducer");a=r()}return e(a,...s)}return n.unwrapped=e,n}var at=nt();function ot(){}var ct="listener",dt="completed",lt="cancelled",pt=`task-${lt}`,ut=`task-${dt}`,ht=`${ct}-${lt}`,mt=`${ct}-${dt}`,ft=class{constructor(e){this.code=e,this.message=`task ${lt} (reason: ${e})`}name="TaskAbortError";message},gt=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},vt=()=>{},_t=(e,t=vt)=>(e.catch(t),e),yt=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),bt=(e,t)=>{const r=e.signal;r.aborted||("reason"in r||Object.defineProperty(r,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},wt=e=>{if(e.aborted){const{reason:t}=e;throw new ft(t)}};function St(e,t){let r=vt;return new Promise(((i,n)=>{const s=()=>n(new ft(e.reason));e.aborted?s():(r=yt(e,s),t.finally((()=>r())).then(i,n))})).finally((()=>{r=vt}))}var Ct=e=>t=>_t(St(e,t).then((t=>(wt(e),t)))),Rt=e=>{const t=Ct(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Tt}=Object,Pt={},kt="listenerMiddleware",Dt=(e,t)=>(r,i)=>{gt(r,"taskExecutor");const n=new AbortController;var s;s=n,yt(e,(()=>bt(s,e.reason)));const a=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof ft?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{wt(e),wt(n.signal);const t=await r({pause:Ct(n.signal),delay:Rt(n.signal),signal:n.signal});return wt(n.signal),t}),(()=>bt(n,ut)));return i?.autoJoin&&t.push(a.catch(vt)),{result:Ct(e)(a),cancel(){bt(n,pt)}}},Et=(e,t)=>(r,i)=>_t((async(r,i)=>{wt(t);let n=()=>{};const s=[new Promise(((t,i)=>{let s=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});n=()=>{s(),i()}}))];null!=i&&s.push(new Promise((e=>setTimeout(e,i,null))));try{const e=await St(t,Promise.race(s));return wt(t),e}finally{n()}})(r,i)),Ot=e=>{let{type:t,actionCreator:r,matcher:i,predicate:n,effect:s}=e;if(t)n=ke(t).match;else if(r)t=r.type,n=r.match;else if(i)n=i;else if(!n)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return gt(s,"options.listener"),{predicate:n,type:t,effect:s}},It=Object.assign((e=>{const{type:t,predicate:r,effect:i}=Ot(e);return{id:Ke(),effect:i,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>It}),xt=e=>{e.pending.forEach((e=>{bt(e,ht)}))},Mt=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},jt=Object.assign(ke(`${kt}/add`),{withTypes:()=>jt}),Lt=ke(`${kt}/removeAll`),At=Object.assign(ke(`${kt}/remove`),{withTypes:()=>At}),Nt=(...e)=>{console.error(`${kt}/error`,...e)};function Bt(){}function Ft(){Ft.init.call(this)}function Ut(e){return void 0===e._maxListeners?Ft.defaultMaxListeners:e._maxListeners}function $t(e,t,r,i){var n,s,a,o;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 Bt,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=Ut(e))&&n>0&&a.length>n){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,o=c,"function"==typeof console.warn?console.warn(o):console.log(o)}}else a=s[t]=r,++e._eventsCount;return e}function zt(e,t,r){var i=!1;function n(){e.removeListener(t,n),i||(i=!0,r.apply(e,arguments))}return n.listener=r,n}function Vt(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 qt(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Bt.prototype=Object.create(null),Ft.EventEmitter=Ft,Ft.usingDomains=!1,Ft.prototype.domain=void 0,Ft.prototype._events=void 0,Ft.prototype._maxListeners=void 0,Ft.defaultMaxListeners=10,Ft.init=function(){this.domain=null,Ft.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Bt,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ft.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Ft.prototype.getMaxListeners=function(){return Ut(this)},Ft.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 l="function"==typeof r;switch(i=arguments.length){case 1:!function(e,t,r){if(t)e.call(r);else for(var i=e.length,n=qt(e,i),s=0;s<i;++s)n[s].call(r)}(r,l,this);break;case 2:!function(e,t,r,i){if(t)e.call(r,i);else for(var n=e.length,s=qt(e,n),a=0;a<n;++a)s[a].call(r,i)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,i,n){if(t)e.call(r,i,n);else for(var s=e.length,a=qt(e,s),o=0;o<s;++o)a[o].call(r,i,n)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,i,n,s){if(t)e.call(r,i,n,s);else for(var a=e.length,o=qt(e,a),c=0;c<a;++c)o[c].call(r,i,n,s)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(n=new Array(i-1),s=1;s<i;s++)n[s-1]=arguments[s];!function(e,t,r,i){if(t)e.apply(r,i);else for(var n=e.length,s=qt(e,n),a=0;a<n;++a)s[a].apply(r,i)}(r,l,this,n)}return!0},Ft.prototype.addListener=function(e,t){return $t(this,e,t,!1)},Ft.prototype.on=Ft.prototype.addListener,Ft.prototype.prependListener=function(e,t){return $t(this,e,t,!0)},Ft.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,zt(this,e,t)),this},Ft.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,zt(this,e,t)),this},Ft.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 Bt:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=r[s].listener,n=s;break}if(n<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Bt,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},Ft.prototype.off=function(e,t){return this.removeListener(e,t)},Ft.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Bt,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Bt: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 Bt,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},Ft.prototype.listeners=function(e){var t,r,i=this._events;return r=i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[],r},Ft.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Vt.call(e,t)},Ft.prototype.listenerCount=Vt,Ft.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var Gt=Object.freeze({__proto__:null,EventEmitter:Ft,default:Ft}),Wt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Ht(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Kt(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})})),r}var Jt,Qt,Zt={},Yt={exports:{}};function Xt(){if(Qt)return Jt;Qt=1;var e=1e3,t=60*e,r=60*t,i=24*r,n=7*i,s=365.25*i;function a(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}return Jt=function(o,c){c=c||{};var d=typeof o;if("string"===d&&o.length>0)return function(a){if((a=String(a)).length>100)return;var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(a);if(!o)return;var c=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*s;case"weeks":case"week":case"w":return c*n;case"days":case"day":case"d":return c*i;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(o);if("number"===d&&isFinite(o))return c.long?function(n){var s=Math.abs(n);if(s>=i)return a(n,s,i,"day");if(s>=r)return a(n,s,r,"hour");if(s>=t)return a(n,s,t,"minute");if(s>=e)return a(n,s,e,"second");return n+" ms"}(o):function(n){var s=Math.abs(n);if(s>=i)return Math.round(n/i)+"d";if(s>=r)return Math.round(n/r)+"h";if(s>=t)return Math.round(n/t)+"m";if(s>=e)return Math.round(n/e)+"s";return n+"ms"}(o);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(o))}}var er=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.slice(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=Xt(),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=er(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Yt,Yt.exports);var tr=Yt.exports,rr={},ir={exports:{}};!function(e,t){!function(r,i){var n="function",s="undefined",a="object",o="string",c="major",d="model",l="name",p="type",u="vendor",h="version",m="architecture",f="console",g="mobile",v="tablet",_="smarttv",y="wearable",b="embedded",w="Amazon",S="Apple",C="ASUS",R="BlackBerry",T="Browser",P="Chrome",k="Firefox",D="Google",E="Huawei",O="LG",I="Microsoft",x="Motorola",M="Opera",j="Samsung",L="Sharp",A="Sony",N="Xiaomi",B="Zebra",F="Facebook",U="Chromium OS",$="Mac OS",z=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},V=function(e,t){return typeof e===o&&-1!==q(t).indexOf(q(e))},q=function(e){return e.toLowerCase()},G=function(e,t){if(typeof e===o)return e=e.replace(/^\s\s*/,""),typeof t===s?e:e.substring(0,500)},W=function(e,t){for(var r,s,o,c,d,l,p=0;p<t.length&&!d;){var u=t[p],h=t[p+1];for(r=s=0;r<u.length&&!d&&u[r];)if(d=u[r++].exec(e))for(o=0;o<h.length;o++)l=d[++s],typeof(c=h[o])===a&&c.length>0?2===c.length?typeof c[1]==n?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==n||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):i:this[c[0]]=l?c[1].call(this,l,c[2]):i:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):i):this[c]=l||i;p+=2}},H=function(e,t){for(var r in t)if(typeof t[r]===a&&t[r].length>0){for(var n=0;n<t[r].length;n++)if(V(t[r][n],e))return"?"===r?i:r}else if(V(t[r],e))return"?"===r?i:r;return e},K={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},J={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,h],[/opios[\/ ]+([\w\.]+)/i],[h,[l,M+" Mini"]],[/\bopr\/([\w\.]+)/i],[h,[l,M]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[h,[l,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[l,h],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[l,"UC"+T]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[h,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[h,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[h,[l,"Smart Lenovo "+T]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+T],h],[/\bfocus\/([\w\.]+)/i],[h,[l,k+" Focus"]],[/\bopt\/([\w\.]+)/i],[h,[l,M+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[l,M+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[l,"MIUI "+T]],[/fxios\/([-\w\.]+)/i],[h,[l,k]],[/\bqihu|(qi?ho?o?|360)browser/i],[[l,"360 "+T]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1 "+T],h],[/samsungbrowser\/([\w\.]+)/i],[h,[l,j+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[l,/_/g," "],h],[/metasr[\/ ]?([\d\.]+)/i],[h,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[l,h],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,F],h],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[l,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[h,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[l,P+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,P+" WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[l,"Android "+T]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,h],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[h,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[h,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[h,H,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[l,k+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[l,h],[/(cobalt)\/([\w\.]+)/i],[l,[h,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[m,"amd64"]],[/(ia32(?=;))/i],[[m,q]],[/((?:i[346]|x)86)[;\)]/i],[[m,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/windows (ce|mobile); ppc;/i],[[m,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[m,/ower/,"",q]],[/(sun4\w)[;\)]/i],[[m,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[m,q]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[d,[u,j],[p,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[d,[u,j],[p,g]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[d,[u,S],[p,g]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[d,[u,S],[p,v]],[/(macintosh);/i],[d,[u,S]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[d,[u,L],[p,g]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[d,[u,E],[p,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[d,[u,E],[p,g]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,g]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[d,[u,"OPPO"],[p,g]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[d,[u,"Vivo"],[p,g]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[d,[u,"Realme"],[p,g]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[d,[u,x],[p,g]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[d,[u,x],[p,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[d,[u,O],[p,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[d,[u,O],[p,g]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[d,[u,"Lenovo"],[p,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[d,/_/g," "],[u,"Nokia"],[p,g]],[/(pixel c)\b/i],[d,[u,D],[p,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[d,[u,D],[p,g]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[d,[u,A],[p,g]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[d,"Xperia Tablet"],[u,A],[p,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[d,[u,"OnePlus"],[p,g]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[d,[u,w],[p,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[d,/(.+)/g,"Fire Phone $1"],[u,w],[p,g]],[/(playbook);[-\w\),; ]+(rim)/i],[d,u,[p,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[d,[u,R],[p,g]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[d,[u,C],[p,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[d,[u,C],[p,g]],[/(nexus 9)/i],[d,[u,"HTC"],[p,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[u,[d,/_/g," "],[p,g]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[d,[u,"Acer"],[p,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[d,[u,"Meizu"],[p,g]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[d,[u,"Ulefone"],[p,g]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[u,d,[p,g]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[u,d,[p,v]],[/(surface duo)/i],[d,[u,I],[p,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[d,[u,"Fairphone"],[p,g]],[/(u304aa)/i],[d,[u,"AT&T"],[p,g]],[/\bsie-(\w*)/i],[d,[u,"Siemens"],[p,g]],[/\b(rct\w+) b/i],[d,[u,"RCA"],[p,v]],[/\b(venue[\d ]{2,7}) b/i],[d,[u,"Dell"],[p,v]],[/\b(q(?:mv|ta)\w+) b/i],[d,[u,"Verizon"],[p,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[d,[u,"Barnes & Noble"],[p,v]],[/\b(tm\d{3}\w+) b/i],[d,[u,"NuVision"],[p,v]],[/\b(k88) b/i],[d,[u,"ZTE"],[p,v]],[/\b(nx\d{3}j) b/i],[d,[u,"ZTE"],[p,g]],[/\b(gen\d{3}) b.+49h/i],[d,[u,"Swiss"],[p,g]],[/\b(zur\d{3}) b/i],[d,[u,"Swiss"],[p,v]],[/\b((zeki)?tb.*\b) b/i],[d,[u,"Zeki"],[p,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[u,"Dragon Touch"],d,[p,v]],[/\b(ns-?\w{0,9}) b/i],[d,[u,"Insignia"],[p,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[d,[u,"NextBook"],[p,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[u,"Voice"],d,[p,g]],[/\b(lvtel\-)?(v1[12]) b/i],[[u,"LvTel"],d,[p,g]],[/\b(ph-1) /i],[d,[u,"Essential"],[p,g]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[d,[u,"Envizen"],[p,v]],[/\b(trio[-\w\. ]+) b/i],[d,[u,"MachSpeed"],[p,v]],[/\btu_(1491) b/i],[d,[u,"Rotor"],[p,v]],[/(shield[\w ]+) b/i],[d,[u,"Nvidia"],[p,v]],[/(sprint) (\w+)/i],[u,d,[p,g]],[/(kin\.[onetw]{3})/i],[[d,/\./g," "],[u,I],[p,g]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[d,[u,B],[p,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[d,[u,B],[p,g]],[/smart-tv.+(samsung)/i],[u,[p,_]],[/hbbtv.+maple;(\d+)/i],[[d,/^/,"SmartTV"],[u,j],[p,_]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[u,O],[p,_]],[/(apple) ?tv/i],[u,[d,S+" TV"],[p,_]],[/crkey/i],[[d,P+"cast"],[u,D],[p,_]],[/droid.+aft(\w+)( bui|\))/i],[d,[u,w],[p,_]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[d,[u,L],[p,_]],[/(bravia[\w ]+)( bui|\))/i],[d,[u,A],[p,_]],[/(mitv-\w{5}) bui/i],[d,[u,N],[p,_]],[/Hbbtv.*(technisat) (.*);/i],[u,d,[p,_]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[u,G],[d,G],[p,_]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,_]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[u,d,[p,f]],[/droid.+; (shield) bui/i],[d,[u,"Nvidia"],[p,f]],[/(playstation [345portablevi]+)/i],[d,[u,A],[p,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[d,[u,I],[p,f]],[/((pebble))app/i],[u,d,[p,y]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[d,[u,S],[p,y]],[/droid.+; (glass) \d/i],[d,[u,D],[p,y]],[/droid.+; (wt63?0{2,3})\)/i],[d,[u,B],[p,y]],[/(quest( 2| pro)?)/i],[d,[u,F],[p,y]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[u,[p,b]],[/(aeobc)\b/i],[d,[u,w],[p,b]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[d,[p,g]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[d,[p,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,g]],[/(android[-\w\. ]{0,9});.+buil/i],[d,[u,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[l,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[l,h],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,h],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[l,[h,H,K]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,H,K],[l,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,$],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[h,l],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[l,h],[/\(bb(10);/i],[h,[l,R]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[h,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[l,k+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[h,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[h,[l,P+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,U],h],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,h],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,h]]},Q=function(e,t){if(typeof e===a&&(t=e,e=i),!(this instanceof Q))return new Q(e,t).getResult();var f=typeof r!==s&&r.navigator?r.navigator:i,_=e||(f&&f.userAgent?f.userAgent:""),y=f&&f.userAgentData?f.userAgentData:i,b=t?function(e,t){var r={};for(var i in e)t[i]&&t[i].length%2==0?r[i]=t[i].concat(e[i]):r[i]=e[i];return r}(J,t):J,w=f&&f.userAgent==_;return this.getBrowser=function(){var e,t={};return t[l]=i,t[h]=i,W.call(t,_,b.browser),t[c]=typeof(e=t[h])===o?e.replace(/[^\d\.]/g,"").split(".")[0]:i,w&&f&&f.brave&&typeof f.brave.isBrave==n&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[m]=i,W.call(e,_,b.cpu),e},this.getDevice=function(){var e={};return e[u]=i,e[d]=i,e[p]=i,W.call(e,_,b.device),w&&!e[p]&&y&&y.mobile&&(e[p]=g),w&&"Macintosh"==e[d]&&f&&typeof f.standalone!==s&&f.maxTouchPoints&&f.maxTouchPoints>2&&(e[d]="iPad",e[p]=v),e},this.getEngine=function(){var e={};return e[l]=i,e[h]=i,W.call(e,_,b.engine),e},this.getOS=function(){var e={};return e[l]=i,e[h]=i,W.call(e,_,b.os),w&&!e[l]&&y&&"Unknown"!=y.platform&&(e[l]=y.platform.replace(/chrome os/i,U).replace(/macos/i,$)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return _},this.setUA=function(e){return _=typeof e===o&&e.length>500?G(e,500):e,this},this.setUA(_),this};Q.VERSION="1.0.37",Q.BROWSER=z([l,h,c]),Q.CPU=z([m]),Q.DEVICE=z([d,u,p,f,g,_,v,y,b]),Q.ENGINE=Q.OS=z([l,h]),e.exports&&(t=e.exports=Q),t.UAParser=Q;var Z=typeof r!==s&&(r.jQuery||r.Zepto);if(Z&&!Z.ua){var Y=new Q;Z.ua=Y.getResult(),Z.ua.get=function(){return Y.getUA()},Z.ua.set=function(e){Y.setUA(e);var t=Y.getResult();for(var r in t)Z.ua[r]=t[r]}}}("object"==typeof window?window:Wt)}(ir,ir.exports);var nr=ir.exports,sr={},ar=Wt&&Wt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(sr,"__esModule",{value:!0}),sr.Logger=void 0;const or=ar(tr),cr="mediasoup-client";sr.Logger=class{constructor(e){e?(this._debug=(0,or.default)(`${cr}:${e}`),this._warn=(0,or.default)(`${cr}:WARN:${e}`),this._error=(0,or.default)(`${cr}:ERROR:${e}`)):(this._debug=(0,or.default)(cr),this._warn=(0,or.default)(`${cr}:WARN`),this._error=(0,or.default)(`${cr}: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 dr={},lr=Kt(Gt);Object.defineProperty(dr,"__esModule",{value:!0}),dr.EnhancedEventEmitter=void 0;const pr=lr,ur=new sr.Logger("EnhancedEventEmitter");class hr extends pr.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}emit(e,...t){return super.emit(e,...t)}safeEmit(e,...t){const r=super.listenerCount(e);try{return super.emit(e,...t)}catch(t){return ur.error("safeEmit() | event listener threw an error [eventName:%s]:%o",e,t),Boolean(r)}}on(e,t){return super.on(e,t),this}off(e,t){return super.off(e,t),this}addListener(e,t){return super.on(e,t),this}prependListener(e,t){return super.prependListener(e,t),this}once(e,t){return super.once(e,t),this}prependOnceListener(e,t){return super.prependOnceListener(e,t),this}removeListener(e,t){return super.off(e,t),this}removeAllListeners(e){return super.removeAllListeners(e),this}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}rawListeners(e){return super.rawListeners(e)}}dr.EnhancedEventEmitter=hr;var mr={};Object.defineProperty(mr,"__esModule",{value:!0}),mr.InvalidStateError=mr.UnsupportedError=void 0;class fr extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,fr):this.stack=new Error(e).stack}}mr.UnsupportedError=fr;class gr extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,gr):this.stack=new Error(e).stack}}mr.InvalidStateError=gr;var vr={};Object.defineProperty(vr,"__esModule",{value:!0}),vr.generateRandomNumber=vr.clone=void 0,vr.clone=function(e,t){return void 0===e?t:JSON.parse(JSON.stringify(e))},vr.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var _r={},yr={};!function(e){const t=tr("h264-profile-level-id"),r=tr("h264-profile-level-id:WARN");t.log=console.info.bind(console),r.log=console.warn.bind(console);e.ProfileConstrainedBaseline=1,e.ProfileBaseline=2,e.ProfileMain=3,e.ProfileConstrainedHigh=4,e.ProfileHigh=5,e.ProfilePredictiveHigh444=6;const i=0,n=10;e.Level1_b=i,e.Level1=n,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 s{constructor(e,t){this.profile=e,this.level=t}}e.ProfileLevelId=s;class a{constructor(e){this._mask=~d("x",e),this._maskedValue=d("1",e)}isMatch(e){return this._maskedValue===(e&this._mask)}}class o{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const c=[new o(66,new a("x1xx0000"),1),new o(77,new a("1xxx0000"),1),new o(88,new a("11xx0000"),1),new o(66,new a("x0xx0000"),2),new o(88,new a("10xx0000"),2),new o(77,new a("0x0x0000"),3),new o(100,new a("00000000"),5),new o(100,new a("00001100"),4),new o(244,new a("00000000"),6)];function d(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 l(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 t=parseInt(e,16);if(0===t)return null;const a=255&t,o=t>>8&255,d=t>>16&255;let l;switch(a){case 11:l=0!=(16&o)?i:11;break;case n: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:l=a;break;default:return r(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${a}]`),null}for(const e of c)if(d===e.profile_idc&&e.profile_iop.isMatch(o))return new s(e.profile,l);return r(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${d}, profile_iop:${o}]`),null},e.profileLevelIdToString=function(e){if(e.level==i)switch(e.profile){case 1:return"42f00b";case 2:return"42100b";case 3:return"4d100b";default:return r(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`),null}let t;switch(e.profile){case 1:t="42e0";break;case 2:t="4200";break;case 3:t="4d00";break;case 4:t="640c";break;case 5:t="6400";break;case 6:t="f400";break;default:return r(`profileLevelIdToString() | unrecognized profile ${e.profile}`),null}let n=e.level.toString(16);return 1===n.length&&(n=`0${n}`),`${t}${n}`},e.profileToString=function(e){switch(e){case 1:return"ConstrainedBaseline";case 2:return"Baseline";case 3:return"Main";case 4:return"ConstrainedHigh";case 5:return"High";case 6:return"PredictiveHigh444";default:return r(`profileToString() | unrecognized profile ${e}`),null}},e.levelToString=function(e){switch(e){case i:return"1b";case n:return"1";case 11:return"1.1";case 12:return"1.2";case 13:return"1.3";case 20:return"2";case 21:return"2.1";case 22:return"2.2";case 30:return"3";case 31:return"3.1";case 32:return"3.2";case 40:return"4";case 41:return"4.1";case 42:return"4.2";case 50:return"5";case 51:return"5.1";case 52:return"5.2";default:return r(`levelToString() | unrecognized level ${e}`),null}},e.parseSdpProfileLevelId=function(t={}){const r=new s(1,31),i=t["profile-level-id"];return i?e.parseProfileLevelId(i):r},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(a={},o={}){if(!a["profile-level-id"]&&!o["profile-level-id"])return r("generateProfileLevelIdForAnswer() | profile-level-id missing in local and remote params"),null;const c=e.parseSdpProfileLevelId(a),d=e.parseSdpProfileLevelId(o);if(!c)throw new TypeError("invalid local_profile_level_id");if(!d)throw new TypeError("invalid remote_profile_level_id");if(c.profile!==d.profile)throw new TypeError("H264 Profile mismatch");const p=l(a)&&l(o),u=c.level,h=d.level,m=function(e,t){return e===i?t!==n&&t!==i:t===i?e!==n:e<t}(f=u,g=h)?f:g;var f,g;const v=p?u:m;return t(`generateProfileLevelIdForAnswer() | result [profile:${c.profile}, level:${v}]`),e.profileLevelIdToString(new s(c.profile,v))}}(yr);var br=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),wr=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Sr=Wt&&Wt.__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(_r,"__esModule",{value:!0}),_r.canReceive=_r.canSend=_r.generateProbatorRtpParameters=_r.reduceCodecs=_r.getSendingRemoteRtpParameters=_r.getSendingRtpParameters=_r.getRecvRtpCapabilities=_r.getExtendedRtpCapabilities=_r.validateSctpStreamParameters=_r.validateSctpParameters=_r.validateNumSctpStreams=_r.validateSctpCapabilities=_r.validateRtcpParameters=_r.validateRtpEncodingParameters=_r.validateRtpHeaderExtensionParameters=_r.validateRtpCodecParameters=_r.validateRtpParameters=_r.validateRtpHeaderExtension=_r.validateRtcpFeedback=_r.validateRtpCodecCapability=_r.validateRtpCapabilities=void 0;const Cr=Sr(yr),Rr=Sr(vr);function Tr(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)Pr(t)}function Pr(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 kr(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 Dr(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)Er(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)Or(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)Ir(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),xr(e.rtcp)}function Er(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)Pr(t)}function Or(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 Ir(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 xr(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 Mr(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 jr(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Lr(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(!Cr.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Cr.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 Ar(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Nr(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}_r.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)Tr(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)kr(t)},_r.validateRtpCodecCapability=Tr,_r.validateRtcpFeedback=Pr,_r.validateRtpHeaderExtension=kr,_r.validateRtpParameters=Dr,_r.validateRtpCodecParameters=Er,_r.validateRtpHeaderExtensionParameters=Or,_r.validateRtpEncodingParameters=Ir,_r.validateRtcpParameters=xr,_r.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");Mr(e.numStreams)},_r.validateNumSctpStreams=Mr,_r.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")},_r.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")},_r.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(jr(i))continue;const t=(e.codecs||[]).find((e=>Lr(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:Nr(t,i)};r.codecs.push(n)}for(const i of r.codecs){const r=e.codecs.find((e=>jr(e)&&e.parameters.apt===i.localPayloadType)),n=t.codecs.find((e=>jr(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=>Ar(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},_r.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},_r.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},_r.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},_r.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Lr(e[i],t)){r.push(e[i]),jr(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]),jr(e[1])&&r.push(e[1]);return r},_r.generateProbatorRtpParameters=function(e){Dr(e=Rr.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},_r.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},_r.canReceive=function(e,t){if(Dr(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Br={},Fr={},Ur={};Object.defineProperty(Ur,"__esModule",{value:!0}),Ur.Logger=void 0;const $r=tr,zr="awaitqueue";Ur.Logger=class{constructor(e){e?(this._debug=(0,$r.default)(`${zr}:${e}`),this._warn=(0,$r.default)(`${zr}:WARN:${e}`),this._error=(0,$r.default)(`${zr}:ERROR:${e}`)):(this._debug=(0,$r.default)(zr),this._warn=(0,$r.default)(`${zr}:WARN`),this._error=(0,$r.default)(`${zr}: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}},Object.defineProperty(Fr,"__esModule",{value:!0}),Fr.AwaitQueue=Fr.AwaitQueueRemovedTaskError=Fr.AwaitQueueStoppedError=void 0;const Vr=new Ur.Logger;class qr extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,qr)}}Fr.AwaitQueueStoppedError=qr;class Gr extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,Gr)}}Fr.AwaitQueueRemovedTaskError=Gr;
|
|
2
2
|
/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
|
3
|
-
let eo;Wa.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,Za.debug(`push() [name:${t}]`),"function"!=typeof e)throw new TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const n={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(n.completed)return;n.completed=!0,this.pendingTasks.delete(n.id),Za.debug(`resolving task [name:${n.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!n.completed&&(n.completed=!0,this.pendingTasks.delete(n.id),Za.debug(`rejecting task [name:${n.name}]: %s`,String(e)),i(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(n.id,n),1===this.pendingTasks.size&&this.execute(n)}))}stop(){Za.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())Za.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new Ya);this.stopping=!1}remove(e){Za.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new Xa):Za.debug(`stop() | no task with given idx [taskIdx:${e}]`)}dump(){const e=Date.now();let t=0;return Array.from(this.pendingTasks.values()).map((r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0})))}async execute(e){if(Za.debug(`execute() [name:${e.name}]`),e.executedAt)throw new Error("task already being executed");e.executedAt=Date.now();try{const t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}};var to="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:Yi):e=>(eo||(eo=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),ro={};Object.defineProperty(ro,"__esModule",{value:!0}),ro.Producer=void 0;const io=va,no=Sa,so=new ha.Logger("Producer");class ao extends io.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 io.EnhancedEventEmitter,so.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){this._appData=e}get observer(){return this._observer}close(){this._closed||(so.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(so.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new no.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){so.debug("pause()"),this._closed?so.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@pause",e,t)})).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){so.debug("resume()"),this._closed?so.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@resume",e,t)})).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(so.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new no.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new no.InvalidStateError("track ended");e!==this._track?(await new Promise(((t,r)=>{this.safeEmit("@replacetrack",e,t,r)})),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()):so.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new no.InvalidStateError("closed");if("video"!==this._kind)throw new no.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise(((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)})).catch((()=>{})),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new no.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){so.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){}}}ro.Producer=ao;var oo={};Object.defineProperty(oo,"__esModule",{value:!0}),oo.Consumer=void 0;const co=va,lo=Sa,po=new ha.Logger("Consumer");class uo extends co.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:n,rtpParameters:s,appData:a}){super(),this._closed=!1,this._observer=new co.EnhancedEventEmitter,po.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){this._appData=e}get observer(){return this._observer}close(){this._closed||(po.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(po.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new lo.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){po.debug("pause()"),this._closed?po.error("pause() | Consumer closed"):this._paused?po.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){po.debug("resume()"),this._closed?po.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):po.debug("resume() | Consumer is already resumed")}onTrackEnded(){po.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){}}}oo.Consumer=uo;var ho={};Object.defineProperty(ho,"__esModule",{value:!0}),ho.DataProducer=void 0;const mo=va,fo=Sa,go=new ha.Logger("DataProducer");class vo extends mo.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new mo.EnhancedEventEmitter,go.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){this._appData=e}get observer(){return this._observer}close(){this._closed||(go.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(go.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(go.debug("send()"),this._closed)throw new fo.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(go.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?go.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):go.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(go.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||go.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}ho.DataProducer=vo;var _o={};Object.defineProperty(_o,"__esModule",{value:!0}),_o.DataConsumer=void 0;const yo=va,bo=new ha.Logger("DataConsumer");class wo extends yo.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:n}){super(),this._closed=!1,this._observer=new yo.EnhancedEventEmitter,bo.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){this._appData=e}get observer(){return this._observer}close(){this._closed||(bo.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(bo.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(bo.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?bo.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):bo.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(bo.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}_o.DataConsumer=wo;var So=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Co=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ro=Yi&&Yi.__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)&&So(t,e,r);return Co(t,e),t},To=Yi&&Yi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ha,"__esModule",{value:!0}),Ha.Transport=void 0;const Po=Wa,ko=To(to),Do=ha,Eo=va,Io=Sa,Oo=Ro(Ta),xo=Ro(Pa),Mo=ro,jo=oo,Lo=ho,Ao=_o,No=new Do.Logger("Transport");class Bo{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}class Fo extends Eo.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:p,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,this._iceGatheringState="new",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 Po.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new Eo.EnhancedEventEmitter,No.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=Oo.clone(c,{})).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=p(),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=l||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){No.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed";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 Io.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(No.debug("restartIce()"),this._closed)throw new Io.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>await this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(No.debug("updateIceServers()"),this._closed)throw new Io.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(No.debug("produce() [track:%o]",e),this._closed)throw new Io.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new Io.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new Io.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new Io.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:l,rtpSender:p}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{xo.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:o},t,r)})),r=new Mo.Producer({id:t,localId:d,rtpSender:p,track:e,rtpParameters:l,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,streamId:n,appData:s={}}){if(No.debug("consume()"),i=Oo.clone(i,void 0),this._closed)throw new Io.InvalidStateError("closed");if("recv"!==this._direction)throw new Io.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");if(!xo.canReceive(i,this._extendedRtpCapabilities))throw new Io.UnsupportedError("cannot consume this Producer");const a=new Bo({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s});return this._pendingConsumerTasks.push(a),(0,ko.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),a.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:n="",appData:s={}}={}){if(No.debug("produceData()"),this._closed)throw new Io.InvalidStateError("closed");if("send"!==this._direction)throw new Io.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new Io.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});xo.validateSctpStreamParameters(o);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:o,label:i,protocol:n,appData:s},e,t)})),d=new Lo.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(No.debug("consumeData()"),r=Oo.clone(r,void 0),this._closed)throw new Io.InvalidStateError("closed");if("recv"!==this._direction)throw new Io.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new Io.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 xo.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:n}),o=new Ao.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._consumerCreationInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingConsumerTasks.length)return void No.debug("createPendingConsumers() | there is no Consumer to be created");const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:i,rtpParameters:n,streamId:s}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:n,streamId:s})}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:l}=n.consumerOptions,{localId:p,rtpReceiver:u,track:h}=s,m=new jo.Consumer({id:a,localId:p,producerId:o,rtpReceiver:u,track:h,rtpParameters:d,appData:l});this._consumers.set(m.id,m),this.handleConsumer(m),this._probatorConsumerCreated||t||"video"!==c||(t=m),this._observer.safeEmit("newconsumer",m),n.resolve(m)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=xo.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),No.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){No.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}}),"transport.createPendingConsumers()").then((()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()})).catch((()=>{}))}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingPauseConsumers.size)return void No.debug("pausePendingConsumers() | there is no Consumer to be paused");const e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.pauseReceiving(t)}catch(e){No.error("pausePendingConsumers() | failed to pause Consumers:",e)}}),"transport.pausePendingConsumers").then((()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()})).catch((()=>{}))}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingResumeConsumers.size)return void No.debug("resumePendingConsumers() | there is no Consumer to be resumed");const e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.resumeReceiving(t)}catch(e){No.error("resumePendingConsumers() | failed to resume Consumers:",e)}}),"transport.resumePendingConsumers").then((()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()})).catch((()=>{}))}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingCloseConsumers.size)return void No.debug("closePendingConsumers() | there is no Consumer to be closed");const e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map((e=>e.localId)))}catch(e){No.error("closePendingConsumers() | failed to close Consumers:",e)}}),"transport.closePendingConsumers").then((()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()})).catch((()=>{}))}handleHandler(){const e=this._handler;e.on("@connect",(({dtlsParameters:e},t,r)=>{this._closed?r(new Io.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(No.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(No.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()=>await this._handler.stopSending(e.localId)),"producer @close event").catch((e=>No.warn("producer.close() failed:%o",e)))})),e.on("@pause",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.pauseSending(e.localId)),"producer @pause event").then(t).catch(r)})),e.on("@resume",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.resumeSending(e.localId)),"producer @resume event").then(t).catch(r)})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Io.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())})),e.on("@pause",(()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,ko.default)((()=>{this._closed||!1===this._consumerPauseInProgress&&this.pausePendingConsumers()}))})),e.on("@resume",(()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,ko.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Io.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)}))}}Ha.Transport=Fo;var Uo={},$o={},zo=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Vo=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),qo=Yi&&Yi.__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)&&zo(t,e,r);return Vo(t,e),t};Object.defineProperty($o,"__esModule",{value:!0}),$o.applyCodecParameters=$o.getCname=$o.extractDtlsParameters=$o.extractRtpCapabilities=void 0;const Go=qo(In);$o.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=Go.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 r of s.rtcpFb||[]){const i={type:r.type,parameter:r.subtype};if(i.parameter||delete i.parameter,"*"!==r.payload){const e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(i)}else for(const r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||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}},$o.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,i=e.fingerprint;if(!r||!i){const t=(e.media||[]).find((e=>0!==e.port));t&&(r??(r=t.setup),i??(i=t.fingerprint))}if(!r)throw new Error("no a=setup found at SDP session or media level");if(!i)throw new Error("no a=fingerprint found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:i.type,value:i.hash}]}},$o.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},$o.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=Go.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 Ho={};Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.addLegacySimulcast=Ho.getRtpEncodings=void 0,Ho.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},Ho.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=[],l=[];for(let e=0;e<t;++e)d.push(s+e),a&&l.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<l.length;++t){const r=d[t],s=l[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 Wo={};Object.defineProperty(Wo,"__esModule",{value:!0}),Wo.addNackSuppportForOpus=void 0,Wo.addNackSuppportForOpus=function(e){for(const t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some((e=>"nack"===e.type&&!e.parameter))||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))};var Ko={};Object.defineProperty(Ko,"__esModule",{value:!0}),Ko.HandlerInterface=void 0;const Jo=va;class Qo extends Jo.EnhancedEventEmitter{constructor(){super()}}Ko.HandlerInterface=Qo;var Zo={},Yo={},Xo=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ec=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tc=Yi&&Yi.__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)&&Xo(t,e,r);return ec(t,e),t};Object.defineProperty(Yo,"__esModule",{value:!0}),Yo.OfferMediaSection=Yo.AnswerMediaSection=Yo.MediaSection=void 0;const rc=tc(In),ic=tc(Ta);class nc{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}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),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}close(){this.disable(),this._mediaObject.port=0}}Yo.MediaSection=nc;Yo.AnswerMediaSection=class extends nc{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!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:sc(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=ic.clone(e.parameters,{});let i=ic.clone(e.rtcpFeedback,[]);if(d){const{opusStereo:t,opusFec:n,opusDtx:s,opusMaxPlaybackRate:a,opusMaxAverageBitrate:c,opusPtime:l,opusNack:p,videoGoogleStartBitrate:u,videoGoogleMaxBitrate:h,videoGoogleMinBitrate:m}=d,f=o.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(f.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==n&&(f.parameters.useinbandfec=n?1:0,r.useinbandfec=n?1:0),void 0!==s&&(f.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==a&&(r.maxplaybackrate=a),void 0!==c&&(r.maxaveragebitrate=c),void 0!==l&&(f.parameters.ptime=l,r.ptime=l),p||(f.rtcpFeedback=f.rtcpFeedback.filter((e=>"nack"!==e.type||e.parameter)),i=i.filter((e=>"nack"!==e.type||e.parameter)));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==u&&(r["x-google-start-bitrate"]=u),void 0!==h&&(r["x-google-max-bitrate"]=h),void 0!==m&&(r["x-google-min-bitrate"]=m)}}const n={payload:e.payloadType,config:""};for(const e of Object.keys(r))n.config&&(n.config+=";"),n.config+=`${e}=${r[e]}`;n.config&&this._mediaObject.fmtp.push(n);for(const t of i)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(l&&"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"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;const t={};for(const r of e)r.rid&&(t[r.rid]=r);const r=this._mediaObject.simulcast.list1,i=rc.parseSimulcastStreamList(r);for(const e of i)for(const r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=i.map((e=>e.map((e=>`${e.paused?"~":""}${e.scid}`)).join(","))).join(";")}};function sc(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Yo.OfferMediaSection=class extends nc{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:p=!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||"-"} ${l}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:sc(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||"-"} ${l}`}),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||"-"} ${l}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":p?(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"}resume(){this._mediaObject.direction="sendonly"}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:sc(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 ac=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),oc=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cc=Yi&&Yi.__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)&&ac(t,e,r);return oc(t,e),t};Object.defineProperty(Zo,"__esModule",{value:!0}),Zo.RemoteSdp=void 0;const dc=cc(In),lc=Yo,pc=new ha.Logger("RemoteSdp");Zo.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){pc.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){pc.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 lc.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 lc.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)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){const t=this._findMediaSection(e);return e===this._firstMid?(pc.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){const r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){const t=new lc.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 lc.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++,dc.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()}}_findMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var uc={};Object.defineProperty(uc,"__esModule",{value:!0}),uc.parse=void 0;const hc=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");uc.parse=function(e){const t=hc.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var mc=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),fc=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),gc=Yi&&Yi.__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)&&mc(t,e,r);return fc(t,e),t};Object.defineProperty(Uo,"__esModule",{value:!0});var vc=Uo.Chrome111=void 0;const _c=gc(In),yc=ha,bc=gc(Ta),wc=gc(Pa),Sc=gc($o),Cc=gc(Ho),Rc=gc(Wo),Tc=Sa,Pc=Ko,kc=Zo,Dc=uc,Ec=new yc.Logger("Chrome111"),Ic={OS:1024,MIS:1024};class Oc extends Pc.HandlerInterface{static createFactory(){return()=>new Oc}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(Ec.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Ec.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=_c.parse(t.sdp),i=Sc.extractRtpCapabilities({sdpObject:r});return Rc.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ec.debug("getNativeSctpCapabilities()"),{numStreams:Ic}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Ec.debug("run()"),this._direction=e,this._remoteSdp=new kc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:wc.getSendingRtpParameters("audio",d),video:wc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:wc.getSendingRemoteRtpParameters("audio",d),video:wc.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Ec.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){this.assertNotClosed(),Ec.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Ec.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ec.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ec.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){if(this.assertNotClosed(),this.assertSendDirection(),Ec.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,Dc.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const i of t)i.rid="r"+e++,i.scalabilityMode=`L1T${r}`}const n=bc.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=wc.reduceCodecs(n.codecs,i);const s=bc.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=wc.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=_c.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),Ec.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=o.mid;n.mid=l,d=_c.parse(this._pc.localDescription.sdp);const p=d.media[a.idx];if(n.rtcp.cname=Sc.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Cc.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=Cc.getRtpEncodings({offerMediaObject:p});this._remoteSdp.send({offerMediaObject:p,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return Ec.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Ec.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Ec.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Ec.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Ec.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Ec.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Ec.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Ec.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ec.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.assertNotClosed(),this.assertSendDirection(),Ec.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Ec.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Ec.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Ec.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Ec.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ic.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=_c.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ec.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()};Ec.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Ec.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=_c.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Sc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:_c.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Ec.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Ec.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ec.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Ec.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ec.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Ec.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ec.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),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.assertNotClosed(),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};Ec.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()};Ec.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=_c.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ec.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=_c.parse(this._pc.localDescription.sdp));const r=Sc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Tc.InvalidStateError("method called in a closed handler")}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')}}vc=Uo.Chrome111=Oc;var xc={},Mc=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),jc=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Lc=Yi&&Yi.__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)&&Mc(t,e,r);return jc(t,e),t};Object.defineProperty(xc,"__esModule",{value:!0}),xc.Chrome74=void 0;const Ac=Lc(In),Nc=ha,Bc=Lc(Ta),Fc=Lc(Pa),Uc=Lc($o),$c=Lc(Ho),zc=Lc(Wo),Vc=Sa,qc=Ko,Gc=Zo,Hc=uc,Wc=new Nc.Logger("Chrome74"),Kc={OS:1024,MIS:1024};class Jc extends qc.HandlerInterface{static createFactory(){return()=>new Jc}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(Wc.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Wc.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=Ac.parse(t.sdp),i=Uc.extractRtpCapabilities({sdpObject:r});return zc.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Wc.debug("getNativeSctpCapabilities()"),{numStreams:Kc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Wc.debug("run()"),this._direction=e,this._remoteSdp=new Gc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Fc.getSendingRtpParameters("audio",d),video:Fc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Fc.getSendingRemoteRtpParameters("audio",d),video:Fc.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Wc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){this.assertNotClosed(),Wc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Wc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Wc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Wc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Wc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Wc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Wc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=Bc.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Fc.reduceCodecs(n.codecs,i);const s=Bc.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=Fc.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=Ac.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Hc.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Wc.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Ac.parse(d.sdp),c=l.media[a.idx],$c.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Ac.write(l)}),Wc.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(n.mid=h,l=Ac.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=Uc.getCname({offerMediaObject:c}),t)if(1===t.length){let e=$c.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=$c.getRtpEncodings({offerMediaObject:c});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?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Wc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Wc.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Wc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Wc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Wc.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Wc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Wc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Wc.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Wc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Wc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Wc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Wc.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.assertNotClosed(),this.assertSendDirection(),Wc.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Wc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Wc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Wc.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Wc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Wc.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Wc.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Kc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ac.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Wc.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()};Wc.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Wc.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Wc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Ac.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Uc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:Ac.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Wc.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Wc.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Wc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Wc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Wc.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Wc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Wc.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Wc.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Wc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Wc.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),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.assertNotClosed(),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};Wc.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()};Wc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ac.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Wc.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=Ac.parse(this._pc.localDescription.sdp));const r=Uc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Vc.InvalidStateError("method called in a closed handler")}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')}}xc.Chrome74=Jc;var Qc={},Zc=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Yc=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Xc=Yi&&Yi.__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)&&Zc(t,e,r);return Yc(t,e),t};Object.defineProperty(Qc,"__esModule",{value:!0}),Qc.Chrome70=void 0;const ed=Xc(In),td=ha,rd=Xc(Ta),id=Xc(Pa),nd=Xc($o),sd=Xc(Ho),ad=Ko,od=Zo,cd=uc,dd=new td.Logger("Chrome70"),ld={OS:1024,MIS:1024};class pd extends ad.HandlerInterface{static createFactory(){return()=>new pd}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(dd.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){dd.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=ed.parse(t.sdp);return nd.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return dd.debug("getNativeSctpCapabilities()"),{numStreams:ld}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){dd.debug("run()"),this._direction=e,this._remoteSdp=new od.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:id.getSendingRtpParameters("audio",d),video:id.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:id.getSendingRemoteRtpParameters("audio",d),video:id.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(dd.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){dd.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(dd.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});dd.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};dd.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};dd.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();dd.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(),dd.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=rd.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=id.reduceCodecs(n.codecs,i);const s=rd.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=id.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=ed.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(dd.debug("send() | enabling legacy simulcast"),l=ed.parse(d.sdp),c=l.media[a.idx],sd.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:ed.write(l)});let p=!1;const u=(0,cd.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(dd.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=ed.parse(d.sdp),c=l.media[a.idx],sd.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:ed.write(l)}),dd.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){dd.debug("send() | applying given encodings");const e=o.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 o.sender.setParameters(e)}const h=o.mid;if(n.mid=h,l=ed.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=nd.getCname({offerMediaObject:c}),n.encodings=sd.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(p&&(n.encodings=[n.encodings[0]]),n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return dd.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){this.assertSendDirection(),dd.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);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();dd.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};dd.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?dd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):dd.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(),dd.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();dd.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};dd.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),dd.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();dd.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};dd.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}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,maxRetransmitTime:t,maxRetransmits:r,protocol:n};dd.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ld.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ed.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),dd.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()};dd.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,streamId:s}=t;dd.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};dd.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ed.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));nd.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:ed.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),dd.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();for(const t of e){dd.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};dd.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();dd.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};dd.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()};dd.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ed.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}dd.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=ed.parse(this._pc.localDescription.sdp));const r=nd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),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')}}Qc.Chrome70=pd;var ud={},hd={};Object.defineProperty(hd,"__esModule",{value:!0}),hd.addLegacySimulcast=hd.getRtpEncodings=void 0,hd.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},hd.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 md=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),fd=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),gd=Yi&&Yi.__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)&&md(t,e,r);return fd(t,e),t};Object.defineProperty(ud,"__esModule",{value:!0}),ud.Chrome67=void 0;const vd=gd(In),_d=ha,yd=gd(Ta),bd=gd(Pa),wd=gd($o),Sd=gd(hd),Cd=Ko,Rd=Zo,Td=new _d.Logger("Chrome67"),Pd={OS:1024,MIS:1024};class kd extends Cd.HandlerInterface{static createFactory(){return()=>new kd}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}get name(){return"Chrome67"}close(){if(Td.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Td.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=vd.parse(t.sdp);return wd.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Td.debug("getNativeSctpCapabilities()"),{numStreams:Pd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Td.debug("run()"),this._direction=e,this._remoteSdp=new Rd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:bd.getSendingRtpParameters("audio",d),video:bd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:bd.getSendingRemoteRtpParameters("audio",d),video:bd.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Td.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){Td.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Td.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Td.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Td.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Td.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Td.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(),Td.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Td.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),a=vd.parse(s.sdp);const o=yd.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=bd.reduceCodecs(o.codecs);const c=yd.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=bd.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Td.debug("send() | enabling simulcast"),a=vd.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),Sd.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:vd.write(a)}),Td.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=vd.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=wd.getCname({offerMediaObject:n}),o.encodings=Sd.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Td.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}async stopSending(e){this.assertSendDirection(),Td.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();Td.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Td.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()};Td.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?Td.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Td.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(),Td.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(),Td.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}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Td.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Pd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=vd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Td.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()};Td.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=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;Td.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Td.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=vd.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));wd.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:vd.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Td.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,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}),t.push({localId:s,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Td.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Td.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Td.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};Td.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Td.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=vd.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Td.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=vd.parse(this._pc.localDescription.sdp));const r=wd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),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')}}ud.Chrome67=kd;var Dd={},Ed=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Id=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Od=Yi&&Yi.__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)&&Ed(t,e,r);return Id(t,e),t};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.Chrome55=void 0;const xd=Od(In),Md=ha,jd=Sa,Ld=Od(Ta),Ad=Od(Pa),Nd=Od($o),Bd=Od(hd),Fd=Ko,Ud=Zo,$d=new Md.Logger("Chrome55"),zd={OS:1024,MIS:1024};class Vd extends Fd.HandlerInterface{static createFactory(){return()=>new Vd}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}get name(){return"Chrome55"}close(){if($d.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){$d.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=xd.parse(t.sdp);return Nd.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return $d.debug("getNativeSctpCapabilities()"),{numStreams:zd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){$d.debug("run()"),this._direction=e,this._remoteSdp=new Ud.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Ad.getSendingRtpParameters("audio",d),video:Ad.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ad.getSendingRemoteRtpParameters("audio",d),video:Ad.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch($d.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){$d.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if($d.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});$d.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};$d.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};$d.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();$d.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(),$d.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&$d.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),a=xd.parse(s.sdp);const o=Ld.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=Ad.reduceCodecs(o.codecs);const c=Ld.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=Ad.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&($d.debug("send() | enabling simulcast"),a=xd.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),Bd.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:xd.write(a)}),$d.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=xd.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Nd.getCname({offerMediaObject:n}),o.encodings=Bd.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};$d.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),$d.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();$d.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void $d.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()};$d.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new jd.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new jd.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new jd.UnsupportedError("not supported")}async getSenderStats(e){throw new jd.UnsupportedError("not implemented")}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,maxRetransmitTime:t,maxRetransmits:r,protocol:n};$d.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%zd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=xd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),$d.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()};$d.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=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;$d.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};$d.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=xd.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Nd.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:xd.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),$d.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,a=i,o=r.streamId||n.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===o)).getTrackById(a);if(!c)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:s,rtpParameters:n}),t.push({localId:a,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){$d.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};$d.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();$d.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new jd.UnsupportedError("not implemented")}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,maxRetransmitTime:s,maxRetransmits:a,protocol:r};$d.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};$d.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=xd.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}$d.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=xd.parse(this._pc.localDescription.sdp));const r=Nd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),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')}}Dd.Chrome55=Vd;var qd={},Gd=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Hd=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wd=Yi&&Yi.__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)&&Gd(t,e,r);return Hd(t,e),t};Object.defineProperty(qd,"__esModule",{value:!0}),qd.Firefox60=void 0;const Kd=Wd(In),Jd=ha,Qd=Sa,Zd=Wd(Ta),Yd=Wd(Pa),Xd=Wd($o),el=Wd(Ho),tl=Ko,rl=Zo,il=uc,nl=new Jd.Logger("Firefox60"),sl={OS:16,MIS:2048};class al extends tl.HandlerInterface{static createFactory(){return()=>new al}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(nl.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){nl.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=Kd.parse(a.sdp);return Xd.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 nl.debug("getNativeSctpCapabilities()"),{numStreams:sl}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),nl.debug("run()"),this._direction=e,this._remoteSdp=new rl.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Yd.getSendingRtpParameters("audio",d),video:Yd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Yd.getSendingRemoteRtpParameters("audio",d),video:Yd.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(nl.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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 this.assertNotClosed(),new Qd.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),nl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});nl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();nl.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),nl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=Zd.clone(t,[])).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const n=Zd.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Yd.reduceCodecs(n.codecs,i);const s=Zd.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=Yd.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=Kd.parse(o.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,il.parse)((t||[{}])[0].scalabilityMode);nl.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const l=a.mid;n.mid=l,c=Kd.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(n.rtcp.cname=Xd.getCname({offerMediaObject:p}),t)if(1===t.length){const e=el.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t.reverse();else n.encodings=el.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?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return nl.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),nl.debug("stopSending() [localId:%s]",e),this._closed)return;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();nl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),nl.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();nl.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),nl.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();nl.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?nl.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):nl.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.assertNotClosed(),this.assertSendDirection(),nl.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();nl.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),nl.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();nl.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};nl.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%sl.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Kd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),nl.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()};nl.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;nl.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Kd.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));Xd.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),n={type:"answer",sdp:Kd.write(s)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:s}),nl.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){nl.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();nl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){nl.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();nl.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){nl.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();nl.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}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.assertNotClosed(),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};nl.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()};nl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Kd.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}nl.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=Kd.parse(this._pc.localDescription.sdp));const r=Xd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Qd.InvalidStateError("method called in a closed handler")}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')}}qd.Firefox60=al;var ol={},cl=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),dl=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ll=Yi&&Yi.__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)&&cl(t,e,r);return dl(t,e),t};Object.defineProperty(ol,"__esModule",{value:!0}),ol.Safari12=void 0;const pl=ll(In),ul=ha,hl=ll(Ta),ml=ll(Pa),fl=ll($o),gl=ll(Ho),vl=ll(Wo),_l=Sa,yl=Ko,bl=Zo,wl=uc,Sl=new ul.Logger("Safari12"),Cl={OS:1024,MIS:1024};class Rl extends yl.HandlerInterface{static createFactory(){return()=>new Rl}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(Sl.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Sl.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=pl.parse(t.sdp),i=fl.extractRtpCapabilities({sdpObject:r});return vl.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Sl.debug("getNativeSctpCapabilities()"),{numStreams:Cl}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Sl.debug("run()"),this._direction=e,this._remoteSdp=new bl.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:ml.getSendingRtpParameters("audio",d),video:ml.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ml.getSendingRemoteRtpParameters("audio",d),video:ml.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Sl.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){this.assertNotClosed(),Sl.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Sl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Sl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Sl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Sl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Sl.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Sl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=hl.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=ml.reduceCodecs(n.codecs,i);const s=hl.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=ml.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=pl.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const p=(0,wl.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(Sl.debug("send() | enabling legacy simulcast"),l=pl.parse(d.sdp),c=l.media[a.idx],gl.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:pl.write(l)}),Sl.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const u=o.mid;if(n.mid=u,l=pl.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=fl.getCname({offerMediaObject:c}),n.encodings=gl.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Sl.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,o),{localId:u,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Sl.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);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Sl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Sl.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Sl.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Sl.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Sl.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Sl.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Sl.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Sl.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Sl.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Sl.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.assertNotClosed(),this.assertSendDirection(),Sl.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Sl.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Sl.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Sl.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Sl.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Sl.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Sl.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Cl.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=pl.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Sl.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()};Sl.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Sl.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Sl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=pl.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));fl.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:pl.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Sl.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Sl.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Sl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Sl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Sl.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Sl.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Sl.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Sl.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Sl.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Sl.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),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.assertNotClosed(),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};Sl.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()};Sl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=pl.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Sl.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=pl.parse(this._pc.localDescription.sdp));const r=fl.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new _l.InvalidStateError("method called in a closed handler")}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')}}ol.Safari12=Rl;var Tl={},Pl=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),kl=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Dl=Yi&&Yi.__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)&&Pl(t,e,r);return kl(t,e),t};Object.defineProperty(Tl,"__esModule",{value:!0}),Tl.Safari11=void 0;const El=Dl(In),Il=ha,Ol=Dl(Ta),xl=Dl(Pa),Ml=Dl($o),jl=Dl(hd),Ll=Ko,Al=Zo,Nl=new Il.Logger("Safari11"),Bl={OS:1024,MIS:1024};class Fl extends Ll.HandlerInterface{static createFactory(){return()=>new Fl}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}get name(){return"Safari11"}close(){if(Nl.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Nl.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=El.parse(t.sdp);return Ml.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Nl.debug("getNativeSctpCapabilities()"),{numStreams:Bl}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Nl.debug("run()"),this._direction=e,this._remoteSdp=new Al.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:xl.getSendingRtpParameters("audio",d),video:xl.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:xl.getSendingRemoteRtpParameters("audio",d),video:xl.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Nl.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){Nl.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Nl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Nl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Nl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Nl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Nl.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(),Nl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Nl.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),a=El.parse(s.sdp);const o=Ol.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=xl.reduceCodecs(o.codecs);const c=Ol.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=xl.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Nl.debug("send() | enabling simulcast"),a=El.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),jl.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:El.write(a)}),Nl.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=El.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Ml.getCname({offerMediaObject:n}),o.encodings=jl.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Nl.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}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();Nl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Nl.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()};Nl.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?Nl.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Nl.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(),Nl.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(),Nl.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}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Nl.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Bl.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=El.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Nl.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()};Nl.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=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;Nl.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Nl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=El.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Ml.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:El.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Nl.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,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}),t.push({localId:a,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Nl.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Nl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Nl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};Nl.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Nl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=El.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Nl.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=El.parse(this._pc.localDescription.sdp));const r=Ml.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),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')}}Tl.Safari11=Fl;var Ul={},$l={},zl=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Vl=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ql=Yi&&Yi.__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)&&zl(t,e,r);return Vl(t,e),t};Object.defineProperty($l,"__esModule",{value:!0}),$l.mangleRtpParameters=$l.getCapabilities=void 0;const Gl=ql(Ta);$l.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=Gl.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},$l.mangleRtpParameters=function(e){const t=Gl.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 Hl=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Wl=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Kl=Yi&&Yi.__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)&&Hl(t,e,r);return Wl(t,e),t};Object.defineProperty(Ul,"__esModule",{value:!0}),Ul.Edge11=void 0;const Jl=ha,Ql=Sa,Zl=Kl(Ta),Yl=Kl(Pa),Xl=Kl($l),ep=Ko,tp=new Jl.Logger("Edge11");class rp extends ep.HandlerInterface{static createFactory(){return()=>new rp}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){tp.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){}this.emit("@close")}async getNativeRtpCapabilities(){return tp.debug("getNativeRtpCapabilities()"),Xl.getCapabilities()}async getNativeSctpCapabilities(){return tp.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}){tp.debug("run()"),this._sendingRtpParametersByKind={audio:Yl.getSendingRtpParameters("audio",d),video:Yl.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${Zl.generateRandomNumber()}`,this.setIceGatherer({iceServers:s,iceTransportPolicy:a}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new Ql.UnsupportedError("not supported")}async restartIce(e){if(tp.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){tp.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}){tp.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),tp.debug("send() | calling new RTCRtpSender()");const n=new RTCRtpSender(e,this._dtlsTransport),s=Zl.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Yl.reduceCodecs(s.codecs,i);const a=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Zl.generateRandomNumber(),a&&(e.rtx={ssrc:Zl.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=Xl.mangleRtpParameters(s);tp.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){tp.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{tp.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw tp.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?tp.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):tp.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){tp.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){tp.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 Ql.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;tp.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;tp.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,i);s.addEventListener("error",(e=>{tp.error('rtpReceiver "error" event [event:%o]',e)}));const a=Xl.mangleRtpParameters(n);tp.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){for(const t of e){tp.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{tp.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){tp.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 Ql.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{tp.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){tp.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=>{tp.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{tp.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{tp.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{tp.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){tp.debug("setupTransport()");const t=this._dtlsTransport.getLocalParameters();t.role=e,await new Promise(((e,r)=>{this.safeEmit("@connect",{dtlsParameters:t},e,r)})),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}}Ul.Edge11=rp;var ip={},np=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),sp=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ap=Yi&&Yi.__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)&&np(t,e,r);return sp(t,e),t};Object.defineProperty(ip,"__esModule",{value:!0}),ip.ReactNativeUnifiedPlan=void 0;const op=ap(In),cp=ha,dp=ap(Ta),lp=ap(Pa),pp=ap($o),up=ap(Ho),hp=ap(Wo),mp=Sa,fp=Ko,gp=Zo,vp=uc,_p=new cp.Logger("ReactNativeUnifiedPlan"),yp={OS:1024,MIS:1024};class bp extends fp.HandlerInterface{static createFactory(){return()=>new bp}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if(_p.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){_p.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=op.parse(t.sdp),i=pp.extractRtpCapabilities({sdpObject:r});return hp.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return _p.debug("getNativeSctpCapabilities()"),{numStreams:yp}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),_p.debug("run()"),this._direction=e,this._remoteSdp=new gp.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:lp.getSendingRtpParameters("audio",d),video:lp.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:lp.getSendingRemoteRtpParameters("audio",d),video:lp.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(_p.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){this.assertNotClosed(),_p.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),_p.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});_p.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};_p.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};_p.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();_p.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),_p.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=dp.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=lp.reduceCodecs(n.codecs,i);const s=dp.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=lp.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=op.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,vp.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(_p.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=op.parse(d.sdp),c=l.media[a.idx],up.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:op.write(l)}),_p.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=o.mid??void 0;if(h||_p.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=h,l=op.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=pp.getCname({offerMediaObject:c}),t)if(1===t.length){let e=up.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=up.getRtpEncodings({offerMediaObject:c});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?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return _p.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),h||(h=o.mid,n.mid=h),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;_p.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);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();_p.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};_p.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),_p.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();_p.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};_p.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),_p.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();_p.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};_p.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?_p.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):_p.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.assertNotClosed(),this.assertSendDirection(),_p.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();_p.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};_p.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),_p.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();_p.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};_p.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};_p.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%yp.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=op.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),_p.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()};_p.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;_p.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};_p.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=op.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));pp.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:op.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),_p.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){_p.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};_p.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();_p.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){_p.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};_p.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();_p.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){_p.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};_p.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();_p.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),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.assertNotClosed(),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};_p.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()};_p.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=op.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}_p.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=op.parse(this._pc.localDescription.sdp));const r=pp.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new mp.InvalidStateError("method called in a closed handler")}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')}}ip.ReactNativeUnifiedPlan=bp;var wp={},Sp=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Cp=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Rp=Yi&&Yi.__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)&&Sp(t,e,r);return Cp(t,e),t};Object.defineProperty(wp,"__esModule",{value:!0}),wp.ReactNative=void 0;const Tp=Rp(In),Pp=ha,kp=Sa,Dp=Rp(Ta),Ep=Rp(Pa),Ip=Rp($o),Op=Rp(hd),xp=Ko,Mp=Zo,jp=new Pp.Logger("ReactNative"),Lp={OS:1024,MIS:1024};class Ap extends xp.HandlerInterface{static createFactory(){return()=>new Ap}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}get name(){return"ReactNative"}close(){if(jp.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){jp.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=Tp.parse(t.sdp);return Ip.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return jp.debug("getNativeSctpCapabilities()"),{numStreams:Lp}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){jp.debug("run()"),this._direction=e,this._remoteSdp=new Mp.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Ep.getSendingRtpParameters("audio",d),video:Ep.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ep.getSendingRemoteRtpParameters("audio",d),video:Ep.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(jp.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){jp.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(jp.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});jp.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};jp.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};jp.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();jp.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(),jp.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&jp.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),a=Tp.parse(s.sdp);const o=Dp.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=Ep.reduceCodecs(o.codecs);const c=Dp.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=Ep.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(jp.debug("send() | enabling simulcast"),a=Tp.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),Op.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Tp.write(a)}),jp.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Tp.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Ip.getCname({offerMediaObject:n}),o.encodings=Op.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&("video/vp8"===o.codecs[0].mimeType.toLowerCase()||"video/h264"===o.codecs[0].mimeType.toLowerCase()))for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};jp.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),jp.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();jp.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void jp.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()};jp.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new kp.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new kp.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new kp.UnsupportedError("not implemented")}async getSenderStats(e){throw new kp.UnsupportedError("not implemented")}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,maxRetransmitTime:t,maxRetransmits:r,protocol:n};jp.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Lp.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Tp.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),jp.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()};jp.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;jp.debug("receive() [trackId:%s, kind:%s]",e,i);const s=i;let a=t.streamId||n.rtcp.cname;jp.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Dp.generateRandomNumber()}`,r.set(e,a),this._remoteSdp.receive({mid:s,kind:i,offerRtpParameters:n,streamId:a,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};jp.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Tp.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));Ip.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:Tp.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),jp.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{kind:e,trackId:n,rtpParameters:s}=i,a=n,o=e,c=r.get(n),d=this._pc.getRemoteStreams().find((e=>e.id===c)).getTrackById(a);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:o,rtpParameters:s}),t.push({localId:a,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){jp.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};jp.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();jp.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new kp.UnsupportedError("not implemented")}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,maxRetransmitTime:s,maxRetransmits:a,protocol:r};jp.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};jp.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Tp.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}jp.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=Tp.parse(this._pc.localDescription.sdp));const r=Ip.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),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')}}wp.ReactNative=Ap;var Np=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Bp=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fp=Yi&&Yi.__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)&&Np(t,e,r);return Bp(t,e),t};Object.defineProperty(la,"__esModule",{value:!0}),la.Device=la.detectDevice=void 0;const Up=ua,$p=ha,zp=va,Vp=Sa,qp=Fp(Ta),Gp=Fp(Pa),Hp=Ha,Wp=Uo,Kp=xc,Jp=Qc,Qp=ud,Zp=Dd,Yp=qd,Xp=ol,eu=Tl,tu=Ul,ru=ip,iu=wp,nu=new $p.Logger("Device");function su(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return nu.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void nu.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(nu.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(nu.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)nu.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new Up.UAParser(e);nu.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),i=r.name?.toLowerCase()??"",n=parseInt(r.major??"0"),s=t.getEngine(),a=s.name?.toLowerCase()??"",o=t.getOS(),c=o.name?.toLowerCase()??"",d=parseFloat(o.version??"0"),l="ios"===c,p=["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(i),u=["firefox","mobile firefox","mobile focus"].includes(i),h=["safari","mobile safari"].includes(i),m=["edge"].includes(i);if((p||m)&&!l&&n>=111)return"Chrome111";if(p&&!l&&n>=74||m&&!l&&n>=88)return"Chrome74";if(p&&!l&&n>=70)return"Chrome70";if(p&&!l&&n>=67)return"Chrome67";if(p&&!l&&n>=55)return"Chrome55";if(u&&!l&&n>=60)return"Firefox60";if(u&&l&&d>=14.3)return"Safari12";if(h&&n>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(h&&n>=11)return"Safari11";if(m&&!l&&n>=11&&n<=18)return"Edge11";if("webkit"===a&&l&&d>=14.3&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if("blink"===a){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome111"}nu.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,n)}}la.detectDevice=su;la.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new zp.EnhancedEventEmitter,nu.debug("constructor()"),r){if(nu.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)nu.debug("constructor() | handler given: %s",e);else{if(!(e=su()))throw new Vp.UnsupportedError("device not supported");nu.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=Wp.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=Kp.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=Jp.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=Qp.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=Zp.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=Yp.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=Xp.Safari12.createFactory();break;case"Safari11":this._handlerFactory=eu.Safari11.createFactory();break;case"Edge11":this._handlerFactory=tu.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=ru.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=iu.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 Vp.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new Vp.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;nu.debug("load() [routerRtpCapabilities:%o]",e),e=qp.clone(e,void 0);try{if(this._loaded)throw new Vp.InvalidStateError("already loaded");Gp.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();nu.debug("load() | got native RTP capabilities:%o",r),Gp.validateRtpCapabilities(r),this._extendedRtpCapabilities=Gp.getExtendedRtpCapabilities(r,e),nu.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=Gp.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=Gp.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=Gp.getRecvRtpCapabilities(this._extendedRtpCapabilities),Gp.validateRtpCapabilities(this._recvRtpCapabilities),nu.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),nu.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),Gp.validateSctpCapabilities(this._sctpCapabilities),nu.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new Vp.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 nu.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 nu.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:l}){if(!this._loaded)throw new Vp.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(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const p=new Hp.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",p),p}};var au={},ou={};Object.defineProperty(ou,"__esModule",{value:!0});var cu={};Object.defineProperty(cu,"__esModule",{value:!0}),function(e){var t=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Yi&&Yi.__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(la,e),r(Ha,e),r(ro,e),r(oo,e),r(ho,e),r(_o,e),r(ou,e),r(cu,e),r(Ko,e),r(Sa,e)}(au),function(e){var t=Yi&&Yi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Yi&&Yi.__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=Yi&&Yi.__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(da);e.debug=s.default;const a=la;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(au);e.types=o,e.version="3.6.100";var c=uc;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(sa);var du={exports:{}};du.exports=function(e){return(e instanceof Buffer?e:Buffer.from(e.toString(),"binary")).toString("base64")};var lu=Xi(du.exports);function pu(e,t){return function(){return e.apply(t,arguments)}}const{toString:uu}=Object.prototype,{getPrototypeOf:hu}=Object,mu=(e=>t=>{const r=uu.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),fu=e=>(e=e.toLowerCase(),t=>mu(t)===e),gu=e=>t=>typeof t===e,{isArray:vu}=Array,_u=gu("undefined");const yu=fu("ArrayBuffer");const bu=gu("string"),wu=gu("function"),Su=gu("number"),Cu=e=>null!==e&&"object"==typeof e,Ru=e=>{if("object"!==mu(e))return!1;const t=hu(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Tu=fu("Date"),Pu=fu("File"),ku=fu("Blob"),Du=fu("FileList"),Eu=fu("URLSearchParams");function Iu(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let i,n;if("object"!=typeof e&&(e=[e]),vu(e))for(i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else{const n=r?Object.getOwnPropertyNames(e):Object.keys(e),s=n.length;let a;for(i=0;i<s;i++)a=n[i],t.call(null,e[a],a,e)}}function Ou(e,t){t=t.toLowerCase();const r=Object.keys(e);let i,n=r.length;for(;n-- >0;)if(i=r[n],t===i.toLowerCase())return i;return null}const xu="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Mu=e=>!_u(e)&&e!==xu;const ju=(Lu="undefined"!=typeof Uint8Array&&hu(Uint8Array),e=>Lu&&e instanceof Lu);var Lu;const Au=fu("HTMLFormElement"),Nu=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),Bu=fu("RegExp"),Fu=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),i={};Iu(r,((r,n)=>{let s;!1!==(s=t(r,n,e))&&(i[n]=s||r)})),Object.defineProperties(e,i)},Uu="abcdefghijklmnopqrstuvwxyz",$u="0123456789",zu={DIGIT:$u,ALPHA:Uu,ALPHA_DIGIT:Uu+Uu.toUpperCase()+$u};const Vu=fu("AsyncFunction");var qu={isArray:vu,isArrayBuffer:yu,isBuffer:function(e){return null!==e&&!_u(e)&&null!==e.constructor&&!_u(e.constructor)&&wu(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||wu(e.append)&&("formdata"===(t=mu(e))||"object"===t&&wu(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&yu(e.buffer),t},isString:bu,isNumber:Su,isBoolean:e=>!0===e||!1===e,isObject:Cu,isPlainObject:Ru,isUndefined:_u,isDate:Tu,isFile:Pu,isBlob:ku,isRegExp:Bu,isFunction:wu,isStream:e=>Cu(e)&&wu(e.pipe),isURLSearchParams:Eu,isTypedArray:ju,isFileList:Du,forEach:Iu,merge:function e(){const{caseless:t}=Mu(this)&&this||{},r={},i=(i,n)=>{const s=t&&Ou(r,n)||n;Ru(r[s])&&Ru(i)?r[s]=e(r[s],i):Ru(i)?r[s]=e({},i):vu(i)?r[s]=i.slice():r[s]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&Iu(arguments[e],i);return r},extend:(e,t,r,{allOwnKeys:i}={})=>(Iu(t,((t,i)=>{r&&wu(t)?e[i]=pu(t,r):e[i]=t}),{allOwnKeys:i}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,i)=>{let n,s,a;const o={};if(t=t||{},null==e)return t;do{for(n=Object.getOwnPropertyNames(e),s=n.length;s-- >0;)a=n[s],i&&!i(a,e,t)||o[a]||(t[a]=e[a],o[a]=!0);e=!1!==r&&hu(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:mu,kindOfTest:fu,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const i=e.indexOf(t,r);return-1!==i&&i===r},toArray:e=>{if(!e)return null;if(vu(e))return e;let t=e.length;if(!Su(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let i;for(;(i=r.next())&&!i.done;){const r=i.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const i=[];for(;null!==(r=e.exec(t));)i.push(r);return i},isHTMLForm:Au,hasOwnProperty:Nu,hasOwnProp:Nu,reduceDescriptors:Fu,freezeMethods:e=>{Fu(e,((t,r)=>{if(wu(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const i=e[r];wu(i)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},i=e=>{e.forEach((e=>{r[e]=!0}))};return vu(e)?i(e):i(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:Ou,global:xu,isContextDefined:Mu,ALPHABET:zu,generateString:(e=16,t=zu.ALPHA_DIGIT)=>{let r="";const{length:i}=t;for(;e--;)r+=t[Math.random()*i|0];return r},isSpecCompliantForm:function(e){return!!(e&&wu(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,i)=>{if(Cu(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[i]=e;const n=vu(e)?[]:{};return Iu(e,((e,t)=>{const s=r(e,i+1);!_u(s)&&(n[t]=s)})),t[i]=void 0,n}}return e};return r(e,0)},isAsyncFn:Vu,isThenable:e=>e&&(Cu(e)||wu(e))&&wu(e.then)&&wu(e.catch)};function Gu(e,t,r,i,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),i&&(this.request=i),n&&(this.response=n)}qu.inherits(Gu,Error,{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:qu.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Hu=Gu.prototype,Wu={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{Wu[e]={value:e}})),Object.defineProperties(Gu,Wu),Object.defineProperty(Hu,"isAxiosError",{value:!0}),Gu.from=(e,t,r,i,n,s)=>{const a=Object.create(Hu);return qu.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),Gu.call(a,e.message,t,r,i,n),a.cause=e,a.name=e.name,s&&Object.assign(a,s),a};function Ku(e){return qu.isPlainObject(e)||qu.isArray(e)}function Ju(e){return qu.endsWith(e,"[]")?e.slice(0,-2):e}function Qu(e,t,r){return e?e.concat(t).map((function(e,t){return e=Ju(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const Zu=qu.toFlatObject(qu,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Yu(e,t,r){if(!qu.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(r=qu.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!qu.isUndefined(t[e])}))).metaTokens,n=r.visitor||d,s=r.dots,a=r.indexes,o=(r.Blob||"undefined"!=typeof Blob&&Blob)&&qu.isSpecCompliantForm(t);if(!qu.isFunction(n))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(qu.isDate(e))return e.toISOString();if(!o&&qu.isBlob(e))throw new Gu("Blob is not supported. Use a Buffer instead.");return qu.isArrayBuffer(e)||qu.isTypedArray(e)?o&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,r,n){let o=e;if(e&&!n&&"object"==typeof e)if(qu.endsWith(r,"{}"))r=i?r:r.slice(0,-2),e=JSON.stringify(e);else if(qu.isArray(e)&&function(e){return qu.isArray(e)&&!e.some(Ku)}(e)||(qu.isFileList(e)||qu.endsWith(r,"[]"))&&(o=qu.toArray(e)))return r=Ju(r),o.forEach((function(e,i){!qu.isUndefined(e)&&null!==e&&t.append(!0===a?Qu([r],i,s):null===a?r:r+"[]",c(e))})),!1;return!!Ku(e)||(t.append(Qu(n,r,s),c(e)),!1)}const l=[],p=Object.assign(Zu,{defaultVisitor:d,convertValue:c,isVisitable:Ku});if(!qu.isObject(e))throw new TypeError("data must be an object");return function e(r,i){if(!qu.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+i.join("."));l.push(r),qu.forEach(r,(function(r,s){!0===(!(qu.isUndefined(r)||null===r)&&n.call(t,r,qu.isString(s)?s.trim():s,i,p))&&e(r,i?i.concat(s):[s])})),l.pop()}}(e),t}function Xu(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function eh(e,t){this._pairs=[],e&&Yu(e,this,t)}const th=eh.prototype;function rh(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ih(e,t,r){if(!t)return e;const i=r&&r.encode||rh,n=r&&r.serialize;let s;if(s=n?n(t,r):qu.isURLSearchParams(t)?t.toString():new eh(t,r).toString(i),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}th.append=function(e,t){this._pairs.push([e,t])},th.toString=function(e){const t=e?function(t){return e.call(this,t,Xu)}:Xu;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class nh{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){qu.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var sh={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ah={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:eh,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const oh="undefined"!=typeof window&&"undefined"!=typeof document,ch=(dh="undefined"!=typeof navigator&&navigator.product,oh&&["ReactNative","NativeScript","NS"].indexOf(dh)<0);var dh;const lh="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var ph={...Object.freeze({__proto__:null,hasBrowserEnv:oh,hasStandardBrowserEnv:ch,hasStandardBrowserWebWorkerEnv:lh}),...ah};function uh(e){function t(e,r,i,n){let s=e[n++];if("__proto__"===s)return!0;const a=Number.isFinite(+s),o=n>=e.length;if(s=!s&&qu.isArray(i)?i.length:s,o)return qu.hasOwnProp(i,s)?i[s]=[i[s],r]:i[s]=r,!a;i[s]&&qu.isObject(i[s])||(i[s]=[]);return t(e,r,i[s],n)&&qu.isArray(i[s])&&(i[s]=function(e){const t={},r=Object.keys(e);let i;const n=r.length;let s;for(i=0;i<n;i++)s=r[i],t[s]=e[s];return t}(i[s])),!a}if(qu.isFormData(e)&&qu.isFunction(e.entries)){const r={};return qu.forEachEntry(e,((e,i)=>{t(function(e){return qu.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),i,r,0)})),r}return null}const hh={transitional:sh,adapter:["xhr","http"],transformRequest:[function(e,t){const r=t.getContentType()||"",i=r.indexOf("application/json")>-1,n=qu.isObject(e);n&&qu.isHTMLForm(e)&&(e=new FormData(e));if(qu.isFormData(e))return i?JSON.stringify(uh(e)):e;if(qu.isArrayBuffer(e)||qu.isBuffer(e)||qu.isStream(e)||qu.isFile(e)||qu.isBlob(e))return e;if(qu.isArrayBufferView(e))return e.buffer;if(qu.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(n){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Yu(e,new ph.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,i){return ph.isNode&&qu.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=qu.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Yu(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return n||i?(t.setContentType("application/json",!1),function(e,t,r){if(qu.isString(e))try{return(t||JSON.parse)(e),qu.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||hh.transitional,r=t&&t.forcedJSONParsing,i="json"===this.responseType;if(e&&qu.isString(e)&&(r&&!this.responseType||i)){const r=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw Gu.from(e,Gu.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ph.classes.FormData,Blob:ph.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};qu.forEach(["delete","get","head","post","put","patch"],(e=>{hh.headers[e]={}}));var mh=hh;const fh=qu.toObjectSet(["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"]);const gh=Symbol("internals");function vh(e){return e&&String(e).trim().toLowerCase()}function _h(e){return!1===e||null==e?e:qu.isArray(e)?e.map(_h):String(e)}function yh(e,t,r,i,n){return qu.isFunction(i)?i.call(this,t,r):(n&&(t=r),qu.isString(t)?qu.isString(i)?-1!==t.indexOf(i):qu.isRegExp(i)?i.test(t):void 0:void 0)}class bh{constructor(e){e&&this.set(e)}set(e,t,r){const i=this;function n(e,t,r){const n=vh(t);if(!n)throw new Error("header name must be a non-empty string");const s=qu.findKey(i,n);(!s||void 0===i[s]||!0===r||void 0===r&&!1!==i[s])&&(i[s||t]=_h(e))}const s=(e,t)=>qu.forEach(e,((e,r)=>n(e,r,t)));return qu.isPlainObject(e)||e instanceof this.constructor?s(e,t):qu.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let r,i,n;return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),r=e.substring(0,n).trim().toLowerCase(),i=e.substring(n+1).trim(),!r||t[r]&&fh[r]||("set-cookie"===r?t[r]?t[r].push(i):t[r]=[i]:t[r]=t[r]?t[r]+", "+i:i)})),t})(e),t):null!=e&&n(t,e,r),this}get(e,t){if(e=vh(e)){const r=qu.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)t[i[1]]=i[2];return t}(e);if(qu.isFunction(t))return t.call(this,e,r);if(qu.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=vh(e)){const r=qu.findKey(this,e);return!(!r||void 0===this[r]||t&&!yh(0,this[r],r,t))}return!1}delete(e,t){const r=this;let i=!1;function n(e){if(e=vh(e)){const n=qu.findKey(r,e);!n||t&&!yh(0,r[n],n,t)||(delete r[n],i=!0)}}return qu.isArray(e)?e.forEach(n):n(e),i}clear(e){const t=Object.keys(this);let r=t.length,i=!1;for(;r--;){const n=t[r];e&&!yh(0,this[n],n,e,!0)||(delete this[n],i=!0)}return i}normalize(e){const t=this,r={};return qu.forEach(this,((i,n)=>{const s=qu.findKey(r,n);if(s)return t[s]=_h(i),void delete t[n];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(n):String(n).trim();a!==n&&delete t[n],t[a]=_h(i),r[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return qu.forEach(this,((r,i)=>{null!=r&&!1!==r&&(t[i]=e&&qu.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[gh]=this[gh]={accessors:{}}).accessors,r=this.prototype;function i(e){const i=vh(e);t[i]||(!function(e,t){const r=qu.toCamelCase(" "+t);["get","set","has"].forEach((i=>{Object.defineProperty(e,i+r,{value:function(e,r,n){return this[i].call(this,t,e,r,n)},configurable:!0})}))}(r,e),t[i]=!0)}return qu.isArray(e)?e.forEach(i):i(e),this}}bh.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),qu.reduceDescriptors(bh.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),qu.freezeMethods(bh);var wh=bh;function Sh(e,t){const r=this||mh,i=t||r,n=wh.from(i.headers);let s=i.data;return qu.forEach(e,(function(e){s=e.call(r,s,n.normalize(),t?t.status:void 0)})),n.normalize(),s}function Ch(e){return!(!e||!e.__CANCEL__)}function Rh(e,t,r){Gu.call(this,null==e?"canceled":e,Gu.ERR_CANCELED,t,r),this.name="CanceledError"}qu.inherits(Rh,Gu,{__CANCEL__:!0});var Th=ph.hasStandardBrowserEnv?{write(e,t,r,i,n,s){const a=[e+"="+encodeURIComponent(t)];qu.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),qu.isString(i)&&a.push("path="+i),qu.isString(n)&&a.push("domain="+n),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Ph(e,t){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var kh=ph.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let r;function i(r){let i=r;return e&&(t.setAttribute("href",i),i=t.href),t.setAttribute("href",i),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return r=i(window.location.href),function(e){const t=qu.isString(e)?i(e):e;return t.protocol===r.protocol&&t.host===r.host}}():function(){return!0};function Dh(e,t){let r=0;const i=function(e,t){e=e||10;const r=new Array(e),i=new Array(e);let n,s=0,a=0;return t=void 0!==t?t:1e3,function(o){const c=Date.now(),d=i[a];n||(n=c),r[s]=o,i[s]=c;let l=a,p=0;for(;l!==s;)p+=r[l++],l%=e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-n<t)return;const u=d&&c-d;return u?Math.round(1e3*p/u):void 0}}(50,250);return n=>{const s=n.loaded,a=n.lengthComputable?n.total:void 0,o=s-r,c=i(o);r=s;const d={loaded:s,total:a,progress:a?s/a:void 0,bytes:o,rate:c||void 0,estimated:c&&a&&s<=a?(a-s)/c:void 0,event:n};d[t?"download":"upload"]=!0,e(d)}}var Eh="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){let i=e.data;const n=wh.from(e.headers).normalize();let s,a,{responseType:o,withXSRFToken:c}=e;function d(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(qu.isFormData(i))if(ph.hasStandardBrowserEnv||ph.hasStandardBrowserWebWorkerEnv)n.setContentType(!1);else if(!1!==(a=n.getContentType())){const[e,...t]=a?a.split(";").map((e=>e.trim())).filter(Boolean):[];n.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",r=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.set("Authorization","Basic "+btoa(t+":"+r))}const p=Ph(e.baseURL,e.url);function u(){if(!l)return;const i=wh.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,r){const i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(new Gu("Request failed with status code "+r.status,[Gu.ERR_BAD_REQUEST,Gu.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}((function(e){t(e),d()}),(function(e){r(e),d()}),{data:o&&"text"!==o&&"json"!==o?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:i,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),ih(p,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=u:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(u)},l.onabort=function(){l&&(r(new Gu("Request aborted",Gu.ECONNABORTED,e,l)),l=null)},l.onerror=function(){r(new Gu("Network Error",Gu.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const i=e.transitional||sh;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(new Gu(t,i.clarifyTimeoutError?Gu.ETIMEDOUT:Gu.ECONNABORTED,e,l)),l=null},ph.hasStandardBrowserEnv&&(c&&qu.isFunction(c)&&(c=c(e)),c||!1!==c&&kh(p))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&Th.read(e.xsrfCookieName);t&&n.set(e.xsrfHeaderName,t)}void 0===i&&n.setContentType(null),"setRequestHeader"in l&&qu.forEach(n.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),qu.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),o&&"json"!==o&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",Dh(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",Dh(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(r(!t||t.type?new Rh(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const h=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(p);h&&-1===ph.protocols.indexOf(h)?r(new Gu("Unsupported protocol "+h+":",Gu.ERR_BAD_REQUEST,e)):l.send(i||null)}))};const Ih={http:null,xhr:Eh};qu.forEach(Ih,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Oh=e=>`- ${e}`,xh=e=>qu.isFunction(e)||null===e||!1===e;var Mh=e=>{e=qu.isArray(e)?e:[e];const{length:t}=e;let r,i;const n={};for(let s=0;s<t;s++){let t;if(r=e[s],i=r,!xh(r)&&(i=Ih[(t=String(r)).toLowerCase()],void 0===i))throw new Gu(`Unknown adapter '${t}'`);if(i)break;n[t||"#"+s]=i}if(!i){const e=Object.entries(n).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new Gu("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Oh).join("\n"):" "+Oh(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function jh(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Rh(null,e)}function Lh(e){jh(e),e.headers=wh.from(e.headers),e.data=Sh.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Mh(e.adapter||mh.adapter)(e).then((function(t){return jh(e),t.data=Sh.call(e,e.transformResponse,t),t.headers=wh.from(t.headers),t}),(function(t){return Ch(t)||(jh(e),t&&t.response&&(t.response.data=Sh.call(e,e.transformResponse,t.response),t.response.headers=wh.from(t.response.headers))),Promise.reject(t)}))}const Ah=e=>e instanceof wh?e.toJSON():e;function Nh(e,t){t=t||{};const r={};function i(e,t,r){return qu.isPlainObject(e)&&qu.isPlainObject(t)?qu.merge.call({caseless:r},e,t):qu.isPlainObject(t)?qu.merge({},t):qu.isArray(t)?t.slice():t}function n(e,t,r){return qu.isUndefined(t)?qu.isUndefined(e)?void 0:i(void 0,e,r):i(e,t,r)}function s(e,t){if(!qu.isUndefined(t))return i(void 0,t)}function a(e,t){return qu.isUndefined(t)?qu.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function o(r,n,s){return s in t?i(r,n):s in e?i(void 0,r):void 0}const c={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o,headers:(e,t)=>n(Ah(e),Ah(t),!0)};return qu.forEach(Object.keys(Object.assign({},e,t)),(function(i){const s=c[i]||n,a=s(e[i],t[i],i);qu.isUndefined(a)&&s!==o||(r[i]=a)})),r}const Bh="1.6.7",Fh={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Fh[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const Uh={};Fh.transitional=function(e,t,r){function i(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,n,s)=>{if(!1===e)throw new Gu(i(n," has been removed"+(t?" in "+t:"")),Gu.ERR_DEPRECATED);return t&&!Uh[n]&&(Uh[n]=!0,console.warn(i(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,s)}};var $h={assertOptions:function(e,t,r){if("object"!=typeof e)throw new Gu("options must be an object",Gu.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let n=i.length;for(;n-- >0;){const s=i[n],a=t[s];if(a){const t=e[s],r=void 0===t||a(t,s,e);if(!0!==r)throw new Gu("option "+s+" must be "+r,Gu.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new Gu("Unknown option "+s,Gu.ERR_BAD_OPTION)}},validators:Fh};const zh=$h.validators;class Vh{constructor(e){this.defaults=e,this.interceptors={request:new nh,response:new nh}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Nh(this.defaults,t);const{transitional:r,paramsSerializer:i,headers:n}=t;void 0!==r&&$h.assertOptions(r,{silentJSONParsing:zh.transitional(zh.boolean),forcedJSONParsing:zh.transitional(zh.boolean),clarifyTimeoutError:zh.transitional(zh.boolean)},!1),null!=i&&(qu.isFunction(i)?t.paramsSerializer={serialize:i}:$h.assertOptions(i,{encode:zh.function,serialize:zh.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=n&&qu.merge(n.common,n[t.method]);n&&qu.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete n[e]})),t.headers=wh.concat(s,n);const a=[];let o=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(o=o&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const c=[];let d;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,p=0;if(!o){const e=[Lh.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,c),l=e.length,d=Promise.resolve(t);p<l;)d=d.then(e[p++],e[p++]);return d}l=a.length;let u=t;for(p=0;p<l;){const e=a[p++],t=a[p++];try{u=e(u)}catch(e){t.call(this,e);break}}try{d=Lh.call(this,u)}catch(e){return Promise.reject(e)}for(p=0,l=c.length;p<l;)d=d.then(c[p++],c[p++]);return d}getUri(e){return ih(Ph((e=Nh(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}qu.forEach(["delete","get","head","options"],(function(e){Vh.prototype[e]=function(t,r){return this.request(Nh(r||{},{method:e,url:t,data:(r||{}).data}))}})),qu.forEach(["post","put","patch"],(function(e){function t(t){return function(r,i,n){return this.request(Nh(n||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:i}))}}Vh.prototype[e]=t(),Vh.prototype[e+"Form"]=t(!0)}));var qh=Vh;class Gh{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const i=new Promise((e=>{r.subscribe(e),t=e})).then(e);return i.cancel=function(){r.unsubscribe(t)},i},e((function(e,i,n){r.reason||(r.reason=new Rh(e,i,n),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new Gh((function(t){e=t})),cancel:e}}}var Hh=Gh;const Wh={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Wh).forEach((([e,t])=>{Wh[t]=e}));var Kh=Wh;const Jh=function e(t){const r=new qh(t),i=pu(qh.prototype.request,r);return qu.extend(i,qh.prototype,r,{allOwnKeys:!0}),qu.extend(i,r,null,{allOwnKeys:!0}),i.create=function(r){return e(Nh(t,r))},i}(mh);function Qh(e,t){return tt(e,t)}Jh.Axios=qh,Jh.CanceledError=Rh,Jh.CancelToken=Hh,Jh.isCancel=Ch,Jh.VERSION=Bh,Jh.toFormData=Yu,Jh.AxiosError=Gu,Jh.Cancel=Jh.CanceledError,Jh.all=function(e){return Promise.all(e)},Jh.spread=function(e){return function(t){return e.apply(null,t)}},Jh.isAxiosError=function(e){return qu.isObject(e)&&!0===e.isAxiosError},Jh.mergeConfig=Nh,Jh.AxiosHeaders=wh,Jh.formToJSON=e=>uh(qu.isHTMLForm(e)?new FormData(e):e),Jh.getAdapter=Mh,Jh.HttpStatusCode=Kh,Jh.default=Jh;const Zh=((e={})=>{const t=new Map,{extra:r,onError:i=Nt}=e;gt(i,"onError");const n=e=>{let r=Oe(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=Ot(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&xt(e)}))(r)};Object.assign(n,{withTypes:()=>n});const s=e=>{const{type:r,effect:i,predicate:n}=It(e),s=Oe(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===n)&&e.effect===i));return s&&(s.unsubscribe(),e.cancelActive&&xt(s)),!!s};Object.assign(s,{withTypes:()=>s});const a=async(e,s,a,o)=>{const c=new AbortController,d=Et(n,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(s,Tt({},a,{getOriginalState:o,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Rt(c.signal),pause:Ct(c.signal),extra:r,signal:c.signal,fork:Dt(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(bt(e,ht),r.delete(e))}))},cancel:()=>{bt(c,ht),e.pending.delete(c)},throwIfCancelled:()=>{wt(c.signal)}})))}catch(e){e instanceof ft||Mt(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),bt(c,mt),e.pending.delete(c)}},o=(e=>()=>{e.forEach(xt),e.clear()})(t);return{middleware:e=>r=>c=>{if(!v(c))return r(c);if(jt.match(c))return n(c.payload);if(Lt.match(c))return void o();if(At.match(c))return s(c.payload);let d=e.getState();const l=()=>{if(d===Pt)throw new Error(`${kt}: getOriginalState can only be called synchronously`);return d};let p;try{if(p=r(c),t.size>0){const r=e.getState(),n=Array.from(t.values());for(const t of n){let n=!1;try{n=t.predicate(c,r,d)}catch(e){n=!1,Mt(i,e,{raisedBy:"predicate"})}n&&a(t,c,e,l)}}}finally{d=Pt}return p},startListening:n,stopListening:s,clearListeners:o}})(),Yh=Zh.startListening,Xh=(e,t)=>Yh({predicate:(t,r,i)=>{const n=e.map((e=>e(i))),s=e.map((e=>e(r)));return n.some(((e,t)=>e!==s[t]))},effect:(r,{dispatch:i,getState:n,extra:s})=>{const a=e.map((e=>e(n())));t({dispatch:i,getState:n,extra:s},...a)}}),em=at({name:"app",initialState:{isNodeSdk:!1,wantsToJoin:!1,roomName:null,roomKey:null,roomUrl:null,displayName:null,sdkVersion:null,externalId:null},reducers:{doAppJoin:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,wantsToJoin:!0})},appLeft:e=>Object.assign(Object.assign({},e),{wantsToJoin:!1}),setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})}}),{doAppJoin:tm,appLeft:rm,setRoomKey:im}=em.actions,nm=e=>e.app.wantsToJoin,sm=e=>e.app.roomName,am=e=>e.app.roomKey,om=e=>e.app.displayName,cm=e=>e.app.sdkVersion,dm=e=>e.app.externalId,lm=e=>e.app.isNodeSdk;function pm(e){return De(`signalConnection/event/${e}`)}const um={audioEnabled:pm("audioEnabled"),chatMessage:pm("chatMessage"),clientLeft:pm("clientLeft"),clientKicked:pm("clientKicked"),clientMetadataReceived:pm("clientMetadataReceived"),cloudRecordingStarted:pm("cloudRecordingStarted"),cloudRecordingStopped:pm("cloudRecordingStopped"),disconnect:pm("disconnect"),knockerLeft:pm("knockerLeft"),knockHandled:pm("knockHandled"),newClient:pm("newClient"),roomJoined:pm("roomJoined"),roomKnocked:pm("roomKnocked"),roomSessionEnded:pm("roomSessionEnded"),screenshareStarted:pm("screenshareStarted"),screenshareStopped:pm("screenshareStopped"),streamingStopped:pm("streamingStopped"),videoEnabled:pm("videoEnabled")};function hm(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){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(a,o)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const mm=at({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(fm.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(fm.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(fm.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),fm=Qh("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>hm(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),gm=e=>e.deviceCredentials;Xh([we(nm,gm,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(fm())}));let vm=[],_m=0;const ym=new WeakMap;if(window.RTCPeerConnection){const eb=window.RTCPeerConnection;function tb(e){const t=new eb(e);vm.push(t),ym.set(t,{index:_m++});const r=()=>{"closed"===t.connectionState&&((e=>{vm=vm.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}tb.prototype=eb.prototype,window.RTCPeerConnection=tb}const bm=new URLSearchParams(window.location.search).has("debug");class wm{constructor(){this._isEnabled=bm}isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}info(...e){if(this._isEnabled)return console.info(...e)}warn(...e){if(this._isEnabled)return console.warn(...e)}error(...e){if(this._isEnabled)return console.error(...e)}withDebugLogger(e=null){return this._debugger=e,this}debug(...e){if(!this._isEnabled||!this._debugger)return;const t=[];e.forEach((e=>{if("function"==typeof e){const r=e();t.push(r)}else t.push(e)})),this._debugger.print(...t)}}const Sm="fetch_mediaserver_config",Cm="start_screenshare",Rm="stop_screenshare",Tm="audio_enabled",Pm="client_left",km="mediaserver_config",Dm="new_client",Em="screenshare_started",Im="screenshare_stopped",Om="room_joined",xm="video_enabled",Mm="ice_candidate",jm="ice_endofcandidates",Lm="ready_to_receive_offer",Am="sdp_answer",Nm="sdp_offer",Bm="pending_client_left",Fm="media_quality_changed",Um=new wm;class $m extends vn{constructor(e){super(),this._socket=e,this._clients={},this._signalDisconnectTime=void 0,this.rtcManager=void 0,this.metrics={roomJoinedLate:0,pendingClientCanceled:0,evaluationFailed:0,roomJoined:0},e.on("disconnect",(()=>{this._signalDisconnectTime=Date.now()})),e.on(Om,(e=>this._onRoomJoined(e))),e.on(Dm,(e=>this._onNewClient(e))),e.on(Pm,(e=>this._onClientLeft(e))),e.on(Bm,(e=>this._onPendingClientLeft(e))),e.on(Tm,(e=>this._onAudioEnabled(e))),e.on(xm,(e=>this._onVideoEnabled(e))),e.on(Em,(e=>this._onScreenshareChanged(e,!0))),e.on(Im,(e=>this._onScreenshareChanged(e,!1)))}async _onRoomJoined(e){if(!e.room?.clients)return void this.emit(Om,e);if(!e.selfId)return void this.emit(Om,e);const t=e.room.clients.find((t=>e.selfId===t.id))?.deviceId;if(!t)return void this.emit(Om,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===t&&e.isPendingToLeave))),void this.emit(Om,e);const r=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>r)return this._resetClientState(e),this.emit(Om,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===t&&e.isPendingToLeave)));const i=await void 0;e.room.clients.forEach((t=>{try{if(t.id===e.selfId)return;if(!this._clients[t.id])return void this._addClientToState(t);if(!this.rtcManager?.hasClient(t.id))return;if(this._hasClientStateChanged({clientId:t.id,webcam:t.isVideoEnabled,mic:t.isAudioEnabled,screenShare:t.streams.length>1}))return;if(this._wasClientSendingMedia(t.id)&&!this._isClientMediaActive(i,t.id))return;t.mergeWithOldClientState=!0}catch(e){Um.error("Failed to evaluate if we should merge client state %o",e),this.metrics.evaluationFailed++}})),e.room.clients.forEach((e=>{e.isPendingToLeave&&this._onPendingClientLeft({clientId:e.id})})),this.metrics.roomJoined++,this.emit(Om,e)}_onClientLeft(e){const{clientId:t}=e,r=this._clients[t];r&&(clearTimeout(r.timeout),delete this._clients[t]),this.rtcManager?.disconnect(t,null,e.eventClaim),this.emit(Pm,e)}_onPendingClientLeft(e){const{clientId:t}=e,r=this._clients[t];r?r.isPendingToLeave||(r.isPendingToLeave=!0,this._wasClientSendingMedia(t)&&(r.checkActiveMediaAttempts=0,this._abortIfNotActive(e))):Um.warn(`client ${t} not found`)}_onNewClient(e){const{client:{id:t,deviceId:r}}=e,i=this._clients[t];if(i&&i.isPendingToLeave)return clearTimeout(i.timeoutHandler),i.isPendingToLeave=!1,void this.metrics.pendingClientCanceled++;this._getPendingClientsByDeviceId(r).forEach((e=>{clearTimeout(e.timeoutHandler),e.isPendingToLeave=void 0,this.emit(Pm,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(Dm,e)}async _abortIfNotActive(e){const{clientId:t}=e;let r=this._clients[t];if(!r?.isPendingToLeave)return;if(r.checkActiveMediaAttempts++,r.checkActiveMediaAttempts>3)return;await this._checkIsActive(t)?r.timeoutHandler=setTimeout((()=>this._abortIfNotActive(e)),500):(r=this._clients[t],r?.isPendingToLeave&&(clearTimeout(r.timeoutHandler),delete this._clients[t],this.emit(Pm,e)))}async _checkIsActive(e){const t=await void 0;return this._isClientMediaActive(t,e)}_isClientMediaActive(e,t){const r=e?.[t];let i=!1;return r&&Object.entries(r.tracks).forEach((([e,t])=>{"probator"!==e&&Object.values(t.ssrcs).forEach((e=>{(e.bitrate||0)>0&&(i=!0)}))})),i}_onAudioEnabled(e){const{clientId:t,isAudioEnabled:r}=e;this._clients[t]={...this._clients[t]||{},isAudioEnabled:r}}_onVideoEnabled(e){const{clientId:t,isVideoEnabled:r}=e;this._clients[t]={...this._clients[t]||{},isVideoEnabled:r}}_onScreenshareChanged(e,t){const{clientId:r}=e;this._clients[r]={...this._clients[r]||{},isScreenshareEnabled:t}}_hasClientStateChanged({clientId:e,webcam:t,mic:r,screenShare:i}){const n=this._clients[e];if(!n)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==n.isVideoEnabled||(r!==n.isAudioEnabled||i!==n.isScreenshareEnabled)}_addClientToState(e){this._clients[e.id]={...this._clients[e.id]||{},isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled,isScreenshareEnabled:e.streams.length>1,deviceId:e.deviceId,isPendingToLeave:e.isPendingToLeave,clientId:e.id}}_wasClientSendingMedia(e){const t=this._clients[e];if(!t)throw new Error(`Client ${e} not found in ReconnectManager state`);return t.isAudioEnabled||t.isVideoEnabled||t.isScreenshareEnabled}_getPendingClientsByDeviceId(e){return Object.values(this._clients).filter((t=>t.deviceId===e&&t.isPendingToLeave))}_resetClientState(e){this._clients={},e.room.clients.forEach((t=>{t.id!==e.selfId&&this._addClientToState(t)}))}}const zm=fn.default??fn;class Vm{constructor(e,t,r){this._socket=si(e,{path:"/protocol/socket.io/v4",randomizationFactor:.5,reconnectionDelay:250,reconnectionDelayMax:5e3,timeout:5e3,transports:["websocket"],withCredentials:!0,...t}),this._socket.io.on("reconnect",(()=>{this._socket.sendBuffer=[]})),this._socket.io.on("reconnect_attempt",(()=>{this._wasConnectedUsingWebsocket?(this._socket.io.opts.transports=["websocket"],"safari"!==zm.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new $m(this._socket)),this._socket.on("connect",(()=>{"websocket"===this.getTransport()&&(this._wasConnectedUsingWebsocket=!0,this.noopKeepaliveInterval||(this.noopKeepaliveInterval=setInterval((()=>{try{this._socket.connected&&this._socket.io.engine.sendPacket("noop")}catch(e){}}),2e3)))})),this._socket.on("disconnect",(()=>{this.noopKeepaliveInterval&&(clearInterval(this.noopKeepaliveInterval),this.noopKeepaliveInterval=null)}))}setRtcManager(e){this._reconnectManager&&(this._reconnectManager.rtcManager=e)}connect(){this.isConnected()||this.isConnecting()||this._socket.open()}disconnect(){this._socket.disconnect()}disconnectOnConnect(){this._socket.once("connect",(()=>{this._socket.disconnect()}))}emit(){this._socket.emit.apply(this._socket,arguments)}emitIfConnected(e,t){this.isConnected()&&this.emit(e,t)}getTransport(){return this._socket&&this._socket.io&&this._socket.io.engine&&this._socket.io.engine.transport&&this._socket.io.engine.transport.name}getManager(){return this._socket.io}isConnecting(){return this._socket&&this._socket.connecting}isConnected(){return this._socket&&this._socket.connected}on(e,t){const r=[Om,Pm,Dm];return this._reconnectManager&&r.includes(e)?this._interceptEvent(e,t):(this._socket.on(e,t),()=>{this._socket.off(e,t)})}once(e,t){this._socket.once(e,t)}off(e,t){this._socket.off(e,t)}_interceptEvent(e,t){return this._reconnectManager&&this._reconnectManager.on(e,t),()=>{this._reconnectManager&&this._reconnectManager.removeListener(e,t)}}getGlitchFreeMetrics(){return this._reconnectManager?.metrics}}const qm=at({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"",socket:null},reducers:{socketConnecting:e=>Object.assign(Object.assign({},e),{status:"connecting"}),socketConnected:(e,t)=>Object.assign(Object.assign({},e),{socket:t.payload,status:"connected"}),socketDisconnected:e=>Object.assign(Object.assign({},e),{status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnect"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(um.disconnect,(e=>Object.assign(Object.assign({},e),{status:"disconnected"})))}}),{deviceIdentifying:Gm,deviceIdentified:Hm,socketConnected:Wm,socketConnecting:Km,socketDisconnected:Jm}=qm.actions,Qm=()=>(e,t)=>{if(sf(t()))return;e(Km());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new Vm(e,{autoConnect:!1})}();r.on("connect",(()=>e(Wm(r)))),r.on("device_identified",(()=>e(Hm()))),r.getManager().on("reconnect",(()=>e(Xm()))),function(e,t){e.on("room_joined",(e=>t(um.roomJoined(e)))),e.on("new_client",(e=>t(um.newClient(e)))),e.on("client_left",(e=>t(um.clientLeft(e)))),e.on("client_kicked",(e=>t(um.clientKicked(e)))),e.on("audio_enabled",(e=>t(um.audioEnabled(e)))),e.on("video_enabled",(e=>t(um.videoEnabled(e)))),e.on("client_metadata_received",(e=>t(um.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(um.chatMessage(e)))),e.on("disconnect",(()=>t(um.disconnect()))),e.on("room_knocked",(e=>t(um.roomKnocked(e)))),e.on("room_session_ended",(e=>t(um.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(um.knockerLeft(e)))),e.on("knock_handled",(e=>t(um.knockHandled(e)))),e.on("screenshare_started",(e=>t(um.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(um.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(um.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(um.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(um.streamingStopped())))}(r,e),r.connect()},Zm=({deviceCredentials:e})=>(t,r)=>{const i=r(),n=sf(i);n&&(n.emit("identify_device",{deviceCredentials:e}),t(Gm()))},Ym=()=>(e,t)=>{const r=tf(t()).socket;null==r||r.emit("leave_room"),null==r||r.disconnect(),e(Jm())},Xm=()=>(e,t)=>{const r=gm(t());e(ef()),r.data&&e(Zm({deviceCredentials:r.data}))},{socketReconnecting:ef}=qm.actions,tf=e=>e.signalConnection,rf=e=>e.signalConnection.deviceIdentified,nf=e=>e.signalConnection.status,sf=e=>e.signalConnection.socket;Yh({actionCreator:rm,effect:(e,{dispatch:t})=>{t(Ym())}});Xh([we(nm,nf,((e,t)=>!(!e||!["","reconnect"].includes(t))))],(({dispatch:e},t)=>{t&&e(Qm())}));const af=we(gm,nf,rf,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));Xh([af,gm],(({dispatch:e},t,r)=>{t&&r.data&&e(Zm({deviceCredentials:r.data}))}));const of=at({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(um.chatMessage,((e,t)=>{const r={senderId:t.payload.senderId,timestamp:t.payload.timestamp,text:t.payload.text};return Object.assign(Object.assign({},e),{chatMessages:[...e.chatMessages,r]})}))}}),cf=e=>(t,r)=>{const i=r(),n=tf(i).socket;null==n||n.emit("chat_message",{text:e.text})},df=at({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(um.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(um.cloudRecordingStarted,((e,t)=>{const{payload:r}=t;return r.error?Object.assign(Object.assign({},e),{isRecording:!1,status:"error",error:r.error}):e})),e.addCase(um.newClient,((e,{payload:t})=>{var r;const{client:i}=t;return"recorder"===(null===(r=i.role)||void 0===r?void 0:r.roleName)?Object.assign(Object.assign({},e),{isRecording:!0,status:"recording",startedAt:i.startedCloudRecordingAt?new Date(i.startedCloudRecordingAt).getTime():(new Date).getTime()}):e}))}}),{recordingRequestStarted:lf}=df.actions,pf=()=>(e,t)=>{const r=t(),i=tf(r).socket,n=hf(r);n&&["recording","requested"].includes(n)||(null==i||i.emit("start_recording",{recording:"cloud"}),e(lf()))},uf=()=>(e,t)=>{const r=t(),i=tf(r).socket;null==i||i.emit("stop_recording")},hf=e=>e.cloudRecording.status,mf="safari"===(fn.default??fn).browserDetails.browser,ff=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function gf({devices:e,videoId:t,audioId:r,options:i,type:n="ideal"}){const s=e.filter((e=>"audioinput"===e.kind)),a=e.filter((e=>"videoinput"===e.kind)),o=!r||!s.some((e=>e.deviceId===r)),c=!t||!a.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:i,lowDataMode:n,preferredDeviceIds:s,resolution:a,simulcast:o,widescreen:c}){let d=480,l=240;r&&(d=i||mf?720:{min:360,ideal:720}),o&&(!1===r?(d=360,l=270):l=360);const p={audio:{...s.audioId&&{deviceId:s.audioId}},video:{...s.videoId?{deviceId:s.videoId}:{facingMode:"user"},height:n?l:d,frameRate:n&&!o?15:24}};if(i)return p.audio.deviceId||(p.audio=!0),delete p.video.facingMode,p;if(a){const[e,t,r]=ff(a);e&&(p.video.width={exact:e}),t&&(p.video.height={exact:t}),r&&(p.video.frameRate={exact:r}),delete p.video.facingMode}else p.video.aspectRatio=c?16/9:4/3;return t&&(p.audio.autoGainControl=!1),e&&(p.audio.echoCancellation=!1),p}({preferredDeviceIds:{audioId:o?null:{[n]:r},videoId:c?null:{[n]:t}},...i});return!1!==r&&s.length||delete d.audio,!1!==t&&a.length||delete d.video,d}function vf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}class _f extends Error{constructor(e){super(e.message),this.name="AssertionError",this.code="ERR_ASSERTION",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,Error.captureStackTrace&&Error.captureStackTrace(this,e.stackStartFn)}}function yf(...e){!function(e,t,r,i){if(!r){let n=!1;if(0===t)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;const s=new _f({actual:r,expected:!0,message:i,operator:"==",stackStartFn:e});throw s.generatedMessage=n,s}}(yf,e.length,...e)}const bf=yf;bf.notEqual=function e(t,r,i){if(arguments.length<2)throw new Error("'actual' and 'expected' arguments are required");t==r&&function(e){if(e.message instanceof Error)throw e.message;throw new _f(e)}({actual:t,expected:r,message:i,operator:"!=",stackStartFn:e})},bf.ok=yf;var wf=vf(bf);const Sf=new wm,Cf=/mobi/i.test(navigator.userAgent);class Rf extends Error{constructor(...e){super(...e),this.name="nodevices"}}function Tf(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw Sf.error(`getUserMedia ${r}`),t})):Promise.reject(new Rf("No provided devices"))}function Pf(e,t,r,i){let n={deviceId:null};return t?(n.label=t.label,t.getSettings&&(n={...n,...t.getSettings()}),n.deviceId?n:(t.getCapabilities&&(n.deviceId=t.getCapabilities().deviceId),n.deviceId?n:(t.label&&r&&(n.deviceId=r.find((r=>t.label===r.label&&r.kind===e))?.deviceId),n.deviceId||(n.deviceId=t.getConstraints()?.deviceId?.exact,n.broken=1),n))):(i&&r&&(n.deviceId=r.find((t=>t.deviceId===i&&t.kind===e))?.deviceId),n)}function kf(e,t){wf(!t||["audio","video"].includes(t),"only is invalid"),t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}async function Df(e,{replaceStream:t,fallback:r=!0}={}){let i,n,s,a;wf(e,"constraints is required");const o=!1===e.audioId?"video":!1===e.videoId&&"audio",c=Cf||"video"!==o,d=gf(e),l=(e,t)=>(e.details={constraints:d,constraint:e.constraint||t?.constraint,newConstraints:n,fallback:r,stopTracks:c,...e!==i&&{error:String(i)}},e);c&&t&&kf(t,o);try{a=await Tf(d)}catch(n){if(i=n,!r)throw l(n);if("OverconstrainedError"===n.name)s={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{videoId:null,audioId:null,lax:!0}}[n.constraint||""];else if("NotFoundError"===n.name){if(d.audio&&d.video){try{a=await Tf(gf({...e,audioId:!1}))}catch(e){if("NotFoundError"!==e.name)throw l(e,n)}try{a||(a=await Tf(gf({...e,videoId:!1})))}catch(e){throw l(e,n)}}}else if("NotAllowedError"===n.name||"NotReadableError"===n.name||"AbortError"===n.name)if(t&&!c)kf(t,o),s=e;else if("NotAllowedError"!==n.name){try{a=await Tf(gf({...e,options:{...e.options,lax:!0}}))}catch(e){Sf.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+n).toLowerCase(),r={audio:"audioId",video:"videoId"}[/(video|audio)/.exec(t)?.[0]||o];if(!a&&r)try{a=await Tf(gf({...e,[r]:null}))}catch(e){Sf.warn(`Re-tried ${r} with no constraints, but failed: ${""+e}`)}if(!a){const t=r?[r]:["videoId","audioId"];for(const r of t){try{a=await Tf(gf({...e,[r]:!1}))}catch(e){Sf.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(a)break}}}}if(s){n=gf({...e,...s,options:{...e.options,lax:s.lax},...{audio:{videoId:!1},video:{audioId:!1}}[o]});try{a=await Tf(n)}catch(e){throw l(e,i)}}if(!a)throw l(i);let p;return t&&(c||kf(t,o),p=function(e,t,r){const i=[];return r&&"audio"!==r||(i.push(...e.getAudioTracks()),t.getAudioTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),r&&"video"!==r||(i.push(...e.getVideoTracks()),t.getVideoTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),i.forEach((t=>{t.replaced=!0,e.removeTrack(t)})),i}(t,a,o),a=t),{error:i&&l(i),stream:a,replacedTracks:p}}const Ef=at({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isTogglingCamera:!1,microphoneEnabled:!1,status:"",isSwitchingStream:!1},reducers:{deviceBusy:(e,t)=>e.busyDeviceIds.includes(t.payload.deviceId)?e:Object.assign(Object.assign({},e),{busyDeviceIds:[...e.busyDeviceIds,t.payload.deviceId]}),toggleCameraEnabled(e,t){var r;return Object.assign(Object.assign({},e),{cameraEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.cameraEnabled})},setCurrentCameraDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentCameraDeviceId:t.payload.deviceId}),toggleMicrophoneEnabled(e,t){var r;return Object.assign(Object.assign({},e),{microphoneEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.microphoneEnabled})},setCurrentMicrophoneDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentMicrophoneDeviceId:t.payload.deviceId}),setDevices:(e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}),setLocalMediaStream:(e,t)=>Object.assign(Object.assign({},e),{stream:t.payload.stream}),setLocalMediaOptions:(e,t)=>Object.assign(Object.assign({},e),{options:t.payload.options}),localMediaStopped:e=>Object.assign(Object.assign({},e),{status:"stopped",stream:void 0}),localStreamMetadataUpdated(e,t){const{audio:r,video:i}=t.payload;return Object.assign(Object.assign({},e),{currentCameraDeviceId:i.deviceId,currentMicrophoneDeviceId:r.deviceId,busyDeviceIds:e.busyDeviceIds.filter((e=>e!==r.deviceId&&e!==i.deviceId))})}},extraReducers:e=>{e.addCase(tm,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase($f.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase($f.fulfilled,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice})})),e.addCase($f.rejected,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice,cameraDeviceError:i?t.error:e.cameraDeviceError,microphoneDeviceError:r?t.error:e.microphoneDeviceError})})),e.addCase(Ff.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(Ff.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(zf.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(qf.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(qf.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let i,n,s=!1,a=!1;const o=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return o&&(n=o.getSettings().deviceId,a=o.enabled),c&&(s=c.enabled,i=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:i,currentMicrophoneDeviceId:n,cameraEnabled:s,microphoneEnabled:a,onDeviceChange:r})})),e.addCase(qf.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(Vf.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(Vf.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(Vf.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:If,setCurrentCameraDeviceId:Of,setCurrentMicrophoneDeviceId:xf,toggleCameraEnabled:Mf,toggleMicrophoneEnabled:jf,setLocalMediaOptions:Lf,setLocalMediaStream:Af,localMediaStopped:Nf,localStreamMetadataUpdated:Bf}=Ef.actions,Ff=Qh("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>hm(void 0,void 0,void 0,(function*(){const e=t(),i=tg(e);if(!i)return;let n=i.getVideoTracks()[0];const s=Jf(e);try{if(s)if(n)n.enabled=!0;else{const t=ig(e),r=Wf(e);yield Df(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:i}),n=i.getVideoTracks()[0]}else{if(!n)return;n.enabled=!1,n.stop(),i.removeTrack(n)}i.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:n,enable:s}}))}catch(e){return r(e)}})))),Uf=Qh("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),n=tg(i);if(!n)return;const s=Qf(i),a=null===(r=n.getAudioTracks())||void 0===r?void 0:r[0];a&&(a.enabled=s)})),$f=Qh("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>hm(void 0,void 0,void 0,(function*(){try{const i=r(),n=tg(i);if(!n)throw new Error("No stream");const s=!!e&&Kf(i),a=!!t&&Wf(i),o=ig(i),{replacedTracks:c}=yield Df(Object.assign(Object.assign({},o),{audioId:s,videoId:a,type:"exact"}),{replaceStream:n}),d=Qf(i);n.getAudioTracks().forEach((e=>e.enabled=d));const l=Jf(i);return n.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),zf=Qh("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>hm(void 0,void 0,void 0,(function*(){var e,n;const s=t();let a=[],o=[];const c=tg(s),d=Hf(s);try{a=yield navigator.mediaDevices.enumerateDevices(),o=Zf(s);if(!(c&&!rg(s)&&a&&o&&o.find((e=>e.deviceId))))return{devices:a};const{changedDevices:l}=function({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:i,currentSpeakerId:n}){const s=function(e,t){const[r,i]=[e,t].map((e=>e.filter((e=>e.kind&&e.deviceId)).reduce(((e,t)=>({...e,[t.kind]:{...e[t.kind],[t.deviceId]:t}})),{}))),n={};return e.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),i[e.kind]&&i[e.kind][e.deviceId]||(n[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),r[e.kind]&&r[e.kind][e.deviceId]?r[e.kind][e.deviceId].label&&r[e.kind][e.deviceId].label!==e.label&&(n[e.kind].changed[e.deviceId]=e):n[e.kind].added[e.deviceId]=e)})),n}(e,t),a={},o={};return[["audioinput",r],["videoinput",i],["audiooutput",n]].forEach((([e,r])=>{const i=s[e];if(i){if(r){if(i.removed[r]&&(a[e]={deviceId:null},"audiooutput"===e)){const r=t.find((e=>"audiooutput"===e.kind));a[e]={deviceId:r?.deviceId}}i.changed[r]&&(a[e]={deviceId:r})}if(Object.keys(i.added).length){const[t]=Object.keys(i.added).slice(0,1),r=i.added[t];o[e]={deviceId:r.deviceId,label:r.label,kind:r.kind}}}})),{addedDevices:o,changedDevices:a}}({oldDevices:o,newDevices:a,currentAudioId:Kf(s),currentVideoId:Wf(s)});let p=null===(e=l.audioinput)||void 0===e?void 0:e.deviceId,u=null===(n=l.videoinput)||void 0===n?void 0:n.deviceId;function h(e,t){const r=t?e.findIndex((e=>e.deviceId===t)):0;return(e[(r+1)%e.length]||{}).deviceId}if(void 0!==u){const m=Zf(s).filter((e=>"videoinput"===e.kind)),f=Wf(s);let g=h(m.filter((e=>!d.includes(e.deviceId))),f);g&&f!==g||(g=h(m,f)),f!==g&&(u=g)}if(void 0!==p){const v=Zf(s).filter((e=>"audioinput"===e.kind)),_=Kf(s);let y=h(v.filter((e=>!d.includes(e.deviceId))),_);y&&_!==y||(y=h(v,_)),_!==y&&(p=y)}return void 0===p&&void 0===u||r(Vf({audioId:p,videoId:u})),{devices:a}}catch(b){return i(b)}})))),Vf=Qh("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:n})=>hm(void 0,void 0,void 0,(function*(){const s=i(),a=tg(s),o=ig(s),c=!(!t||e)||!(t||!e);if(a)try{const{replacedTracks:i}=yield Df(Object.assign(Object.assign({},o),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:a}),n=e||t;return c&&n&&r(If({deviceId:n})),{replacedTracks:i}}catch(i){console.error(i);const s=e||t;return c&&s&&r(If({deviceId:s})),n(i)}})))),qf=Qh("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>hm(void 0,void 0,void 0,(function*(){const n=s((()=>{r(zf())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",n),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:n});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:n};r(Lf({options:e}));try{yield r(zf());const i=t(),s=ig(i),{stream:a}=yield Df(Object.assign(Object.assign({},s),{audioId:e.audio,videoId:e.video}));return{stream:a,onDeviceChange:n}}catch(e){return i(e)}})))),Gf=()=>(e,t)=>{const r=tg(t()),i=Xf(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(Nf())},Hf=e=>e.localMedia.busyDeviceIds,Wf=e=>e.localMedia.currentCameraDeviceId,Kf=e=>e.localMedia.currentMicrophoneDeviceId,Jf=e=>e.localMedia.cameraEnabled,Qf=e=>e.localMedia.microphoneEnabled,Zf=e=>e.localMedia.devices,Yf=e=>e.localMedia.options;we(Yf,(e=>!!e));const Xf=e=>e.localMedia,eg=e=>e.localMedia.status,tg=e=>e.localMedia.stream,rg=e=>e.localMedia.isSwitchingStream,ig=we(Zf,(e=>({devices:e,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:!1,simulcast:!0,widescreen:!0}}))),ng=we(eg,(e=>"starting"===e)),sg=we(Zf,Hf,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),ag=we(Zf,Hf,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),og=we(Zf,(e=>e.filter((e=>"audiooutput"===e.kind))));Xh([we(nm,eg,Yf,lm,((e,t,r,i)=>{if(e&&""===t&&!i&&r)return r}))],(({dispatch:e},t)=>{t&&e(qf(t))}));Xh([we(nm,eg,Yf,((e,t,r)=>!e&&""!==t&&!!r))],(({dispatch:e},t)=>{t&&e(Gf())})),Yh({predicate:(e,t,r)=>{const i=Qf(r),n=Qf(t);return"started"===eg(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Uf())}}),Yh({predicate:(e,t,r)=>{if(t.localMedia.isTogglingCamera)return!1;const i=Jf(r),n=Jf(t);return"started"===eg(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Ff())}}),Yh({predicate:(e,t,r)=>{const i=Wf(r),n=Wf(t);return"started"===eg(r)&&i!==n},effect:(e,{dispatch:t})=>{t($f({audio:!1,video:!0}))}}),Yh({predicate:(e,t,r)=>{const i=Kf(r),n=Kf(t);return"started"===eg(r)&&i!==n},effect:(e,{dispatch:t})=>{t($f({audio:!0,video:!1}))}}),Yh({matcher:Qe(qf.fulfilled,zf.fulfilled,Vf.fulfilled,Vf.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),n=tg(i),s=Zf(i);if(!n)return;const a=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:i,lastAudioId:n,lastVideoId:s}){const a=e=>"live"===e?.readyState?e:null;return t=a(t)||i,e=a(e),{video:Pf("videoinput",t,r,s),audio:Pf("audioinput",e,r,n)}}({audioTrack:n.getAudioTracks()[0],videoTrack:n.getVideoTracks()[0],devices:s});t(Bf(a))}});const cg={displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"",clientClaim:void 0},dg=Qh("localParticipant/doEnableAudio",((e,{getState:t})=>hm(void 0,void 0,void 0,(function*(){const r=t(),i=tf(r).socket;return null==i||i.emit("enable_audio",{enabled:e.enabled}),e.enabled})))),lg=Qh("localParticipant/doEnableVideo",((e,{getState:t})=>hm(void 0,void 0,void 0,(function*(){const r=t(),i=tf(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),pg=Qh("localParticipant/doSetDisplayName",((e,{getState:t})=>hm(void 0,void 0,void 0,(function*(){const r=t(),i=tf(r).socket;return null==i||i.emit("send_client_metadata",{type:"UserData",payload:e}),e.displayName})))),ug=at({name:"localParticipant",initialState:cg,reducers:{doSetLocalParticipant:(e,t)=>Object.assign(Object.assign({},e),t.payload)},extraReducers:e=>{e.addCase(tm,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(dg.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(lg.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(pg.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload}))),e.addCase(um.roomJoined,((e,t)=>{var r,i;const n=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{id:t.payload.selfId,clientClaim:t.payload.clientClaim,roleName:(null==n?void 0:n.role.roleName)||""})}))}});ug.actions;const hg=e=>e.localParticipant,mg=e=>e.localParticipant.id;Yh({actionCreator:Mf,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:n}=hg(r());t(lg({enabled:i||!n}))}}),Yh({actionCreator:jf,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:n}=hg(r());t(dg({enabled:i||!n}))}});const fg=at({name:"localScreenshare",initialState:{status:"",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"",stream:null})},extraReducers:e=>{e.addCase(vg.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(vg.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(vg.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"",stream:null})))}}),{stopScreenshare:gg}=fg.actions,vg=Qh("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>hm(void 0,void 0,void 0,(function*(){var e;try{const i=r(),n=yg(i);if(n)return{stream:n};const s=yield navigator.mediaDevices.getDisplayMedia(),a=()=>{t(_g())};return"oninactive"in s?s.addEventListener("inactive",a):null===(e=s.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",a),{stream:s}}catch(e){return i(e)}})))),_g=()=>(e,t)=>{const r=t(),i=yg(r);i&&(i.getTracks().forEach((e=>e.stop())),e(gg({stream:i})))},yg=e=>e.localScreenshare.stream;Yh({actionCreator:Nf,effect:(e,{getState:t})=>{const r=t(),i=yg(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const bg=at({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(wg.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(wg.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(wg.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),wg=Qh("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>hm(void 0,void 0,void 0,(function*(){try{const e=r().app.roomUrl,i=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!i)throw new Error("Invalid room url");return i}catch(e){console.error(e)}})))),Sg=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId};function Cg(e){return De(`rtcConnection/event/${e}`)}Xh([we(nm,(e=>e.organization),gm,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)))],(({dispatch:e},t)=>{t&&e(wg())}));const Rg={rtcManagerCreated:Cg("rtcManagerCreated"),rtcManagerDestroyed:Cg("rtcManagerDestroyed"),streamAdded:Cg("streamAdded")},Tg=["recorder","streamer"];function Pg(e,t=!1){const{streams:r}=e,i=function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}(e,["streams"]);return Object.assign(Object.assign({},i),{stream:null,streams:r.map((e=>({id:e,state:t?"new_accept":"to_accept"}))),isLocalParticipant:!1,presentationStream:null,newJoiner:t})}function kg(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function Dg(e,t,r){const{participant:i,index:n}=kg(e,t);return i?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,n),Object.assign(Object.assign({},i),r),...e.remoteParticipants.slice(n+1)]}):(console.error(`Did not find client for update ${t}`),e)}function Eg(e,t,r,i){const{participant:n}=kg(e,t);if(!n)return console.error(`No client ${t} found to update stream ${r} ${i}`),e;const s=n.streams.findIndex((e=>e.id===r)),a=[...n.streams];return a[s]=Object.assign(Object.assign({},a[s]),{state:i}),Dg(e,t,{streams:a})}function Ig(e,t,r){const{participant:i}=kg(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):Dg(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const Og=at({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:n}of t.payload)r=Eg(r,e,i,n);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return Dg(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return Ig(e,r,i)}},extraReducers:e=>{e.addCase(um.roomJoined,((e,t)=>{var r;if(!(null===(r=t.payload)||void 0===r?void 0:r.room))return e;const i=t.payload.selfId,{clients:n}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:n.filter((e=>e.id!==i)).filter((e=>!Tg.includes(e.role.roleName))).map((e=>Pg(e)))})})),e.addCase(Rg.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:n}=t;let{streamId:s}=t;const{participant:a}=kg(e,r);if(!a)return console.error(`Did not find client ${r} for adding stream`),e;const o=e.remoteParticipants;s||(s=i.id);const c=o.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===s));return c.stream&&(c.stream.id===s||c.stream.inboundId===s)||!c.stream&&"webcam"===n||!c.stream&&!n&&!d?Dg(e,r,{stream:i}):Dg(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(um.newClient,((e,t)=>{const{client:r}=t.payload;return Tg.includes(r.role.roleName)?e:function(e,t){const{participant:r}=kg(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,Pg(r,!0))})),e.addCase(um.clientLeft,((e,t)=>{const{clientId:r}=t.payload;return function(e,t){return Object.assign(Object.assign({},e),{remoteParticipants:e.remoteParticipants.filter((e=>e.id!==t))})}(e,r)})),e.addCase(um.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return Dg(e,r,{isAudioEnabled:i})})),e.addCase(um.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return Dg(e,r,{isVideoEnabled:i})})),e.addCase(um.clientMetadataReceived,((e,t)=>{const{clientId:r,displayName:i}=t.payload.payload;return Dg(e,r,{displayName:i})})),e.addCase(um.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Ig(e,r,i)})),e.addCase(um.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,n;const{participant:s}=kg(e,t);if(!s)return console.error(`No participant ${t} found to remove stream ${r}`),e;const a=s.stream&&s.stream.id,o=(null===(i=s.presentationStream)||void 0===i?void 0:i.inboundId)||(null===(n=s.presentationStream)||void 0===n?void 0:n.id),c=s.streams.findIndex((e=>e.id===r));return Dg(e,t,Object.assign(Object.assign({streams:s.streams.filter(((e,t)=>t!==c))},a===r&&{stream:null}),o===r&&{presentationStream:null}))}(e,r,i)}))}}),{participantStreamAdded:xg,participantStreamIdAdded:Mg,streamStatusUpdated:jg}=Og.actions,Lg=e=>e.remoteParticipants.remoteParticipants,Ag=we(yg,Lg,((e,t)=>{const r=[];e&&r.push({id:e.id,participantId:"local",hasAudioTrack:e.getAudioTracks().length>0,stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id,participantId:e.id,hasAudioTrack:e.presentationStream.getAudioTracks().length>0,stream:e.presentationStream,isLocal:!1});return r})),Ng=at({initialState:{session:null,status:"initializing",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(um.roomJoined,((e,t)=>{var r,i;const{error:n,isLocked:s}=t.payload;return"room_locked"===n&&s?Object.assign(Object.assign({},e),{status:"room_locked"}):n?Object.assign(Object.assign({},e),{status:"disconnected",error:n}):Object.assign(Object.assign({},e),{status:"connected",session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(um.disconnect,(e=>Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(um.newClient,((e,t)=>{var r,i;return Object.assign(Object.assign({},e),{session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(um.roomSessionEnded,((e,t)=>{var r;return(null===(r=e.session)||void 0===r?void 0:r.id)!==t.payload.roomSessionId?e:Object.assign(Object.assign({},e),{session:null})})),e.addCase(um.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(ef,(e=>Object.assign(Object.assign({},e),{status:"reconnect"})))}}),{connectionStatusChanged:Bg}=Ng.actions,Fg=()=>(e,t)=>{const r=t(),i=tf(r).socket,n=sm(r),s=am(r),a=om(r),o=cm(r),c=dm(r),d=Sg(r);null==i||i.emit("knock_room",{avatarUrl:null,config:{isAudioEnabled:!0,isVideoEnabled:!0},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,selfId:"",userAgent:`browser-sdk:${o||"unknown"}`,externalId:c}),e(Bg("knocking"))},Ug=()=>(e,t)=>{const r=t(),i=tf(r).socket,n=sm(r),s=am(r),a=om(r),o=cm(r),c=dm(r),d=Sg(r),l=Jf(t()),p=Qf(t()),u=mg(t()),h=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign(Object.assign({avatarUrl:null,config:{isAudioEnabled:p,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,selfId:u},!!h&&{clientClaim:h}),{userAgent:`browser-sdk:${o||"unknown"}`,externalId:c})),e(Bg("connecting"))},$g=e=>e.roomConnection.status;function zg(e){return{id:e.id,tracks:e.getTracks().map((function(e){return{id:e.id,kind:e.kind,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}}))}}Xh([we([Sg,$g,rf,eg,lm],((e,t,r,i,n)=>!("started"!==i&&!n||!r||!e||!["initializing","reconnect"].includes(t))))],(({dispatch:e},t)=>{t&&e(Ug())})),Yh({actionCreator:um.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:n}=e,s=r();i===mg(s)&&("accepted"===n?(t(im(e.metadata.roomKey)),t(Ug())):"rejected"===n&&t(Bg("knock_rejected")))}});var Vg=function(e,t,r){var i=0,n=!!window.mozRTCPeerConnection,s=!!window.RTCIceGatherer,a={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!s)){var o=window[r+"RTCPeerConnection"],c=function(r,c){var d=new o(r,c),l="PC_"+i++;d.__rtcStatsId=l,r||(r={nullConfig:!0}),((r=JSON.parse(JSON.stringify(r)))&&r.iceServers||[]).forEach((function(e){delete e.credential})),r.browserType=n?"moz":s?"edge":"webkit",e("create",l,r),c&&e("constraints",l,c),d.addEventListener("icecandidate",(function(t){e("onicecandidate",l,t.candidate)})),d.addEventListener("addstream",(function(t){e("onaddstream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("track",(function(t){e("ontrack",l,t.track.kind+":"+t.track.id+" "+t.streams.map((function(e){return"stream:"+e.id})))})),d.addEventListener("removestream",(function(t){e("onremovestream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("signalingstatechange",(function(){e("onsignalingstatechange",l,d.signalingState)})),d.addEventListener("iceconnectionstatechange",(function(){e("oniceconnectionstatechange",l,d.iceConnectionState)})),d.addEventListener("icegatheringstatechange",(function(){e("onicegatheringstatechange",l,d.iceGatheringState)})),d.addEventListener("connectionstatechange",(function(){e("onconnectionstatechange",l,d.connectionState)})),d.addEventListener("negotiationneeded",(function(){e("onnegotiationneeded",l,void 0)})),d.addEventListener("datachannel",(function(t){e("ondatachannel",l,[t.channel.id,t.channel.label])}));var p=function(){d.getStats(null).then((function(t){var r=function(e){if(!e.entries)return e;var t={};return e.forEach((function(e,r){t[r]=e})),t}(t),i=JSON.parse(JSON.stringify(r));e("getstats",l,function(e,t){t=JSON.parse(JSON.stringify(t)),Object.keys(t).forEach((function(r){var i=t[r];delete i.id,e[r]&&Object.keys(i).forEach((function(n){i[n]===e[r][n]&&delete t[r][n],(0===Object.keys(i).length||1===Object.keys(i).length&&i.timestamp)&&delete t[r]}))}));var r=-1/0;return Object.keys(t).forEach((function(e){var i=t[e];i.timestamp>r&&(r=i.timestamp)})),Object.keys(t).forEach((function(e){var i=t[e];i.timestamp===r&&(i.timestamp=0)})),t.timestamp=r,t}(a[l]||{},r)),a[l]=i}))};if(!s&&t)var u=window.setInterval((function(){"closed"!==d.signalingState?p():window.clearInterval(u)}),t);return s||d.addEventListener("connectionstatechange",(function(){"connected"!==d.connectionState&&"failed"!==d.connectionState||p()})),d};["createDataChannel","close"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){return e(t,this.__rtcStatsId,arguments),r.apply(this,arguments)})})),["addStream","removeStream"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],n=i.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,i.id+" "+n),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],n=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,i.kind+":"+i.id+" "+(n.map((function(e){return"stream:"+e.id})).join(";")||"-")),r.apply(this,arguments)})})),["removeTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0].track;return e(t,this.__rtcStatsId,i?i.kind+":"+i.id:"null"),r.apply(this,arguments)})})),["createOffer","createAnswer"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i,n=this.__rtcStatsId,s=arguments;return 1===arguments.length&&"object"==typeof arguments[0]?i=arguments[0]:3===arguments.length&&"object"==typeof arguments[2]&&(i=arguments[2]),e(t,this.__rtcStatsId,i),r.apply(this,i?[i]:void 0).then((function(r){if(e(t+"OnSuccess",n,r),!(s.length>0&&"function"==typeof s[0]))return r;s[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",n,r.toString()),!(s.length>1&&"function"==typeof s[1]))throw r;s[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=this.__rtcStatsId,n=arguments;return e(t,this.__rtcStatsId,n[0]),r.apply(this,[n[0]]).then((function(){e(t+"OnSuccess",i,void 0),n.length>=2&&"function"==typeof n[1]&&n[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(n.length>=3&&"function"==typeof n[2]))throw r;n[2].apply(null,[r])}))})})),o.generateCertificate&&Object.defineProperty(c,"generateCertificate",{get:function(){return arguments.length?o.generateCertificate.apply(null,arguments):o.generateCertificate}}),window[r+"RTCPeerConnection"]=c,window[r+"RTCPeerConnection"].prototype=o.prototype}})),r.forEach((function(t){var r=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[r]){var i=navigator[r].bind(navigator);navigator[r]=function(){e("getUserMedia",null,arguments[0]);var t=arguments[1],r=arguments[2];i(arguments[0],(function(r){e("getUserMediaOnSuccess",null,zg(r)),t&&t(r)}),(function(t){e("getUserMediaOnFailure",null,t.name),r&&r(t)}))}.bind(navigator)}})),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var o=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(){return e("navigator.mediaDevices.getUserMedia",null,arguments[0]),o.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getUserMediaOnSuccess",null,zg(t)),t}),(function(t){return e("navigator.mediaDevices.getUserMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var c=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=function(){return e("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),c.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getDisplayMediaOnSuccess",null,zg(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){a={}}}},qg=vf(Vg);fn.default;const Gg={id:En(),connectionNumber:0},Hg=()=>{};let Wg=Hg;const Kg=function(e,t=console){const r=[];let i,n,s,a,o,c,d,l=0,p=!1,u=0;const h={connected:!1,trace:(...e)=>{if(e.push(Date.now()),"customEvent"===e[0]&&"roomSessionId"===e[2].type){const t=c&&c[2].value.roomSessionId,r=e[2].value.roomSessionId;if(c=e,p&&r&&r!==t&&i)return void i.close();r&&(p=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?s=e:"customEvent"===e[0]&&"organizationId"===e[2].type?n=e:"customEvent"===e[0]&&"displayName"===e[2].type?a=e:"customEvent"===e[0]&&"userRole"===e[2].type&&(o=e);i.readyState===WebSocket.OPEN?(l=0,i.send(JSON.stringify(e))):"getstats"===e[0]?u<20&&(u++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),i.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&h.connect()}),1e3*l)},close:()=>{d=!1,i&&i.close()},connect:()=>{d=!0,l+=1,i&&i.close(),h.connected=!0,i=new WebSocket(e+window.location.pathname,"1.0"),i.onerror=e=>{h.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},i.onclose=e=>{h.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),Wg()},i.onopen=()=>{for(Gg.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,Gg])),n&&i.send(JSON.stringify(n)),s&&i.send(JSON.stringify(s)),c&&i.send(JSON.stringify(c)),a&&i.send(JSON.stringify(a)),o&&i.send(JSON.stringify(o));r.length;)i.send(JSON.stringify(r.shift()));u=0}}};return h.connect(),h}("wss://rtcstats.srv.whereby.com"),Jg=qg(Kg.trace,1e4,[""]);Wg=Jg?.resetDelta||Hg;const Qg={sendEvent:(e,t)=>{Kg.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{Qg.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{Qg.sendEvent("video_muted",{muted:e})},server:Kg},Zg=fn.default??fn,Yg=new wm,Xg=Zg.browserDetails.browser,ev=Zg.browserDetails.version;function tv(e,t){let r=e.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/),i=t.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/);r||(r=e.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/),i=t.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/));for(let e=1;e<r.length;e++)t=t.replace(new RegExp(i[e],"g"),r[e]);return t}function rv(e){return"firefox"!==Xg?e:nn.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function iv(e){return function(e,t,r=!1,i=!1){try{const n=qn(e);if(n?.ext?.length>0)return e;if(n?.media.length<1)return e;const s=n?.media.flatMap((e=>e.ext||[])),a=s.find((e=>e.uri===t))?.value||[...new Set([0,15,...s.map((e=>e.value))])].sort(((e,t)=>e-t)).find(((e,t,r)=>e+1!==r[t+1]))+1;return n.media.forEach((e=>{(r&&"audio"===e.type||i&&"video"===e.type)&&(e.ext?.find((e=>e.uri===t))||(Array.isArray(e.ext)?e.ext.push({value:a,uri:t}):e.ext=[{value:a,uri:t}]))})),Vn(n)}catch(e){console.error("Error during addAbsCaptureTimeExtMap: ",e)}return e}(e,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time",!0,!0)}function nv(e,t,r=console){const i=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!i)return Promise.resolve();const n=i.getParameters();return n.encodings&&0===n.encodings.length?Promise.resolve():(n.encodings||(n.encodings=[{}]),0===t?delete n.encodings[0].maxBitrate:n.encodings[0].maxBitrate=1e3*t,i.setParameters(n).catch((e=>{r.error("setParameters err: ",e)})))}const sv=400,av=fn.default??fn,ov=new wm;class cv{constructor({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:r,deprioritizeH264Encoding:i}){this.peerConnectionId=e,this.relayCandidateSeen=!1,this.serverReflexiveCandidateSeen=!1,this.publicHostCandidateSeen=!1,this.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this.pc=null,this.wasEverConnected=!1,this.connectionStatus=null,this.stats={totalSent:0,totalRecv:0},this.bandwidth=t||0,this.maximumTurnBandwidth=r,this.pending=[],this.isOperationPending=!1,this.streamIds=[],this.streams=[],this.earlyIceCandidates=[],this.afterConnected=new Promise((e=>{this.registerConnected=e})),this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._deprioritizeH264Encoding=i}setAndGetPeerConnection({clientId:e,constraints:t,peerConnectionConfig:r,shouldAddLocalVideo:i}){return this.peerConnectionConfig=r,this.shouldAddLocalVideo=i,this.clientId=e,this.pc=new RTCPeerConnection(r,t),this.signalingState=this.pc.signalingState,this.pc.addEventListener("signalingstatechange",(()=>{if(this.signalingState!==this.pc.signalingState&&(this.signalingState=this.pc.signalingState,"stable"===this.pc.signalingState)){this.isOperationPending=!1;const e=this.pending.shift();e&&e.apply()}})),this.pc}addStream(e){this.streamIds.push(e.id),this.streams.push(e),RTCPeerConnection.prototype.addTrack?(e.getAudioTracks().forEach((t=>{this.pc.addTrack(t,e)})),e.getVideoTracks().forEach((t=>{this.pc.addTrack(t,e)}))):this.pc.addStream(e)}addTrack(e,t){t||(t=this.streams[0]),t.addTrack(e),this.pc.addTrack(e,t)}removeTrack(e){this.streams[0].removeTrack(e);const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)}removeStream(e){for(let t=0;t<this.streamIds.length;t++)this.streamIds[t]===e.id&&(this.streamIds.splice(t,1),this.streams.splice(t,1));this.pc&&(this.pc.removeTrack?e.getTracks().forEach((e=>{const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)})):this.pc.removeStream&&this.pc.removeStream(e))}_setRemoteDescription(e){return this._deprioritizeH264Encoding&&(e.sdp=function(e){return nn.splitSections(e).map((e=>{if("video"!==nn.getKind(e))return e;const t=nn.matchPrefix(e,"a=rtpmap:").map((e=>nn.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=nn.matchPrefix(e,"m=video")[0],i=/(\s\d+)+$/i.exec(r)[0],n=[...i.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),s=r.replace(i," "+n);return e.replace(r,s)})).join("")}(e.sdp)),this.srdComplete=this.pc.setRemoteDescription(e),this.srdComplete.then((()=>{this.earlyIceCandidates.forEach((e=>this.pc.addIceCandidate(e))),this.earlyIceCandidates=[]}))}handleOffer(e){if(!this.canModifyPeerConnection())return new Promise((t=>{this.pending.push((()=>this.handleOffer(e).then(t)))}));this.isOperationPending=!0;let t=e.sdp;t=function(e){return"safari"!==Xg&&("firefox"!==Xg||ev>=63||60===ev)?e:nn.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==nn.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=rv(t);const r={type:e.type,sdp:t};let i;return this._setRemoteDescription(r).then((()=>this.pc.createAnswer())).then((e=>(i=e,this.pc.setLocalDescription(e)))).then((()=>nv(this.pc,this.bandwidth))).then((()=>i))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=rv(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>nv(this.pc,this.bandwidth)),(e=>{ov.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===av.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{ov.warn("Failed to add ICE candidate ('%s'): %s",e?e.candidate:null,t)})))})):this.earlyIceCandidates.push(e)}canModifyPeerConnection(){return"stable"===this.pc.signalingState&&!this.isOperationPending}close(){const e=this.pc;if(e){e.oniceconnectionstatechange=null,e.onicecandidate=null,e.ontrack=null;try{e.close()}catch(e){ov.warn("failures during close of session",e)}}}hasConnectedPeerConnection(){return this.pc&&"connected"===this.pc.connectionState}replaceTrack(e,t){const r=this.pc;if(!r)return!1;const i=r.getSenders();function n(r){const n=e=>e&&`id:${e.id},kind:${e.kind},state:${e.readyState}`;ov.warn(`${r}. newTrack:${n(t)}, oldTrack:${n(e)}, sender tracks: ${JSON.stringify(i.map((e=>`s ${n(e.track)}`)))}, sender first codecs: ${JSON.stringify(i.map((e=>(e.getParameters().codecs||[])[0])))}`)}if(i.length||n("No senders!"),e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track)||n("No sender with same kind! Add new track then."),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const s=i[r],a=s.track;if(s||a||n("One of the tracks is null!"),a.id===t.id)return Promise.resolve(t);if(a.id===e.id)return i[r].replaceTrack(t)}return null};let s=r();if(s)return s;let a=null,o=null;s=new Promise(((e,t)=>{a=e,o=t}));let c=0,d=setInterval((async()=>{const e=r();if(!e)return void(3<++c&&(clearInterval(d),d=null,n("No sender track to replace"),o("No sender track to replace")));clearInterval(d),d=null;const t=await e;a(t)}),1e3);return s}const s=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return s?r.addTrack(t,s):(n("No stream?"),Promise.reject(new Error("replaceTrack: No stream?")))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const s=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=s}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=tv(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=tv(r.localDescription.sdp,e.sdp),r.setLocalDescription(e))))}maybeRestrictRelayBandwidth(){var e;-1!==this.maximumTurnBandwidth&&(this.pc.getStats&&(e=this.pc,e.getStats(null).then((e=>{let t,r;return e.forEach((i=>{if("transport"===i.type&&i.selectedCandidatePairId){const n=e.get(i.selectedCandidatePairId);if(!n)return;return t=e.get(n.localCandidateId).candidateType,void(r=e.get(n.remoteCandidateId).candidateType)}"candidate-pair"===i.type&&i.selected&&(t=e.get(i.localCandidateId).candidateType,r=e.get(i.remoteCandidateId).candidateType)})),"relay"===t||"relayed"===t||"relay"===r||"relayed"===r}))).then((e=>{e&&0===this.bandwidth&&this.changeBandwidth(this.maximumTurnBandwidth)})))}changeBandwidth(e){e!==this.bandwidth&&(this.canModifyPeerConnection()?(this.bandwidth=e,this.pc.localDescription&&""!==this.pc.localDescription.type&&nv(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>"recvonly"!==e?.direction&&"video"===e?.receiver?.track?.kind&&!t.includes(e?.receiver?.track?.id)&&!t.includes(e?.sender?.track?.id))).forEach((t=>{t.direction=e?"sendonly":"sendrecv"}))}}const dv=fn.default??fn;const lv="client_connection_status_changed",pv="stream_added",uv="rtc_manager_created",hv="rtc_manager_destroyed",mv="local_stream_track_added",fv="local_stream_track_removed",gv="connecting",vv="connection_failed",_v="connection_successful",yv="connection_disconnected",bv="camera",wv="screen_share";const Sv=57600,Cv=2.6041666666666665,Rv=921600,Tv=1.0850694444444444;const Pv="[a-fA-F\\d:]",kv=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${Pv})|(?<=${Pv})(?=\\s|$))`:"",Dv="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",Ev="[a-fA-F\\d]{1,4}",Iv=`\n(?:\n(?:${Ev}:){7}(?:${Ev}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${Ev}:){6}(?:${Dv}|:${Ev}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${Ev}:){5}(?::${Dv}|(?::${Ev}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${Ev}:){4}(?:(?::${Ev}){0,1}:${Dv}|(?::${Ev}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${Ev}:){3}(?:(?::${Ev}){0,2}:${Dv}|(?::${Ev}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${Ev}:){2}(?:(?::${Ev}){0,3}:${Dv}|(?::${Ev}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${Ev}:){1}(?:(?::${Ev}){0,4}:${Dv}|(?::${Ev}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${Ev}){0,5}:${Dv}|(?::${Ev}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Ov=new RegExp(`(?:^${Dv}$)|(?:^${Iv}$)`),xv=new RegExp(`^${Dv}$`),Mv=new RegExp(`^${Iv}$`),jv=e=>e&&e.exact?Ov:new RegExp(`(?:${kv(e)}${Dv}${kv(e)})|(?:${kv(e)}${Iv}${kv(e)})`,"g");jv.v4=e=>e&&e.exact?xv:new RegExp(`${kv(e)}${Dv}${kv(e)}`,"g"),jv.v6=e=>e&&e.exact?Mv:new RegExp(`${kv(e)}${Iv}${kv(e)}`,"g");var Lv="connection_blocked_by_network",Av="ice_ipv6_seen",Nv="ice_mdns_seen",Bv="ice_no_public_ip_gathered",Fv="ice_no_public_ip_gathered_3sec",Uv="ice_restart",$v="microphone_not_working",zv="microphone_stopped_working",Vv="new_pc",qv="sfu_connection_open",Gv="sfu_connection_closed",Hv="dominant_speaker";const Wv=fn.default??fn,Kv=new wm,Jv=class{constructor(e,t){wf.notEqual(e,void 0,"id is required"),wf.notEqual(t,void 0,"type is required"),this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=gv}setup(e){return this.stream=e,this.streamId=e.id,this.setVideoEnabled(this.isVideoEnabled&&e.getVideoTracks().length>0),this.setAudioEnabled(this.isAudioEnabled&&e.getAudioTracks().length>0),this}setStatus(e){return this.status=e,this}setVideoEnabled(e){this.isVideoEnabled=e,this.stream&&this.stream.getVideoTracks().forEach((t=>{t.enabled=e}))}setAudioEnabled(e){this.isAudioEnabled=e,this.stream&&this.stream.getAudioTracks().forEach((t=>{t.enabled=e}))}static getCameraId(){return"0"}static getTypeFromId(e){wf.notEqual(e,void 0,"id is required");return"0"===""+e?bv:wv}}.getCameraId(),Qv=Wv.browserDetails.browser,Zv=Wv.browserDetails.version;"firefox"===Qv&&Wv.browserShim.shimGetDisplayMedia(window,"screen");let Yv=!1;"chrome"===Qv&&window.document.addEventListener("beforeunload",(()=>{Yv=!0}));class Xv{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s}){wf.ok(e,"selfId is required"),wf.ok(t,"room is required"),wf.ok(r&&r.emit,"emitter is required"),wf.ok(i instanceof Vm,"serverSocket is required"),wf.ok(n,"webrtcProvider is required");const{name:a,session:o,iceServers:c,sfuServer:d,mediaserverConfigTtlSeconds:l}=t;this._selfId=e,this._roomName=a,this._roomSessionId=o&&o.id,this.peerConnections={},this.localStreams={},this.enabledLocalStreamIds=[],this._screenshareVideoTrackIds=[],this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction=null,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._audioTrackOnEnded=()=>{Qg.sendEvent("audio_ended",{unloading:Yv}),this._emit(zv,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:d,iceServers:c.iceServers||[],mediaserverConfigTtlSeconds:l}),this.totalSessionsCreated=0}numberOfPeerconnections(){return Object.keys(this.peerConnections).length}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._roomName===t&&r===!!this._sfuServer}supportsScreenShareAudio(){return!0}maybeRestrictRelayBandwidth(e){e.maybeRestrictRelayBandwidth()}addNewStream(e,t){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===Jv){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo:t})}disconnectAll(){Object.keys(this.peerConnections).forEach((e=>{this.disconnect(e)})),this.peerConnections={},this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null)}fixChromeAudio(e){if("chrome"!==Qv)return;const t=this._getLocalCameraStream(),r=t.getAudioTracks()[0];return r&&"ended"===r.readyState?navigator.mediaDevices.getUserMedia({audio:e}).then((e=>{const i=e.getAudioTracks()[0];return i.enabled=r.enabled,t.removeTrack(r),t.addTrack(i),this.replaceTrack(r,i)})):void 0}setupSocketListeners(){this._socketListenerDeregisterFunctions=[()=>this._clearMediaServersRefresh(),this._serverSocket.on(km,(e=>{e.error?Kv.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Lm,(e=>{this._connect(e.clientId)})),this._serverSocket.on(Mm,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):Kv.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(jm,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):Kv.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(Nm,(e=>{const t=this._getSession(e.clientId);if(!t)return void Kv.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(Am,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(Am,(e=>{const t=this._getSession(e.clientId);if(!t)return void Kv.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(Om,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==Jv));if(!t)return;const r=this.localStreams[t];if(!r)return void Kv.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(Cm,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){Qg.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Qg.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Qg.sendEvent(e,t)}rtcStatsDisconnect(){Qg.server.close()}rtcStatsReconnect(){Qg.server.connected||Qg.server.connect()}setAudioOnly(e){this._isAudioOnlyMode=e,this._forEachPeerConnection((e=>{e.hasConnectedPeerConnection()&&this._withForcedRenegotiation(e,(()=>e.setAudioOnly(this._isAudioOnlyMode,this._screenshareVideoTrackIds)))}))}setRemoteScreenshareVideoTrackIds(e=[]){const t=this._getFirstLocalNonCameraStream();this._screenshareVideoTrackIds=[...t?.track?[t.track.id]:[],...e]}setRoomSessionId(e){this._roomSessionId=e}_setConnectionStatus(e,t,r){const i=e.connectionStatus;i!==t&&e.peerConnectionId!==this._selfId&&(i===yv&&t===gv||(e.connectionStatus=t,setTimeout((()=>{this._emit(lv,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=sv,e.playoutDelayHint=.4}))}catch(e){Kv.error("Error during setting jitter buffer target:",e)}}_emitServerEvent(e,t,r){this._serverSocket.emit(e,t,r)}_emit(e,t){this._emitter.emit(e,t)}_addEnabledLocalStreamId(e){this.enabledLocalStreamIds.push(e)}_deleteEnabledLocalStreamId(e){const t=this.enabledLocalStreamIds.indexOf(e);-1!==t&&this.enabledLocalStreamIds.splice(t,1)}_getSession(e){return e in this.peerConnections?this.peerConnections[e]:null}_getOrCreateSession(e,t){let r=this.peerConnections[e];if(void 0===r){const i="safari"===Qv&&Zv>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new cv({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[Jv]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==Jv))}_isScreensharingLocally(){return this._getNonLocalCameraStreamIds().length>0}_getFirstLocalNonCameraStream(){const e=this._getNonLocalCameraStreamIds();return 0===e.length?null:this.localStreams[e[0]]}_transformIncomingSdp(e){return{type:e.type,sdp:e.sdpU}}_transformOutgoingSdp(e){return{type:e.type,sdpU:e.sdp}}_createSession({clientId:e,initialBandwidth:t,isOfferer:r,peerConnectionId:i,shouldAddLocalVideo:n}){if(!i)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const s=this._getOrCreateSession(i,t),a={optional:[]};"chrome"===Qv&&a.optional.push({googCpuOveruseDetection:!0}),a.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),a.optional.push({rtcStatsClientId:this._selfId}),a.optional.push({rtcStatsPeerId:i}),a.optional.push({rtcStatsConferenceId:this._roomName});const o={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;o.iceServers=o.iceServers.map((e=>{const t=Object.assign({},e);return t.url&&(t.url=t.url.replace(/:[^?]*/,r)),t.urls&&(t.urls=t.urls.map((e=>e.replace(/:[^?]*/,r)))),t}))}if(this._features.useOnlyTURN){o.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[this._features.useOnlyTURN];e&&(o.iceServers=o.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===Qv&&(o.sdpSemantics="unified-plan");const c=s.setAndGetPeerConnection({constraints:a,peerConnectionConfig:o,shouldAddLocalVideo:n,clientId:e});setTimeout((()=>this._emit(Vv)),0),c.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===s.streamIds.indexOf(r.id)&&(s.streamIds.push(r.id),this._emit(pv,{clientId:e,stream:r}),s.connectionStatus===_v&&setTimeout((()=>{this._emit(lv,{streamIds:s.streamIds,clientId:e,status:s.connectionStatus,previous:gv})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=s.connectionStatus;switch(c.iceConnectionState){case"checking":t=gv;break;case"connected":case"completed":t=_v,s.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!s.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===Qv&&c.localDescription&&"answer"===c.localDescription.type)&&(s.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(s)),this._isAudioOnlyMode&&s.setAudioOnly(!0,this._screenshareVideoTrackIds),s.registerConnected();break;case"disconnected":t=yv,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,s)}),2e3);break;case"failed":t=vv,r!==t&&this._maybeRestartIce(e,s),null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(Lv);break;default:return}this._setConnectionStatus(s,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==dv.browserDetails.browser||dv.browserDetails.browser<58||"closed"===e.signalingState)return Promise.resolve(!1);const t=e.getSenders().some((e=>e.track&&"audio"===e.track.kind)),r=e.getReceivers().some((e=>e.track&&"audio"===e.track.kind));return e.getStats(null).then((e=>{let i=!1;return e.forEach((e=>{"outbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!t?"inbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!r||0===e.bytesReceived&&(i="inbound"):0===e.bytesSent&&(i="outbound")})),i}))})(s.pc).then((t=>{!1!==t&&this._emit($v,{failureDirection:t,clientId:e})}))}),3e3),s.registerConnected();break;case"failed":const t=vv;null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(Lv),this._setConnectionStatus(s,t,e)}};const d=this.localStreams[Jv];return n&&d&&s.addStream(d),n&&Object.keys(this.localStreams).forEach((e=>{if(e===Jv)return;const t=this.localStreams[e];r?s.addStream(t):s.afterConnected.then((()=>{this._emitServerEvent(Cm,{receiverId:s.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(s,(()=>s.addStream(t)))}))})),s}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):Kv.warn("No RTCPeerConnection in RTCManager.disconnect()",e)}_forEachPeerConnection(e){Object.values(this.peerConnections).forEach((t=>{e(t)}))}_addStreamToPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.addStream(e)))}))}_addTrackToPeerConnections(e,t){this._forEachPeerConnection((r=>{this._withForcedRenegotiation(r,(()=>r.addTrack(e,t)))}))}_replaceTrackToPeerConnections(e,t){const r=[];return this._forEachPeerConnection((i=>{if(!i.hasConnectedPeerConnection()){Kv.info("Session doesn't have a connected PeerConnection, adding pending action!");const n=this._pendingActionsForConnectedPeerConnections;if(!n)return void Kv.warn("No pending action is created to repalce track, because the pending actions array is null");const s=new Promise(((r,s)=>{n.push((()=>{const n=i.replaceTrack(e,t);if(!n)return Kv.error("replaceTrack returned false!"),void s("ReplaceTrack returned false");n.then((e=>r(e))).catch((e=>s(e)))}))}));return void r.push(s)}const n=i.replaceTrack(e,t);n?r.push(n):Kv.error("replaceTrack returned false!")})),Promise.all(r)}_removeStreamFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeStream(e)))}))}_removeTrackFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeTrack(e)))}))}_addLocalStream(e,t){this._addEnabledLocalStreamId(e),this.localStreams[e]=t}_removeLocalStream(e){delete this.localStreams[e],this._deleteEnabledLocalStreamId(e)}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitServerEvent(Sm)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(Kv.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!0),this._negotiatePeerConnection(e,t),Promise.resolve(t)}_maybeRestartIce(e,t){const r=t.pc;"disconnected"!==r.iceConnectionState&&"failed"!==r.iceConnectionState||"offer"===r.localDescription.type&&(t.wasEverConnected=!1,t.relayCandidateSeen=!1,t.serverReflexiveCandidateSeen=!1,t.publicHostCandidateSeen=!1,t.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this._emit(Uv),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,i){try{e.getTransceivers().filter((e=>"audio"===e?.sender?.track?.kind)).forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const t=RTCRtpSender.getCapabilities("audio");for(let e=0;e<t.codecs.length;e++)if(i&&"audio/red"===t.codecs[e].mimeType.toLowerCase()){t.codecs.unshift(t.codecs.splice(e,1)[0]);break}void 0!==e.setCodecPreferences&&e.setCodecPreferences(t.codecs)}));e.getTransceivers().filter((e=>"video"===e?.sender?.track?.kind)).forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const i=RTCRtpSender.getCapabilities("video");for(let e=0;e<i.codecs.length;e++){if(t&&"video/vp9"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}if(r&&"video/av1"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}}void 0!==e.setCodecPreferences&&e.setCodecPreferences(i.codecs)}))}catch(e){Kv.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void Kv.warn("No RTCPeerConnection in negotiatePeerConnection()",e);const i=t.pc;if(!t.canModifyPeerConnection())return void t.pending.push((()=>{this._negotiatePeerConnection(e,t,r)}));t.isOperationPending=!0;const{vp9On:n,av1On:s,redOn:a,rtpAbsCaptureTimeOn:o}=this._features;(n||s||a)&&this._setCodecPreferences(i,n,s,a),i.createOffer(r||this.offerOptions).then((r=>{o&&(r.sdp=iv(r.sdp)),(n||a)&&"firefox"===Qv&&(r.sdp=function(e,t,r){try{const i=qn(e);if(Array.isArray(i?.media)){const e=i.media.find((e=>"audio"===e.type));if(Array.isArray(e?.rtp)){const t=e.rtp;for(let i=0;i<t.length;i++)if(r&&"red"===t[i].codec){const r=e.payloads.split(" "),n=r.indexOf(""+t[i].payload);n&&-1!==n&&n>=0&&(r.unshift(r.splice(n,1)[0]),e.payloads=r.join(" "))}}const n=i.media.find((e=>"video"===e.type));if(Array.isArray(n?.rtp)){const e=n.rtp;for(let r=0;r<e.length;r++)if(t&&"VP9"===e[r].codec){const t=n.payloads.split(" "),i=t.indexOf(""+e[r].payload);i&&-1!==i&&i>=0&&(t.unshift(t.splice(i,1)[0]),n.payloads=t.join(" "))}}}return Vn(i)}catch(e){Yg.error("setCodecPreferenceSDP error:",e)}}(r.sdp,n,a)),this._emitServerEvent(Nm,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===Qv&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{Kv.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{Kv.warn("RTCPeerConnection.createOffer() failed to create local offer",e)}))}_withForcedRenegotiation(e,t){const r=e.pc,i=r.onnegotationneeded;r.onnegotiationneeded=null,t(),this._negotiatePeerConnection(e.clientId,e),setTimeout((()=>r.onnegotiationneeded=i),0)}_changeBandwidthForAllClients(e){let t=this.numberOfPeerconnections();if(e&&(t+=1),0===t)return 0;t>7&&(t=7);let r=this._features.bandwidth?parseInt(this._features.bandwidth,10):{1:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?512:256,4:192,5:128,6:128,7:64}[t];if(void 0===r)return 0;if(this._features.adjustBitratesFromResolution){const e=this._getLocalCameraStream();if(e){const t=e&&e.getVideoTracks()[0];if(t){const{width:e,height:i,frameRate:n}=t.getSettings();if(e&&i&&n){const t=Math.round(function(e,t,r){let i=e*t;i<Sv&&(i=Sv),i>Rv&&(i=Rv);let n=Cv;i>Rv?n=Tv:i>Sv&&(n+=-17582143775720163e-22*(i-Sv));let s=e*t*n;return r<=15?s*=.7:r<=24&&(s*=.9),s}(e,i,n)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,i){const n=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:i}),s=n.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(s);const a=this.localStreams[Jv];return r&&a&&!a.getVideoTracks().length&&this._stoppedVideoTrack&&s.addTrack(this._stoppedVideoTrack,a),s.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(Fv)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},s.onicecandidate=t=>{if(t.candidate){switch(t.candidate?.type){case"host":const e=t?.candidate?.address;try{if(jv.v4({exact:!0}).test(e)){Qs(e).isPublicIp&&(n.publicHostCandidateSeen=!0)}else if(jv.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new Gn.Address6(e.replace(/^\[(.*)\]/,"$1"));n.ipv6HostCandidateSeen=!0,"Global"===t.getScope()&&(n.publicHostCandidateSeen=!0),t.isTeredo()&&(n.ipv6HostCandidateTeredoSeen=!0),t.is6to4()&&(n.ipv6HostCandidate6to4Seen=!0)}else{const t=e.replace(/.local/,"");t&&na(t,4)&&(n.mdnsHostCandidateSeen=!0)}}catch(e){Kv.info("Error during parsing candidates! Error: ",{error:e})}break;case"srflx":n.serverReflexiveCandidateSeen||(n.serverReflexiveCandidateSeen=!0);break;case"relay":case"relayed":n.relayCandidateSeen||(n.relayCandidateSeen=!0)}this._emitServerEvent(Mm,{receiverId:e,message:t.candidate})}else this._emitServerEvent(jm,{receiverId:e}),n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(Bv),n.ipv6HostCandidateSeen&&this._emit(Av,{teredoSeen:n.ipv6HostCandidateTeredoSeen,sixtofourSeen:n.ipv6HostCandidate6to4Seen}),n.mdnsHostCandidateSeen&&this._emit(Nv)},s.onnegotiationneeded=()=>{"new"!==s.iceConnectionState&&n.connectionStatus&&this._negotiatePeerConnection(e,n)},n}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r}){let i=this._getSession(t);if(i&&e!==t)return i;let n=i&&i.bandwidth||0;return i?(Kv.warn("Replacing peer session",t),this._cleanup(t)):n=this._changeBandwidthForAllClients(!0),i=this._createP2pSession(t,n,r),this._emitServerEvent(Lm,{receiverId:t}),i}disconnect(e){this._cleanup(e),this._changeBandwidthForAllClients(!1);0===this.numberOfPeerconnections()&&setTimeout((()=>{0===this.numberOfPeerconnections()&&this.rtcStatsDisconnect()}),6e4)}updateStreamResolution(){}stopOrResumeAudio(){}_handleStopOrResumeVideo({enable:e,track:t}){e?this._stoppedVideoTrack?(this._replaceTrackToPeerConnections(this._stoppedVideoTrack,t),delete this._stoppedVideoTrack):this._addTrackToPeerConnections(t):this._stoppedVideoTrack=t}stopOrResumeVideo(e,t){if(["chrome","safari"].includes(Qv))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(fv,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);else if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;if(!r)return;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emit(mv,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(Cm,{streamId:e,hasAudioTrack:!!t.getAudioTracks().length}),this._wasScreenSharing=!0,this._addStreamToPeerConnections(t)}removeStream(e,t,r){this._removeLocalStream(e,t),this._removeStreamFromPeerConnections(t),this._wasScreenSharing=!1,this._emitServerEvent(Rm,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}class e_{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?e_._handleRequest(t):t.response?e_._handleResponse(t):t.message?e_._handleMessage(t):void 0}static _handleRequest(e){const t={request:!0};if("string"==typeof e.method&&"number"==typeof e.id)return t.id=e.id,t.method=e.method,t.data=e.data||{},t}static _handleResponse(e){const t={response:!0};if("number"==typeof e.id)return t.id=e.id,e.ok?(t.ok=!0,t.data=e.data||{}):(t.ok=!1,t.errorCode=e.errorCode,t.errorReason=e.errorReason),t}static _handleMessage(e){const t={message:!0};if("string"==typeof e.method)return t.method=e.method,t.data=e.data||{},t}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,errorCode:t,errorReason:r}}static createMessage(e,t){return{message:!0,method:e,data:t||{}}}}const t_=new wm;class r_ extends vn{constructor(e,t="whereby-sfu#v4"){super(),this.wsUrl=e,this.protocol=t,this.sents=new Map,this._setupSocket()}_setupSocket(){this.socket=new WebSocket(this.wsUrl,this.protocol),this.socket.onopen=this._onOpen.bind(this),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=this._onClose.bind(this),this.socket.onerror=this._onError.bind(this)}_tearDown(){this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.sents.forEach((e=>e.close())),this.emit("close")}close(){this.socket?.close()}_onOpen(){t_.info("Connected"),this.emit("open")}_onMessage(e){const t=e_.parse(e.data);t_.info("Received message",t),t?.response?this._handleResponse(t):t?.message&&this.emit("message",t)}_onClose(){t_.info("Disconnected"),this._tearDown()}_onError(e){t_.info("Error",e)}_handleResponse(e){const t=this.sents.get(e.id);if(e.ok)t.resolve(e.data);else{const r=new Error(e.errorReason);t.reject(r)}}send(e){try{this.socket.send(JSON.stringify(e))}catch(e){}}message(e,t={}){const r=e_.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=e_.createRequest(e,t);return this.send(i),new Promise(((e,t)=>{const n={id:i.id,method:i.method,resolve:t=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),e(t))},reject:e=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(i.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(n.timer),t(new Error("transport closed"))}};this.sents.set(i.id,n)}))}}const i_={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},n_={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},s_={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},a_={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},o_={encodings:[{}]},c_={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},d_={encodings:[{dtx:!0}]},l_=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:n,vp9On:s}=r;return"audio"===e?i_:t?s?d_:n?c_:o_:s?a_:i?s_:n_},p_=()=>{let e=sa.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var u_=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:i=1,C:n=1.2}={R:.01,Q:2,A:1.1,B:1,C:1.2}){this.R=e,this.Q=t,this.A=r,this.C=n,this.B=i,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{const r=this.predict(t),i=this.uncertainty(),n=i*this.C*(1/(this.C*i*this.C+this.Q));this.x=r+n*(e-this.C*r),this.cov=i-n*this.C*i}return this.x}predict(e=0){return this.A*this.x+this.B*e}uncertainty(){return this.A*this.cov*this.A+this.R}lastMeasurement(){return this.x}setMeasurementNoise(e){this.Q=e}setProcessNoise(e){this.R=e}},calculateStd:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,r)=>e.concat((r-t)**2)),[]).reduce(((e,t)=>e+t),0)/e.length},createACFCalculator:()=>{let e=-1,t=0,r=0;return i=>{const n=i.reduce(((e,t)=>e+t),0)/i.length;if(e=e<0?n:.95*e+.05*n,++r<2)return t=n,0;const s=(n-e)*(t-e);return t=n,s}},standardDeviation:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return{mean:t,SD:Math.sqrt(e.reduce(((e,r)=>e+(r-t)**2),0)/e.length)}},variance:(e,t=!1)=>{const r=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,t)=>e.concat((t-r)**2)),[]).reduce(((e,t)=>e+t),0)/(e.length-(t?0:1))}});const h_={minDecibels:-80,maxDecibels:-10,smoothingTimeConstant:.8,aggSize:1,sampleRate:10,reportRate:2,bins:32,bands:[[0,1,2,3],[4,5,6,7]],separateTrack:{autoGainControl:!1,noiseSupression:!1},binFormula:"bin",scoreFormula:"300 * bands[1].avg / Math.max(bands[1].avg + bands[0].avg, 0.01)",outFormula:"score"},m_=new wm;const f_=new wm,g_=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class v_ extends vn{constructor(){super(),this._clients={},this._producers={},this._startMonitor()}close(){clearInterval(this._intervalHandle),delete this._intervalHandle,this._producers={},this._clients={}}_startMonitor(){this._intervalHandle=setInterval((()=>{Object.entries(this._producers).forEach((([e,t])=>{this._evaluateClient(e,t)}))}),600)}_evaluateClient(e,t){this._clients[e]||(this._clients[e]={audio:{currentQuality:g_.ok,trend:[]},video:{currentQuality:g_.ok,trend:[]}}),this._evaluateProducer(e,Object.values(t).filter((e=>"audio"===e.kind)),"audio"),this._evaluateProducer(e,Object.values(t).filter((e=>"video"===e.kind)),"video")}_evaluateProducer(e,t,r){if(0===t.length)return;const i=t.reduce(((e,t)=>e+t.score),0)/t.length,n=this._evaluateScore(i);this._updateTrend(n,this._clients[e][r])&&this.emit(Fm,{clientId:e,kind:r,quality:n})}_updateTrend(e,t){return t.trend.push(e),t.trend.length>3&&t.trend.shift(),!(e===t.currentQuality||!t.trend.every((e=>e!==t.currentQuality)))&&(t.currentQuality=e,!0)}addProducer(e,t){e&&t&&"string"==typeof e&&"string"==typeof t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):f_.warn("Missing clientId or producerId")}removeProducer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addConsumer(e,t){e&&t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):f_.warn("Missing clientId or consumerId")}removeConsumer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addProducerScore(e,t,r,i){Array.isArray(i)&&0!==i.length&&!i.some((e=>!e||!e.hasOwnProperty("score")||"number"!=typeof e.score||isNaN(e.score)))?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.map((e=>e.score)))}:f_.warn("Unexpected producer score format")}addConsumerScore(e,t,r,i){i&&i.hasOwnProperty("producerScores")&&Array.isArray(i.producerScores)?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.producerScores)}:f_.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?g_.warning:e<=7&&e>0?g_.critical:g_.ok}_calcAvgProducerScore(e){try{if(!Array.isArray(e)||0===e.length)return 0;let t=0,r=0;return e.forEach((e=>{e>0&&(t+=e,r++)})),0===t||0===r?0:t/r}catch(e){return f_.error(e),0}}}const __=fn.default??fn,y_=new wm,b_=__.browserDetails.browser;let w_=!1;const S_=En(),C_=En();"chrome"===b_&&window.document.addEventListener("beforeunload",(()=>w_=!0));class R_{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s,eventClaim:a,deviceHandlerFactory:o}){wf.ok(e,"selfId is required"),wf.ok(t,"room is required"),wf.ok(r&&r.emit,"emitter is required"),wf.ok(i instanceof Vm,"serverSocket is required"),wf.ok(n,"webrtcProvider is required");const{session:c,iceServers:d,sfuServer:l,mediaserverConfigTtlSeconds:p}=t;this._selfId=e,this._room=t,this._roomSessionId=c?.id,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._eventClaim=a,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=o?new sa.Device({handlerFactory:o}):new sa.Device({handlerName:p_()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._consumers=new Map,this._dataConsumers=new Map,this._localStreamDeregisterFunction=null,this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._micProducer=null,this._micProducerPromise=null,this._micPaused=!1,this._micScoreProducer=null,this._micScoreProducerPromise=null,this._webcamProducer=null,this._webcamProducerPromise=null,this._webcamPaused=!1,this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._sndTransportIceRestartPromise=null,this._rcvTransportIceRestartPromise=null,this._colocation=null,this._stopCameraTimeout=null,this._audioTrackOnEnded=()=>{Qg.sendEvent("audio_ended",{unloading:w_}),this._emitToPWA(zv,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new v_,this._qualityMonitor.on(Fm,(e=>{this._emitToPWA(Fm,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._sendTransport?.updateIceServers({iceServers:this._iceServers}),this._receiveTransport?.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(Sm)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(km,(e=>{e.error?y_.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Om,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(Cm,{streamId:C_,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){const e=`wss://${this._features.sfuServerOverrideHost||[this._sfuServer.url]}?${new URLSearchParams({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:!0}).toString()}`;this._vegaConnection=new r_(e),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){y_.info("_onClose()"),this._sendTransport?.close(),this._receiveTransport?.close(),this._sendTransport=null,this._receiveTransport=null,this._streamIdToVideoConsumerId.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(Gv)}async _join(){y_.info("join()"),this._emitToPWA(qv);try{const{routerRtpCapabilities:e}=await this._vegaConnection.request("getCapabilities");this._routerRtpCapabilities||(((e,t)=>{const{vp9On:r,h264On:i}=t;if(r){const{preferredPayloadType:t}=e.codecs.find((e=>"video/vp9"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}else if(i){const{preferredPayloadType:t}=e.codecs.find((e=>"video/h264"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}})(e,this._features),this._routerRtpCapabilities=e,await this._mediasoupDevice.load({routerRtpCapabilities:e})),this._vegaConnection.message("setCapabilities",{rtpCapabilities:this._mediasoupDevice.rtpCapabilities}),this._colocation&&this._vegaConnection.message("setColocation",{colocation:this._colocation}),await Promise.all([this._createTransport(!0),this._createTransport(!1)]);const t=[];!this._micTrack||this._micProducer||this._micProducerPromise||t.push(this._internalSendMic()),!this._webcamTrack||this._webcamProducer||this._webcamProducerPromise||t.push(this._internalSendWebcam()),!this._screenVideoTrack||this._screenVideoProducer||this._screenVideoProducerPromise||t.push(this._internalSendScreenVideo()),!this._screenAudioTrack||this._screenAudioProducer||this._screenAudioProducerPromise||t.push(this._internalSendScreenAudio()),await Promise.all(t)}catch(e){y_.error("_join() [error:%o]",e)}}async _createTransport(e){const t=e?"createSendTransport":"createRecvTransport",r=await this._vegaConnection.request("createTransport",{producing:e,consuming:!e,enableTcp:!0,enableUdp:!0,preferUdp:!0,sctpParameters:{enableSctp:!0,numSctpStreams:{OS:1024,MIS:1024},maxSctpMessageSize:262144,sctpSendBufferSize:262144}});r.iceServers=this._iceServers,((e,t)=>{if(!t.useOnlyTURN)return;e.iceTransportPolicy="relay";const r={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[t.useOnlyTURN];r&&(e.iceServers=e.iceServers.filter((e=>e.url&&e.url.match(r))))})(r,this._features);const i=this._mediasoupDevice[t](r),n=async t=>{if(y_.info(`Transport ConnectionStateChanged ${t}`),"disconnected"===t||"failed"===t)if(e){if(this._sndTransportIceRestartPromise)return;this._sndTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._sndTransportIceRestartPromise=null}))}else{if(this._rcvTransportIceRestartPromise)return;this._rcvTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._rcvTransportIceRestartPromise=null}))}};i.on("connect",(({dtlsParameters:e},t)=>{this._vegaConnection?.message("connectTransport",{transportId:i.id,dtlsParameters:e}),t()})).on("connectionstatechange",n),i.observer.once("close",(()=>{i.removeListener(n)})),e?(i.on("produce",(async({kind:e,rtpParameters:t,appData:r},n,s)=>{try{const{paused:s}=r,{id:a}=await(this._vegaConnection?.request("produce",{transportId:i.id,kind:e,rtpParameters:t,paused:s,appData:r}));n({id:a})}catch(e){s(e)}})),i.on("producedata",(async({appData:e,sctpStreamParameters:t},r,n)=>{try{const{id:n}=await(this._vegaConnection?.request("produceData",{transportId:i.id,sctpStreamParameters:t,appData:e}));r({id:n})}catch(e){n(e)}})),this._sendTransport=i):this._receiveTransport=i}async _restartIce(e,t=0){if(!e||!("closed"in e)||!("connectionState"in e))return void y_.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void y_.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void y_.info("_restartIce: Connection is healthy ICE restart no loneger needed!");const{iceRestartStarted:r}=e.appData,i=Date.now();if(Number.isFinite(r)&&i-r<3500)return;if(e.appData.iceRestartStarted=i,5<=t)return void y_.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void y_.info("_restartIce: Connection is undefined");const{iceParameters:n}=await this._vegaConnection.request("restartIce",{transportId:e.id});y_.info("_restartIce: ICE restart iceParameters received from SFU: ",n);const s=await e.restartIce({iceParameters:n}).then((()=>null)).catch((e=>e));if(s)switch(y_.error(`_restartIce: ICE restart failed: ${s}`),s.message){case"missing transportId":case"no such transport":break;default:await new Promise((e=>{setTimeout((()=>{e()}),Math.min(3500*2**t,6e4))})),await this._restartIce(e,t+1)}else await new Promise((e=>{setTimeout((()=>{e()}),6e4*Math.min(8,t+1))})),"failed"!==e.connectionState&&"disconnected"!==e.connectionState||await this._restartIce(e,t+1)}async _internalSendMic(){y_.info("_internalSendMic()"),this._micProducerPromise=(async()=>{try{if(!this._micTrack||!this._sendTransport||this._micProducer)return void(this._micProducerPromise=null);const e=this._micPaused,t=await this._sendTransport.produce({track:this._micTrack,disableTrackOnPause:!1,stopTracks:!1,...l_("audio",!1,this._features),appData:{streamId:S_,sourceClientId:this._selfId,screenShare:!1,source:"mic",paused:e}});e?t.pause():t.resume(),this._micProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{y_.info('micProducer "close" event'),t.appData.localClosed&&this._vegaConnection?.message("closeProducers",{producerIds:[t.id]}),this._micProducer=null,this._micProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._micTrack!==this._micProducer.track&&await this._replaceMicTrack(),this._micPaused!==this._micProducer.paused&&this._pauseResumeMic()}catch(e){y_.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})()}async _internalSetupMicScore(){y_.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(async()=>{try{if(!this._micProducer||!this._colocation||this._micScoreProducer)return void(this._micScoreProducerPromise=null);const e=await this._sendTransport.produceData({ordered:!1,maxPacketLifeTime:3e3,label:"micscore",appData:{producerId:this._micProducer.id,clientId:this._selfId}});this._micScoreProducer=e,e.observer.once("close",(()=>{y_.info('micScoreProducer "close" event'),e.appData.localClosed&&this._vegaConnection?.message("closeDataProducers",{dataProducerIds:[e.id]}),this._micScoreProducer=null,this._micScoreProducerPromise=null}))}catch(e){y_.error("micScoreProducer failed:%o",e)}finally{this._micScoreProducerPromise=null,this._micProducer&&this._colocation||this._stopMicScoreProducer()}})()}_stopMicScoreProducer(){this._stopProducer(this._micScoreProducer),this._micScoreProducer=null}async _replaceMicTrack(){y_.info("_replaceMicTrack()"),this._micTrack&&this._micProducer&&!this._micProducer.closed&&this._micProducer.track!==this._micTrack&&(await this._micProducer.replaceTrack({track:this._micTrack}),this._micAnalyser?.setTrack(this._micTrack),await this._replaceMicTrack())}_pauseResumeMic(){y_.info("_pauseResumeMic()"),this._micProducer&&!this._micProducer.closed&&this._micPaused!==this._micProducer.paused&&(this._micPaused?(this._micProducer.pause(),this._vegaConnection?.message("pauseProducers",{producerIds:[this._micProducer.id]})):(this._micProducer.resume(),this._vegaConnection?.message("resumeProducers",{producerIds:[this._micProducer.id]})),this._pauseResumeMic())}async _sendMic(e){return y_.info("_sendMic() [track:%o]",e),this._micTrack=e,this._micProducer?await this._replaceMicTrack():this._micProducerPromise?void 0:this._sendTransport?await this._internalSendMic():void 0}_sendMicScore(e){if(!isNaN(e)&&isFinite(e))if(this._micScoreProducer){if(this._micScoreProducer.closed)return void this._stopMicScoreProducer();try{this._micScoreProducer.send(JSON.stringify({score:e}))}catch(e){y_.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}async _internalSendWebcam(){y_.info("_internalSendWebcam()"),this._webcamProducerPromise=(async()=>{try{if(!this._webcamTrack||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=await this._sendTransport.produce({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1,...l_("video",!1,this._features),appData:{streamId:S_,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}});e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{y_.info('webcamProducer "close" event'),t.appData.localClosed&&this._vegaConnection?.message("closeProducers",{producerIds:[t.id]}),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&await this._replaceWebcamTrack(),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){y_.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(await this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})()}async _replaceWebcamTrack(){y_.info("_replaceWebcamTrack()"),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(await this._webcamProducer.replaceTrack({track:this._webcamTrack}),await this._replaceWebcamTrack())}_pauseResumeWebcam(){y_.info("_pauseResumeWebcam()"),this._webcamProducer&&!this._webcamProducer.closed&&this._webcamPaused!==this._webcamProducer.paused&&(this._webcamPaused?(this._webcamProducer.pause(),this._vegaConnection?.message("pauseProducers",{producerIds:[this._webcamProducer.id]})):(this._webcamProducer.resume(),this._vegaConnection?.message("resumeProducers",{producerIds:[this._webcamProducer.id]})),this._pauseResumeWebcam())}async _sendWebcam(e){return y_.info("_sendWebcam() [track:%o]",e),this._webcamTrack=e,this._webcamProducer?await this._replaceWebcamTrack():this._webcamProducerPromise?void 0:this._sendTransport?await this._internalSendWebcam():void 0}async _internalSendScreenVideo(){y_.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(async()=>{try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=await this._sendTransport.produce({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1,...l_("video",!0,this._features),appData:{streamId:C_,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}});this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{y_.info('screenVideoProducer "close" event'),e.appData.localClosed&&this._vegaConnection?.message("closeProducers",{producerIds:[e.id]}),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&await this._replaceScreenVideoTrack()}catch(e){y_.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(await this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})()}async _replaceScreenVideoTrack(){y_.info("_replaceScreenVideoTrack()"),this._screenVideoTrack&&this._screenVideoProducer&&!this._screenVideoProducer.closed&&this._screenVideoProducer.track!==this._screenVideoTrack&&(await this._screenVideoProducer.replaceTrack({track:this._screenVideoTrack}),await this._replaceScreenVideoTrack())}async _sendScreenVideo(e){return y_.info("_sendScreenVideo() [track:%o]",e),this._screenVideoTrack=e,this._screenVideoProducer?await this._replaceScreenVideoTrack():this._screenVideoProducerPromise?void 0:this._sendTransport?await this._internalSendScreenVideo():void 0}async _internalSendScreenAudio(){y_.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(async()=>{try{if(!this._screenAudioTrack||!this._sendTransport||this._screenAudioProducer)return void(this._screenAudioProducerPromise=null);const e=await this._sendTransport.produce({track:this._screenAudioTrack,disableTrackOnPause:!1,stopTracks:!1,...l_("video",!0,this._features),appData:{streamId:C_,sourceClientId:this._selfId,screenShare:!0,source:"screenaudio",paused:!1}});this._screenAudioProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{y_.info('screenAudioProducer "close" event'),e.appData.localClosed&&this._vegaConnection?.message("closeProducers",{producerIds:[e.id]}),this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenAudioTrack!==this._screenAudioProducer.track&&await this._replaceScreenAudioTrack()}catch(e){y_.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(await this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})()}async _replaceScreenAudioTrack(){y_.info("_replaceScreenAudioTrack()"),this._screenAudioTrack&&this._screenAudioProducer&&!this._screenAudioProducer.closed&&this._screenAudioProducer.track!==this._screenAudioTrack&&(await this._screenAudioProducer.replaceTrack({track:this._screenAudioTrack}),await this._replaceScreenAudioTrack())}async _sendScreenAudio(e){return y_.info("_sendScreenAudio() [track:%o]",e),this._screenAudioTrack=e,this._screenAudioProducer?await this._replaceScreenAudioTrack():this._screenAudioProducerPromise?void 0:this._sendTransport?await this._internalSendScreenAudio():void 0}_stopProducer(e){y_.info("_stopProducer()"),e&&!e.closed&&(e.appData.localClosed=!0,e.close())}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._room.name===t&&Boolean(r)}setEventClaim(e){this._eventClaim=e,this._vegaConnection?.message("eventClaim",{eventClaim:e})}setColocation(e){this._colocation=e,this._vegaConnection?.message("setColocation",{colocation:e}),e||!this._micScoreProducer||this._micScoreProducerPromise||this._stopMicScoreProducer(),this._syncMicAnalyser(),Qg.sendEvent("colocation_changed",{colocation:e})}setAudioOnly(e){this._vegaConnection?.message(e?"enableAudioOnly":"disableAudioOnly")}setRemoteScreenshareVideoTrackIds(){}setRoomSessionId(e){this._roomSessionId=e}disconnect(e,t,r){if(y_.info("disconnect() [clientIdOrStreamId:%s, eventClaim:%s]",e,r),this._clientStates.has(e)){const t=this._clientStates.get(e);t.hasAcceptedWebcamStream=!1,t.hasAcceptedScreenStream=!1,this._syncIncomingStreamsWithPWA(e)}r&&(this._eventClaim=r,this._vegaConnection?.message("eventClaim",{eventClaim:r}))}replaceTrack(e,t){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){y_.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(Rm,{streamId:C_,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_onMicAnalyserScoreUpdated(e){this._micAnalyserDebugger?.onScoreUpdated?.(e),this._sendMicScore(this._micPaused?0:e.out)}addNewStream(e,t,r,i){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0];e&&this._sendWebcam(e),n&&(this._sendMic(n),this._syncMicAnalyser(),this._startMonitoringAudioTrack(n)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const s=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",s),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",s)}}else{const e=t.getVideoTracks()[0],r=t.getAudioTracks()[0];e&&this._sendScreenVideo(e),r&&this._sendScreenAudio(r),this._emitScreenshareStarted()}}_syncMicAnalyser(){if(!this._micTrack||!this._colocation||this._micAnalyser)return this._micAnalyser&&!this._colocation?(this._micAnalyser.close(),void(this._micAnalyser=null)):void 0;this._micAnalyser=function({micTrack:e,params:t,onScoreUpdated:r}){const i=new AudioContext;let n=null,s=null,a=null,o=!1;const c=async e=>{if(a&&o&&a.stop(),o=!1,e&&t.separateTrack)try{e=(await navigator.mediaDevices.getUserMedia({audio:{deviceId:a?.getSettings().deviceId,...t.separateTrack},video:!1})).getAudioTracks()[0],o=!0}catch(e){m_.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(a=e,s&&(s.disconnect(),s=null),e){const t=new MediaStream([e]);s=i.createMediaStreamSource(t),s.connect(n)}};let d;const l=e=>{if(clearInterval(d),t={...h_,...e},!n||n.fftSize!==2*t.bins){let e=null;n&&(e=a,c(null)),n=i.createAnalyser(),n.fftSize=2*t.bins,e&&c(e)}const s=new Uint8Array(n.frequencyBinCount),o=[];n.minDecibels=t.minDecibels,n.maxDecibels=t.maxDecibels,n.smoothingTimeConstant=t.smoothingTimeConstant;const l=t.initScript&&new Function("f","setTrack","lastTrack",t.initScript.join("\n")),p=t.scoreScript&&new Function("bins","g","f",t.scoreScript.join("\n")),u=t.scoreFormula&&new Function("bands",`return ${t.scoreFormula}`),h=t.outFormula&&new Function("score","avg","max","scores",`return ${t.outFormula}`),m=t.binFormula&&new Function("bin","index",`return ${t.binFormula}`);let f=0;const g=l&&l(u_,c,a);d=setInterval((()=>{n.getByteFrequencyData(s);let e=0;if(u){const r=t.bands.map((e=>{const t=e.map((e=>m(s[e]/255,e)));return{avg:t.reduce(((e,t)=>e+t),0)/e.length,min:t.reduce(((e,t)=>Math.min(e,t/255)),Number.MAX_VALUE),max:t.reduce(((e,t)=>Math.max(e,t/255)),0)}}));e=u(r)||0}else p&&(e=p(s,g,u_),isNaN(e)&&(e=0));if(o.push(e),o.length>t.aggSize&&o.shift(),f++,f>=t.reportRate){f=0;const t=o.reduce(((e,t)=>Math.max(e,t)),0),i=o.reduce(((e,t)=>e+t),0)/o.length,n=h(e,i,t,o);r({bins:s,score:e,max:t,avg:i,out:n})}}),1e3/t.sampleRate)};return l(t),c(e),{setParams:l,setTrack:c,close(){c(null),clearInterval(d),i.close()}}}({micTrack:this._micTrack,onScoreUpdated:this._onMicAnalyserScoreUpdated.bind(this)})}stopOrResumeAudio(e,t){y_.info("stopOrResumeAudio() [enabled:%s]",t),this._micPaused=!t,this._pauseResumeMic()}_handleStopOrResumeVideo({enable:e,track:t}){e?this._sendWebcam(t):this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track===t&&(this._stopProducer(this._webcamProducer),this._webcamProducer=null,this._webcamTrack=null)}stopOrResumeVideo(e,t){if(y_.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(b_))if(t){if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emitToPWA(mv,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(fv,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){y_.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();const r=this._getOrCreateClientState(t);e!==t?(r.hasAcceptedScreenStream=!0,r.hasEmittedScreenStream=!1):(r.hasAcceptedWebcamStream=!0,r.hasEmittedWebcamStream=!1),this._syncIncomingStreamsWithPWA(t)}updateStreamResolution(e,t,{width:r,height:i}){y_.info("updateStreamResolution()",{streamId:e,width:r,height:i});const n=this._streamIdToVideoConsumerId.get(e),s=this._consumers.get(n);if(!s)return;let a=0;this._consumers.forEach((e=>{e._closed||e._paused||"webcam"!==e._appData?.source&&"screenvideo"!==e._appData?.source||a++}));let o=2;/T3/.test(s._rtpParameters?.encodings?.[0]?.scalabilityMode||"")&&(o=3);const c=Math.max(r,i);let d=c>=480?c>=960?2:1:0,l=o-1;c<100&&(l=Math.max(o-2,0)),a>8&&0===d&&(l=Math.max(o-2,0)),a<4&&c>300&&0===d&&(d=1),s.appData.spatialLayer===d&&s.appData.temporalLayer===l||(s.appData.spatialLayer=d,s.appData.temporalLayer=l,this._vegaConnection?.message("setConsumersPreferredLayers",{consumerIds:[n],spatialLayer:d,temporalLayer:l}))}disconnectAll(){this._reconnect=!1,this._reconnectTimeOut&&(clearTimeout(this._reconnectTimeOut),this._reconnectTimeOut=null),this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null),this._socketListenerDeregisterFunctions=[],this._vegaConnection?.removeAllListeners(),this._vegaConnection?.close(),this._sendTransport?.close(),this._receiveTransport?.close(),this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._streamIdToVideoConsumerId.clear(),this._mediasoupDevice=null}sendAudioMutedStats(e){Qg.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Qg.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Qg.sendEvent(e,t)}rtcStatsDisconnect(){Qg.server.close()}rtcStatsReconnect(){Qg.server.connected||Qg.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}async _onMessage(e){const{method:t,data:r}=e;return Promise.resolve().then((()=>{switch(t){case"consumerReady":return this._onConsumerReady(r);case"consumerClosed":return this._onConsumerClosed(r);case"consumerPaused":return this._onConsumerPaused(r);case"consumerResumed":return this._onConsumerResumed(r);case"dataConsumerReady":return this._onDataConsumerReady(r);case"dataConsumerClosed":return this._onDataConsumerClosed(r);case"dominantSpeaker":return this._onDominantSpeaker(r);case"consumerScore":return this._onConsumerScore(r);case"producerScore":return this._onProducerScore(r);default:return void y_.info(`unknown message method "${t}"`)}})).catch((e=>{y_.error('"message" failed [error:%o]',e)}))}async _onConsumerReady(e){y_.info("_onConsumerReady()",{id:e.id,producerId:e.producerId});const t=await this._receiveTransport.consume(e);if(t.pause(),t.appData.localPaused=!0,t.appData.spatialLayer=2,this._consumers.set(t.id,t),this._qualityMonitor.addConsumer(t.appData.sourceClientId,t.id),t.observer.once("close",(()=>{this._consumers.delete(t.id),this._qualityMonitor.removeConsumer(t.appData.sourceClientId,t.id),this._consumerClosedCleanup(t)})),this._features.increaseIncomingMediaBufferOn&&t.rtpReceiver)try{t.rtpReceiver.jitterBufferTarget=sv,t.rtpReceiver.playoutDelayHint=.4}catch(e){y_.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:i,streamId:n}=t.appData,s=this._getOrCreateClientState(r);i?(s.hasEmittedScreenStream=!1,s.screenShareStreamId=n):(s.hasEmittedWebcamStream=!1,s.camStreamId=n);let a=i?s.screenStream:s.webcamStream;a&&a.inboundId===n||(a=new MediaStream,a.inboundId=n,i?s.screenStream=a:s.webcamStream=a),"video"===t.kind&&this._streamIdToVideoConsumerId.set(a.id,t.id),a.addTrack(t.track),this._syncIncomingStreamsWithPWA(r)}async _onConsumerClosed({consumerId:e,reason:t}){y_.info("_onConsumerClosed()",{consumerId:e,reason:t}),this._consumers.get(e)?.close()}_onConsumerPaused({consumerId:e}){y_.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){y_.info("_onConsumerResumed()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!1,t.appData.localPaused||t.resume())}_onConsumerScore({consumerId:e,kind:t,score:r}){y_.info("_onConsumerScore()",{consumerId:e,kind:t,score:r});const{appData:{sourceClientId:i}}=this._consumers.get(e)||{appData:{}};i&&this._qualityMonitor.addConsumerScore(i,e,t,r)}_onProducerScore({producerId:e,kind:t,score:r}){y_.info("_onProducerScore()",{producerId:e,kind:t,score:r}),[this._micProducer,this._webcamProducer,this._screenVideoProducer,this._screenAudioProducer].forEach((i=>{i?.id===e&&this._qualityMonitor.addProducerScore(this._selfId,e,t,r)}))}async _onDataConsumerReady(e){y_.info("_onDataConsumerReady()",{id:e.id,producerId:e.producerId});const t=await this._receiveTransport.consumeData(e);this._dataConsumers.set(t.id,t),t.once("close",(()=>{this._dataConsumers.delete(t.id)}));const{clientId:r}=t.appData;t.on("message",(e=>{if(!this._micAnalyserDebugger)return;if("string"!=typeof e)return;const{score:r}=JSON.parse(e);r&&this._micAnalyserDebugger?.onConsumerScore(t.appData.clientId,r)})),this._syncIncomingStreamsWithPWA(r)}async _onDataConsumerClosed({dataConsumerId:e,reason:t}){y_.info("_onDataConsumerClosed()",{dataConsumerId:e,reason:t});const r=this._dataConsumers.get(e);r?.close()}_onDominantSpeaker({consumerId:e}){const t=this._consumers.get(e);if(!t)return;const{sourceClientId:r}=t.appData;this._emitToPWA(Hv,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,i=this._getOrCreateClientState(t),n=r?i.screenStream:i.webcamStream;n&&(n.removeTrack(e.track),0===n.getTracks().length&&(this._streamIdToVideoConsumerId.delete(n.id),r?(i.screenStream=null,i.hasEmittedScreenStream=!1,i.screenShareStreamId=null):(i.hasEmittedWebcamStream=!1,i.camStreamId=null)))}_syncIncomingStreamsWithPWA(e){const t=this._getOrCreateClientState(e),{webcamStream:r,screenStream:i,hasEmittedWebcamStream:n,hasEmittedScreenStream:s,hasAcceptedWebcamStream:a,hasAcceptedScreenStream:o,screenShareStreamId:c,camStreamId:d}=t,l=[],p=[];this._consumers.forEach((t=>{if(t.appData.sourceClientId!==e)return;const r=t.appData.screenShare?o:a;!t.appData.localPaused!==r&&(r?(t.appData.remotePaused||t.resume(),t.appData.localPaused=!1,p.push(t.id)):(t.pause(),t.appData.localPaused=!0,l.push(t.id)))})),l.length>0&&this._vegaConnection?.message("pauseConsumers",{consumerIds:l}),p.length>0&&this._vegaConnection?.message("resumeConsumers",{consumerIds:p}),r&&!n&&a&&(this._emitToPWA(pv,{clientId:e,stream:r,streamId:d,streamType:"webcam"}),t.hasEmittedWebcamStream=!0),i&&!s&&o&&(this._emitToPWA(pv,{clientId:e,stream:i,streamId:c,streamType:"screenshare"}),t.hasEmittedScreenStream=!0)}_getOrCreateClientState(e){let t=this._clientStates.get(e);return t||(t={hasAcceptedWebcamStream:!1,hasAcceptedScreenStream:!1,hasEmittedWebcamStream:!1,hasEmittedScreenStream:!1,webcamStream:null,screenStream:null,screenShareStreamId:null,camStreamId:null},this._clientStates.set(e,t)),t}_emitToPWA(e,t){this._emitter.emit(e,t)}_emitToSignal(e,t,r){this._serverSocket.emit(e,t,r)}shouldAcceptStreamsFromBothSides(){return!0}setMicAnalyserDebugger(e){this._micAnalyserDebugger=e}setMicAnalyserParams(e){this._micAnalyser?.setParams(e)}hasClient(e){return this._clientStates.has(e)}}class T_{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(Om,(({room:n,selfId:s,error:a,eventClaim:o})=>{if(a)return;const c={selfId:s,room:n,emitter:e,serverSocket:t,webrtcProvider:r,features:i,eventClaim:o,deviceHandlerFactory:i?.deviceHandlerFactory},d=!!n.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:s,roomName:n.name,isSfu:d}))return void(this.currentManager.setEventClaim&&o&&this.currentManager.setEventClaim(o));this.currentManager.disconnectAll(),e.emit(hv)}let l=null;l=d?new R_(c):new Xv(c),l.setupSocketListeners(),e.emit(uv,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(hv))}}const P_=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(U_(r)):"stream_added"===t?e(Rg.streamAdded(r)):"rtc_manager_destroyed"===t&&e(M_())}}),k_={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"",isAcceptingStreams:!1},D_=at({name:"rtcConnection",initialState:k_,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:i,height:n}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:i,height:n}})})},rtcDisconnected:()=>Object.assign({},k_),rtcDispatcherCreated:(e,t)=>Object.assign(Object.assign({},e),{dispatcherCreated:!0,rtcManagerDispatcher:t.payload}),rtcManagerCreated:(e,t)=>Object.assign(Object.assign({},e),{rtcManager:t.payload,status:"ready"}),rtcManagerDestroyed:e=>Object.assign(Object.assign({},e),{rtcManager:null}),rtcManagerInitialized:e=>Object.assign(Object.assign({},e),{rtcManagerInitialized:!0})},extraReducers:e=>{e.addCase(ef,(e=>Object.assign(Object.assign({},e),{status:"reconnect"}))),e.addCase(um.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnect"===e.status?"ready":e.status})))}}),{resolutionReported:E_,rtcDispatcherCreated:I_,rtcDisconnected:O_,rtcManagerCreated:x_,rtcManagerDestroyed:M_,rtcManagerInitialized:j_,isAcceptingStreams:L_}=D_.actions,A_=()=>(e,t)=>{const r=t(),i=tf(r).socket,n=z_(r).rtcManagerDispatcher,s=Jf(r),a=Qf(r),o=lm(r);if(n)return;const c={getMediaConstraints:()=>({audio:a,video:s}),deferrable:e=>!e},d=new T_({emitter:P_(e),serverSocket:i,logger:console,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:o?vc.createFactory():void 0}});e(I_(d))},N_=()=>(e,t)=>{const{rtcManager:r}=z_(t());r&&r.disconnectAll(),e(O_())},B_=e=>(t,r)=>{var i;t(L_(!0));const n=r(),s=z_(n).rtcManager,a=Lg(n);if(!s)throw new Error("No rtc manager");const o=null===(i=s.shouldAcceptStreamsFromBothSides)||void 0===i?void 0:i.call(s),c=[];for(const{clientId:t,streamId:r,state:i}of e){if(a.find((e=>e.id===t))){if("to_accept"===i||"new_accept"===i&&o||"old_accept"===i&&!o)s.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false});else if("new_accept"===i||"old_accept"===i);else if("to_unaccept"===i)null==s||s.disconnect("0"===r?t:r,false);else if("done_accept"!==i)continue;c.push({clientId:t,streamId:r,state:i.replace(/to_|new_|old_/,"done_")})}}t(jg(c)),t(L_(!1))},F_=({streamId:e,width:t,height:r})=>(i,n)=>{const{reportedStreamResolutions:s,rtcManager:a}=z_(n()),o=tg(n());if(!a||(null==o?void 0:o.id)===e)return;const c=s[e];c&&c.width===t&&c.height===r||a.updateStreamResolution(e,null,{width:t||1,height:r||1}),i(E_({streamId:e,width:t,height:r}))},U_=e=>t=>{const{rtcManager:r}=e;t(x_(r))},$_=()=>(e,t)=>{const r=tg(t()),i=z_(t()).rtcManager,n=Jf(t()),s=Qf(t());r&&i&&i.addNewStream("0",r,!s,!n),e(j_())},z_=e=>e.rtcConnection,V_=e=>e.rtcConnection.rtcManagerInitialized,q_=e=>e.rtcConnection.status;Yh({actionCreator:$f.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=z_(t()),n=tg(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==n?void 0:n.getTracks().find((t=>t.kind===e));r&&(null==i||i.replaceTrack(t,r))})(e.kind,e)}))}}),Yh({actionCreator:vg.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=z_(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),Yh({actionCreator:gg,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=z_(t());null==i||i.removeStream(r.id,r,null)}});Xh([we((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),sf,((e,t,r)=>!(e||t||!r)))],(({dispatch:e},t)=>{t&&e(A_())}));const G_=we((e=>e.rtcConnection.rtcManager),V_,eg,((e,t,r)=>!("started"!==r||!e||t)));Xh([G_],(({dispatch:e},t)=>{t&&e($_())}));Xh([we(q_,nm,((e,t)=>!t&&!["","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(N_())}));const H_=we(q_,Lg,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:i,newJoiner:n}=e;for(let e=0;e<t.length;e++){let s=t[e].id,a=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(s=t[1].id,a=t[1].state):1===e&&(s=t[0].id,a=t[0].state)),"done_accept"!==a&&r.push({clientId:i,streamId:s,state:(n&&"0"===s?"new":"to")+"_accept"})}}return r}));Xh([H_,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(B_(t))}));const W_={audioEnabled:{actions:[dg.fulfilled],rtcEventName:"audioEnabled",getValue:e=>Qf(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[lg.fulfilled],rtcEventName:"videoEnabled",getValue:e=>Jf(e),getOutput:e=>({enabled:e})},localStream:{actions:[$f.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=tg(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({stream:e})},localScreenshareStream:{actions:[vg.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=yg(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({tracks:e})},localScreenshareStreamStopped:{actions:[gg],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[pg.fulfilled],rtcEventName:"displayName",getValue:e=>om(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>mg(e),getOutput:e=>({clientId:e})},deviceId:{actions:null,rtcEventName:"deviceId",getValue:e=>(e=>{var t,r;return null===(r=null===(t=e.deviceCredentials.data)||void 0===t?void 0:t.credentials)||void 0===r?void 0:r.uuid})(e),getOutput:e=>({deviceId:e})},externalId:{actions:null,rtcEventName:"externalId",getValue:e=>dm(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>Sg(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>nf(e),getOutput:e=>({status:e})},roomSessionId:{actions:[um.newClient,um.roomJoined,um.roomSessionEnded,um.clientLeft],rtcEventName:"roomSessionId",getValue:e=>(e=>{var t;return null===(t=e.roomConnection.session)||void 0===t?void 0:t.id})(e),getOutput:e=>({roomSessionId:e})},rtcConnectionStatus:{actions:null,rtcEventName:"rtcConnectionStatus",getValue:e=>q_(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>(e=>e.localParticipant.roleName)(e),getOutput:e=>({userRole:e})}},K_=Object.values(W_).flatMap((({actions:e})=>{var t;return null!==(t=null==e?void 0:e.map((e=>e)))&&void 0!==t?t:null})).filter((e=>null!==e)),J_=e=>"object"==typeof e?JSON.stringify(e):e,Q_=at({initialState:{reportedValues:{}},name:"rtcAnalytics",reducers:{updateReportedValues:(e,t)=>Object.assign(Object.assign({},e),{reportedValues:Object.assign(Object.assign({},e.reportedValues),{[t.payload.rtcEventName]:t.payload.value})})}}),Z_=()=>(e,t)=>{const r=t(),i=z_(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(W_).forEach((({rtcEventName:t,getValue:n,getOutput:s})=>{var a;const o=n(r),c=Object.assign(Object.assign({},s(o)),{_time:Date.now()}),d=J_(o);(null===(a=r.rtcAnalytics.reportedValues)||void 0===a?void 0:a[t])!==d&&(i.sendStatsCustomEvent(t,c),e(Y_({rtcEventName:t,value:o})))})))},{updateReportedValues:Y_}=Q_.actions;Yh({matcher:Qe(...K_),effect:({type:e},{getState:t,dispatch:r})=>{var i;const n=t(),s=z_(n).rtcManager;if(!s)return;const a=Object.values(W_).find((({actions:t})=>null==t?void 0:t.map((e=>e.type)).includes(e)));if(!a)return;const{getValue:o,getOutput:c,rtcEventName:d}=a,l=o(n),p=J_(l),u=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(i=n.rtcAnalytics.reportedValues)||void 0===i?void 0:i[d])!==p&&(s.sendStatsCustomEvent(d,u),r(Y_({rtcEventName:d,value:l})))}}),Xh([V_],(({dispatch:e},t)=>{t&&e(Z_())}));const X_=at({name:"streaming",initialState:{isStreaming:!1,error:null,startedAt:void 0},reducers:{doHandleStreamingStarted:e=>Object.assign(Object.assign({},e),{isStreaming:!0,error:null,startedAt:(new Date).getTime()}),doHandleStreamingStopped:e=>Object.assign(Object.assign({},e),{isStreaming:!1})}});X_.actions;const ey=at({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(um.roomJoined,((e,{payload:t})=>{var r;return(null===(r=t.room)||void 0===r?void 0:r.knockers.length)?Object.assign(Object.assign({},e),{waitingParticipants:t.room.knockers.map((e=>({id:e.clientId,displayName:e.displayName})))}):e})),e.addCase(um.roomKnocked,((e,t)=>{const{clientId:r,displayName:i}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:[...e.waitingParticipants,{id:r,displayName:i}]})})),e.addCase(um.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}}),ty=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=sf(n);null==s||s.emit("handle_knock",{action:"accept",clientId:i,response:{}})},ry=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=sf(n);null==s||s.emit("handle_knock",{action:"reject",clientId:i,response:{}})};const iy=null===!1&&!1,ny=f({app:em.reducer,chat:of.reducer,cloudRecording:df.reducer,deviceCredentials:mm.reducer,localMedia:Ef.reducer,localParticipant:ug.reducer,localScreenshare:fg.reducer,organization:bg.reducer,remoteParticipants:Og.reducer,roomConnection:Ng.reducer,rtcAnalytics:Q_.reducer,rtcConnection:D_.reducer,signalConnection:qm.reducer,streaming:X_.reducer,waitingParticipants:ey.reducer}),sy=({preloadedState:e,injectServices:t})=>We({devTools:iy,reducer:ny,middleware:e=>e({thunk:{extraArgument:{services:t}},serializableCheck:!1}).prepend(Zh.middleware),preloadedState:e}),ay=(e,t,r)=>{let i;function n(){const n=t(e.getState());n!==i&&(i=n,r(i))}const s=e.subscribe(n);return n(),s};class oy{constructor(e={}){this.data=void 0===e.data?{}:e.data,this.headers=e.headers||{},this.status=e.status||200,this.statusText=e.statusText||"OK",this.url=e.url||null}}function cy(e,t){return wf.ok(e,`${t} is required`),e}function dy(e,t){return wf.ok("boolean"==typeof e,`${t}<boolean> is required`),e}function ly(e,t){return wf.ok("number"==typeof e,`${t}<number> is required`),e}function py(e,t){return wf.ok("string"==typeof e,`${t}<string> is required`),e}function uy(e,t,r){const i=r||t.name[0].toLowerCase()+t.name.substring(1);return wf.ok(e instanceof t,`${i}<${t.name}> is required`),e}function hy(e,t){return wf.ok(Array.isArray(e),`${t}<array> is required`),e}function my(e,t){if(null==e||"object"!=typeof e||Array.isArray(e))throw new Error(`${t} must be a record. ${JSON.stringify(e)}`);return e}function fy(e,t,r){py(t,"name"),function(e,t,r,i){py(r,"name");const n=i||`${r} must be null or of type ${t}`;wf.ok(null===e||typeof e===t,n)}(e,"string",t,r)}function gy({baseUrl:e,url:t}){return e?e+t:t}class vy{constructor({baseUrl:e}){py(e,"baseUrl"),this._baseUrl=e}_requestAxios(e,t){const r=Object.assign({},t,{url:e,baseURL:this._baseUrl});return Jh.request(r)}request(e,t){return py(e,"url"),wf.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),wf.ok(t,"options are required"),this._requestAxios(e,t).then((e=>{const{data:t,headers:r,status:i,statusText:n,config:s}=e,a=s&&s.url?gy({baseUrl:s.baseURL,url:s.url}):null;return new oy({data:t,headers:r,status:i,statusText:n,url:a})})).catch((e=>{const t=e.response;if(!t)throw new Error("Could not make the request.");const{data:r,headers:i,status:n,statusText:s,config:a}=t,o=a&&a.url?gy({baseUrl:a.baseURL,url:a.url}):null;return Promise.reject(new oy({data:r,headers:i,status:n,statusText:s,url:o}))}))}}class _y{constructor({httpClient:e}){wf.ok(e,"httpClient is required"),this._httpClient=e}static dataToFormData(e){wf.ok(e,"data is required");const t=new FormData;return Object.keys(e).forEach((r=>{const i=e[r];t.append(r,i)})),t}request(e,t={}){const r=Object.assign(t.headers||{},{"Content-Type":void 0});return this._httpClient.request(e,Object.assign(t,{headers:r,transformRequest:_y.dataToFormData}))}}let yy;yy="object"==typeof window?window.btoa||lu:"object"==typeof global&&global.btoa||lu;const by=()=>Promise.resolve(null);class wy{constructor({httpClient:e,fetchDeviceCredentials:t}){this._httpClient=e,this._fetchDeviceCredentials=t}request(e,t){return this._fetchDeviceCredentials().then((r=>{const i=Object.assign({},t.headers,function(e){if(e&&e.credentials){const t=`${e.credentials.uuid}:${e.hmac}`;return{Authorization:`Basic ${yy(t)}`}}return{}}(r),{"X-Appearin-Device-Platform":"web"}),n=Object.assign({},t,{headers:i});return this._httpClient.request(e,n)}))}}class Sy{constructor({baseUrl:e="https://api.appearin.net",fetchDeviceCredentials:t=by}={}){this.authenticatedHttpClient=new wy({httpClient:new vy({baseUrl:e}),fetchDeviceCredentials:t}),this.authenticatedFormDataHttpClient=new _y({httpClient:this.authenticatedHttpClient})}request(e,t){return py(e,"url"),wf.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),wf.ok(t,"options are required"),this.authenticatedHttpClient.request(e,t)}requestMultipart(e,t){return py(e,"url"),wf.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),wf.ok(t,"options are required"),this.authenticatedFormDataHttpClient.request(e,t)}}function Cy(e,t){return py(my(e,"data")[t],t)}const Ry=(Ty=Cy,(e,t)=>{const r=my(e,"data")[t];return null==r?null:Ty(e,t)});var Ty;function Py(e,t,r){return function(e,t){return hy(my(e,"data")[t],t)}(e,t).map((e=>r(e)))}class ky{constructor(e,t,r=void 0){this.credentials={uuid:e},this.hmac=t,this.userId=r}toJson(){return Object.assign({credentials:this.credentials,hmac:this.hmac},this.userId&&{userId:this.userId})}static fromJson(e){return new ky(Cy(function(e,t){const r=my(e,"data")[t];return void 0===r?null:r}(e,"credentials"),"uuid"),Cy(e,"hmac"),Ry(e,"userId")||void 0)}}class Dy{constructor({apiClient:e}){this._apiClient=e}getCredentials(){return this._apiClient.request("/devices",{method:"post"}).then((({data:e})=>ky.fromJson(e))).catch((e=>{if(e.response&&404===e.response.status)return null;throw e}))}}class Ey{constructor(e,t){this._key=e,this._chromeStorage=t}loadOrDefault(e){return new Promise((t=>{this._chromeStorage.get(this._key,(r=>{t(r[this._key]||e)}))}))}save(e){return new Promise((t=>{this._chromeStorage.set({[this._key]:e},(()=>{t()}))}))}}class Iy{constructor(e,t){cy(t,"localStorage"),this._key=py(e,"key"),this._localStorage=t}loadOrDefault(e){try{const t=this._localStorage.getItem(this._key);if(t)try{return Promise.resolve(JSON.parse(t))}catch(e){}return Promise.resolve(e)}catch(t){return console.warn("Error getting access to storage. Are cookies blocked?",t),Promise.resolve(e)}}save(e){try{return this._localStorage.setItem(this._key,JSON.stringify(e)),Promise.resolve()}catch(e){return console.warn("Error getting access to storage. Are cookies blocked?",e),Promise.reject(e)}}}let Oy;try{Oy=self.localStorage}catch(rb){Oy={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}var xy=Oy;const My="credentials_saved";class jy extends vn{constructor({deviceService:e,credentialsStore:t}){super(),this._deviceService=e,this._credentialsStore=t}static create({baseUrl:e,storeName:t="CredentialsStorage",storeType:r="localStorage"}){const i=new Dy({apiClient:new Sy({baseUrl:e})});let n=null;if("localStorage"===r)n=new Iy(t,xy);else{if("chromeStorage"!==r)throw new Error(`Unknown store type: ${r}`);n=new Ey(t,window.chrome.storage.local)}return new jy({deviceService:i,credentialsStore:n})}_fetchNewCredentialsFromApi(){const e=this._credentialsStore;return new Promise((t=>{const r=()=>{this._deviceService.getCredentials().then((r=>e.save(r?r.toJson():null).then((()=>t(r))))).catch((()=>{setTimeout(r,2e3)}))};r()}))}getCurrentCredentials(){return this._credentialsStore.loadOrDefault(null).then((e=>e?ky.fromJson(e):null))}getCredentials(){return this.credentialsPromise||(this.credentialsPromise=this.getCurrentCredentials().then((e=>e||this._fetchNewCredentialsFromApi()))),this.credentialsPromise}saveCredentials(e){return this.credentialsPromise=void 0,this._credentialsStore.save(e.toJson()).then((()=>(this.emit(My,e),e)))}setUserId(e){return this.getCurrentCredentials().then((t=>{t||console.error("Illegal state: no credentials to set user id for.");if(null===t||t.userId!==e)return this._credentialsStore.save(Object.assign({},null==t?void 0:t.toJson(),{userId:e}))})).then((()=>{}))}}class Ly{constructor({isExhausted:e,renewsAt:t,totalMinutesLimit:r,totalMinutesUsed:i}){this.isExhausted=e,this.renewsAt=t,this.totalMinutesLimit=r,this.totalMinutesUsed=i}static fromJson(e){return new Ly({isExhausted:dy(e.isExhausted,"isExhausted"),renewsAt:new Date(py(e.renewsAt,"renewsAt")),totalMinutesLimit:ly(e.totalMinutesLimit,"totalMinutesLimit"),totalMinutesUsed:ly(e.totalMinutesUsed,"totalMinutesUsed")})}}class Ay{constructor({basePlanId:e,embeddedFreeTierStatus:t,isDeactivated:r,isOnTrial:i,onTrialUntil:n,trialStatus:s}){this.basePlanId=e,this.isDeactivated=r,this.isOnTrial=i,this.onTrialUntil=n||null,this.trialStatus=s||null,this.embeddedFreeTierStatus=t||null}static fromJson(e){return new Ay({basePlanId:"string"==typeof e.basePlanId?e.basePlanId:null,isDeactivated:dy(e.isDeactivated,"isDeactivated"),isOnTrial:dy(e.isOnTrial,"isOnTrial"),onTrialUntil:"string"==typeof e.onTrialUntil?new Date(e.onTrialUntil):null,trialStatus:"string"==typeof e.trialStatus?e.trialStatus:null,embeddedFreeTierStatus:e.embeddedFreeTierStatus?Ly.fromJson(e.embeddedFreeTierStatus):null})}}function Ny(e){return null!=e}function By(e={}){return{maxNumberOfInvitationsAndUsers:Ny(null==e?void 0:e.maxNumberOfInvitationsAndUsers)?Number(null==e?void 0:e.maxNumberOfInvitationsAndUsers):null,maxNumberOfClaimedRooms:Ny(null==e?void 0:e.maxNumberOfClaimedRooms)?Number(null==e?void 0:e.maxNumberOfClaimedRooms):null,maxRoomLimitPerOrganization:Ny(null==e?void 0:e.maxRoomLimitPerOrganization)?Number(null==e?void 0:e.maxRoomLimitPerOrganization):null,trialMinutesLimit:Ny(null==e?void 0:e.trialMinutesLimit)?Number(null==e?void 0:e.trialMinutesLimit):null,includedUnits:Ny(null==e?void 0:e.includedUnits)?Number(null==e?void 0:e.includedUnits):null}}class Fy{constructor(e){this.logoImageUrl=null,this.roomBackgroundImageUrl=null,this.roomBackgroundThumbnailUrl=null,this.roomKnockPageBackgroundImageUrl=null,this.roomKnockPageBackgroundThumbnailUrl=null,this.preferences=null,this.onboardingSurvey=null,this.type=null,uy(e,Object,"properties"),py(e.organizationId,"organizationId"),py(e.organizationName,"organizationName"),py(e.subdomain,"subdomain"),uy(e.permissions,Object,"permissions"),uy(e.limits,Object,"limits"),this.organizationId=e.organizationId,this.organizationName=e.organizationName,this.subdomain=e.subdomain,this.permissions=e.permissions,this.limits=e.limits,this.account=e.account?new Ay(e.account):null,this.logoImageUrl=e.logoImageUrl,this.roomBackgroundImageUrl=e.roomBackgroundImageUrl,this.roomBackgroundThumbnailUrl=e.roomBackgroundThumbnailUrl,this.roomKnockPageBackgroundImageUrl=e.roomKnockPageBackgroundImageUrl,this.roomKnockPageBackgroundThumbnailUrl=e.roomKnockPageBackgroundThumbnailUrl,this.preferences=e.preferences,this.onboardingSurvey=e.onboardingSurvey,this.type=e.type}static fromJson(e){const t=uy(e,Object,"data"),r=(null==t?void 0:t.preferences)||{},i=(null==t?void 0:t.onboardingSurvey)||null,n=uy(t.permissions,Object,"permissions");return new Fy({organizationId:py(t.organizationId,"organizationId"),organizationName:py(t.organizationName,"organizationName"),subdomain:py(t.subdomain,"subdomain"),permissions:n,limits:By(uy(t.limits,Object,"limits")),account:t.account?Ay.fromJson(t.account):null,logoImageUrl:"string"==typeof t.logoImageUrl?t.logoImageUrl:null,roomBackgroundImageUrl:"string"==typeof t.roomBackgroundImageUrl?t.roomBackgroundImageUrl:null,roomBackgroundThumbnailUrl:"string"==typeof t.roomBackgroundThumbnailUrl?t.roomBackgroundThumbnailUrl:null,roomKnockPageBackgroundImageUrl:"string"==typeof t.roomKnockPageBackgroundImageUrl?t.roomKnockPageBackgroundImageUrl:null,roomKnockPageBackgroundThumbnailUrl:"string"==typeof t.roomKnockPageBackgroundThumbnailUrl?t.roomKnockPageBackgroundThumbnailUrl:null,preferences:r,onboardingSurvey:i,type:"string"==typeof t.type?t.type:null})}}Fy.GLOBAL_ORGANIZATION_ID="1";class Uy{constructor({apiClient:e}){this._apiClient=e}createOrganization({organizationName:e,subdomain:t,owner:r}){const{displayName:i,consents:n}=r||{},s="email"in r?{value:r.email,verificationCode:py(r.verificationCode,"owner.verificationCode")}:null,a="idToken"in r?r.idToken:null;if(py(t,"subdomain"),py(e,"organizationName"),py(i,"owner.displayName"),wf.ok(s||a,"owner.email or owner.idToken is required"),n){hy(n,"consents");for(const{consentRevisionId:e,action:t}of n)py(e,"consentRevisionId"),fy(t,"action")}return this._apiClient.request("/organizations",{method:"POST",data:{organizationName:e,type:"private",subdomain:t,owner:Object.assign(Object.assign(Object.assign(Object.assign({},s&&{email:s}),a&&{idToken:a}),n&&{consents:n}),{displayName:i})}}).then((({data:e})=>Cy(e,"organizationId")))}getOrganizationBySubdomain(e){return py(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/?fields=permissions,account,onboardingSurvey`,{method:"GET"}).then((({data:e})=>Fy.fromJson(e))).catch((e=>{if(e instanceof oy){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationByOrganizationId(e){return py(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}?fields=permissions,account`,{method:"GET"}).then((({data:e})=>Fy.fromJson(e))).catch((e=>{if(e instanceof oy){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationsByContactPoint(e){const{code:t}=e,r="email"in e?e.email:null,i="phoneNumber"in e?e.phoneNumber:null;wf.ok((r||i)&&!(r&&i),"either email or phoneNumber is required"),py(t,"code");const n=r?{type:"email",value:r}:{type:"phoneNumber",value:i};return this._apiClient.request("/organization-queries",{method:"POST",data:{contactPoint:n,code:t}}).then((({data:e})=>Py(e,"organizations",(e=>Fy.fromJson(e)))))}getOrganizationsByIdToken({idToken:e}){return py(e,"idToken"),this._apiClient.request("/organization-queries",{method:"POST",data:{idToken:e}}).then((({data:e})=>Py(e,"organizations",(e=>Fy.fromJson(Object.assign({permissions:{},limits:{}},my(e,"organization")))))))}getOrganizationsByLoggedInUser(){return this._apiClient.request("/user/organizations",{method:"GET"}).then((({data:e})=>Py(e,"organizations",(e=>Fy.fromJson(Object.assign({permissions:{},limits:{}},my(e,"organization")))))))}getSubdomainAvailability(e){return py(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/availability`,{method:"GET"}).then((({data:e})=>(uy(e,Object,"data"),{status:Cy(e,"status")})))}updatePreferences({organizationId:e,preferences:t}){return cy(e,"organizationId"),cy(t,"preferences"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}/preferences`,{method:"PATCH",data:t}).then((()=>{}))}deleteOrganization({organizationId:e}){return cy(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}`,{method:"DELETE"}).then((()=>{}))}}class $y{constructor({organizationService:e,subdomain:t}){this._organizationService=e,this._subdomain=t,this._organizationPromise=null}initOrganization(){return this.fetchOrganization().then((()=>{}))}fetchOrganization(){return this._organizationPromise||(this._organizationPromise=this._organizationService.getOrganizationBySubdomain(this._subdomain)),this._organizationPromise}}const zy=[{pattern:/^(?:([^.]+)[.])?(server:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?(localhost:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?((\d+[.]){3}:?\d*)$/,separator:"."},{pattern:/^(?:([^.]+)-)?(ip-[^.]*[.](?:hereby[.]dev|rfc1918[.]disappear[.]at)(?::\d+|))$/,separator:"-"},{pattern:/^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/,separator:"."}];function Vy({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,n=".";for(const{separator:t,pattern:s}of zy){const a=s.exec(e);if(a){r=a[1]||"",i=a[2],n=t;break}}const s=r?`${r}${n}${i}`:i;return{domain:i,domainWithSeparator:`${n}${i}`,organizationDomain:s,organization:`${t}//${s}`,service:`${t}//${i}`,subdomain:r}}Vy(window&&window.location);const qy="https://api.whereby.dev";function Gy(){const e=jy.create({baseUrl:qy}),t=new Sy({fetchDeviceCredentials:e.getCredentials.bind(e),baseUrl:qy}),r=new Uy({apiClient:t});return{credentialsService:e,apiClient:t,organizationService:r,fetchOrganizationFromRoomUrl:e=>{const t=Vy({host:new URL(e).host});return new $y({organizationService:r,subdomain:t.subdomain}).fetchOrganization()}}}const Hy=we((e=>e.chat.chatMessages),(e=>e.cloudRecording),hg,tg,Lg,Ag,$g,(e=>e.streaming),(e=>e.waitingParticipants.waitingParticipants),((e,t,r,i,n,s,a,o,c)=>({chatMessages:e,cloudRecording:t.isRecording?{status:"recording"}:void 0,localScreenshareStatus:r.isScreenSharing?"active":void 0,localParticipant:Object.assign(Object.assign({},r),{stream:i}),remoteParticipants:n,screenshares:s,connectionStatus:a,liveStream:o.isStreaming?{status:"streaming",startedAt:o.startedAt}:void 0,waitingParticipants:c}))),Wy={chatMessages:[],remoteParticipants:[],connectionStatus:"initializing",screenshares:[],waitingParticipants:[]},Ky={localMediaOptions:{audio:!0,video:!0}};const Jy=we((e=>e.localMedia.cameraDeviceError),sg,Wf,Kf,(e=>e.localMedia.isSettingCameraDevice),(e=>e.localMedia.isSettingMicrophoneDevice),ng,tg,(e=>e.localMedia.microphoneDeviceError),ag,og,(e=>e.localMedia.startError),((e,t,r,i,n,s,a,o,c,d,l,p)=>({cameraDeviceError:e,cameraDevices:t,currentCameraDeviceId:r,currentMicrophoneDeviceId:i,isSettingCameraDevice:n,isSettingMicrophoneDevice:s,isStarting:a,localStream:o,microphoneDeviceError:c,microphoneDevices:d,speakerDevices:l,startError:p}))),Qy={cameraDeviceError:null,cameraDevices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isStarting:!1,microphoneDeviceError:null,microphoneDevices:[],speakerDevices:[],startError:null};return e.VideoView=a,e.useLocalMedia=function(e={audio:!0,video:!0}){const[r]=t.useState((()=>{const e=Gy();return sy({injectServices:e})})),[i,n]=t.useState(Qy);return t.useEffect((()=>{const t=ay(r,Jy,n);return r.dispatch(qf(e)),()=>{t(),r.dispatch(Gf())}}),[]),{state:i,actions:{setCameraDevice:t.useCallback((e=>r.dispatch(Of({deviceId:e}))),[r]),setMicrophoneDevice:t.useCallback((e=>r.dispatch(xf({deviceId:e}))),[r]),toggleCameraEnabled:t.useCallback((e=>r.dispatch(Mf({enabled:e}))),[r]),toggleMicrophoneEnabled:t.useCallback((e=>r.dispatch(jf({enabled:e}))),[r])},store:r}},e.useRoomConnection=function(e,t=Ky){const[r]=n.useState((()=>{if(t.localMedia)return t.localMedia.store;const e=Gy();return sy({injectServices:e})})),[i,s]=n.useState(),[o,c]=n.useState(Wy);return n.useEffect((()=>{const i=ay(r,Hy,c),n=new URL(e),s=new URLSearchParams(n.search).get("roomKey");return r.dispatch(tm({displayName:t.displayName||"Guest",localMediaOptions:t.localMedia?void 0:t.localMediaOptions,roomKey:s,roomUrl:e,sdkVersion:"0.7.0",externalId:t.externalId||null})),()=>{i(),r.dispatch(rm())}}),[]),n.useEffect((()=>{r&&!i&&s((()=>e=>n.createElement(a,Object.assign({},e,{onResize:({stream:e,width:t,height:i})=>{r.dispatch(F_({streamId:e.id,width:t,height:i}))}}))))}),[r,i]),{state:o,actions:{sendChatMessage:n.useCallback((e=>r.dispatch(cf({text:e}))),[r]),knock:n.useCallback((()=>r.dispatch(Fg())),[r]),setDisplayName:n.useCallback((e=>r.dispatch(pg({displayName:e}))),[r]),toggleCamera:n.useCallback((e=>r.dispatch(Mf({enabled:e}))),[r]),toggleMicrophone:n.useCallback((e=>r.dispatch(jf({enabled:e}))),[r]),acceptWaitingParticipant:n.useCallback((e=>r.dispatch(ty({participantId:e}))),[r]),rejectWaitingParticipant:n.useCallback((e=>r.dispatch(ry({participantId:e}))),[r]),startCloudRecording:n.useCallback((()=>r.dispatch(pf())),[r]),startScreenshare:n.useCallback((()=>r.dispatch(vg())),[r]),stopCloudRecording:n.useCallback((()=>r.dispatch(uf())),[r]),stopScreenshare:n.useCallback((()=>r.dispatch(_g())),[r])},components:{VideoView:i||a},_ref:r}},e}({},React);
|
|
3
|
+
let Wr;Fr.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,Vr.debug(`push() [name:${t}]`),"function"!=typeof e)throw new TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const n={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(n.completed)return;n.completed=!0,this.pendingTasks.delete(n.id),Vr.debug(`resolving task [name:${n.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!n.completed&&(n.completed=!0,this.pendingTasks.delete(n.id),Vr.debug(`rejecting task [name:${n.name}]: %s`,String(e)),i(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(n.id,n),1===this.pendingTasks.size&&this.execute(n)}))}stop(){Vr.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())Vr.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new qr);this.stopping=!1}remove(e){Vr.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new Gr):Vr.debug(`stop() | no task with given idx [taskIdx:${e}]`)}dump(){const e=Date.now();let t=0;return Array.from(this.pendingTasks.values()).map((r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0})))}async execute(e){if(Vr.debug(`execute() [name:${e.name}]`),e.executedAt)throw new Error("task already being executed");e.executedAt=Date.now();try{const t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}};var Hr="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:Wt):e=>(Wr||(Wr=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),Kr={};Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.Producer=void 0;const Jr=dr,Qr=mr,Zr=new sr.Logger("Producer");class Yr extends Jr.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 Jr.EnhancedEventEmitter,Zr.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){this._appData=e}get observer(){return this._observer}close(){this._closed||(Zr.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Zr.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Qr.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Zr.debug("pause()"),this._closed?Zr.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@pause",e,t)})).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){Zr.debug("resume()"),this._closed?Zr.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@resume",e,t)})).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(Zr.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new Qr.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new Qr.InvalidStateError("track ended");e!==this._track?(await new Promise(((t,r)=>{this.safeEmit("@replacetrack",e,t,r)})),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()):Zr.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new Qr.InvalidStateError("closed");if("video"!==this._kind)throw new Qr.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise(((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)})).catch((()=>{})),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new Qr.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){Zr.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){}}}Kr.Producer=Yr;var Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.Consumer=void 0;const ei=dr,ti=mr,ri=new sr.Logger("Consumer");class ii extends ei.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:n,rtpParameters:s,appData:a}){super(),this._closed=!1,this._observer=new ei.EnhancedEventEmitter,ri.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){this._appData=e}get observer(){return this._observer}close(){this._closed||(ri.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(ri.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new ti.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){ri.debug("pause()"),this._closed?ri.error("pause() | Consumer closed"):this._paused?ri.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){ri.debug("resume()"),this._closed?ri.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):ri.debug("resume() | Consumer is already resumed")}onTrackEnded(){ri.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){}}}Xr.Consumer=ii;var ni={};Object.defineProperty(ni,"__esModule",{value:!0}),ni.DataProducer=void 0;const si=dr,ai=mr,oi=new sr.Logger("DataProducer");class ci extends si.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new si.EnhancedEventEmitter,oi.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){this._appData=e}get observer(){return this._observer}close(){this._closed||(oi.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(oi.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(oi.debug("send()"),this._closed)throw new ai.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(oi.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?oi.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):oi.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(oi.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||oi.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}ni.DataProducer=ci;var di={};Object.defineProperty(di,"__esModule",{value:!0}),di.DataConsumer=void 0;const li=dr,pi=new sr.Logger("DataConsumer");class ui extends li.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:n}){super(),this._closed=!1,this._observer=new li.EnhancedEventEmitter,pi.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){this._appData=e}get observer(){return this._observer}close(){this._closed||(pi.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(pi.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(pi.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?pi.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):pi.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(pi.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}di.DataConsumer=ui;var hi=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),mi=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),fi=Wt&&Wt.__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)&&hi(t,e,r);return mi(t,e),t},gi=Wt&&Wt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Br,"__esModule",{value:!0}),Br.Transport=void 0;const vi=Fr,_i=gi(Hr),yi=sr,bi=dr,wi=mr,Si=fi(vr),Ci=fi(_r),Ri=Kr,Ti=Xr,Pi=ni,ki=di,Di=new yi.Logger("Transport");class Ei{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let Oi=class extends bi.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:p,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,this._iceGatheringState="new",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 vi.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new bi.EnhancedEventEmitter,Di.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=Si.clone(c,{})).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=p(),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=l||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){Di.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed";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 wi.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(Di.debug("restartIce()"),this._closed)throw new wi.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>await this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(Di.debug("updateIceServers()"),this._closed)throw new wi.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(Di.debug("produce() [track:%o]",e),this._closed)throw new wi.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new wi.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new wi.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new wi.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:l,rtpSender:p}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{Ci.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:o},t,r)})),r=new Ri.Producer({id:t,localId:d,rtpSender:p,track:e,rtpParameters:l,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,streamId:n,appData:s={}}){if(Di.debug("consume()"),i=Si.clone(i,void 0),this._closed)throw new wi.InvalidStateError("closed");if("recv"!==this._direction)throw new wi.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");if(!Ci.canReceive(i,this._extendedRtpCapabilities))throw new wi.UnsupportedError("cannot consume this Producer");const a=new Ei({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s});return this._pendingConsumerTasks.push(a),(0,_i.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),a.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:n="",appData:s={}}={}){if(Di.debug("produceData()"),this._closed)throw new wi.InvalidStateError("closed");if("send"!==this._direction)throw new wi.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new wi.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});Ci.validateSctpStreamParameters(o);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:o,label:i,protocol:n,appData:s},e,t)})),d=new Pi.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(Di.debug("consumeData()"),r=Si.clone(r,void 0),this._closed)throw new wi.InvalidStateError("closed");if("recv"!==this._direction)throw new wi.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new wi.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 Ci.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:n}),o=new ki.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._consumerCreationInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingConsumerTasks.length)return void Di.debug("createPendingConsumers() | there is no Consumer to be created");const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:i,rtpParameters:n,streamId:s}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:n,streamId:s})}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:l}=n.consumerOptions,{localId:p,rtpReceiver:u,track:h}=s,m=new Ti.Consumer({id:a,localId:p,producerId:o,rtpReceiver:u,track:h,rtpParameters:d,appData:l});this._consumers.set(m.id,m),this.handleConsumer(m),this._probatorConsumerCreated||t||"video"!==c||(t=m),this._observer.safeEmit("newconsumer",m),n.resolve(m)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=Ci.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),Di.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){Di.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}}),"transport.createPendingConsumers()").then((()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()})).catch((()=>{}))}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingPauseConsumers.size)return void Di.debug("pausePendingConsumers() | there is no Consumer to be paused");const e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.pauseReceiving(t)}catch(e){Di.error("pausePendingConsumers() | failed to pause Consumers:",e)}}),"transport.pausePendingConsumers").then((()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()})).catch((()=>{}))}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingResumeConsumers.size)return void Di.debug("resumePendingConsumers() | there is no Consumer to be resumed");const e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.resumeReceiving(t)}catch(e){Di.error("resumePendingConsumers() | failed to resume Consumers:",e)}}),"transport.resumePendingConsumers").then((()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()})).catch((()=>{}))}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingCloseConsumers.size)return void Di.debug("closePendingConsumers() | there is no Consumer to be closed");const e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map((e=>e.localId)))}catch(e){Di.error("closePendingConsumers() | failed to close Consumers:",e)}}),"transport.closePendingConsumers").then((()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()})).catch((()=>{}))}handleHandler(){const e=this._handler;e.on("@connect",(({dtlsParameters:e},t,r)=>{this._closed?r(new wi.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(Di.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(Di.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()=>await this._handler.stopSending(e.localId)),"producer @close event").catch((e=>Di.warn("producer.close() failed:%o",e)))})),e.on("@pause",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.pauseSending(e.localId)),"producer @pause event").then(t).catch(r)})),e.on("@resume",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.resumeSending(e.localId)),"producer @resume event").then(t).catch(r)})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new wi.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())})),e.on("@pause",(()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,_i.default)((()=>{this._closed||!1===this._consumerPauseInProgress&&this.pausePendingConsumers()}))})),e.on("@resume",(()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,_i.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new wi.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)}))}};Br.Transport=Oi;var Ii={},xi={},Mi={},ji={exports:{}},Li=ji.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(Li).forEach((function(e){Li[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Ai=ji.exports;!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=Ai,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}}))}))}}(Mi);var Ni=Ai,Bi=/%[sdv%]/g,Fi=function(e){var t=1,r=arguments,i=r.length;return e.replace(Bi,(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""}}))},Ui=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 Fi.apply(null,i)},$i=["v","o","s","i","u","e","p","c","b","t","r","z","a"],zi=["i","c","b","a"],Vi=Mi,qi=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||$i,i=t.innerOrder||zi,n=[];return r.forEach((function(t){Ni[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Ui(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Ui(t,r,e))}))}))})),e.media.forEach((function(e){n.push(Ui("m",Ni.m[0],e)),i.forEach((function(t){Ni[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Ui(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Ui(t,r,e))}))}))}))})),n.join("\r\n")+"\r\n"},Gi=xi.write=qi,Wi=xi.parse=Vi.parse;xi.parseParams=Vi.parseParams,xi.parseFmtpConfig=Vi.parseFmtpConfig,xi.parsePayloads=Vi.parsePayloads,xi.parseRemoteCandidates=Vi.parseRemoteCandidates,xi.parseImageAttributes=Vi.parseImageAttributes,xi.parseSimulcastStreamList=Vi.parseSimulcastStreamList;var Hi={},Ki=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ji=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Qi=Wt&&Wt.__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)&&Ki(t,e,r);return Ji(t,e),t};Object.defineProperty(Hi,"__esModule",{value:!0}),Hi.applyCodecParameters=Hi.getCname=Hi.extractDtlsParameters=Hi.extractRtpCapabilities=void 0;const Zi=Qi(xi);Hi.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=Zi.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 r of s.rtcpFb||[]){const i={type:r.type,parameter:r.subtype};if(i.parameter||delete i.parameter,"*"!==r.payload){const e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(i)}else for(const r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||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}},Hi.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,i=e.fingerprint;if(!r||!i){const t=(e.media||[]).find((e=>0!==e.port));t&&(r??(r=t.setup),i??(i=t.fingerprint))}if(!r)throw new Error("no a=setup found at SDP session or media level");if(!i)throw new Error("no a=fingerprint found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:i.type,value:i.hash}]}},Hi.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},Hi.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=Zi.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 Yi={};Object.defineProperty(Yi,"__esModule",{value:!0}),Yi.addLegacySimulcast=Yi.getRtpEncodings=void 0,Yi.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},Yi.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=[],l=[];for(let e=0;e<t;++e)d.push(s+e),a&&l.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<l.length;++t){const r=d[t],s=l[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 Xi={};Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.addNackSuppportForOpus=void 0,Xi.addNackSuppportForOpus=function(e){for(const t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some((e=>"nack"===e.type&&!e.parameter))||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))};var en={};Object.defineProperty(en,"__esModule",{value:!0}),en.HandlerInterface=void 0;const tn=dr;class rn extends tn.EnhancedEventEmitter{constructor(){super()}}en.HandlerInterface=rn;var nn={},sn={},an=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),on=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cn=Wt&&Wt.__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)&&an(t,e,r);return on(t,e),t};Object.defineProperty(sn,"__esModule",{value:!0}),sn.OfferMediaSection=sn.AnswerMediaSection=sn.MediaSection=void 0;const dn=cn(xi),ln=cn(vr);class pn{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}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),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}close(){this.disable(),this._mediaObject.port=0}}sn.MediaSection=pn;sn.AnswerMediaSection=class extends pn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!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:un(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=ln.clone(e.parameters,{});let i=ln.clone(e.rtcpFeedback,[]);if(d){const{opusStereo:t,opusFec:n,opusDtx:s,opusMaxPlaybackRate:a,opusMaxAverageBitrate:c,opusPtime:l,opusNack:p,videoGoogleStartBitrate:u,videoGoogleMaxBitrate:h,videoGoogleMinBitrate:m}=d,f=o.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(f.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==n&&(f.parameters.useinbandfec=n?1:0,r.useinbandfec=n?1:0),void 0!==s&&(f.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==a&&(r.maxplaybackrate=a),void 0!==c&&(r.maxaveragebitrate=c),void 0!==l&&(f.parameters.ptime=l,r.ptime=l),p||(f.rtcpFeedback=f.rtcpFeedback.filter((e=>"nack"!==e.type||e.parameter)),i=i.filter((e=>"nack"!==e.type||e.parameter)));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==u&&(r["x-google-start-bitrate"]=u),void 0!==h&&(r["x-google-max-bitrate"]=h),void 0!==m&&(r["x-google-min-bitrate"]=m)}}const n={payload:e.payloadType,config:""};for(const e of Object.keys(r))n.config&&(n.config+=";"),n.config+=`${e}=${r[e]}`;n.config&&this._mediaObject.fmtp.push(n);for(const t of i)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(l&&"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"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;const t={};for(const r of e)r.rid&&(t[r.rid]=r);const r=this._mediaObject.simulcast.list1,i=dn.parseSimulcastStreamList(r);for(const e of i)for(const r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=i.map((e=>e.map((e=>`${e.paused?"~":""}${e.scid}`)).join(","))).join(";")}};function un(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}sn.OfferMediaSection=class extends pn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:p=!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||"-"} ${l}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:un(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||"-"} ${l}`}),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||"-"} ${l}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":p?(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"}resume(){this._mediaObject.direction="sendonly"}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:un(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 hn=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),mn=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),fn=Wt&&Wt.__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 mn(t,e),t};Object.defineProperty(nn,"__esModule",{value:!0}),nn.RemoteSdp=void 0;const gn=fn(xi),vn=sn,_n=new sr.Logger("RemoteSdp");nn.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){_n.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){_n.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 vn.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 vn.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)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){const t=this._findMediaSection(e);return e===this._firstMid?(_n.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){const r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){const t=new vn.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 vn.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++,gn.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()}}_findMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var yn={};Object.defineProperty(yn,"__esModule",{value:!0}),yn.parse=void 0;const bn=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");yn.parse=function(e){const t=bn.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var wn=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Sn=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Cn=Wt&&Wt.__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)&&wn(t,e,r);return Sn(t,e),t};Object.defineProperty(Ii,"__esModule",{value:!0});var Rn=Ii.Chrome111=void 0;const Tn=Cn(xi),Pn=sr,kn=Cn(vr),Dn=Cn(_r),En=Cn(Hi),On=Cn(Yi),In=Cn(Xi),xn=mr,Mn=en,jn=nn,Ln=yn,An=new Pn.Logger("Chrome111"),Nn={OS:1024,MIS:1024};class Bn extends Mn.HandlerInterface{static createFactory(){return()=>new Bn}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(An.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){An.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=Tn.parse(t.sdp),i=En.extractRtpCapabilities({sdpObject:r});return In.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return An.debug("getNativeSctpCapabilities()"),{numStreams:Nn}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),An.debug("run()"),this._direction=e,this._remoteSdp=new jn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Dn.getSendingRtpParameters("audio",d),video:Dn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Dn.getSendingRemoteRtpParameters("audio",d),video:Dn.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(An.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){this.assertNotClosed(),An.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),An.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});An.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};An.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};An.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();An.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){if(this.assertNotClosed(),this.assertSendDirection(),An.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,Ln.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const i of t)i.rid="r"+e++,i.scalabilityMode=`L1T${r}`}const n=kn.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Dn.reduceCodecs(n.codecs,i);const s=kn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=Dn.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=Tn.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),An.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=o.mid;n.mid=l,d=Tn.parse(this._pc.localDescription.sdp);const p=d.media[a.idx];if(n.rtcp.cname=En.getCname({offerMediaObject:p}),t)if(1===t.length){const e=On.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=On.getRtpEncodings({offerMediaObject:p});this._remoteSdp.send({offerMediaObject:p,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return An.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),An.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();An.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};An.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),An.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();An.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};An.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),An.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();An.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};An.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?An.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):An.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.assertNotClosed(),this.assertSendDirection(),An.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();An.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};An.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),An.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();An.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};An.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};An.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Nn.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Tn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),An.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()};An.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;An.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};An.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Tn.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));En.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:Tn.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),An.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){An.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};An.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();An.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){An.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};An.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();An.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){An.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};An.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();An.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),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.assertNotClosed(),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};An.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()};An.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Tn.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}An.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=Tn.parse(this._pc.localDescription.sdp));const r=En.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new xn.InvalidStateError("method called in a closed handler")}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')}}Rn=Ii.Chrome111=Bn;var Fn={},Un=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),$n=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),zn=Wt&&Wt.__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 $n(t,e),t};Object.defineProperty(Fn,"__esModule",{value:!0}),Fn.Chrome74=void 0;const Vn=zn(xi),qn=sr,Gn=zn(vr),Wn=zn(_r),Hn=zn(Hi),Kn=zn(Yi),Jn=zn(Xi),Qn=mr,Zn=en,Yn=nn,Xn=yn,es=new qn.Logger("Chrome74"),ts={OS:1024,MIS:1024};class rs extends Zn.HandlerInterface{static createFactory(){return()=>new rs}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(es.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){es.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=Vn.parse(t.sdp),i=Hn.extractRtpCapabilities({sdpObject:r});return Jn.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return es.debug("getNativeSctpCapabilities()"),{numStreams:ts}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){es.debug("run()"),this._direction=e,this._remoteSdp=new Yn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Wn.getSendingRtpParameters("audio",d),video:Wn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Wn.getSendingRemoteRtpParameters("audio",d),video:Wn.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(es.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){this.assertNotClosed(),es.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),es.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});es.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};es.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};es.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();es.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),es.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=Gn.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Wn.reduceCodecs(n.codecs,i);const s=Gn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=Wn.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=Vn.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Xn.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(es.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Vn.parse(d.sdp),c=l.media[a.idx],Kn.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Vn.write(l)}),es.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(n.mid=h,l=Vn.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=Hn.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Kn.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=Kn.getRtpEncodings({offerMediaObject:c});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?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return es.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),es.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();es.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};es.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),es.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();es.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};es.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),es.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();es.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};es.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?es.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):es.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.assertNotClosed(),this.assertSendDirection(),es.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();es.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};es.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),es.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();es.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};es.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};es.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ts.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:this._forcedLocalDtlsRole??"client",localSdpObject:t}),es.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()};es.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;es.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};es.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{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Hn.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:Vn.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),es.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){es.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};es.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();es.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){es.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};es.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();es.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){es.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};es.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();es.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),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.assertNotClosed(),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};es.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()};es.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:this._forcedLocalDtlsRole??"client",localSdpObject:e})}es.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=Vn.parse(this._pc.localDescription.sdp));const r=Hn.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Qn.InvalidStateError("method called in a closed handler")}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.Chrome74=rs;var is={},ns=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ss=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),as=Wt&&Wt.__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)&&ns(t,e,r);return ss(t,e),t};Object.defineProperty(is,"__esModule",{value:!0}),is.Chrome70=void 0;const os=as(xi),cs=sr,ds=as(vr),ls=as(_r),ps=as(Hi),us=as(Yi),hs=en,ms=nn,fs=yn,gs=new cs.Logger("Chrome70"),vs={OS:1024,MIS:1024};class _s extends hs.HandlerInterface{static createFactory(){return()=>new _s}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(gs.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){gs.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=os.parse(t.sdp);return ps.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return gs.debug("getNativeSctpCapabilities()"),{numStreams:vs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){gs.debug("run()"),this._direction=e,this._remoteSdp=new ms.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:ls.getSendingRtpParameters("audio",d),video:ls.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ls.getSendingRemoteRtpParameters("audio",d),video:ls.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(gs.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){gs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(gs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});gs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};gs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};gs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();gs.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(),gs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=ds.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=ls.reduceCodecs(n.codecs,i);const s=ds.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=ls.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=os.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(gs.debug("send() | enabling legacy simulcast"),l=os.parse(d.sdp),c=l.media[a.idx],us.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:os.write(l)});let p=!1;const u=(0,fs.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(gs.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=os.parse(d.sdp),c=l.media[a.idx],us.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:os.write(l)}),gs.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){gs.debug("send() | applying given encodings");const e=o.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 o.sender.setParameters(e)}const h=o.mid;if(n.mid=h,l=os.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=ps.getCname({offerMediaObject:c}),n.encodings=us.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(p&&(n.encodings=[n.encodings[0]]),n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return gs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){this.assertSendDirection(),gs.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);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();gs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};gs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?gs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):gs.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(),gs.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();gs.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};gs.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),gs.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();gs.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};gs.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}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,maxRetransmitTime:t,maxRetransmits:r,protocol:n};gs.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%vs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=os.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),gs.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()};gs.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,streamId:s}=t;gs.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};gs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=os.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));ps.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:os.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),gs.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();for(const t of e){gs.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};gs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();gs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};gs.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()};gs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=os.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}gs.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=os.parse(this._pc.localDescription.sdp));const r=ps.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}is.Chrome70=_s;var ys={},bs={};Object.defineProperty(bs,"__esModule",{value:!0}),bs.addLegacySimulcast=bs.getRtpEncodings=void 0,bs.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},bs.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 ws=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ss=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Cs=Wt&&Wt.__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)&&ws(t,e,r);return Ss(t,e),t};Object.defineProperty(ys,"__esModule",{value:!0}),ys.Chrome67=void 0;const Rs=Cs(xi),Ts=sr,Ps=Cs(vr),ks=Cs(_r),Ds=Cs(Hi),Es=Cs(bs),Os=en,Is=nn,xs=new Ts.Logger("Chrome67"),Ms={OS:1024,MIS:1024};class js extends Os.HandlerInterface{static createFactory(){return()=>new js}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}get name(){return"Chrome67"}close(){if(xs.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){xs.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=Rs.parse(t.sdp);return Ds.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return xs.debug("getNativeSctpCapabilities()"),{numStreams:Ms}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){xs.debug("run()"),this._direction=e,this._remoteSdp=new Is.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:ks.getSendingRtpParameters("audio",d),video:ks.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ks.getSendingRemoteRtpParameters("audio",d),video:ks.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(xs.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){xs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(xs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});xs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};xs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};xs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();xs.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(),xs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&xs.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),a=Rs.parse(s.sdp);const o=Ps.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=ks.reduceCodecs(o.codecs);const c=Ps.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=ks.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(xs.debug("send() | enabling simulcast"),a=Rs.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),Es.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Rs.write(a)}),xs.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Rs.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Ds.getCname({offerMediaObject:n}),o.encodings=Es.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};xs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}async stopSending(e){this.assertSendDirection(),xs.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();xs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void xs.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()};xs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?xs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):xs.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(),xs.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(),xs.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}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};xs.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ms.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Rs.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),xs.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()};xs.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=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;xs.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};xs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Rs.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Ds.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Rs.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),xs.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,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}),t.push({localId:s,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){xs.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};xs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();xs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};xs.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};xs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Rs.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}xs.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=Rs.parse(this._pc.localDescription.sdp));const r=Ds.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),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')}}ys.Chrome67=js;var Ls={},As=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ns=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bs=Wt&&Wt.__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)&&As(t,e,r);return Ns(t,e),t};Object.defineProperty(Ls,"__esModule",{value:!0}),Ls.Chrome55=void 0;const Fs=Bs(xi),Us=sr,$s=mr,zs=Bs(vr),Vs=Bs(_r),qs=Bs(Hi),Gs=Bs(bs),Ws=en,Hs=nn,Ks=new Us.Logger("Chrome55"),Js={OS:1024,MIS:1024};class Qs extends Ws.HandlerInterface{static createFactory(){return()=>new Qs}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}get name(){return"Chrome55"}close(){if(Ks.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Ks.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Fs.parse(t.sdp);return qs.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ks.debug("getNativeSctpCapabilities()"),{numStreams:Js}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ks.debug("run()"),this._direction=e,this._remoteSdp=new Hs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Vs.getSendingRtpParameters("audio",d),video:Vs.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Vs.getSendingRemoteRtpParameters("audio",d),video:Vs.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Ks.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){Ks.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Ks.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ks.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ks.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ks.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ks.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(),Ks.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Ks.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),a=Fs.parse(s.sdp);const o=zs.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=Vs.reduceCodecs(o.codecs);const c=zs.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=Vs.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Ks.debug("send() | enabling simulcast"),a=Fs.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),Gs.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Fs.write(a)}),Ks.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Fs.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=qs.getCname({offerMediaObject:n}),o.encodings=Gs.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Ks.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),Ks.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();Ks.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Ks.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()};Ks.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new $s.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new $s.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new $s.UnsupportedError("not supported")}async getSenderStats(e){throw new $s.UnsupportedError("not implemented")}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,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Ks.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Js.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Fs.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ks.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()};Ks.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=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;Ks.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ks.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Fs.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));qs.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Fs.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Ks.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,a=i,o=r.streamId||n.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===o)).getTrackById(a);if(!c)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:s,rtpParameters:n}),t.push({localId:a,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Ks.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ks.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ks.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new $s.UnsupportedError("not implemented")}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,maxRetransmitTime:s,maxRetransmits:a,protocol:r};Ks.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ks.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Fs.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ks.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=Fs.parse(this._pc.localDescription.sdp));const r=qs.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),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')}}Ls.Chrome55=Qs;var Zs={},Ys=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Xs=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ea=Wt&&Wt.__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)&&Ys(t,e,r);return Xs(t,e),t};Object.defineProperty(Zs,"__esModule",{value:!0}),Zs.Firefox60=void 0;const ta=ea(xi),ra=sr,ia=mr,na=ea(vr),sa=ea(_r),aa=ea(Hi),oa=ea(Yi),ca=en,da=nn,la=yn,pa=new ra.Logger("Firefox60"),ua={OS:16,MIS:2048};class ha extends ca.HandlerInterface{static createFactory(){return()=>new ha}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(pa.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){pa.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=ta.parse(a.sdp);return aa.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 pa.debug("getNativeSctpCapabilities()"),{numStreams:ua}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),pa.debug("run()"),this._direction=e,this._remoteSdp=new da.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:sa.getSendingRtpParameters("audio",d),video:sa.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:sa.getSendingRemoteRtpParameters("audio",d),video:sa.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(pa.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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 this.assertNotClosed(),new ia.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),pa.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});pa.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};pa.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};pa.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();pa.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),pa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=na.clone(t,[])).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const n=na.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=sa.reduceCodecs(n.codecs,i);const s=na.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=sa.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=ta.parse(o.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,la.parse)((t||[{}])[0].scalabilityMode);pa.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const l=a.mid;n.mid=l,c=ta.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(n.rtcp.cname=aa.getCname({offerMediaObject:p}),t)if(1===t.length){const e=oa.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t.reverse();else n.encodings=oa.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?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return pa.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),pa.debug("stopSending() [localId:%s]",e),this._closed)return;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();pa.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};pa.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),pa.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();pa.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};pa.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),pa.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();pa.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};pa.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?pa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):pa.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.assertNotClosed(),this.assertSendDirection(),pa.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();pa.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};pa.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),pa.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();pa.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};pa.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};pa.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ua.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ta.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),pa.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()};pa.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;pa.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};pa.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ta.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));aa.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),n={type:"answer",sdp:ta.write(s)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:s}),pa.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){pa.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};pa.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pa.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){pa.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};pa.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pa.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){pa.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};pa.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pa.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}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.assertNotClosed(),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};pa.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()};pa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ta.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}pa.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=ta.parse(this._pc.localDescription.sdp));const r=aa.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ia.InvalidStateError("method called in a closed handler")}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')}}Zs.Firefox60=ha;var ma={},fa=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ga=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),va=Wt&&Wt.__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)&&fa(t,e,r);return ga(t,e),t};Object.defineProperty(ma,"__esModule",{value:!0}),ma.Safari12=void 0;const _a=va(xi),ya=sr,ba=va(vr),wa=va(_r),Sa=va(Hi),Ca=va(Yi),Ra=va(Xi),Ta=mr,Pa=en,ka=nn,Da=yn,Ea=new ya.Logger("Safari12"),Oa={OS:1024,MIS:1024};class Ia extends Pa.HandlerInterface{static createFactory(){return()=>new Ia}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(Ea.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Ea.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=_a.parse(t.sdp),i=Sa.extractRtpCapabilities({sdpObject:r});return Ra.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ea.debug("getNativeSctpCapabilities()"),{numStreams:Oa}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Ea.debug("run()"),this._direction=e,this._remoteSdp=new ka.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:wa.getSendingRtpParameters("audio",d),video:wa.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:wa.getSendingRemoteRtpParameters("audio",d),video:wa.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Ea.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){this.assertNotClosed(),Ea.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Ea.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ea.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ea.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ea.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ea.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Ea.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=ba.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=wa.reduceCodecs(n.codecs,i);const s=ba.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=wa.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=_a.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const p=(0,Da.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(Ea.debug("send() | enabling legacy simulcast"),l=_a.parse(d.sdp),c=l.media[a.idx],Ca.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:_a.write(l)}),Ea.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const u=o.mid;if(n.mid=u,l=_a.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=Sa.getCname({offerMediaObject:c}),n.encodings=Ca.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Ea.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,o),{localId:u,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Ea.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);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Ea.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ea.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Ea.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Ea.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ea.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Ea.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Ea.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ea.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Ea.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ea.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.assertNotClosed(),this.assertSendDirection(),Ea.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Ea.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Ea.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Ea.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Ea.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Ea.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Ea.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Oa.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=_a.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ea.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()};Ea.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Ea.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Ea.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=_a.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Sa.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:_a.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Ea.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Ea.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ea.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ea.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Ea.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ea.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ea.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Ea.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ea.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ea.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),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.assertNotClosed(),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};Ea.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()};Ea.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=_a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ea.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=_a.parse(this._pc.localDescription.sdp));const r=Sa.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Ta.InvalidStateError("method called in a closed handler")}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')}}ma.Safari12=Ia;var xa={},Ma=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ja=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),La=Wt&&Wt.__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)&&Ma(t,e,r);return ja(t,e),t};Object.defineProperty(xa,"__esModule",{value:!0}),xa.Safari11=void 0;const Aa=La(xi),Na=sr,Ba=La(vr),Fa=La(_r),Ua=La(Hi),$a=La(bs),za=en,Va=nn,qa=new Na.Logger("Safari11"),Ga={OS:1024,MIS:1024};class Wa extends za.HandlerInterface{static createFactory(){return()=>new Wa}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}get name(){return"Safari11"}close(){if(qa.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){qa.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=Aa.parse(t.sdp);return Ua.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return qa.debug("getNativeSctpCapabilities()"),{numStreams:Ga}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){qa.debug("run()"),this._direction=e,this._remoteSdp=new Va.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Fa.getSendingRtpParameters("audio",d),video:Fa.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Fa.getSendingRemoteRtpParameters("audio",d),video:Fa.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(qa.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){qa.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(qa.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});qa.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};qa.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();qa.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(),qa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&qa.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),a=Aa.parse(s.sdp);const o=Ba.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=Fa.reduceCodecs(o.codecs);const c=Ba.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=Fa.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(qa.debug("send() | enabling simulcast"),a=Aa.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),$a.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Aa.write(a)}),qa.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Aa.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Ua.getCname({offerMediaObject:n}),o.encodings=$a.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};qa.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}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();qa.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void qa.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()};qa.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?qa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):qa.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(),qa.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(),qa.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}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};qa.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ga.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Aa.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),qa.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()};qa.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=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;qa.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Aa.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Ua.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Aa.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),qa.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,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}),t.push({localId:a,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){qa.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();qa.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};qa.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Aa.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}qa.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=Aa.parse(this._pc.localDescription.sdp));const r=Ua.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),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')}}xa.Safari11=Wa;var Ha={},Ka={},Ja=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Qa=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Za=Wt&&Wt.__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)&&Ja(t,e,r);return Qa(t,e),t};Object.defineProperty(Ka,"__esModule",{value:!0}),Ka.mangleRtpParameters=Ka.getCapabilities=void 0;const Ya=Za(vr);Ka.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=Ya.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},Ka.mangleRtpParameters=function(e){const t=Ya.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 Xa=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),eo=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),to=Wt&&Wt.__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)&&Xa(t,e,r);return eo(t,e),t};Object.defineProperty(Ha,"__esModule",{value:!0}),Ha.Edge11=void 0;const ro=sr,io=mr,no=to(vr),so=to(_r),ao=to(Ka),oo=en,co=new ro.Logger("Edge11");class lo extends oo.HandlerInterface{static createFactory(){return()=>new lo}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){co.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){}this.emit("@close")}async getNativeRtpCapabilities(){return co.debug("getNativeRtpCapabilities()"),ao.getCapabilities()}async getNativeSctpCapabilities(){return co.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}){co.debug("run()"),this._sendingRtpParametersByKind={audio:so.getSendingRtpParameters("audio",d),video:so.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${no.generateRandomNumber()}`,this.setIceGatherer({iceServers:s,iceTransportPolicy:a}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new io.UnsupportedError("not supported")}async restartIce(e){if(co.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){co.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}){co.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),co.debug("send() | calling new RTCRtpSender()");const n=new RTCRtpSender(e,this._dtlsTransport),s=no.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=so.reduceCodecs(s.codecs,i);const a=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=no.generateRandomNumber(),a&&(e.rtx={ssrc:no.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=ao.mangleRtpParameters(s);co.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){co.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{co.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw co.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?co.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):co.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){co.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){co.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 io.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;co.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;co.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,i);s.addEventListener("error",(e=>{co.error('rtpReceiver "error" event [event:%o]',e)}));const a=ao.mangleRtpParameters(n);co.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){for(const t of e){co.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{co.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){co.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 io.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{co.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){co.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=>{co.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{co.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{co.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{co.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){co.debug("setupTransport()");const t=this._dtlsTransport.getLocalParameters();t.role=e,await new Promise(((e,r)=>{this.safeEmit("@connect",{dtlsParameters:t},e,r)})),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}}Ha.Edge11=lo;var po={},uo=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ho=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),mo=Wt&&Wt.__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)&&uo(t,e,r);return ho(t,e),t};Object.defineProperty(po,"__esModule",{value:!0}),po.ReactNativeUnifiedPlan=void 0;const fo=mo(xi),go=sr,vo=mo(vr),_o=mo(_r),yo=mo(Hi),bo=mo(Yi),wo=mo(Xi),So=mr,Co=en,Ro=nn,To=yn,Po=new go.Logger("ReactNativeUnifiedPlan"),ko={OS:1024,MIS:1024};class Do extends Co.HandlerInterface{static createFactory(){return()=>new Do}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if(Po.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Po.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=fo.parse(t.sdp),i=yo.extractRtpCapabilities({sdpObject:r});return wo.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Po.debug("getNativeSctpCapabilities()"),{numStreams:ko}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Po.debug("run()"),this._direction=e,this._remoteSdp=new Ro.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:_o.getSendingRtpParameters("audio",d),video:_o.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:_o.getSendingRemoteRtpParameters("audio",d),video:_o.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Po.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){this.assertNotClosed(),Po.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Po.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Po.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Po.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Po.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Po.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Po.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=vo.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=_o.reduceCodecs(n.codecs,i);const s=vo.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=_o.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=fo.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,To.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Po.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=fo.parse(d.sdp),c=l.media[a.idx],bo.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:fo.write(l)}),Po.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=o.mid??void 0;if(h||Po.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=h,l=fo.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=yo.getCname({offerMediaObject:c}),t)if(1===t.length){let e=bo.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=bo.getRtpEncodings({offerMediaObject:c});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?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Po.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),h||(h=o.mid,n.mid=h),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Po.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);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Po.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Po.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Po.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Po.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Po.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Po.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Po.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Po.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Po.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Po.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.assertNotClosed(),this.assertSendDirection(),Po.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Po.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Po.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Po.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),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Po.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Po.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),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.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Po.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ko.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=fo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Po.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()};Po.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.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Po.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Po.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=fo.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));yo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:fo.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Po.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){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Po.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Po.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Po.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Po.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Po.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Po.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Po.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Po.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Po.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),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.assertNotClosed(),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};Po.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()};Po.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=fo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Po.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=fo.parse(this._pc.localDescription.sdp));const r=yo.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new So.InvalidStateError("method called in a closed handler")}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')}}po.ReactNativeUnifiedPlan=Do;var Eo={},Oo=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Io=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xo=Wt&&Wt.__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)&&Oo(t,e,r);return Io(t,e),t};Object.defineProperty(Eo,"__esModule",{value:!0}),Eo.ReactNative=void 0;const Mo=xo(xi),jo=sr,Lo=mr,Ao=xo(vr),No=xo(_r),Bo=xo(Hi),Fo=xo(bs),Uo=en,$o=nn,zo=new jo.Logger("ReactNative"),Vo={OS:1024,MIS:1024};class qo extends Uo.HandlerInterface{static createFactory(){return()=>new qo}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}get name(){return"ReactNative"}close(){if(zo.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){zo.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=Mo.parse(t.sdp);return Bo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return zo.debug("getNativeSctpCapabilities()"),{numStreams:Vo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){zo.debug("run()"),this._direction=e,this._remoteSdp=new $o.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:No.getSendingRtpParameters("audio",d),video:No.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:No.getSendingRemoteRtpParameters("audio",d),video:No.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("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(zo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),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){zo.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(zo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});zo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};zo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};zo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();zo.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(),zo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&zo.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),a=Mo.parse(s.sdp);const o=Ao.clone(this._sendingRtpParametersByKind[e.kind],{});o.codecs=No.reduceCodecs(o.codecs);const c=Ao.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(c.codecs=No.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(zo.debug("send() | enabling simulcast"),a=Mo.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),Fo.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Mo.write(a)}),zo.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Mo.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Bo.getCname({offerMediaObject:n}),o.encodings=Fo.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&("video/vp8"===o.codecs[0].mimeType.toLowerCase()||"video/h264"===o.codecs[0].mimeType.toLowerCase()))for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};zo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),zo.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();zo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void zo.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()};zo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new Lo.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Lo.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Lo.UnsupportedError("not implemented")}async getSenderStats(e){throw new Lo.UnsupportedError("not implemented")}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,maxRetransmitTime:t,maxRetransmits:r,protocol:n};zo.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Vo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Mo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),zo.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()};zo.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;zo.debug("receive() [trackId:%s, kind:%s]",e,i);const s=i;let a=t.streamId||n.rtcp.cname;zo.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Ao.generateRandomNumber()}`,r.set(e,a),this._remoteSdp.receive({mid:s,kind:i,offerRtpParameters:n,streamId:a,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};zo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Mo.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));Bo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:Mo.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),zo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{kind:e,trackId:n,rtpParameters:s}=i,a=n,o=e,c=r.get(n),d=this._pc.getRemoteStreams().find((e=>e.id===c)).getTrackById(a);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:o,rtpParameters:s}),t.push({localId:a,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){zo.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};zo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();zo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Lo.UnsupportedError("not implemented")}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,maxRetransmitTime:s,maxRetransmits:a,protocol:r};zo.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};zo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Mo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}zo.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=Mo.parse(this._pc.localDescription.sdp));const r=Bo.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),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')}}Eo.ReactNative=qo;var Go=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Wo=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ho=Wt&&Wt.__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)&&Go(t,e,r);return Wo(t,e),t};Object.defineProperty(rr,"__esModule",{value:!0}),rr.Device=rr.detectDevice=void 0;const Ko=nr,Jo=sr,Qo=dr,Zo=mr,Yo=Ho(vr),Xo=Ho(_r),ec=Br,tc=Ii,rc=Fn,ic=is,nc=ys,sc=Ls,ac=Zs,oc=ma,cc=xa,dc=Ha,lc=po,pc=Eo,uc=new Jo.Logger("Device");function hc(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return uc.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void uc.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(uc.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(uc.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)uc.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new Ko.UAParser(e);uc.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),i=r.name?.toLowerCase()??"",n=parseInt(r.major??"0"),s=t.getEngine(),a=s.name?.toLowerCase()??"",o=t.getOS(),c=o.name?.toLowerCase()??"",d=parseFloat(o.version??"0"),l="ios"===c,p=["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(i),u=["firefox","mobile firefox","mobile focus"].includes(i),h=["safari","mobile safari"].includes(i),m=["edge"].includes(i);if((p||m)&&!l&&n>=111)return"Chrome111";if(p&&!l&&n>=74||m&&!l&&n>=88)return"Chrome74";if(p&&!l&&n>=70)return"Chrome70";if(p&&!l&&n>=67)return"Chrome67";if(p&&!l&&n>=55)return"Chrome55";if(u&&!l&&n>=60)return"Firefox60";if(u&&l&&d>=14.3)return"Safari12";if(h&&n>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(h&&n>=11)return"Safari11";if(m&&!l&&n>=11&&n<=18)return"Edge11";if("webkit"===a&&l&&d>=14.3&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if("blink"===a){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome111"}uc.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,n)}}rr.detectDevice=hc;rr.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new Qo.EnhancedEventEmitter,uc.debug("constructor()"),r){if(uc.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)uc.debug("constructor() | handler given: %s",e);else{if(!(e=hc()))throw new Zo.UnsupportedError("device not supported");uc.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=tc.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=rc.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=ic.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=nc.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=sc.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=ac.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=oc.Safari12.createFactory();break;case"Safari11":this._handlerFactory=cc.Safari11.createFactory();break;case"Edge11":this._handlerFactory=dc.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=lc.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=pc.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 Zo.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new Zo.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;uc.debug("load() [routerRtpCapabilities:%o]",e),e=Yo.clone(e,void 0);try{if(this._loaded)throw new Zo.InvalidStateError("already loaded");Xo.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();uc.debug("load() | got native RTP capabilities:%o",r),Xo.validateRtpCapabilities(r),this._extendedRtpCapabilities=Xo.getExtendedRtpCapabilities(r,e),uc.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=Xo.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=Xo.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=Xo.getRecvRtpCapabilities(this._extendedRtpCapabilities),Xo.validateRtpCapabilities(this._recvRtpCapabilities),uc.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),uc.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),Xo.validateSctpCapabilities(this._sctpCapabilities),uc.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new Zo.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 uc.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 uc.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:l}){if(!this._loaded)throw new Zo.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(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const p=new ec.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",p),p}};var mc={},fc={};Object.defineProperty(fc,"__esModule",{value:!0});var gc={};Object.defineProperty(gc,"__esModule",{value:!0}),function(e){var t=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Wt&&Wt.__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(rr,e),r(Br,e),r(Kr,e),r(Xr,e),r(ni,e),r(di,e),r(fc,e),r(gc,e),r(en,e),r(mr,e)}(mc),function(e){var t=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Wt&&Wt.__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=Wt&&Wt.__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(tr);e.debug=s.default;const a=rr;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(mc);e.types=o,e.version="3.6.100";var c=yn;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(Zt);let vc=!0,_c=!0;function yc(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function bc(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,n=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return n.apply(this,arguments);const s=e=>{const t=r(e);t&&(i.handleEvent?i.handleEvent(t):i(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(i,s),n.apply(this,[e,s])};const s=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.apply(this,arguments);const i=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,i])},Object.defineProperty(i,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function wc(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(vc=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function Sc(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(_c=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Cc(){if("object"==typeof window){if(vc)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Rc(e,t){_c&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Tc(e){return"[object Object]"===Object.prototype.toString.call(e)}function Pc(e){return Tc(e)?Object.keys(e).reduce((function(t,r){const i=Tc(e[r]),n=i?Pc(e[r]):e[r],s=i&&!Object.keys(n).length;return void 0===n||s?t:Object.assign(t,{[r]:n})}),{}):e}function kc(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?kc(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{kc(e,e.get(t),r)}))})))}function Dc(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&kc(e,r,n)}))})),n}const Ec=Cc;function Oc(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const i="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==i.exact&&"number"==typeof i.exact&&(i.min=i.max=i.exact);const n=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==i.ideal){t.optional=t.optional||[];let e={};"number"==typeof i.ideal?(e[n("min",r)]=i.ideal,t.optional.push(e),e={},e[n("max",r)]=i.ideal,t.optional.push(e)):(e[n("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[n("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[n(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},n=function(e,n){if(t.version>=61)return n(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const a=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||a)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let a=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!a&&r.length&&t.includes("back")&&(a=r[r.length-1]),a&&(e.video.deviceId=s.exact?{exact:a.deviceId}:{ideal:a.deviceId}),e.video=i(e.video),Ec("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return Ec("chrome: "+JSON.stringify(e)),n(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,i){n(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(s(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return n(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function Ic(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function xc(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const n=new Event("track");n.track=r.track,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)})),t.stream.getTracks().forEach((r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const n=new Event("track");n.track=r,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else bc(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function Mc(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){let n=r.apply(this,arguments);return n||(n=t(this,e),this._senders.push(n)),n};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){i.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function jc(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,i]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const n=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(s(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(n(t)))},r])})).then(r,i)}}function Lc(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>Dc(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),bc(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>Dc(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,i;return this.getSenders().forEach((r=>{r.track===e&&(t?i=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?i=!0:r=t),t.track===e))),i||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function Ac(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const i=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(i)&&this._shimmedLocalStreams[r.id].push(i):this._shimmedLocalStreams[r.id]=[r,i],i};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const i=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(i)};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],i.apply(this,arguments)};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),n.apply(this,arguments)}}function Nc(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return Ac(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}i.apply(this,[t])};const n=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},n.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const n=this._streams[r.id];if(n)n.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const i=new e.MediaStream([t]);this._streams[r.id]=i,this._reverseStreams[i.id]=r,this.addStream(i)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const o=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=o.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Bc(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}))}function Fc(e,t){bc(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var Uc=Object.freeze({__proto__:null,fixNegotiationNeeded:Fc,shimAddTrackRemoveTrack:Nc,shimAddTrackRemoveTrackWithNative:Ac,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const i=r.video&&r.video.width,n=r.video&&r.video.height,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},i&&(r.video.mandatory.maxWidth=i),n&&(r.video.mandatory.maxHeight=n),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:Mc,shimGetStats:jc,shimGetUserMedia:Oc,shimMediaStream:Ic,shimOnTrack:xc,shimPeerConnection:Bc,shimSenderReceiverGetStats:Lc});function $c(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){Rc("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,i)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},i&&i.prototype.getSettings){const t=i.prototype.getSettings;i.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(i&&i.prototype.applyConstraints){const t=i.prototype.applyConstraints;i.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function zc(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Vc(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,n,s]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!n)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,i)=>{e.set(i,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(n,s)}}function qc(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Gc(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),bc(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Wc(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Rc("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Hc(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Kc(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const r=e.length>0;r&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const i=t.apply(this,arguments);if(r){const{sender:t}=i,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function Jc(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function Qc(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function Zc(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var Yc=Object.freeze({__proto__:null,shimAddTransceiver:Kc,shimCreateAnswer:Zc,shimCreateOffer:Qc,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})},shimGetParameters:Jc,shimGetUserMedia:$c,shimOnTrack:zc,shimPeerConnection:Vc,shimRTCDataChannel:Hc,shimReceiverGetStats:Gc,shimRemoveStream:Wc,shimSenderGetStats:qc});function Xc(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function ed(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function td(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,s=t.setRemoteDescription,a=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],n=r.apply(this,[i]);return t?(n.then(e,t),Promise.resolve()):n},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],n=i.apply(this,[r]);return t?(n.then(e,t),Promise.resolve()):n};let o=function(e,t,r){const i=n.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=o,o=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=o,o=function(e,t,r){const i=a.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=o}function rd(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(id(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function id(e){return e&&void 0!==e.video?Object.assign({},e,{video:Pc(e.video)}):e}function nd(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let i=e.iceServers[r];void 0===i.urls&&i.url?(Rc("RTCIceServer.url","RTCIceServer.urls"),i=JSON.parse(JSON.stringify(i)),i.urls=i.url,delete i.url,t.push(i)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function sd(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function ad(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function od(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var cd=Object.freeze({__proto__:null,shimAudioContext:od,shimCallbacksAPI:td,shimConstraints:id,shimCreateOfferLegacy:ad,shimGetUserMedia:rd,shimLocalStreamsAPI:Xc,shimRTCIceServerUrls:nd,shimRemoteStreamsAPI:ed,shimTrackEventTransceiver:sd}),dd={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const i=e.type;return t.push("typ"),t.push(i),"host"!==i&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let r;const i=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<i.length;e++)r=i[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const i=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)})),t+="a=fmtp:"+r+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substring(7,t),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substring(t+1,i),r.value=e.substring(i+1)):r.attribute=e.substring(t+1),r},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){const i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substring(12),password:n.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" ");r.profile=i[2];for(let n=3;n<i.length;n++){const s=i[n],a=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(a){const i=t.parseRtpMap(a),n=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(i.parameters=n.length?t.parseFmtp(n[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(i.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))}));const n=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{n.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),r},t.writeRtpDescription=function(e,r){let i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" "+(r.profile||"UDP/TLS/RTP/SAVPF")+" ",i+=r.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((e=>{i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));let n=0;return r.codecs.forEach((e=>{e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){const r=[],i=t.parseRtpParameters(e),n=-1!==i.fecMechanisms.indexOf("RED"),s=-1!==i.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),o=a.length>0&&a[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===o&&(c=d[0][1]),i.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:o,codecPayloadType:parseInt(e.parameters.apt,10)};o&&c&&(t.rtx={ssrc:c}),r.push(t),n&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:o,mechanism:s?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&o&&r.push({ssrc:o});let l=t.matchPrefix(e,"b=");return l.length&&(l=0===l[0].indexOf("b=TIAS:")?parseInt(l[0].substring(7),10):0===l[0].indexOf("b=AS:")?1e3*parseInt(l[0].substring(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=l}))),r},t.parseRtcpParameters=function(e){const r={},i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);const n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;const s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let r;const i=t.matchPrefix(e,"a=msid:");if(1===i.length)return r=i[0].substring(7).split(" "),{stream:r[0],track:r[1]};const n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return n.length>0?(r=n[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),i=t.matchPrefix(e,"a=max-message-size:");let n;i.length>0&&(n=parseInt(i[0].substring(19),10)),isNaN(n)&&(n=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:r.fmt,maxMessageSize:n};const a=t.matchPrefix(e,"a=sctpmap:");if(a.length>0){const e=a[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:n}}},t.writeSctpDescription=function(e,t){let r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,r,i){let n;const s=void 0!==r?r:2;n=e||t.generateSessionId();return"v=0\r\no="+(i||"thisisadapterortc")+" "+n+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const i=t.splitLines(e);for(let e=0;e<i.length;e++)switch(i[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[e].substring(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substring(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(dd);var ld=dd.exports,pd=Ht(ld),ud=i({__proto__:null,default:pd},[ld]);function hd(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const r=new t(e),i=pd.parseCandidate(e.candidate);for(const e in i)e in r||Object.defineProperty(r,e,{value:i[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,bc(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function md(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||bc(e,"icecandidate",(e=>{if(e.candidate){const t=pd.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function fd(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const t=pd.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=pd.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r}(arguments[0]),r=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r}(e),i=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=pd.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let n;n=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>n}),this._sctp=s}return r.apply(this,arguments)}}function gd(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const i=arguments[0],n=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&n>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},bc(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function vd(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function _d(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function yd(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function bd(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.setLocalDescription;r&&0!==r.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return r.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return r.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>r.apply(this,[e])))})}var wd=Object.freeze({__proto__:null,removeExtmapAllowMixed:_d,shimAddIceCandidateNullOrEmpty:yd,shimConnectionState:vd,shimMaxMessageSize:fd,shimParameterlessSetLocalDescription:bd,shimRTCIceCandidate:hd,shimRTCIceCandidateRelayProtocol:md,shimSendThrowTypeError:gd});const Sd=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=Cc,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=yc(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=yc(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=yc(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:wd,extractVersion:yc,disableLog:wc,disableWarnings:Sc,sdp:ud};switch(i.browser){case"chrome":if(!Uc||!Bc||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),n;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),n;r("adapter.js shimming chrome."),n.browserShim=Uc,yd(e,i),bd(e),Oc(e,i),Ic(e),Bc(e,i),xc(e),Nc(e,i),Mc(e),jc(e),Lc(e),Fc(e,i),hd(e),md(e),vd(e),fd(e,i),gd(e),_d(e,i);break;case"firefox":if(!Yc||!Vc||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=Yc,yd(e,i),bd(e),$c(e,i),Vc(e,i),zc(e),Wc(e),qc(e),Gc(e),Hc(e),Kc(e),Jc(e),Qc(e),Zc(e),hd(e),vd(e),fd(e,i),gd(e);break;case"safari":if(!cd||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=cd,yd(e,i),bd(e),nd(e),ad(e),td(e),Xc(e),ed(e),sd(e),rd(e),od(e),hd(e),md(e),fd(e,i),gd(e),_d(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});function Cd(e){return{id:e.id,tracks:e.getTracks().map((function(e){return{id:e.id,kind:e.kind,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}}))}}var Rd=function(e,t,r){var i=0,n=!!window.mozRTCPeerConnection,s=!!window.RTCIceGatherer,a={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!s)){var o=window[r+"RTCPeerConnection"],c=function(r,c){var d=new o(r,c),l="PC_"+i++;d.__rtcStatsId=l,r||(r={nullConfig:!0}),((r=JSON.parse(JSON.stringify(r)))&&r.iceServers||[]).forEach((function(e){delete e.credential})),r.browserType=n?"moz":s?"edge":"webkit",e("create",l,r),c&&e("constraints",l,c),d.addEventListener("icecandidate",(function(t){e("onicecandidate",l,t.candidate)})),d.addEventListener("addstream",(function(t){e("onaddstream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("track",(function(t){e("ontrack",l,t.track.kind+":"+t.track.id+" "+t.streams.map((function(e){return"stream:"+e.id})))})),d.addEventListener("removestream",(function(t){e("onremovestream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("signalingstatechange",(function(){e("onsignalingstatechange",l,d.signalingState)})),d.addEventListener("iceconnectionstatechange",(function(){e("oniceconnectionstatechange",l,d.iceConnectionState)})),d.addEventListener("icegatheringstatechange",(function(){e("onicegatheringstatechange",l,d.iceGatheringState)})),d.addEventListener("connectionstatechange",(function(){e("onconnectionstatechange",l,d.connectionState)})),d.addEventListener("negotiationneeded",(function(){e("onnegotiationneeded",l,void 0)})),d.addEventListener("datachannel",(function(t){e("ondatachannel",l,[t.channel.id,t.channel.label])}));var p=function(){d.getStats(null).then((function(t){var r=function(e){if(!e.entries)return e;var t={};return e.forEach((function(e,r){t[r]=e})),t}(t),i=JSON.parse(JSON.stringify(r));e("getstats",l,function(e,t){t=JSON.parse(JSON.stringify(t)),Object.keys(t).forEach((function(r){var i=t[r];delete i.id,e[r]&&Object.keys(i).forEach((function(n){i[n]===e[r][n]&&delete t[r][n],(0===Object.keys(i).length||1===Object.keys(i).length&&i.timestamp)&&delete t[r]}))}));var r=-1/0;return Object.keys(t).forEach((function(e){var i=t[e];i.timestamp>r&&(r=i.timestamp)})),Object.keys(t).forEach((function(e){var i=t[e];i.timestamp===r&&(i.timestamp=0)})),t.timestamp=r,t}(a[l]||{},r)),a[l]=i}))};if(!s&&t)var u=window.setInterval((function(){"closed"!==d.signalingState?p():window.clearInterval(u)}),t);return s||d.addEventListener("connectionstatechange",(function(){"connected"!==d.connectionState&&"failed"!==d.connectionState||p()})),d};["createDataChannel","close"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){return e(t,this.__rtcStatsId,arguments),r.apply(this,arguments)})})),["addStream","removeStream"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],n=i.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,i.id+" "+n),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],n=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,i.kind+":"+i.id+" "+(n.map((function(e){return"stream:"+e.id})).join(";")||"-")),r.apply(this,arguments)})})),["removeTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0].track;return e(t,this.__rtcStatsId,i?i.kind+":"+i.id:"null"),r.apply(this,arguments)})})),["createOffer","createAnswer"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i,n=this.__rtcStatsId,s=arguments;return 1===arguments.length&&"object"==typeof arguments[0]?i=arguments[0]:3===arguments.length&&"object"==typeof arguments[2]&&(i=arguments[2]),e(t,this.__rtcStatsId,i),r.apply(this,i?[i]:void 0).then((function(r){if(e(t+"OnSuccess",n,r),!(s.length>0&&"function"==typeof s[0]))return r;s[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",n,r.toString()),!(s.length>1&&"function"==typeof s[1]))throw r;s[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=this.__rtcStatsId,n=arguments;return e(t,this.__rtcStatsId,n[0]),r.apply(this,[n[0]]).then((function(){e(t+"OnSuccess",i,void 0),n.length>=2&&"function"==typeof n[1]&&n[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(n.length>=3&&"function"==typeof n[2]))throw r;n[2].apply(null,[r])}))})})),o.generateCertificate&&Object.defineProperty(c,"generateCertificate",{get:function(){return arguments.length?o.generateCertificate.apply(null,arguments):o.generateCertificate}}),window[r+"RTCPeerConnection"]=c,window[r+"RTCPeerConnection"].prototype=o.prototype}})),r.forEach((function(t){var r=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[r]){var i=navigator[r].bind(navigator);navigator[r]=function(){e("getUserMedia",null,arguments[0]);var t=arguments[1],r=arguments[2];i(arguments[0],(function(r){e("getUserMediaOnSuccess",null,Cd(r)),t&&t(r)}),(function(t){e("getUserMediaOnFailure",null,t.name),r&&r(t)}))}.bind(navigator)}})),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var o=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(){return e("navigator.mediaDevices.getUserMedia",null,arguments[0]),o.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getUserMediaOnSuccess",null,Cd(t)),t}),(function(t){return e("navigator.mediaDevices.getUserMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var c=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=function(){return e("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),c.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getDisplayMediaOnSuccess",null,Cd(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){a={}}}},Td=Ht(Rd);let Pd;const kd=new Uint8Array(16);function Dd(){if(!Pd&&(Pd="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Pd))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Pd(kd)}const Ed=[];for(let ob=0;ob<256;++ob)Ed.push((ob+256).toString(16).slice(1));var Od={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Id(e,t,r){if(Od.randomUUID&&!t&&!e)return Od.randomUUID();const i=(e=e||{}).random||(e.rng||Dd)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return Ed[e[t+0]]+Ed[e[t+1]]+Ed[e[t+2]]+Ed[e[t+3]]+"-"+Ed[e[t+4]]+Ed[e[t+5]]+"-"+Ed[e[t+6]]+Ed[e[t+7]]+"-"+Ed[e[t+8]]+Ed[e[t+9]]+"-"+Ed[e[t+10]]+Ed[e[t+11]]+Ed[e[t+12]]+Ed[e[t+13]]+Ed[e[t+14]]+Ed[e[t+15]]}(i)}var xd={},Md={},jd={};Object.defineProperty(jd,"__esModule",{value:!0}),jd.isCorrect=jd.isInSubnet=void 0,jd.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},jd.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var Ld={};Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.RE_SUBNET_STRING=Ld.RE_ADDRESS=Ld.GROUPS=Ld.BITS=void 0,Ld.BITS=32,Ld.GROUPS=4,Ld.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,Ld.RE_SUBNET_STRING=/\/\d{1,2}$/;var Ad={};Object.defineProperty(Ad,"__esModule",{value:!0}),Ad.AddressError=void 0;class Nd extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}Ad.AddressError=Nd;var Bd,Fd={exports:{}};Bd=Fd,function(){var e;function t(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function r(){return new t(null)}var i="undefined"!=typeof navigator;i&&"Microsoft Internet Explorer"==navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(var a=32767&t,o=t>>15;--s>=0;){var c=32767&this[e],d=this[e++]>>15,l=o*c+d*a;n=((c=a*c+((32767&l)<<15)+r[i]+(1073741823&n))>>>30)+(l>>>15)+o*d+(n>>>30),r[i++]=1073741823&c}return n},e=30):i&&"Netscape"!=navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(;--s>=0;){var a=t*this[e++]+r[i]+n;n=Math.floor(a/67108864),r[i++]=67108863&a}return n},e=26):(t.prototype.am=function(e,t,r,i,n,s){for(var a=16383&t,o=t>>14;--s>=0;){var c=16383&this[e],d=this[e++]>>14,l=o*c+d*a;n=((c=a*c+((16383&l)<<14)+r[i]+n)>>28)+(l>>14)+o*d,r[i++]=268435455&c}return n},e=28),t.prototype.DB=e,t.prototype.DM=(1<<e)-1,t.prototype.DV=1<<e,t.prototype.FV=Math.pow(2,52),t.prototype.F1=52-e,t.prototype.F2=2*e-52;var n,s,a="0123456789abcdefghijklmnopqrstuvwxyz",o=new Array;for(n="0".charCodeAt(0),s=0;s<=9;++s)o[n++]=s;for(n="a".charCodeAt(0),s=10;s<36;++s)o[n++]=s;for(n="A".charCodeAt(0),s=10;s<36;++s)o[n++]=s;function c(e){return a.charAt(e)}function d(e,t){var r=o[e.charCodeAt(t)];return null==r?-1:r}function l(e){var t=r();return t.fromInt(e),t}function p(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function u(e){this.m=e}function h(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function m(e,t){return e&t}function f(e,t){return e|t}function g(e,t){return e^t}function v(e,t){return e&~t}function _(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function y(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function b(){}function w(e){return e}function S(e){this.r2=r(),this.q3=r(),t.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}u.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},u.prototype.revert=function(e){return e},u.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},u.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},u.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},h.prototype.convert=function(e){var i=r();return e.abs().dlShiftTo(this.m.t,i),i.divRemTo(this.m,null,i),e.s<0&&i.compareTo(t.ZERO)>0&&this.m.subTo(i,i),i},h.prototype.revert=function(e){var t=r();return e.copyTo(t),this.reduce(t),t},h.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],i=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,i,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},h.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},h.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},t.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},t.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},t.prototype.fromString=function(e,r){var i;if(16==r)i=4;else if(8==r)i=3;else if(256==r)i=8;else if(2==r)i=1;else if(32==r)i=5;else{if(4!=r)return void this.fromRadix(e,r);i=2}this.t=0,this.s=0;for(var n=e.length,s=!1,a=0;--n>=0;){var o=8==i?255&e[n]:d(e,n);o<0?"-"==e.charAt(n)&&(s=!0):(s=!1,0==a?this[this.t++]=o:a+i>this.DB?(this[this.t-1]|=(o&(1<<this.DB-a)-1)<<a,this[this.t++]=o>>this.DB-a):this[this.t-1]|=o<<a,(a+=i)>=this.DB&&(a-=this.DB))}8==i&&0!=(128&e[0])&&(this.s=-1,a>0&&(this[this.t-1]|=(1<<this.DB-a)-1<<a)),this.clamp(),s&&t.ZERO.subTo(this,this)},t.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},t.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},t.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},t.prototype.lShiftTo=function(e,t){var r,i=e%this.DB,n=this.DB-i,s=(1<<n)-1,a=Math.floor(e/this.DB),o=this.s<<i&this.DM;for(r=this.t-1;r>=0;--r)t[r+a+1]=this[r]>>n|o,o=(this[r]&s)<<i;for(r=a-1;r>=0;--r)t[r]=0;t[a]=o,t.t=this.t+a+1,t.s=this.s,t.clamp()},t.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var i=e%this.DB,n=this.DB-i,s=(1<<i)-1;t[0]=this[r]>>i;for(var a=r+1;a<this.t;++a)t[a-r-1]|=(this[a]&s)<<n,t[a-r]=this[a]>>i;i>0&&(t[this.t-r-1]|=(this.s&s)<<n),t.t=this.t-r,t.clamp()}},t.prototype.subTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]-e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i-=e[r],t[r++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=i<0?-1:0,i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i),t.t=r,t.clamp()},t.prototype.multiplyTo=function(e,r){var i=this.abs(),n=e.abs(),s=i.t;for(r.t=s+n.t;--s>=0;)r[s]=0;for(s=0;s<n.t;++s)r[s+i.t]=i.am(0,n[s],r,s,0,i.t);r.s=0,r.clamp(),this.s!=e.s&&t.ZERO.subTo(r,r)},t.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;--r>=0;)e[r]=0;for(r=0;r<t.t-1;++r){var i=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,i,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},t.prototype.divRemTo=function(e,i,n){var s=e.abs();if(!(s.t<=0)){var a=this.abs();if(a.t<s.t)return null!=i&&i.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=r());var o=r(),c=this.s,d=e.s,l=this.DB-p(s[s.t-1]);l>0?(s.lShiftTo(l,o),a.lShiftTo(l,n)):(s.copyTo(o),a.copyTo(n));var u=o.t,h=o[u-1];if(0!=h){var m=h*(1<<this.F1)+(u>1?o[u-2]>>this.F2:0),f=this.FV/m,g=(1<<this.F1)/m,v=1<<this.F2,_=n.t,y=_-u,b=null==i?r():i;for(o.dlShiftTo(y,b),n.compareTo(b)>=0&&(n[n.t++]=1,n.subTo(b,n)),t.ONE.dlShiftTo(u,b),b.subTo(o,o);o.t<u;)o[o.t++]=0;for(;--y>=0;){var w=n[--_]==h?this.DM:Math.floor(n[_]*f+(n[_-1]+v)*g);if((n[_]+=o.am(0,w,n,y,0,u))<w)for(o.dlShiftTo(y,b),n.subTo(b,n);n[_]<--w;)n.subTo(b,n)}null!=i&&(n.drShiftTo(u,i),c!=d&&t.ZERO.subTo(i,i)),n.t=u,n.clamp(),l>0&&n.rShiftTo(l,n),c<0&&t.ZERO.subTo(n,n)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,i){if(e>4294967295||e<1)return t.ONE;var n=r(),s=r(),a=i.convert(this),o=p(e)-1;for(a.copyTo(n);--o>=0;)if(i.sqrTo(n,s),(e&1<<o)>0)i.mulTo(s,a,n);else{var c=n;n=s,s=c}return i.revert(n)},t.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,i=(1<<t)-1,n=!1,s="",a=this.t,o=this.DB-a*this.DB%t;if(a-- >0)for(o<this.DB&&(r=this[a]>>o)>0&&(n=!0,s=c(r));a>=0;)o<t?(r=(this[a]&(1<<o)-1)<<t-o,r|=this[--a]>>(o+=this.DB-t)):(r=this[a]>>(o-=t)&i,o<=0&&(o+=this.DB,--a)),r>0&&(n=!0),n&&(s+=c(r));return n?s:"0"},t.prototype.negate=function(){var e=r();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+p(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var i=r();return this.abs().divRemTo(e,null,i),this.s<0&&i.compareTo(t.ZERO)>0&&e.subTo(i,i),i},t.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new u(t):new h(t),this.exp(e,r)},t.ZERO=l(0),t.ONE=l(1),b.prototype.convert=w,b.prototype.revert=w,b.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},b.prototype.sqrTo=function(e,t){e.squareTo(t)},S.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=r();return e.copyTo(t),this.reduce(t),t},S.prototype.revert=function(e){return e},S.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},S.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var C,R,T,P=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],k=(1<<26)/P[P.length-1];function D(){var e;e=(new Date).getTime(),R[T++]^=255&e,R[T++]^=e>>8&255,R[T++]^=e>>16&255,R[T++]^=e>>24&255,T>=L&&(T-=L)}if(t.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},t.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),i=Math.pow(e,t),n=l(i),s=r(),a=r(),o="";for(this.divRemTo(n,s,a);s.signum()>0;)o=(i+a.intValue()).toString(e).substr(1)+o,s.divRemTo(n,s,a);return a.intValue().toString(e)+o},t.prototype.fromRadix=function(e,r){this.fromInt(0),null==r&&(r=10);for(var i=this.chunkSize(r),n=Math.pow(r,i),s=!1,a=0,o=0,c=0;c<e.length;++c){var l=d(e,c);l<0?"-"==e.charAt(c)&&0==this.signum()&&(s=!0):(o=r*o+l,++a>=i&&(this.dMultiply(n),this.dAddOffset(o,0),a=0,o=0))}a>0&&(this.dMultiply(Math.pow(r,a)),this.dAddOffset(o,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,r,i){if("number"==typeof r)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),f,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(r);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var n=new Array,s=7&e;n.length=1+(e>>3),r.nextBytes(n),s>0?n[0]&=(1<<s)-1:n[0]=0,this.fromString(n,256)}},t.prototype.bitwiseTo=function(e,t,r){var i,n,s=Math.min(e.t,this.t);for(i=0;i<s;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(n=e.s&this.DM,i=s;i<this.t;++i)r[i]=t(this[i],n);r.t=this.t}else{for(n=this.s&this.DM,i=s;i<e.t;++i)r[i]=t(n,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},t.prototype.changeBit=function(e,r){var i=t.ONE.shiftLeft(e);return this.bitwiseTo(i,r,i),i},t.prototype.addTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]+e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i+=e[r],t[r++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=i<0?-1:0,i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i),t.t=r,t.clamp()},t.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},t.prototype.multiplyLowerTo=function(e,t,r){var i,n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n<i;++n)r[n+this.t]=this.am(0,e[n],r,n,0,this.t);for(i=Math.min(e.t,t);n<i;++n)this.am(0,e[n],r,n,0,t-n);r.clamp()},t.prototype.multiplyUpperTo=function(e,t,r){--t;var i=r.t=this.t+e.t-t;for(r.s=0;--i>=0;)r[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)r[this.t+i-t]=this.am(t-i,e[i],r,0,0,this.t+i-t);r.clamp(),r.drShiftTo(1,r)},t.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this[0]%e;else for(var i=this.t-1;i>=0;--i)r=(t*r+this[i])%e;return r},t.prototype.millerRabin=function(e){var i=this.subtract(t.ONE),n=i.getLowestSetBit();if(n<=0)return!1;var s=i.shiftRight(n);(e=e+1>>1)>P.length&&(e=P.length);for(var a=r(),o=0;o<e;++o){a.fromInt(P[Math.floor(Math.random()*P.length)]);var c=a.modPow(s,this);if(0!=c.compareTo(t.ONE)&&0!=c.compareTo(i)){for(var d=1;d++<n&&0!=c.compareTo(i);)if(0==(c=c.modPowInt(2,this)).compareTo(t.ONE))return!1;if(0!=c.compareTo(i))return!1}}return!0},t.prototype.clone=function(){var e=r();return this.copyTo(e),e},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},t.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,n=0;if(e-- >0)for(i<this.DB&&(r=this[e]>>i)!=(this.s&this.DM)>>i&&(t[n++]=r|this.s<<this.DB-i);e>=0;)i<8?(r=(this[e]&(1<<i)-1)<<8-i,r|=this[--e]>>(i+=this.DB-8)):(r=this[e]>>(i-=8)&255,i<=0&&(i+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(t[n++]=r);return t},t.prototype.equals=function(e){return 0==this.compareTo(e)},t.prototype.min=function(e){return this.compareTo(e)<0?this:e},t.prototype.max=function(e){return this.compareTo(e)>0?this:e},t.prototype.and=function(e){var t=r();return this.bitwiseTo(e,m,t),t},t.prototype.or=function(e){var t=r();return this.bitwiseTo(e,f,t),t},t.prototype.xor=function(e){var t=r();return this.bitwiseTo(e,g,t),t},t.prototype.andNot=function(e){var t=r();return this.bitwiseTo(e,v,t),t},t.prototype.not=function(){for(var e=r(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},t.prototype.shiftLeft=function(e){var t=r();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},t.prototype.shiftRight=function(e){var t=r();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},t.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+_(this[e]);return this.s<0?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=y(this[r]^t);return e},t.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},t.prototype.setBit=function(e){return this.changeBit(e,f)},t.prototype.clearBit=function(e){return this.changeBit(e,v)},t.prototype.flipBit=function(e){return this.changeBit(e,g)},t.prototype.add=function(e){var t=r();return this.addTo(e,t),t},t.prototype.subtract=function(e){var t=r();return this.subTo(e,t),t},t.prototype.multiply=function(e){var t=r();return this.multiplyTo(e,t),t},t.prototype.divide=function(e){var t=r();return this.divRemTo(e,t,null),t},t.prototype.remainder=function(e){var t=r();return this.divRemTo(e,null,t),t},t.prototype.divideAndRemainder=function(e){var t=r(),i=r();return this.divRemTo(e,t,i),new Array(t,i)},t.prototype.modPow=function(e,t){var i,n,s=e.bitLength(),a=l(1);if(s<=0)return a;i=s<18?1:s<48?3:s<144?4:s<768?5:6,n=s<8?new u(t):t.isEven()?new S(t):new h(t);var o=new Array,c=3,d=i-1,m=(1<<i)-1;if(o[1]=n.convert(this),i>1){var f=r();for(n.sqrTo(o[1],f);c<=m;)o[c]=r(),n.mulTo(f,o[c-2],o[c]),c+=2}var g,v,_=e.t-1,y=!0,b=r();for(s=p(e[_])-1;_>=0;){for(s>=d?g=e[_]>>s-d&m:(g=(e[_]&(1<<s+1)-1)<<d-s,_>0&&(g|=e[_-1]>>this.DB+s-d)),c=i;0==(1&g);)g>>=1,--c;if((s-=c)<0&&(s+=this.DB,--_),y)o[g].copyTo(a),y=!1;else{for(;c>1;)n.sqrTo(a,b),n.sqrTo(b,a),c-=2;c>0?n.sqrTo(a,b):(v=a,a=b,b=v),n.mulTo(b,o[g],a)}for(;_>=0&&0==(e[_]&1<<s);)n.sqrTo(a,b),v=a,a=b,b=v,--s<0&&(s=this.DB-1,--_)}return n.revert(a)},t.prototype.modInverse=function(e){var r=e.isEven();if(this.isEven()&&r||0==e.signum())return t.ZERO;for(var i=e.clone(),n=this.clone(),s=l(1),a=l(0),o=l(0),c=l(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),r?(s.isEven()&&a.isEven()||(s.addTo(this,s),a.subTo(e,a)),s.rShiftTo(1,s)):a.isEven()||a.subTo(e,a),a.rShiftTo(1,a);for(;n.isEven();)n.rShiftTo(1,n),r?(o.isEven()&&c.isEven()||(o.addTo(this,o),c.subTo(e,c)),o.rShiftTo(1,o)):c.isEven()||c.subTo(e,c),c.rShiftTo(1,c);i.compareTo(n)>=0?(i.subTo(n,i),r&&s.subTo(o,s),a.subTo(c,a)):(n.subTo(i,n),r&&o.subTo(s,o),c.subTo(a,c))}return 0!=n.compareTo(t.ONE)?t.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},t.prototype.pow=function(e){return this.exp(e,new b)},t.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var i=t;t=r,r=i}var n=t.getLowestSetBit(),s=r.getLowestSetBit();if(s<0)return t;for(n<s&&(s=n),s>0&&(t.rShiftTo(s,t),r.rShiftTo(s,r));t.signum()>0;)(n=t.getLowestSetBit())>0&&t.rShiftTo(n,t),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return s>0&&r.lShiftTo(s,r),r},t.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=P[P.length-1]){for(t=0;t<P.length;++t)if(r[0]==P[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<P.length;){for(var i=P[t],n=t+1;n<P.length&&i<k;)i*=P[n++];for(i=r.modInt(i);t<n;)if(i%P[t++]==0)return!1}return r.millerRabin(e)},t.prototype.square=function(){var e=r();return this.squareTo(e),e},t.prototype.Barrett=S,null==R){var E;if(R=new Array,T=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var O=new Uint8Array(32);for(window.crypto.getRandomValues(O),E=0;E<32;++E)R[T++]=O[E]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var I=window.crypto.random(32);for(E=0;E<I.length;++E)R[T++]=255&I.charCodeAt(E)}for(;T<L;)E=Math.floor(65536*Math.random()),R[T++]=E>>>8,R[T++]=255&E;T=0,D()}function x(){if(null==C){for(D(),(C=new j).init(R),T=0;T<R.length;++T)R[T]=0;T=0}return C.next()}function M(){}function j(){this.i=0,this.j=0,this.S=new Array}M.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=x()},j.prototype.init=function(e){var t,r,i;for(t=0;t<256;++t)this.S[t]=t;for(r=0,t=0;t<256;++t)r=r+this.S[t]+e[t%e.length]&255,i=this.S[t],this.S[t]=this.S[r],this.S[r]=i;this.i=0,this.j=0},j.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};var L=256;Bd.exports={default:t,BigInteger:t,SecureRandom:M}}.call(Wt);var Ud=Fd.exports,$d={};!function(e){!function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return function(e,i){var n,s,a,o,c,d,l,p,u,h=1,m=e.length,f="";for(s=0;s<m;s++)if("string"==typeof e[s])f+=e[s];else if("object"==typeof e[s]){if((o=e[s]).keys)for(n=i[h],a=0;a<o.keys.length;a++){if(null==n)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',o.keys[a],o.keys[a-1]));n=n[o.keys[a]]}else n=o.param_no?i[o.param_no]:i[h++];if(t.not_type.test(o.type)&&t.not_primitive.test(o.type)&&n instanceof Function&&(n=n()),t.numeric_arg.test(o.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(r("[sprintf] expecting number but found %T",n));switch(t.number.test(o.type)&&(p=n>=0),o.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,o.width?parseInt(o.width):0);break;case"e":n=o.precision?parseFloat(n).toExponential(o.precision):parseFloat(n).toExponential();break;case"f":n=o.precision?parseFloat(n).toFixed(o.precision):parseFloat(n);break;case"g":n=o.precision?String(Number(n.toPrecision(o.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=o.precision?n.substring(0,o.precision):n;break;case"t":n=String(!!n),n=o.precision?n.substring(0,o.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=o.precision?n.substring(0,o.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=o.precision?n.substring(0,o.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}t.json.test(o.type)?f+=n:(!t.number.test(o.type)||p&&!o.sign?u="":(u=p?"+":"-",n=n.toString().replace(t.sign,"")),d=o.pad_char?"0"===o.pad_char?"0":o.pad_char.charAt(1):" ",l=o.width-(u+n).length,c=o.width&&l>0?d.repeat(l):"",f+=o.align?u+n+c:"0"===d?u+c+n:c+u+n)}return f}(function(e){if(n[e])return n[e];var r,i=e,s=[],a=0;for(;i;){if(null!==(r=t.text.exec(i)))s.push(r[0]);else if(null!==(r=t.modulo.exec(i)))s.push("%");else{if(null===(r=t.placeholder.exec(i)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){a|=1;var o=[],c=r[2],d=[];if(null===(d=t.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(d[1]);""!==(c=c.substring(d[0].length));)if(null!==(d=t.key_access.exec(c)))o.push(d[1]);else{if(null===(d=t.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(d[1])}r[2]=o}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");s.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}i=i.substring(r[0].length)}return n[e]=s}(e),arguments)}function i(e,t){return r.apply(null,[e].concat(t||[]))}var n=Object.create(null);e.sprintf=r,e.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=i)}()}($d);var zd=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Vd=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),qd=Wt&&Wt.__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)&&zd(t,e,r);return Vd(t,e),t};Object.defineProperty(Md,"__esModule",{value:!0}),Md.Address4=void 0;const Gd=qd(jd),Wd=qd(Ld),Hd=Ad,Kd=Ud,Jd=$d;class Qd{constructor(e){this.groups=Wd.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=Gd.isCorrect(Wd.BITS),this.isInSubnet=Gd.isInSubnet,this.address=e;const t=Wd.RE_SUBNET_STRING.exec(e);if(t){if(this.parsedSubnet=t[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>Wd.BITS)throw new Hd.AddressError("Invalid subnet mask.");e=e.replace(Wd.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new Qd(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(Wd.RE_ADDRESS))throw new Hd.AddressError("Invalid IPv4 address.");return t}correctForm(){return this.parsedAddress.map((e=>parseInt(e,10))).join(".")}static fromHex(e){const t=e.replace(/:/g,"").padStart(8,"0"),r=[];let i;for(i=0;i<8;i+=2){const e=t.slice(i,i+2);r.push(parseInt(e,16))}return new Qd(r.join("."))}static fromInteger(e){return Qd.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new Qd(t)}toHex(){return this.parsedAddress.map((e=>(0,Jd.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<Wd.GROUPS;t+=2){const r=(0,Jd.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,Jd.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new Kd.BigInteger(this.parsedAddress.map((e=>(0,Jd.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new Kd.BigInteger(this.mask()+"0".repeat(Wd.BITS-this.subnetMask),2)}startAddress(){return Qd.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Kd.BigInteger("1");return Qd.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Kd.BigInteger(this.mask()+"1".repeat(Wd.BITS-this.subnetMask),2)}endAddress(){return Qd.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Kd.BigInteger("1");return Qd.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return Qd.fromInteger(parseInt(e.toString(),10))}mask(e){return void 0===e&&(e=this.subnetMask),this.getBitsBase2(0,e)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}reverseForm(e){e||(e={});const t=this.correctForm().split(".").reverse().join(".");return e.omitSuffix?t:(0,Jd.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new Qd("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Wd.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(Wd.RE_ADDRESS,(0,Jd.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',e.slice(0,2).join("."),e.slice(2,4).join(".")))}}Md.Address4=Qd;var Zd={},Yd={};Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.RE_URL_WITH_PORT=Yd.RE_URL=Yd.RE_ZONE_STRING=Yd.RE_SUBNET_STRING=Yd.RE_BAD_ADDRESS=Yd.RE_BAD_CHARACTERS=Yd.TYPES=Yd.SCOPES=Yd.GROUPS=Yd.BITS=void 0,Yd.BITS=128,Yd.GROUPS=8,Yd.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},Yd.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},Yd.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,Yd.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,Yd.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,Yd.RE_ZONE_STRING=/%.*$/,Yd.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),Yd.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var Xd={};Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.simpleGroup=Xd.spanLeadingZeroes=Xd.spanAll=Xd.spanAllZeroes=void 0;const el=$d;function tl(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function rl(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}Xd.spanAllZeroes=tl,Xd.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,el.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,tl(e)))).join("")},Xd.spanLeadingZeroes=function(e){return e.split(":").map((e=>rl(e))).join(":")},Xd.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,el.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,rl(e))))};var il={},nl=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),sl=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),al=Wt&&Wt.__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)&&nl(t,e,r);return sl(t,e),t};Object.defineProperty(il,"__esModule",{value:!0}),il.possibleElisions=il.simpleRegularExpression=il.ADDRESS_BOUNDARY=il.padGroup=il.groupPossibilities=void 0;const ol=al(Yd),cl=$d;function dl(e){return(0,cl.sprintf)("(%s)",e.join("|"))}function ll(e){return e.length<4?(0,cl.sprintf)("0{0,%d}%s",4-e.length,e):e}il.groupPossibilities=dl,il.padGroup=ll,il.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",il.simpleRegularExpression=function(e){const t=[];e.forEach(((e,r)=>{0===parseInt(e,16)&&t.push(r)}));const r=t.map((t=>e.map(((e,r)=>{if(r===t){const t=0===r||r===ol.GROUPS-1?":":"";return dl([ll(e),t])}return ll(e)})).join(":")));return r.push(e.map(ll).join(":")),dl(r)},il.possibleElisions=function(e,t,r){const i=t?"":":",n=r?"":":",s=[];t||r||s.push("::"),t&&r&&s.push(""),(r&&!t||!r&&t)&&s.push(":"),s.push((0,cl.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),s.push((0,cl.sprintf)("(0{1,4}:){1,%d}%s",e-1,n)),s.push((0,cl.sprintf)("(0{1,4}:){%d}0{1,4}",e-1));for(let t=1;t<e-1;t++)for(let r=1;r<e-t;r++)s.push((0,cl.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return dl(s)};var pl=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ul=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),hl=Wt&&Wt.__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)&&pl(t,e,r);return ul(t,e),t};Object.defineProperty(Zd,"__esModule",{value:!0}),Zd.Address6=void 0;const ml=hl(jd),fl=hl(Ld),gl=hl(Yd),vl=hl(Xd),_l=Md,yl=il,bl=Ad,wl=Ud,Sl=$d;function Cl(e){if(!e)throw new Error("Assertion failed.")}function Rl(e){return e=(e=e.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2')).replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2')}function Tl(e){return(0,Sl.sprintf)("%04x",parseInt(e,16))}function Pl(e){return 255&e}class kl{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=ml.isInSubnet,this.isCorrect=ml.isCorrect(gl.BITS),this.groups=void 0===t?gl.GROUPS:t,this.address=e;const r=gl.RE_SUBNET_STRING.exec(e);if(r){if(this.parsedSubnet=r[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>gl.BITS)throw new bl.AddressError("Invalid subnet mask.");e=e.replace(gl.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new bl.AddressError("Invalid subnet mask.");const i=gl.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(gl.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new kl(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<gl.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new kl(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=gl.RE_URL_WITH_PORT.exec(e),null===r)return{error:"failed to parse address with port",address:null,port:null};t=r[1],i=r[2]}else if(-1!==e.indexOf("/")){if(e=e.replace(/^[a-z0-9]+:\/\//,""),r=gl.RE_URL.exec(e),null===r)return{error:"failed to parse address from URL",address:null,port:null};t=r[1]}else t=e;return i?(i=parseInt(i,10),(i<0||i>65536)&&(i=null)):i=null,{address:new kl(t),port:i}}static fromAddress4(e){const t=new _l.Address4(e),r=gl.BITS-(fl.BITS-t.subnetMask);return new kl(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new bl.AddressError("Invalid 'ip6.arpa' form.");const r=t.split(".").reverse();for(let e=7;e>0;e--){const t=4*e;r.splice(t,0,":")}return t=r.join(""),new kl(t)}microsoftTranscription(){return(0,Sl.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=gl.BITS-this.subnetMask-Math.abs(e-gl.BITS);return t<0?"0":function(e){const t=/(\d+)(\d{3})/;for(;t.test(e);)e=e.replace(t,"$1,$2");return e}(new wl.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new wl.BigInteger(this.mask()+"0".repeat(gl.BITS-this.subnetMask),2)}startAddress(){return kl.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new wl.BigInteger("1");return kl.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new wl.BigInteger(this.mask()+"1".repeat(gl.BITS-this.subnetMask),2)}endAddress(){return kl.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new wl.BigInteger("1");return kl.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=gl.SCOPES[this.getBits(12,16).intValue()];return"Global unicast"===this.getType()&&"Link local"!==e&&(e="Global"),e||"Unknown"}getType(){for(const e of Object.keys(gl.TYPES))if(this.isInSubnet(new kl(e)))return gl.TYPES[e];return"Global unicast"}getBits(e,t){return new wl.BigInteger(this.getBitsBase2(e,t),2)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}getBitsBase16(e,t){const r=t-e;if(r%4!=0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(e,t).toString(16).padStart(r/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,gl.BITS)}reverseForm(e){e||(e={});const t=Math.floor(this.subnetMask/4),r=this.canonicalForm().replace(/:/g,"").split("").slice(0,t).reverse().join(".");return t>0?e.omitSuffix?r:(0,Sl.sprintf)("%s.ip6.arpa.",r):e.omitSuffix?"":"ip6.arpa."}correctForm(){let e,t=[],r=0;const i=[];for(e=0;e<this.parsedAddress.length;e++){const t=parseInt(this.parsedAddress[e],16);0===t&&r++,0!==t&&r>0&&(r>1&&i.push([e-r,e-1]),r=0)}r>1&&i.push([this.parsedAddress.length-r,this.parsedAddress.length-1]);const n=i.map((e=>e[1]-e[0]+1));if(i.length>0){const e=n.indexOf(Math.max(...n));t=function(e,t){const r=[],i=[];let n;for(n=0;n<e.length;n++)n<t[0]?r.push(e[n]):n>t[1]&&i.push(e[n]);return r.concat(["compact"]).concat(i)}(this.parsedAddress,i[e])}else t=this.parsedAddress;for(e=0;e<t.length;e++)"compact"!==t[e]&&(t[e]=parseInt(t[e],16).toString(16));let s=t.join(":");return s=s.replace(/^compact$/,"::"),s=s.replace(/^compact|compact$/,":"),s=s.replace(/compact/,""),s}binaryZeroPad(){return this.bigInteger().toString(2).padStart(gl.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(fl.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new _l.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new bl.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(fl.RE_ADDRESS,this.address4.parsedAddress.map(Rl).join(".")));this.v4=!0,t[t.length-1]=this.address4.toGroup6(),e=t.join(":")}return e}parse(e){const t=(e=this.parse4in6(e)).match(gl.RE_BAD_CHARACTERS);if(t)throw new bl.AddressError((0,Sl.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(gl.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(gl.RE_BAD_ADDRESS);if(r)throw new bl.AddressError((0,Sl.sprintf)("Address failed regex: %s",r.join("")),e.replace(gl.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let i=[];const n=e.split("::");if(2===n.length){let e=n[0].split(":"),t=n[1].split(":");1===e.length&&""===e[0]&&(e=[]),1===t.length&&""===t[0]&&(t=[]);const r=this.groups-(e.length+t.length);if(!r)throw new bl.AddressError("Error parsing groups");this.elidedGroups=r,this.elisionBegin=e.length,this.elisionEnd=e.length+this.elidedGroups,i=i.concat(e);for(let e=0;e<r;e++)i.push("0");i=i.concat(t)}else{if(1!==n.length)throw new bl.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,Sl.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new bl.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(Tl).join(":")}decimal(){return this.parsedAddress.map((e=>(0,Sl.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new wl.BigInteger(this.parsedAddress.map(Tl).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return _l.Address4.fromHex(new wl.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new kl(this.parsedAddress.slice(0,6).join(":"),6).correctForm();let r="";return/:$/.test(t)||(r=":"),t+r+e.address}inspectTeredo(){const e=this.getBitsBase16(0,32),t=this.getBits(80,96).xor(new wl.BigInteger("ffff",16)).toString(),r=_l.Address4.fromHex(this.getBitsBase16(32,64)),i=_l.Address4.fromHex(this.getBits(96,128).xor(new wl.BigInteger("ffffffff",16)).toString(16)),n=this.getBits(64,80),s=this.getBitsBase2(64,80),a=n.testBit(15),o=n.testBit(14),c=n.testBit(8),d=n.testBit(9),l=new wl.BigInteger(s.slice(2,6)+s.slice(8,16),2).toString(10);return{prefix:(0,Sl.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:i.address,flags:s,coneNat:a,microsoft:{reserved:o,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=_l.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,Sl.sprintf)("%s",e.slice(0,4)),gateway:t.address}}to6to4(){if(!this.is4())return null;const e=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new kl(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(Pl)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(Pl))}static fromUnsignedByteArray(e){const t=new wl.BigInteger("256",10);let r=new wl.BigInteger("0",10),i=new wl.BigInteger("1",10);for(let n=e.length-1;n>=0;n--)r=r.add(i.multiply(new wl.BigInteger(e[n].toString(10),10))),i=i.multiply(t);return kl.fromBigInteger(r)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return"1111111010000000000000000000000000000000000000000000000000000000"===this.getBitsBase2(0,64)}isMulticast(){return"Multicast"===this.getType()}is4(){return this.v4}isTeredo(){return this.isInSubnet(new kl("2001::/32"))}is6to4(){return this.isInSubnet(new kl("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,Sl.sprintf)(":%s",e),(0,Sl.sprintf)("http://[%s]%s/",this.correctForm(),e)}link(e){e||(e={}),void 0===e.className&&(e.className=""),void 0===e.prefix&&(e.prefix="/#address="),void 0===e.v4&&(e.v4=!1);let t=this.correctForm;return e.v4&&(t=this.to4in6),e.className?(0,Sl.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,Sl.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return vl.simpleGroup(this.address).join(":");Cl("number"==typeof this.elidedGroups),Cl("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...vl.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,Sl.sprintf)("group-%d",e));return e.push((0,Sl.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...vl.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(Cl(this.address4 instanceof _l.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new kl(this.correctForm());if(0===r.elidedGroups)t.push((0,yl.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===gl.GROUPS)t.push((0,yl.possibleElisions)(gl.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,yl.simpleRegularExpression)(e[0].split(":"))),Cl("number"==typeof r.elidedGroups),t.push((0,yl.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,yl.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",yl.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",yl.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}Zd.Address6=kl,function(e){var t=Wt&&Wt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Wt&&Wt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Wt&&Wt.__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};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const n=Md;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return n.Address4}});const s=Zd;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return s.Address6}});const a=Ad;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const o=i(Xd);e.v6={helpers:o}}(xd);var Dl={exports:{}};!function(e){(function(){var t,r,i,n,s,a,o,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,o=function(e,t,r,i){var n,s;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(n=0;i>0;){if((s=r-i)<0&&(s=0),e[n]>>s!=t[n]>>s)return!1;i-=r,n+=1}return!0},r.subnetMatch=function(e,t,r){var i,n,s,a,o;for(s in null==r&&(r="unicast"),t)for(!(a=t[s])[0]||a[0]instanceof Array||(a=[a]),i=0,n=a.length;i<n;i++)if(o=a[i],e.kind()===o[0].kind()&&e.match.apply(e,o))return s;return r},r.IPv4=function(){function e(e){var t,r,i;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,r=e.length;t<r;t++)if(!(0<=(i=e[t])&&i<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return o(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,a;for(a={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,n=!1,t=r=3;r>=0;t=r+=-1){if(!((i=this.octets[t])in a))return null;if(s=a[i],n&&0!==s)return null;8!==s&&(n=!0),e+=s}return 32-e},e}(),i="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+i+"\\."+i+"\\."+i+"\\."+i+"$","i"),longValue:new RegExp("^"+i+"$","i")},r.IPv4.parser=function(e){var t,r,i,s,a;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(n.fourOctet))return function(){var e,n,s,a;for(a=[],e=0,n=(s=t.slice(1,6)).length;e<n;e++)i=s[e],a.push(r(i));return a}();if(t=e.match(n.longValue)){if((a=r(t[1]))>4294967295||a<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],s=e=0;e<=24;s=e+=8)t.push(a>>s&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,i,n,s,a,o;if(16===e.length)for(this.parts=[],r=i=0;i<=14;r=i+=2)this.parts.push(e[r]<<8|e[r+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(n=0,s=(o=this.parts).length;n<s;n++)if(!(0<=(a=o[n])&&a<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,r,i,n;for(i=/((^|:)(0(:|$)){2,})/g,n=this.toNormalizedString(),e=0,t=-1;r=i.exec(n);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?n:n.substring(0,e)+"::"+n.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,i,n;for(e=[],t=0,r=(n=this.parts).length;t<r;t++)i=n[t],e.push(i>>8),e.push(255&i);return e},e.prototype.toNormalizedString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.toFixedLengthString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16).padStart(4,"0"));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return o(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,i;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(i=this.parts.slice(-2))[0],t=i[1],new r.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,a;for(a={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,n=!1,t=r=7;r>=0;t=r+=-1){if(!((i=this.parts[t])in a))return null;if(s=a[i],n&&0!==s)return null;16!==s&&(n=!0),e+=s}return 128-e},e}(),s="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",a={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+i+"\\."+i+"\\."+i+"\\."+i+"("+c+")?$","i")},t=function(e,t){var r,i,n,s,o,c;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((c=(e.match(a.zoneIndex)||[])[0])&&(c=c.substring(1),e=e.replace(/%.+$/,"")),r=0,i=-1;(i=e.indexOf(":",i+1))>=0;)r++;if("::"===e.substr(0,2)&&r--,"::"===e.substr(-2,2)&&r--,r>t)return null;for(o=t-r,s=":";o--;)s+="0:";return":"===(e=e.replace("::",s))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){var t,r,i,s;for(s=[],t=0,r=(i=e.split(":")).length;t<r;t++)n=i[t],s.push(parseInt(n,16));return s}(),zoneId:c}},r.IPv6.parser=function(e){var r,i,n,s,o,c,d;if(a.native.test(e))return t(e,8);if((s=e.match(a.transitional))&&(d=s[6]||"",(r=t(s[1].slice(0,-1)+d,6)).parts)){for(i=0,n=(c=[parseInt(s[2]),parseInt(s[3]),parseInt(s[4]),parseInt(s[5])]).length;i<n;i++)if(!(0<=(o=c[i])&&o<=255))return null;return r.parts.push(c[0]<<8|c[1]),r.parts.push(c[2]<<8|c[3]),{parts:r.parts,zoneId:r.zoneId}}return null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(e){return null!==this.parser(e)},r.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},r.IPv4.isValidFourPartDecimal=function(e){return!(!r.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},r.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},r.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},r.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},r.IPv4.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=32)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},r.IPv4.subnetMaskFromPrefixLength=function(e){var t,r,i;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(i=[0,0,0,0],r=0,t=Math.floor(e/8);r<t;)i[r]=255,r++;return t<4&&(i[t]=Math.pow(2,e%8)-1<<8-e%8),new this(i)},r.IPv4.broadcastAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)|255^parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)&parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv6.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=128)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},r.isValid=function(e){return r.IPv6.isValid(e)||r.IPv4.isValid(e)},r.parse=function(e){if(r.IPv6.isValid(e))return r.IPv6.parse(e);if(r.IPv4.isValid(e))return r.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.parseCIDR=function(e){try{return r.IPv6.parseCIDR(e)}catch(t){try{return r.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},r.fromByteArray=function(e){var t;if(4===(t=e.length))return new r.IPv4(e);if(16===t)return new r.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},r.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(Wt)}(Dl);var El=Dl.exports,Ol=function(e,t){if("string"==typeof t)return Il(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(Il(e,t[i])){r=!0;break}return r}};function Il(e,t){try{var r=El.process(e);if(-1===t.indexOf("/")){var i=El.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var n=El.parseCIDR(t);return r.match(n)}catch(e){return!1}}var xl=Ol,Ml=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,jl=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/3"],Ll=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var Al=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(Ml.test(e)){r.isValid=!0;for(var i=e.split("."),n=0;n<4;n++)t.push(parseInt(i[n],10));r.boiledIp=t.join("."),xl(r.boiledIp,jl)&&(r.isBogon=!0),xl(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),xl(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),xl(r.boiledIp,Ll)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},Nl=Ht(Al),Bl={exports:{}},Fl=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Ul=[],$l=0;$l<256;$l++)Ul[$l]=($l+256).toString(16).substr(1);Bl.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=Ul;return i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]}(e);else{if("[object String]"!==Object.prototype.toString.call(e))return!1;r=e}if(r=r.toLowerCase(),!Fl.test(r))return!1;if(void 0===t)t=zl(r);else if(zl(r)!==t)return!1;switch(t){case 1:case 2:return!0;case 3:case 4:case 5:return-1!==["8","9","a","b"].indexOf(r.charAt(19));default:throw new Error("Invalid version provided.")}};var zl=Bl.exports.version=function(e){return 0|e.charAt(14)},Vl=Ht(Bl.exports);const ql=Object.create(null);ql.open="0",ql.close="1",ql.ping="2",ql.pong="3",ql.message="4",ql.upgrade="5",ql.noop="6";const Gl=Object.create(null);Object.keys(ql).forEach((e=>{Gl[ql[e]]=e}));const Wl={type:"error",data:"parser error"},Hl="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Kl="function"==typeof ArrayBuffer,Jl=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Ql=({type:e,data:t},r,i)=>Hl&&t instanceof Blob?r?i(t):Zl(t,i):Kl&&(t instanceof ArrayBuffer||Jl(t))?r?i(t):Zl(new Blob([t]),i):i(ql[e]+(t||"")),Zl=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function Yl(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Xl;const ep="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",tp="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let cb=0;cb<64;cb++)tp[ep.charCodeAt(cb)]=cb;const rp="function"==typeof ArrayBuffer,ip=(e,t)=>{if("string"!=typeof e)return{type:"message",data:sp(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:np(e.substring(1),t)};return Gl[r]?e.length>1?{type:Gl[r],data:e.substring(1)}:{type:Gl[r]}:Wl},np=(e,t)=>{if(rp){const r=(e=>{let t,r,i,n,s,a=.75*e.length,o=e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const d=new ArrayBuffer(a),l=new Uint8Array(d);for(t=0;t<o;t+=4)r=tp[e.charCodeAt(t)],i=tp[e.charCodeAt(t+1)],n=tp[e.charCodeAt(t+2)],s=tp[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|n>>2,l[c++]=(3&n)<<6|63&s;return d})(e);return sp(r,t)}return{base64:!0,data:e}},sp=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,ap=String.fromCharCode(30);function op(){return new TransformStream({transform(e,t){!function(e,t){Hl&&e.data instanceof Blob?e.data.arrayBuffer().then(Yl).then(t):Kl&&(e.data instanceof ArrayBuffer||Jl(e.data))?t(Yl(e.data)):Ql(e,!1,(e=>{Xl||(Xl=new TextEncoder),t(Xl.encode(e))}))}(e,(r=>{const i=r.length;let n;if(i<126)n=new Uint8Array(1),new DataView(n.buffer).setUint8(0,i);else if(i<65536){n=new Uint8Array(3);const e=new DataView(n.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{n=new Uint8Array(9);const e=new DataView(n.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(n[0]|=128),t.enqueue(n),t.enqueue(r)}))}})}let cp;function dp(e){return e.reduce(((e,t)=>e+t.length),0)}function lp(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let n=0;n<t;n++)r[n]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),r}function pp(e){if(e)return function(e){for(var t in pp.prototype)e[t]=pp.prototype[t];return e}(e)}pp.prototype.on=pp.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},pp.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},pp.prototype.off=pp.prototype.removeListener=pp.prototype.removeAllListeners=pp.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},pp.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},pp.prototype.emitReserved=pp.prototype.emit,pp.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},pp.prototype.hasListeners=function(e){return!!this.listeners(e).length};const up="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function hp(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const mp=up.setTimeout,fp=up.clearTimeout;function gp(e,t){t.useNativeTimers?(e.setTimeoutFn=mp.bind(up),e.clearTimeoutFn=fp.bind(up)):(e.setTimeoutFn=up.setTimeout.bind(up),e.clearTimeoutFn=up.clearTimeout.bind(up))}class vp extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class _p extends pp{constructor(e){super(),this.writable=!1,gp(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new vp(e,t,r)),this}open(){return 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.emitReserved("open")}onData(e){const t=ip(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const yp="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),bp=64,wp={};let Sp,Cp=0,Rp=0;function Tp(e){let t="";do{t=yp[e%bp]+t,e=Math.floor(e/bp)}while(e>0);return t}function Pp(){const e=Tp(+new Date);return e!==Sp?(Cp=0,Sp=e):e+"."+Tp(Cp++)}for(;Rp<bp;Rp++)wp[yp[Rp]]=Rp;let kp=!1;try{kp="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(db){}const Dp=kp;function Ep(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Dp))return new XMLHttpRequest}catch(e){}if(!t)try{return new(up[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Op(){}const Ip=null!=new Ep({xdomain:!1}).responseType;class xp extends pp{constructor(e,t){super(),gp(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=hp(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new Ep(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=xp.requestsCount++,xp.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Op,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete xp.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(xp.requestsCount=0,xp.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Mp);else if("function"==typeof addEventListener){addEventListener("onpagehide"in up?"pagehide":"unload",Mp,!1)}function Mp(){for(let e in xp.requests)xp.requests.hasOwnProperty(e)&&xp.requests[e].abort()}const jp="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Lp=up.WebSocket||up.MozWebSocket,Ap="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const Np={websocket:class extends _p{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=Ap?{}:hp(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=Ap?new Lp(e,t,r):t?new Lp(e,t):new Lp(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),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;Ql(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&jp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=Pp()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Lp}},webtransport:class extends _p{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){cp||(cp=new TextDecoder);const r=[];let i=0,n=-1,s=!1;return new TransformStream({transform(a,o){for(r.push(a);;){if(0===i){if(dp(r)<1)break;const e=lp(r,1);s=128==(128&e[0]),n=127&e[0],i=n<126?3:126===n?1:2}else if(1===i){if(dp(r)<2)break;const e=lp(r,2);n=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(dp(r)<8)break;const e=lp(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),s=t.getUint32(0);if(s>Math.pow(2,21)-1){o.enqueue(Wl);break}n=s*Math.pow(2,32)+t.getUint32(4),i=3}else{if(dp(r)<n)break;const e=lp(r,n);o.enqueue(ip(s?e:cp.decode(e),t)),i=0}if(0===n||n>e){o.enqueue(Wl);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=op();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const n=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),n())})).catch((e=>{}))};n();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;this.writer.write(r).then((()=>{i&&jp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends _p{constructor(e){if(super(e),this.polling=!1,"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}const t=e&&e.forceBase64;this.supportsBinary=Ip&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}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.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(ap),i=[];for(let e=0;e<r.length;e++){const n=ip(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({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("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)=>{Ql(e,!1,(e=>{i[s]=e,++n===r&&t(i.join(ap))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=Pp()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new xp(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},Bp=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Fp=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Up(e){if(e.length>2e3)throw"URI too long";const 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));let n=Bp.exec(e||""),s={},a=14;for(;a--;)s[Fp[a]]=n[a]||"";return-1!=r&&-1!=i&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||i.splice(0,1);"/"==t.slice(-1)&&i.splice(i.length-1,1);return i}(0,s.path),s.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,s.query),s}let $p=class e extends pp{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=Up(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=Up(t.host).host),gp(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","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,i=r.length;e<i;e++){let i=r[e].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Np[e](r)}open(){let t;if(this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(e){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}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",(e=>this.onClose("transport close",e)))}probe(t){let r=this.createTransport(t),i=!1;e.priorWebsocketSuccess=!1;const n=()=>{i||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(t=>{if(!i)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;e.priorWebsocketSuccess="websocket"===r.name,this.transport.pause((()=>{i||"closed"!==this.readyState&&(l(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=r.name,this.emitReserved("upgradeError",e)}})))};function s(){i||(i=!0,l(),r.close(),r=null)}const a=e=>{const t=new Error("probe error: "+e);t.transport=r.name,s(),this.emitReserved("upgradeError",t)};function o(){a("transport closed")}function c(){a("socket closed")}function d(e){r&&e.name!==r.name&&s()}const l=()=>{r.removeListener("open",n),r.removeListener("error",a),r.removeListener("close",o),this.off("close",c),this.off("upgrading",d)};r.once("open",n),r.once("error",a),r.once("close",o),this.once("close",c),this.once("upgrading",d),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{i||r.open()}),200):r.open()}onOpen(){if(this.readyState="open",e.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){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"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":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.maxPayload=e.maxPayload,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(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const i=this.writeBuffer[r].data;if(i&&(e+="string"==typeof(t=i)?function(e){let t=0,r=0;for(let i=0,n=e.length;i<n;i++)t=e.charCodeAt(i),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(i++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}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(t){e.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}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("beforeunload",this.beforeunloadEventListener,!1),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}};$p.protocol=4;const zp="function"==typeof ArrayBuffer,Vp=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,qp=Object.prototype.toString,Gp="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===qp.call(Blob),Wp="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===qp.call(File);function Hp(e){return zp&&(e instanceof ArrayBuffer||Vp(e))||Gp&&e instanceof Blob||Wp&&e instanceof File}function Kp(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Kp(e[t]))return!0;return!1}if(Hp(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Kp(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Kp(e[t]))return!0;return!1}function Jp(e){const t=[],r=e.data,i=e;return i.data=Qp(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Qp(e,t){if(!e)return e;if(Hp(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]=Qp(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=Qp(e[i],t));return r}return e}function Zp(e,t){return e.data=Yp(e.data,t),delete e.attachments,e}function Yp(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Yp(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=Yp(e[r],t));return e}const Xp=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var eu;!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"}(eu||(eu={}));function tu(e){return"[object Object]"===Object.prototype.toString.call(e)}class ru extends pp{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===eu.BINARY_EVENT;r||t.type===eu.BINARY_ACK?(t.type=r?eu.EVENT:eu.ACK,this.reconstructor=new iu(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!Hp(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===eu[r.type])throw new Error("unknown packet type "+r.type);if(r.type===eu.BINARY_EVENT||r.type===eu.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=this.tryParse(e.substr(t));if(!ru.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case eu.CONNECT:return tu(t);case eu.DISCONNECT:return void 0===t;case eu.CONNECT_ERROR:return"string"==typeof t||tu(t);case eu.EVENT:case eu.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===Xp.indexOf(t[0]));case eu.ACK:case eu.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class iu{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=Zp(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var nu=Object.freeze({__proto__:null,Decoder:ru,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==eu.EVENT&&e.type!==eu.ACK||!Kp(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===eu.EVENT?eu.BINARY_EVENT:eu.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==eu.BINARY_EVENT&&e.type!==eu.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,this.replacer)),t}encodeAsBinary(e){const t=Jp(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return eu},protocol:5});function su(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const au=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class ou extends pp{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[su(e,"open",this.onopen.bind(this)),su(e,"packet",this.onpacket.bind(this)),su(e,"error",this.onerror.bind(this)),su(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(au.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:eu.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,i=t.pop();this._registerAckCallback(e,i),r.id=e}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const i=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===i)return void(this.acks[e]=t);const n=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),i);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(n),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,n)=>{t.push(((e,t)=>r?e?n(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:eu.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case eu.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):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 eu.EVENT:case eu.BINARY_EVENT:this.onevent(e);break;case eu.ACK:case eu.BINARY_ACK:this.onack(e);break;case eu.DISCONNECT:this.ondisconnect();break;case eu.CONNECT_ERROR:this.destroy();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),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:eu.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,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(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:eu.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}timeout(e){return this.flags.timeout=e,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||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function cu(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}cu.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)},cu.prototype.reset=function(){this.attempts=0},cu.prototype.setMin=function(e){this.ms=e},cu.prototype.setMax=function(e){this.max=e},cu.prototype.setJitter=function(e){this.jitter=e};class du extends pp{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,gp(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 cu({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||nu;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 $p(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=su(t,"open",(function(){r.onopen(),e&&e()})),n=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=su(t,"error",n);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),n(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(su(e,"ping",this.onping.bind(this)),su(e,"data",this.ondata.bind(this)),su(e,"error",this.onerror.bind(this)),su(e,"close",this.onclose.bind(this)),su(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){jp((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new ou(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,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),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((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const lu={};function pu(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=Up(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=lu[n]&&s in lu[n].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new du(i,t):(lu[n]||(lu[n]=new du(i,t)),o=lu[n]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}function uu(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){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(a,o)}c((i=i.apply(e,t||[])).next())}))}Object.assign(pu,{Manager:du,Socket:ou,io:pu,connect:pu}),"function"==typeof SuppressedError&&SuppressedError;let hu=[],mu=0;const fu=new WeakMap;if(window.RTCPeerConnection){const lb=window.RTCPeerConnection;function pb(e){const t=new lb(e);hu.push(t),fu.set(t,{index:mu++});const r=()=>{"closed"===t.connectionState&&((e=>{hu=hu.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}pb.prototype=lb.prototype,window.RTCPeerConnection=pb}const gu=new URLSearchParams(window.location.search).has("debug");class vu{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=gu}isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}info(...e){if(this._isEnabled)return console.info(...e)}warn(...e){if(this._isEnabled)return console.warn(...e)}error(...e){if(this._isEnabled)return console.error(...e)}withDebugLogger(e=null){return this._debugger=e,this}debug(...e){if(!this._isEnabled||!this._debugger)return;const t=[];e.forEach((e=>{if("function"==typeof e){const r=e();t.push(r)}else t.push(e)})),this._debugger.print(...t)}}class _u{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?_u._handleRequest(t):t.response?_u._handleResponse(t):t.message?_u._handleMessage(t):void 0}static _handleRequest(e){const t={request:!0};if("string"==typeof e.method&&"number"==typeof e.id)return t.id=e.id,t.method=e.method,t.data=e.data||{},t}static _handleResponse(e){const t={response:!0};if("number"==typeof e.id)return t.id=e.id,e.ok?(t.ok=!0,t.data=e.data||{}):(t.ok=!1,t.errorCode=e.errorCode,t.errorReason=e.errorReason),t}static _handleMessage(e){const t={message:!0};if("string"==typeof e.method)return t.method=e.method,t.data=e.data||{},t}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,errorCode:t,errorReason:r}}static createMessage(e,t){return{message:!0,method:e,data:t||{}}}}const yu=new vu;class bu extends Ft{constructor(e,t="whereby-sfu#v4"){super(),this.socket=null,this.wsUrl=e,this.protocol=t,this.sents=new Map,this._setupSocket()}_setupSocket(){this.socket=new WebSocket(this.wsUrl,this.protocol),this.socket.onopen=this._onOpen.bind(this),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=this._onClose.bind(this),this.socket.onerror=this._onError.bind(this)}_tearDown(){null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.sents.forEach((e=>e.close())),this.emit("close"))}close(){var e;null===(e=this.socket)||void 0===e||e.close()}_onOpen(){yu.info("Connected"),this.emit("open")}_onMessage(e){const t=_u.parse(e.data);yu.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){yu.info("Disconnected"),this._tearDown()}_onError(e){yu.info("Error",e)}_handleResponse(e){const t=this.sents.get(e.id);if(e.ok)t.resolve(e.data);else{const r=new Error(e.errorReason);t.reject(r)}}send(e){try{this.socket&&this.socket.send(JSON.stringify(e))}catch(e){}}message(e,t={}){const r=_u.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=_u.createRequest(e,t);return this.send(i),new Promise(((e,t)=>{const n={id:i.id,method:i.method,resolve:t=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),e(t))},reject:e=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(i.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(n.timer),t(new Error("transport closed"))}};this.sents.set(i.id,n)}))}}const wu={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},Su={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},Cu={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},Ru={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},Tu={encodings:[{}]},Pu={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},ku={encodings:[{dtx:!0}]},Du=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:n,vp9On:s}=r;return"audio"===e?wu:t?s?ku:n?Pu:Tu:s?Ru:i?Cu:Su},Eu=()=>{let e=Zt.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var Ou;const Iu=null!==(Ou=Sd.default)&&void 0!==Ou?Ou:Sd;const xu=400;var Mu;const ju="safari"===(null!==(Mu=Sd.default)&&void 0!==Mu?Mu:Sd).browserDetails.browser,Lu=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function Au({devices:e,videoId:t,audioId:r,options:i,type:n="ideal"}){const s=e.filter((e=>"audioinput"===e.kind)),a=e.filter((e=>"videoinput"===e.kind)),o=!r||!s.some((e=>e.deviceId===r)),c=!t||!a.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:i,lowDataMode:n,preferredDeviceIds:s,resolution:a,simulcast:o,widescreen:c}){var d,l;let p=480,u=240;r&&(p=i||ju?720:{min:360,ideal:720}),o&&(!1===r?(p=360,u=270):u=360);const h={audio:Object.assign({},s.audioId&&{deviceId:s.audioId}),video:Object.assign(Object.assign({},s.videoId?{deviceId:s.videoId}:{facingMode:"user"}),{height:n?u:p,frameRate:n&&!o?15:24})};if(i)return(null===(d=h.audio)||void 0===d?void 0:d.deviceId)||(h.audio=!0),null===(l=h.video)||void 0===l||delete l.facingMode,h;if(a){const[e,t,r]=Lu(a);e&&(h.video.width={exact:e}),t&&(h.video.height={exact:t}),r&&(h.video.frameRate={exact:r}),delete h.video.facingMode}else h.video.aspectRatio=c?16/9:4/3;return t&&(h.audio.autoGainControl=!1),e&&(h.audio.echoCancellation=!1),h}(Object.assign({preferredDeviceIds:{audioId:o?null:{[n]:r},videoId:c?null:{[n]:t}}},i));return!1!==r&&s.length||delete d.audio,!1!==t&&a.length||delete d.video,d}const Nu=new vu,Bu=/mobi/i.test(navigator.userAgent);class Fu extends Error{constructor(...e){super(...e),this.name="nodevices"}}function Uu(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw Nu.error(`getUserMedia ${r}`),t})):Promise.reject(new Fu("No provided devices"))}function $u(e,t,r,i){var n,s,a;let o={deviceId:null};return t?(o.label=t.label,t.getSettings&&(o=Object.assign(Object.assign({},o),t.getSettings())),o.deviceId?o:(t.getCapabilities&&(o.deviceId=t.getCapabilities().deviceId),o.deviceId?o:(t.label&&r&&(o.deviceId=null===(s=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===s?void 0:s.deviceId),o.deviceId||(o.deviceId=null===(a=t.getConstraints())||void 0===a?void 0:a.deviceId,o.broken=1),o))):(i&&r&&(o.deviceId=null===(n=r.find((t=>t.deviceId===i&&t.kind===e)))||void 0===n?void 0:n.deviceId),o)}function zu(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function Vu(e,{replaceStream:t,fallback:r=!0}={}){var i;return uu(this,void 0,void 0,(function*(){let n,s,a,o=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=Bu||"video"!==c,l=Au(e),p=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:s,fallback:r,stopTracks:d},e!==n&&{error:String(n)}),e);d&&t&&zu(t,c);try{o=yield Uu(l)}catch(s){if(n=s,!r)throw p(s);if("OverconstrainedError"===s.name){a={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[s.constraint||""]}else if("NotFoundError"===s.name){if(l.audio&&l.video){try{o=yield Uu(Au(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,s)}try{o||(o=yield Uu(Au(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw p(e,s)}}}else if("NotAllowedError"===s.name||"NotReadableError"===s.name||"AbortError"===s.name)if(t&&!d)zu(t,c),a=e;else if("NotAllowedError"!==s.name){try{o=yield Uu(Au(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){Nu.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+s).toLowerCase(),r={audio:"audioId",video:"videoId"}[(null===(i=/(video|audio)/.exec(t))||void 0===i?void 0:i[0])||c||""];if(!o&&r)try{o=yield Uu(Au(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){Nu.warn(`Re-tried ${r} with no constraints, but failed: ${""+e}`)}if(!o){const t=r?[r]:["videoId","audioId"];for(const r of t){try{o=yield Uu(Au(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){Nu.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(o)break}}}}if(a){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};s=Au(Object.assign(Object.assign(Object.assign(Object.assign({},e),a),{options:Object.assign(Object.assign({},e.options),{lax:a.lax})}),t));try{o=yield Uu(s)}catch(e){throw p(e,n)}}if(!o)throw p(n);let u;return t&&(d||zu(t,c),u=function(e,t,r){const i=[];return r&&"audio"!==r||(i.push(...e.getAudioTracks()),t.getAudioTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),r&&"video"!==r||(i.push(...e.getVideoTracks()),t.getVideoTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),i.forEach((t=>{t.replaced=!0,e.removeTrack(t)})),i}(t,o,c),o=t),{error:n&&p(n),stream:o,replacedTracks:u}}))}function qu({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:i,currentSpeakerId:n}){const s=function(e,t){const[r,i]=[e,t].map((e=>e.filter((e=>e.kind&&e.deviceId)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.kind]:Object.assign(Object.assign({},e[t.kind]),{[t.deviceId]:t})})),{}))),n={};return e.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),i[e.kind]&&i[e.kind][e.deviceId]||(n[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),r[e.kind]&&r[e.kind][e.deviceId]?r[e.kind][e.deviceId].label&&r[e.kind][e.deviceId].label!==e.label&&(n[e.kind].changed[e.deviceId]=e):n[e.kind].added[e.deviceId]=e)})),n}(e,t),a={},o={};return[["audioinput",r],["videoinput",i],["audiooutput",n]].forEach((([e,r])=>{const i=s[e=e||""];if(i){if(r){if(i.removed[r]&&(a[e]={deviceId:null},"audiooutput"===e)){const r=t.find((e=>"audiooutput"===e.kind));a[e]={deviceId:null==r?void 0:r.deviceId}}i.changed[r]&&(a[e]={deviceId:r})}if(Object.keys(i.added).length){const[t]=Object.keys(i.added).slice(0,1),r=i.added[t];o[e]={deviceId:r.deviceId,label:r.label,kind:r.kind}}}})),{addedDevices:o,changedDevices:a}}Sd.default;const Gu={id:Id(),connectionNumber:0},Wu=()=>{};let Hu=Wu;const Ku=function(e,t=console){const r=[];let i,n,s,a,o,c,d,l=0,p=!1,u=0;const h={connected:!1,trace:(...e)=>{if(e.push(Date.now()),"customEvent"===e[0]&&"roomSessionId"===e[2].type){const t=c&&c[2].value.roomSessionId,r=e[2].value.roomSessionId;if(c=e,p&&r&&r!==t&&i)return void i.close();r&&(p=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?s=e:"customEvent"===e[0]&&"organizationId"===e[2].type?n=e:"customEvent"===e[0]&&"displayName"===e[2].type?a=e:"customEvent"===e[0]&&"userRole"===e[2].type&&(o=e);i.readyState===WebSocket.OPEN?(l=0,i.send(JSON.stringify(e))):"getstats"===e[0]?u<20&&(u++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),i.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&h.connect()}),1e3*l)},close:()=>{d=!1,i&&i.close()},connect:()=>{d=!0,l+=1,i&&i.close(),h.connected=!0,i=new WebSocket(e+window.location.pathname,"1.0"),i.onerror=e=>{h.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},i.onclose=e=>{h.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),Hu()},i.onopen=()=>{for(Gu.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,Gu])),n&&i.send(JSON.stringify(n)),s&&i.send(JSON.stringify(s)),c&&i.send(JSON.stringify(c)),a&&i.send(JSON.stringify(a)),o&&i.send(JSON.stringify(o));r.length;)i.send(JSON.stringify(r.shift()));u=0}}};return h.connect(),h}("wss://rtcstats.srv.whereby.com"),Ju=Td(Ku.trace,1e4,[""]);Hu=(null==Ju?void 0:Ju.resetDelta)||Wu;const Qu={sendEvent:(e,t)=>{Ku.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{Qu.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{Qu.sendEvent("video_muted",{muted:e})},server:Ku};var Zu;const Yu=null!==(Zu=Sd.default)&&void 0!==Zu?Zu:Sd,Xu=new vu,eh=Yu.browserDetails.browser,th=Yu.browserDetails.version;function rh(e,t){let r=e.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/),i=t.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/);r||(r=e.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/),i=t.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/));for(let e=1;e<r.length;e++)t=t.replace(new RegExp(i[e],"g"),r[e]);return t}function ih(e){return"firefox"!==eh?e:pd.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function nh(e){return function(e,t,r=!1,i=!1){var n,s;try{const a=Wi(e);if((null===(n=null==a?void 0:a.ext)||void 0===n?void 0:n.length)&&a.ext.length>0)return e;if((null==a?void 0:a.media.length)<1)return e;const o=null==a?void 0:a.media.flatMap((e=>e.ext||[])),c=(null===(s=o.find((e=>e.uri===t)))||void 0===s?void 0:s.value)||[...new Set([0,15,...o.map((e=>e.value))])].sort(((e,t)=>e-t)).find(((e,t,r)=>e+1!==r[t+1]))+1;return a.media.forEach((e=>{var n;(r&&"audio"===e.type||i&&"video"===e.type)&&((null===(n=e.ext)||void 0===n?void 0:n.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),Gi(a)}catch(e){console.error("Error during addAbsCaptureTimeExtMap: ",e)}return e}(e,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time",!0,!0)}function sh(e,t,r=console){const i=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!i)return Promise.resolve();const n=i.getParameters();return n.encodings&&0===n.encodings.length?Promise.resolve():(n.encodings||(n.encodings=[{}]),0===t?delete n.encodings[0].maxBitrate:n.encodings[0].maxBitrate=1e3*t,i.setParameters(n).catch((e=>{r.error("setParameters err: ",e)})))}var ah;const oh=null!==(ah=Sd.default)&&void 0!==ah?ah:Sd,ch=new vu;class dh{constructor({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:r,deprioritizeH264Encoding:i}){this.peerConnectionId=e,this.relayCandidateSeen=!1,this.serverReflexiveCandidateSeen=!1,this.publicHostCandidateSeen=!1,this.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this.pc=null,this.wasEverConnected=!1,this.connectionStatus=null,this.stats={totalSent:0,totalRecv:0},this.bandwidth=t||0,this.maximumTurnBandwidth=r,this.pending=[],this.isOperationPending=!1,this.streamIds=[],this.streams=[],this.earlyIceCandidates=[],this.afterConnected=new Promise((e=>{this.registerConnected=e})),this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._deprioritizeH264Encoding=i}setAndGetPeerConnection({clientId:e,constraints:t,peerConnectionConfig:r,shouldAddLocalVideo:i}){return this.peerConnectionConfig=r,this.shouldAddLocalVideo=i,this.clientId=e,this.pc=new RTCPeerConnection(r),this.signalingState=this.pc.signalingState,this.pc.addEventListener("signalingstatechange",(()=>{if(this.signalingState!==this.pc.signalingState&&(this.signalingState=this.pc.signalingState,"stable"===this.pc.signalingState)){this.isOperationPending=!1;const e=this.pending.shift();e&&e.apply()}})),this.pc}addStream(e){this.streamIds.push(e.id),this.streams.push(e),RTCPeerConnection.prototype.addTrack?(e.getAudioTracks().forEach((t=>{this.pc.addTrack(t,e)})),e.getVideoTracks().forEach((t=>{this.pc.addTrack(t,e)}))):this.pc.addStream(e)}addTrack(e,t){t||(t=this.streams[0]),null==t||t.addTrack(e),this.pc.addTrack(e,t)}removeTrack(e){this.streams[0].removeTrack(e);const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)}removeStream(e){for(let t=0;t<this.streamIds.length;t++)this.streamIds[t]===e.id&&(this.streamIds.splice(t,1),this.streams.splice(t,1));this.pc&&(this.pc.removeTrack?e.getTracks().forEach((e=>{const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)})):this.pc.removeStream&&this.pc.removeStream(e))}_setRemoteDescription(e){return this._deprioritizeH264Encoding&&(e.sdp=function(e){return pd.splitSections(e).map((e=>{if("video"!==pd.getKind(e))return e;const t=pd.matchPrefix(e,"a=rtpmap:").map((e=>pd.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=pd.matchPrefix(e,"m=video")[0],i=/(\s\d+)+$/i.exec(r),n=i?i[0]:"",s=[...n.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),a=r.replace(n," "+s);return e.replace(r,a)})).join("")}(e.sdp)),this.srdComplete=this.pc.setRemoteDescription(e),this.srdComplete.then((()=>{this.earlyIceCandidates.forEach((e=>this.pc.addIceCandidate(e))),this.earlyIceCandidates=[]}))}handleOffer(e){if(!this.canModifyPeerConnection())return new Promise((t=>{this.pending.push((()=>this.handleOffer(e).then(t)))}));this.isOperationPending=!0;let t=e.sdp;t=function(e){return"safari"!==eh&&("firefox"!==eh||th&&th>=63||60===th)?e:pd.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==pd.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=ih(t);const r={type:e.type,sdp:t};let i;return this._setRemoteDescription(r).then((()=>this.pc.createAnswer())).then((e=>(i=e,this.pc.setLocalDescription(e)))).then((()=>sh(this.pc,this.bandwidth))).then((()=>i))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=ih(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>sh(this.pc,this.bandwidth)),(e=>{ch.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===oh.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{ch.warn("Failed to add ICE candidate ('%s'): %s",e?e.candidate:null,t)})))})):this.earlyIceCandidates.push(e)}canModifyPeerConnection(){return"stable"===this.pc.signalingState&&!this.isOperationPending}close(){const e=this.pc;if(e){e.oniceconnectionstatechange=null,e.onicecandidate=null,e.ontrack=null;try{e.close()}catch(e){ch.warn("failures during close of session",e)}}}hasConnectedPeerConnection(){return this.pc&&"connected"===this.pc.connectionState}replaceTrack(e,t){const r=this.pc;if(!r)return!1;const i=r.getSenders();function n(r){const n=e=>e&&`id:${e.id},kind:${e.kind},state:${e.readyState}`;ch.warn(`${r}. newTrack:${n(t)}, oldTrack:${n(e)}, sender tracks: ${JSON.stringify(i.map((e=>`s ${n(e.track)}`)))}, sender first codecs: ${JSON.stringify(i.map((e=>(e.getParameters().codecs||[])[0])))}`)}if(i.length||n("No senders!"),e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track)||n("No sender with same kind! Add new track then."),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const s=i[r],a=s.track;if(s||a||n("One of the tracks is null!"),a.id===t.id)return Promise.resolve(t);if(a.id===e.id)return i[r].replaceTrack(t)}return null};let s=r();if(s)return s;let a=null,o=null;s=new Promise(((e,t)=>{a=e,o=t}));let c=0,d=setInterval((()=>uu(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++c&&(clearInterval(d),d=null,n("No sender track to replace"),o("No sender track to replace")));clearInterval(d),d=null;const t=yield e;a(t)}))),1e3);return s}const s=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return s?r.addTrack(t,s):(n("No stream?"),Promise.reject(new Error("replaceTrack: No stream?")))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const s=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=s}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=rh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=rh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e))))}maybeRestrictRelayBandwidth(){var e;-1!==this.maximumTurnBandwidth&&(this.pc.getStats&&(e=this.pc,e.getStats(null).then((e=>{let t,r;return e.forEach((i=>{if("transport"===i.type&&i.selectedCandidatePairId){const n=e.get(i.selectedCandidatePairId);if(!n)return;return t=e.get(n.localCandidateId).candidateType,void(r=e.get(n.remoteCandidateId).candidateType)}"candidate-pair"===i.type&&i.selected&&(t=e.get(i.localCandidateId).candidateType,r=e.get(i.remoteCandidateId).candidateType)})),"relay"===t||"relayed"===t||"relay"===r||"relayed"===r}))).then((e=>{e&&0===this.bandwidth&&this.changeBandwidth(this.maximumTurnBandwidth)})))}changeBandwidth(e){e!==this.bandwidth&&(this.canModifyPeerConnection()?(this.bandwidth=e,this.pc.localDescription&&""!==this.pc.localDescription.type&&sh(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,i,n,s,a,o;return"recvonly"!==(null==e?void 0:e.direction)&&"video"===(null===(i=null===(r=null==e?void 0:e.receiver)||void 0===r?void 0:r.track)||void 0===i?void 0:i.kind)&&!t.includes(null===(s=null===(n=null==e?void 0:e.receiver)||void 0===n?void 0:n.track)||void 0===s?void 0:s.id)&&!t.includes(null===(o=null===(a=null==e?void 0:e.sender)||void 0===a?void 0:a.track)||void 0===o?void 0:o.id)})).forEach((t=>{t.direction=e?"sendonly":"sendrecv"}))}}const lh="fetch_mediaserver_config",ph="start_screenshare",uh="stop_screenshare",hh="audio_enabled",mh="client_left",fh="mediaserver_config",gh="new_client",vh="screenshare_started",_h="screenshare_stopped",yh="room_joined",bh="video_enabled",wh="ice_candidate",Sh="ice_endofcandidates",Ch="ready_to_receive_offer",Rh="sdp_answer",Th="sdp_offer",Ph="pending_client_left",kh="media_quality_changed",Dh="client_connection_status_changed",Eh="stream_added",Oh="rtc_manager_created",Ih="rtc_manager_destroyed",xh="local_stream_track_added",Mh="local_stream_track_removed",jh="connecting",Lh="connection_failed",Ah="connection_successful",Nh="connection_disconnected",Bh="camera",Fh="screen_share";const Uh=57600,$h=2.6041666666666665,zh=921600,Vh=1.0850694444444444;const qh="[a-fA-F\\d:]",Gh=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${qh})|(?<=${qh})(?=\\s|$))`:"",Wh="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",Hh="[a-fA-F\\d]{1,4}",Kh=`\n(?:\n(?:${Hh}:){7}(?:${Hh}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${Hh}:){6}(?:${Wh}|:${Hh}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${Hh}:){5}(?::${Wh}|(?::${Hh}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${Hh}:){4}(?:(?::${Hh}){0,1}:${Wh}|(?::${Hh}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${Hh}:){3}(?:(?::${Hh}){0,2}:${Wh}|(?::${Hh}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${Hh}:){2}(?:(?::${Hh}){0,3}:${Wh}|(?::${Hh}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${Hh}:){1}(?:(?::${Hh}){0,4}:${Wh}|(?::${Hh}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${Hh}){0,5}:${Wh}|(?::${Hh}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Jh=new RegExp(`(?:^${Wh}$)|(?:^${Kh}$)`),Qh=new RegExp(`^${Wh}$`),Zh=new RegExp(`^${Kh}$`),Yh=e=>e&&e.exact?Jh:new RegExp(`(?:${Gh(e)}${Wh}${Gh(e)})|(?:${Gh(e)}${Kh}${Gh(e)})`,"g");Yh.v4=e=>e&&e.exact?Qh:new RegExp(`${Gh(e)}${Wh}${Gh(e)}`,"g"),Yh.v6=e=>e&&e.exact?Zh:new RegExp(`${Gh(e)}${Kh}${Gh(e)}`,"g");var Xh,em,tm="connection_blocked_by_network",rm="ice_ipv6_seen",im="ice_mdns_seen",nm="ice_no_public_ip_gathered",sm="ice_no_public_ip_gathered_3sec",am="ice_restart",om="microphone_not_working",cm="microphone_stopped_working",dm="new_pc",lm="sfu_connection_open",pm="sfu_connection_closed",um="dominant_speaker";const hm=null!==(Xh=Sd.default)&&void 0!==Xh?Xh:Sd,mm=new vu,fm=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=jh,this.stream=null,this.streamId=null}setup(e){return this.stream=e,this.streamId=e.id,this.setVideoEnabled(this.isVideoEnabled&&e.getVideoTracks().length>0),this.setAudioEnabled(this.isAudioEnabled&&e.getAudioTracks().length>0),this}setStatus(e){return this.status=e,this}setVideoEnabled(e){this.isVideoEnabled=e,this.stream&&this.stream.getVideoTracks().forEach((t=>{t.enabled=e}))}setAudioEnabled(e){this.isAudioEnabled=e,this.stream&&this.stream.getAudioTracks().forEach((t=>{t.enabled=e}))}static getCameraId(){return"0"}static getTypeFromId(e){return"0"===""+e?Bh:Fh}}.getCameraId(),gm=hm.browserDetails.browser,vm=hm.browserDetails.version;"firefox"===gm&&hm.browserShim&&"shimGetDisplayMedia"in hm.browserShim&&(null===(em=hm.browserShim)||void 0===em||em.shimGetDisplayMedia(window,"screen"));let _m=!1;"chrome"===gm&&window.document.addEventListener("beforeunload",(()=>{_m=!0}));class ym{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s}){const{name:a,session:o,iceServers:c,sfuServer:d,mediaserverConfigTtlSeconds:l}=t;this._selfId=e,this._roomName=a,this._roomSessionId=o&&o.id,this.peerConnections={},this.localStreams={},this.enabledLocalStreamIds=[],this._screenshareVideoTrackIds=[],this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction=null,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._audioTrackOnEnded=()=>{Qu.sendEvent("audio_ended",{unloading:_m}),this._emit(cm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:d,iceServers:c.iceServers||[],mediaserverConfigTtlSeconds:l}),this.totalSessionsCreated=0}numberOfPeerconnections(){return Object.keys(this.peerConnections).length}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._roomName===t&&r===!!this._sfuServer}supportsScreenShareAudio(){return!0}maybeRestrictRelayBandwidth(e){e.maybeRestrictRelayBandwidth()}addNewStream(e,t){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===fm){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo:t})}disconnectAll(){Object.keys(this.peerConnections).forEach((e=>{this.disconnect(e)})),this.peerConnections={},this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null)}fixChromeAudio(e){if("chrome"!==gm)return;const t=this._getLocalCameraStream(),r=t.getAudioTracks()[0];return r&&"ended"===r.readyState?navigator.mediaDevices.getUserMedia({audio:e}).then((e=>{const i=e.getAudioTracks()[0];return i.enabled=r.enabled,t.removeTrack(r),t.addTrack(i),this.replaceTrack(r,i)})):void 0}setupSocketListeners(){this._socketListenerDeregisterFunctions=[()=>this._clearMediaServersRefresh(),this._serverSocket.on(fh,(e=>{e.error?mm.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Ch,(e=>{this._connect(e.clientId)})),this._serverSocket.on(wh,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):mm.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(Sh,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):mm.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(Th,(e=>{const t=this._getSession(e.clientId);if(!t)return void mm.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(Rh,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(Rh,(e=>{const t=this._getSession(e.clientId);if(!t)return void mm.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(yh,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==fm));if(!t)return;const r=this.localStreams[t];if(!r)return void mm.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(ph,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){Qu.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Qu.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Qu.sendEvent(e,t)}rtcStatsDisconnect(){Qu.server.close()}rtcStatsReconnect(){Qu.server.connected||Qu.server.connect()}setAudioOnly(e){this._isAudioOnlyMode=e,this._forEachPeerConnection((e=>{e.hasConnectedPeerConnection()&&this._withForcedRenegotiation(e,(()=>e.setAudioOnly(this._isAudioOnlyMode,this._screenshareVideoTrackIds)))}))}setRemoteScreenshareVideoTrackIds(e=[]){const t=this._getFirstLocalNonCameraStream();this._screenshareVideoTrackIds=[...(null==t?void 0:t.track)?[t.track.id]:[],...e]}setRoomSessionId(e){this._roomSessionId=e}_setConnectionStatus(e,t,r){const i=e.connectionStatus;i!==t&&e.peerConnectionId!==this._selfId&&(i===Nh&&t===jh||(e.connectionStatus=t,setTimeout((()=>{this._emit(Dh,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=xu,e.playoutDelayHint=.4}))}catch(e){mm.error("Error during setting jitter buffer target:",e)}}_emitServerEvent(e,t,r){this._serverSocket.emit(e,t,r)}_emit(e,t){this._emitter.emit(e,t)}_addEnabledLocalStreamId(e){this.enabledLocalStreamIds.push(e)}_deleteEnabledLocalStreamId(e){const t=this.enabledLocalStreamIds.indexOf(e);-1!==t&&this.enabledLocalStreamIds.splice(t,1)}_getSession(e){return e in this.peerConnections?this.peerConnections[e]:null}_getOrCreateSession(e,t){let r=this.peerConnections[e];if(void 0===r){const i="safari"===gm&&vm&&vm>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new dh({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[fm]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==fm))}_isScreensharingLocally(){return this._getNonLocalCameraStreamIds().length>0}_getFirstLocalNonCameraStream(){const e=this._getNonLocalCameraStreamIds();return 0===e.length?null:this.localStreams[e[0]]}_transformIncomingSdp(e,t){return{type:e.type,sdp:e.sdpU}}_transformOutgoingSdp(e){return{type:e.type,sdpU:e.sdp}}_createSession({clientId:e,initialBandwidth:t,isOfferer:r,peerConnectionId:i,shouldAddLocalVideo:n}){if(!i)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const s=this._getOrCreateSession(i,t),a={optional:[]};"chrome"===gm&&a.optional.push({googCpuOveruseDetection:!0}),a.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),a.optional.push({rtcStatsClientId:this._selfId}),a.optional.push({rtcStatsPeerId:i}),a.optional.push({rtcStatsConferenceId:this._roomName});const o={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;o.iceServers=o.iceServers.map((e=>{const t=Object.assign({},e);return t.url&&(t.url=t.url.replace(/:[^?]*/,r)),t.urls&&(t.urls=t.urls.map((e=>e.replace(/:[^?]*/,r)))),t}))}if(this._features.useOnlyTURN){o.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[this._features.useOnlyTURN];e&&(o.iceServers=o.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===gm&&(o.sdpSemantics="unified-plan");const c=s.setAndGetPeerConnection({constraints:a,peerConnectionConfig:o,shouldAddLocalVideo:n,clientId:e});setTimeout((()=>this._emit(dm)),0),c.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===s.streamIds.indexOf(r.id)&&(s.streamIds.push(r.id),this._emit(Eh,{clientId:e,stream:r}),s.connectionStatus===Ah&&setTimeout((()=>{this._emit(Dh,{streamIds:s.streamIds,clientId:e,status:s.connectionStatus,previous:jh})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=s.connectionStatus;switch(c.iceConnectionState){case"checking":t=jh;break;case"connected":case"completed":t=Ah,s.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!s.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===gm&&c.localDescription&&"answer"===c.localDescription.type)&&(s.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(s)),this._isAudioOnlyMode&&s.setAudioOnly(!0,this._screenshareVideoTrackIds),s.registerConnected();break;case"disconnected":t=Nh,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,s)}),2e3);break;case"failed":t=Lh,r!==t&&this._maybeRestartIce(e,s),null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(tm);break;default:return}this._setConnectionStatus(s,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==Iu.browserDetails.browser||Iu.browserDetails.browser<58||"closed"===e.signalingState)return Promise.resolve(!1);const t=e.getSenders().some((e=>e.track&&"audio"===e.track.kind)),r=e.getReceivers().some((e=>e.track&&"audio"===e.track.kind));return e.getStats(null).then((e=>{let i=!1;return e.forEach((e=>{"outbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!t?"inbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!r||0===e.bytesReceived&&(i="inbound"):0===e.bytesSent&&(i="outbound")})),i}))})(s.pc).then((t=>{!1!==t&&this._emit(om,{failureDirection:t,clientId:e})}))}),3e3),s.registerConnected();break;case"failed":const t=Lh;null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(tm),this._setConnectionStatus(s,t,e)}};const d=this.localStreams[fm];return n&&d&&s.addStream(d),n&&Object.keys(this.localStreams).forEach((e=>{if(e===fm)return;const t=this.localStreams[e];r?s.addStream(t):s.afterConnected.then((()=>{this._emitServerEvent(ph,{receiverId:s.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(s,(()=>s.addStream(t)))}))})),s}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):mm.warn("No RTCPeerConnection in RTCManager.disconnect()",e)}_forEachPeerConnection(e){Object.values(this.peerConnections).forEach((t=>{e(t)}))}_addStreamToPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.addStream(e)))}))}_addTrackToPeerConnections(e,t){this._forEachPeerConnection((r=>{this._withForcedRenegotiation(r,(()=>r.addTrack(e,t)))}))}_replaceTrackToPeerConnections(e,t){const r=[];return this._forEachPeerConnection((i=>{if(!i.hasConnectedPeerConnection()){mm.info("Session doesn't have a connected PeerConnection, adding pending action!");const n=this._pendingActionsForConnectedPeerConnections;if(!n)return void mm.warn("No pending action is created to repalce track, because the pending actions array is null");const s=new Promise(((r,s)=>{n.push((()=>{const n=i.replaceTrack(e,t);if(!n)return mm.error("replaceTrack returned false!"),void s("ReplaceTrack returned false");n.then((e=>r(e))).catch((e=>s(e)))}))}));return void r.push(s)}const n=i.replaceTrack(e,t);n?r.push(n):mm.error("replaceTrack returned false!")})),Promise.all(r)}_removeStreamFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeStream(e)))}))}_removeTrackFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeTrack(e)))}))}_addLocalStream(e,t){this._addEnabledLocalStreamId(e),this.localStreams[e]=t}_removeLocalStream(e){delete this.localStreams[e],this._deleteEnabledLocalStreamId(e)}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitServerEvent(lh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(mm.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!0),this._negotiatePeerConnection(e,t),Promise.resolve(t)}_maybeRestartIce(e,t){const r=t.pc;"disconnected"!==r.iceConnectionState&&"failed"!==r.iceConnectionState||"offer"===r.localDescription.type&&(t.wasEverConnected=!1,t.relayCandidateSeen=!1,t.serverReflexiveCandidateSeen=!1,t.publicHostCandidateSeen=!1,t.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this._emit(am),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,i){try{const n=e.getTransceivers().filter((e=>{var t,r;return"audio"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));n.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const t=RTCRtpSender.getCapabilities("audio");for(let e=0;e<t.codecs.length;e++)if(i&&"audio/red"===t.codecs[e].mimeType.toLowerCase()){t.codecs.unshift(t.codecs.splice(e,1)[0]);break}void 0!==e.setCodecPreferences&&e.setCodecPreferences(t.codecs)}));const s=e.getTransceivers().filter((e=>{var t,r;return"video"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));s.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const i=RTCRtpSender.getCapabilities("video");for(let e=0;e<i.codecs.length;e++){if(t&&"video/vp9"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}if(r&&"video/av1"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}}void 0!==e.setCodecPreferences&&e.setCodecPreferences(i.codecs)}))}catch(e){mm.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void mm.warn("No RTCPeerConnection in negotiatePeerConnection()",e);const i=t.pc;if(!t.canModifyPeerConnection())return void t.pending.push((()=>{this._negotiatePeerConnection(e,t,r)}));t.isOperationPending=!0;const{vp9On:n,av1On:s,redOn:a,rtpAbsCaptureTimeOn:o}=this._features;(n||s||a)&&this._setCodecPreferences(i,n,s,a),i.createOffer(r||this.offerOptions).then((r=>{o&&(r.sdp=nh(r.sdp)),(n||a)&&"firefox"===gm&&(r.sdp=function(e,t,r){var i,n;try{const s=Wi(e);if(Array.isArray(null==s?void 0:s.media)){const e=s.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let n=0;n<t.length;n++)if(r&&"red"===t[n].codec){const r=null===(i=e.payloads)||void 0===i?void 0:i.split(" "),s=null==r?void 0:r.indexOf(""+t[n].payload);s&&-1!==s&&s>=0&&(null==r||r.unshift(r.splice(s,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const a=s.media.find((e=>"video"===e.type));if(Array.isArray(null==a?void 0:a.rtp)){const e=a.rtp;for(let r=0;r<e.length;r++)if(t&&"VP9"===e[r].codec){const t=null===(n=a.payloads)||void 0===n?void 0:n.split(" "),i=null==t?void 0:t.indexOf(""+e[r].payload);i&&-1!==i&&i>=0&&(null==t||t.unshift(t.splice(i,1)[0]),a.payloads=null==t?void 0:t.join(" "))}}}return Gi(s)}catch(e){Xu.error("setCodecPreferenceSDP error:",e)}}(r.sdp,n,a)),this._emitServerEvent(Th,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===gm&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{mm.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{mm.warn("RTCPeerConnection.createOffer() failed to create local offer",e)}))}_withForcedRenegotiation(e,t){const r=e.pc,i=r.onnegotationneeded;r.onnegotiationneeded=null,t(),this._negotiatePeerConnection(e.clientId,e),setTimeout((()=>r.onnegotiationneeded=i),0)}_changeBandwidthForAllClients(e){let t=this.numberOfPeerconnections();if(e&&(t+=1),0===t)return 0;t>7&&(t=7);let r=this._features.bandwidth?parseInt(this._features.bandwidth,10):{1:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?512:256,4:192,5:128,6:128,7:64}[t];if(void 0===r)return 0;if(this._features.adjustBitratesFromResolution){const e=this._getLocalCameraStream();if(e){const t=e&&e.getVideoTracks()[0];if(t){const{width:e,height:i,frameRate:n}=t.getSettings();if(e&&i&&n){const t=Math.round(function(e,t,r){let i=e*t;i<Uh&&(i=Uh),i>zh&&(i=zh);let n=$h;i>zh?n=Vh:i>Uh&&(n+=-17582143775720163e-22*(i-Uh));let s=e*t*n;return r<=15?s*=.7:r<=24&&(s*=.9),s}(e,i,n)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,i){const n=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:i}),s=n.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(s);const a=this.localStreams[fm];return r&&a&&!a.getVideoTracks().length&&this._stoppedVideoTrack&&s.addTrack(this._stoppedVideoTrack,a),s.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(sm)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},s.onicecandidate=t=>{var r,i;if(t.candidate){switch(null===(r=t.candidate)||void 0===r?void 0:r.type){case"host":const e=null===(i=null==t?void 0:t.candidate)||void 0===i?void 0:i.address;try{if(Yh.v4({exact:!0}).test(e)){Nl(e).isPublicIp&&(n.publicHostCandidateSeen=!0)}else if(Yh.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new xd.Address6(e.replace(/^\[(.*)\]/,"$1"));n.ipv6HostCandidateSeen=!0,"Global"===t.getScope()&&(n.publicHostCandidateSeen=!0),t.isTeredo()&&(n.ipv6HostCandidateTeredoSeen=!0),t.is6to4()&&(n.ipv6HostCandidate6to4Seen=!0)}else{const t=e.replace(/.local/,"");t&&Vl(t,4)&&(n.mdnsHostCandidateSeen=!0)}}catch(e){mm.info("Error during parsing candidates! Error: ",{error:e})}break;case"srflx":n.serverReflexiveCandidateSeen||(n.serverReflexiveCandidateSeen=!0);break;case"relay":case"relayed":n.relayCandidateSeen||(n.relayCandidateSeen=!0)}this._emitServerEvent(wh,{receiverId:e,message:t.candidate})}else this._emitServerEvent(Sh,{receiverId:e}),n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(nm),n.ipv6HostCandidateSeen&&this._emit(rm,{teredoSeen:n.ipv6HostCandidateTeredoSeen,sixtofourSeen:n.ipv6HostCandidate6to4Seen}),n.mdnsHostCandidateSeen&&this._emit(im)},s.onnegotiationneeded=()=>{"new"!==s.iceConnectionState&&n.connectionStatus&&this._negotiatePeerConnection(e,n)},n}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r}){let i=this._getSession(t);if(i&&e!==t)return i;let n=i&&i.bandwidth||0;return i?(mm.warn("Replacing peer session",t),this._cleanup(t)):n=this._changeBandwidthForAllClients(!0),i=this._createP2pSession(t,n,r),this._emitServerEvent(Ch,{receiverId:t}),i}disconnect(e){this._cleanup(e),this._changeBandwidthForAllClients(!1);0===this.numberOfPeerconnections()&&setTimeout((()=>{0===this.numberOfPeerconnections()&&this.rtcStatsDisconnect()}),6e4)}updateStreamResolution(){}stopOrResumeAudio(){}_handleStopOrResumeVideo({enable:e,track:t}){e?this._stoppedVideoTrack?(this._replaceTrackToPeerConnections(this._stoppedVideoTrack,t),delete this._stoppedVideoTrack):this._addTrackToPeerConnections(t):this._stoppedVideoTrack=t}stopOrResumeVideo(e,t){if(["chrome","safari"].includes(gm))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(Mh,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);else if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;if(!r)return;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emit(xh,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(ph,{streamId:e,hasAudioTrack:!!t.getAudioTracks().length}),this._wasScreenSharing=!0,this._addStreamToPeerConnections(t)}removeStream(e,t,r){this._removeLocalStream(e),this._removeStreamFromPeerConnections(t),this._wasScreenSharing=!1,this._emitServerEvent(uh,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var bm=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:i=1,C:n=1.2}={R:.01,Q:2,A:1.1,B:1,C:1.2}){this.R=e,this.Q=t,this.A=r,this.C=n,this.B=i,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{const r=this.predict(t),i=this.uncertainty(),n=i*this.C*(1/(this.C*i*this.C+this.Q));this.x=r+n*(e-this.C*r),this.cov=i-n*this.C*i}return this.x}predict(e=0){return this.A*this.x+this.B*e}uncertainty(){return this.A*this.cov*this.A+this.R}lastMeasurement(){return this.x}setMeasurementNoise(e){this.Q=e}setProcessNoise(e){this.R=e}},calculateStd:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,r)=>e.concat(Math.pow(r-t,2))),[]).reduce(((e,t)=>e+t),0)/e.length},createACFCalculator:()=>{let e=-1,t=0,r=0;return i=>{const n=i.reduce(((e,t)=>e+t),0)/i.length;if(e=e<0?n:.95*e+.05*n,++r<2)return t=n,0;const s=(n-e)*(t-e);return t=n,s}},standardDeviation:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return{mean:t,SD:Math.sqrt(e.reduce(((e,r)=>e+Math.pow(r-t,2)),0)/e.length)}},variance:(e,t=!1)=>{const r=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,t)=>e.concat(Math.pow(t-r,2))),[]).reduce(((e,t)=>e+t),0)/(e.length-(t?0:1))}});const wm={minDecibels:-80,maxDecibels:-10,smoothingTimeConstant:.8,aggSize:1,sampleRate:10,reportRate:2,bins:32,bands:[[0,1,2,3],[4,5,6,7]],separateTrack:{autoGainControl:!1,noiseSupression:!1},binFormula:"bin",scoreFormula:"300 * bands[1].avg / Math.max(bands[1].avg + bands[0].avg, 0.01)",outFormula:"score"},Sm=new vu;const Cm=new vu,Rm=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class Tm extends Ft{constructor(){super(),this._clients={},this._producers={},this._startMonitor()}close(){clearInterval(this._intervalHandle),delete this._intervalHandle,this._producers={},this._clients={}}_startMonitor(){this._intervalHandle=setInterval((()=>{Object.entries(this._producers).forEach((([e,t])=>{this._evaluateClient(e,t)}))}),600)}_evaluateClient(e,t){this._clients[e]||(this._clients[e]={audio:{currentQuality:Rm.ok,trend:[]},video:{currentQuality:Rm.ok,trend:[]}}),this._evaluateProducer(e,Object.values(t).filter((e=>"audio"===e.kind)),"audio"),this._evaluateProducer(e,Object.values(t).filter((e=>"video"===e.kind)),"video")}_evaluateProducer(e,t,r){if(0===t.length)return;const i=t.reduce(((e,t)=>e+t.score),0)/t.length,n=this._evaluateScore(i);this._updateTrend(n,this._clients[e][r])&&this.emit(kh,{clientId:e,kind:r,quality:n})}_updateTrend(e,t){return t.trend.push(e),t.trend.length>3&&t.trend.shift(),!(e===t.currentQuality||!t.trend.every((e=>e!==t.currentQuality)))&&(t.currentQuality=e,!0)}addProducer(e,t){e&&t&&"string"==typeof e&&"string"==typeof t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):Cm.warn("Missing clientId or producerId")}removeProducer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addConsumer(e,t){e&&t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):Cm.warn("Missing clientId or consumerId")}removeConsumer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addProducerScore(e,t,r,i){Array.isArray(i)&&0!==i.length&&!i.some((e=>!e||!e.hasOwnProperty("score")||"number"!=typeof e.score||isNaN(e.score)))?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.map((e=>e.score)))}:Cm.warn("Unexpected producer score format")}addConsumerScore(e,t,r,i){i&&i.hasOwnProperty("producerScores")&&Array.isArray(i.producerScores)?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.producerScores)}:Cm.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?Rm.warning:e<=7&&e>0?Rm.critical:Rm.ok}_calcAvgProducerScore(e){try{if(!Array.isArray(e)||0===e.length)return 0;let t=0,r=0;return e.forEach((e=>{e>0&&(t+=e,r++)})),0===t||0===r?0:t/r}catch(e){return Cm.error(e),0}}}var Pm;const km=null!==(Pm=Sd.default)&&void 0!==Pm?Pm:Sd,Dm=new vu,Em=km.browserDetails.browser;let Om=!1;const Im=Id(),xm=Id();"chrome"===Em&&window.document.addEventListener("beforeunload",(()=>Om=!0));class Mm{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s,eventClaim:a,deviceHandlerFactory:o}){const{session:c,iceServers:d,sfuServer:l,mediaserverConfigTtlSeconds:p}=t;this._selfId=e,this._room=t,this._roomSessionId=null==c?void 0:c.id,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._eventClaim=a,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=o?new Zt.Device({handlerFactory:o}):new Zt.Device({handlerName:Eu()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._consumers=new Map,this._dataConsumers=new Map,this._localStreamDeregisterFunction=null,this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._micProducer=null,this._micProducerPromise=null,this._micPaused=!1,this._micScoreProducer=null,this._micScoreProducerPromise=null,this._webcamProducer=null,this._webcamProducerPromise=null,this._webcamPaused=!1,this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._sndTransportIceRestartPromise=null,this._rcvTransportIceRestartPromise=null,this._colocation=null,this._stopCameraTimeout=null,this._audioTrackOnEnded=()=>{Qu.sendEvent("audio_ended",{unloading:Om}),this._emitToPWA(cm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new Tm,this._qualityMonitor.on(kh,(e=>{this._emitToPWA(kh,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var i,n;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(i=this._sendTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),null===(n=this._receiveTransport)||void 0===n||n.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(lh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(fh,(e=>{e.error?Dm.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(yh,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(ph,{streamId:xm,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){const e=`wss://${this._features.sfuServerOverrideHost||[this._sfuServer.url]}?${new URLSearchParams({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"}).toString()}`;this._vegaConnection=new bu(e),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;Dm.info("_onClose()"),null===(e=this._sendTransport)||void 0===e||e.close(),null===(t=this._receiveTransport)||void 0===t||t.close(),this._sendTransport=null,this._receiveTransport=null,this._streamIdToVideoConsumerId.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(pm)}_join(){return uu(this,void 0,void 0,(function*(){Dm.info("join()"),this._emitToPWA(lm);try{const{routerRtpCapabilities:e}=yield this._vegaConnection.request("getCapabilities");this._routerRtpCapabilities||(((e,t)=>{const{vp9On:r,h264On:i}=t;if(r){const{preferredPayloadType:t}=e.codecs.find((e=>"video/vp9"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}else if(i){const{preferredPayloadType:t}=e.codecs.find((e=>"video/h264"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}})(e,this._features),this._routerRtpCapabilities=e,yield this._mediasoupDevice.load({routerRtpCapabilities:e})),this._vegaConnection.message("setCapabilities",{rtpCapabilities:this._mediasoupDevice.rtpCapabilities}),this._colocation&&this._vegaConnection.message("setColocation",{colocation:this._colocation}),yield Promise.all([this._createTransport(!0),this._createTransport(!1)]);const t=[];!this._micTrack||this._micProducer||this._micProducerPromise||t.push(this._internalSendMic()),!this._webcamTrack||this._webcamProducer||this._webcamProducerPromise||t.push(this._internalSendWebcam()),!this._screenVideoTrack||this._screenVideoProducer||this._screenVideoProducerPromise||t.push(this._internalSendScreenVideo()),!this._screenAudioTrack||this._screenAudioProducer||this._screenAudioProducerPromise||t.push(this._internalSendScreenAudio()),yield Promise.all(t)}catch(e){Dm.error("_join() [error:%o]",e)}}))}_createTransport(e){return uu(this,void 0,void 0,(function*(){const t=e?"createSendTransport":"createRecvTransport",r=yield this._vegaConnection.request("createTransport",{producing:e,consuming:!e,enableTcp:!0,enableUdp:!0,preferUdp:!0,sctpParameters:{enableSctp:!0,numSctpStreams:{OS:1024,MIS:1024},maxSctpMessageSize:262144,sctpSendBufferSize:262144}});r.iceServers=this._iceServers,((e,t)=>{if(!t.useOnlyTURN)return;e.iceTransportPolicy="relay";const r={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[t.useOnlyTURN];r&&(e.iceServers=e.iceServers.filter((e=>e.url&&e.url.match(r))))})(r,this._features);const i=this._mediasoupDevice[t](r),n=t=>uu(this,void 0,void 0,(function*(){if(Dm.info(`Transport ConnectionStateChanged ${t}`),"disconnected"===t||"failed"===t)if(e){if(this._sndTransportIceRestartPromise)return;this._sndTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._sndTransportIceRestartPromise=null}))}else{if(this._rcvTransportIceRestartPromise)return;this._rcvTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._rcvTransportIceRestartPromise=null}))}}));i.on("connect",(({dtlsParameters:e},t)=>{var r;null===(r=this._vegaConnection)||void 0===r||r.message("connectTransport",{transportId:i.id,dtlsParameters:e}),t()})).on("connectionstatechange",n),i.observer.once("close",(()=>{i.removeListener(n)})),e?(i.on("produce",(({kind:e,rtpParameters:t,appData:r},n,s)=>uu(this,void 0,void 0,(function*(){var a;try{const{paused:s}=r,{id:o}=yield null===(a=this._vegaConnection)||void 0===a?void 0:a.request("produce",{transportId:i.id,kind:e,rtpParameters:t,paused:s,appData:r});n({id:o})}catch(e){s(e)}})))),i.on("producedata",(({appData:e,sctpStreamParameters:t},r,n)=>uu(this,void 0,void 0,(function*(){var s;try{const{id:n}=yield null===(s=this._vegaConnection)||void 0===s?void 0:s.request("produceData",{transportId:i.id,sctpStreamParameters:t,appData:e});r({id:n})}catch(e){n(e)}})))),this._sendTransport=i):this._receiveTransport=i}))}_restartIce(e,t=0){return uu(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void Dm.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void Dm.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void Dm.info("_restartIce: Connection is healthy ICE restart no loneger needed!");const{iceRestartStarted:r}=e.appData,i=Date.now();if(Number.isFinite(r)&&i-r<3500)return;if(e.appData.iceRestartStarted=i,5<=t)return void Dm.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void Dm.info("_restartIce: Connection is undefined");const{iceParameters:n}=yield this._vegaConnection.request("restartIce",{transportId:e.id});Dm.info("_restartIce: ICE restart iceParameters received from SFU: ",n);const s=yield e.restartIce({iceParameters:n}).then((()=>null)).catch((e=>e));if(s)switch(Dm.error(`_restartIce: ICE restart failed: ${s}`),s.message){case"missing transportId":case"no such transport":break;default:yield new Promise((e=>{setTimeout((()=>{e(void 0)}),Math.min(3500*Math.pow(2,t),6e4))})),yield this._restartIce(e,t+1)}else yield new Promise((e=>{setTimeout((()=>{e(void 0)}),6e4*Math.min(8,t+1))})),"failed"!==e.connectionState&&"disconnected"!==e.connectionState||(yield this._restartIce(e,t+1))}))}_internalSendMic(){return uu(this,void 0,void 0,(function*(){Dm.info("_internalSendMic()"),this._micProducerPromise=(()=>uu(this,void 0,void 0,(function*(){try{if(!this._micTrack||!this._sendTransport||this._micProducer)return void(this._micProducerPromise=null);const e=this._micPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._micTrack,disableTrackOnPause:!1,stopTracks:!1},Du("audio",!1,this._features)),{appData:{streamId:Im,sourceClientId:this._selfId,screenShare:!1,source:"mic",paused:e}}));e?t.pause():t.resume(),this._micProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;Dm.info('micProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._micProducer=null,this._micProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._micTrack!==this._micProducer.track&&(yield this._replaceMicTrack()),this._micPaused!==this._micProducer.paused&&this._pauseResumeMic()}catch(e){Dm.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return uu(this,void 0,void 0,(function*(){Dm.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>uu(this,void 0,void 0,(function*(){try{if(!this._micProducer||!this._colocation||this._micScoreProducer)return void(this._micScoreProducerPromise=null);const e=yield this._sendTransport.produceData({ordered:!1,maxPacketLifeTime:3e3,label:"micscore",appData:{producerId:this._micProducer.id,clientId:this._selfId}});this._micScoreProducer=e,e.observer.once("close",(()=>{var t;Dm.info('micScoreProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeDataProducers",{dataProducerIds:[e.id]})),this._micScoreProducer=null,this._micScoreProducerPromise=null}))}catch(e){Dm.error("micScoreProducer failed:%o",e)}finally{this._micScoreProducerPromise=null,this._micProducer&&this._colocation||this._stopMicScoreProducer()}})))()}))}_stopMicScoreProducer(){this._stopProducer(this._micScoreProducer),this._micScoreProducer=null}_replaceMicTrack(){var e;return uu(this,void 0,void 0,(function*(){Dm.info("_replaceMicTrack()"),this._micTrack&&this._micProducer&&!this._micProducer.closed&&this._micProducer.track!==this._micTrack&&(yield this._micProducer.replaceTrack({track:this._micTrack}),null===(e=this._micAnalyser)||void 0===e||e.setTrack(this._micTrack),yield this._replaceMicTrack())}))}_pauseResumeMic(){var e,t;Dm.info("_pauseResumeMic()"),this._micProducer&&!this._micProducer.closed&&this._micPaused!==this._micProducer.paused&&(this._micPaused?(this._micProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._micProducer.id]})):(this._micProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._micProducer.id]})),this._pauseResumeMic())}_sendMic(e){return uu(this,void 0,void 0,(function*(){return Dm.info("_sendMic() [track:%o]",e),this._micTrack=e,this._micProducer?yield this._replaceMicTrack():this._micProducerPromise?void 0:this._sendTransport?yield this._internalSendMic():void 0}))}_sendMicScore(e){if(!isNaN(e)&&isFinite(e))if(this._micScoreProducer){if(this._micScoreProducer.closed)return void this._stopMicScoreProducer();try{this._micScoreProducer.send(JSON.stringify({score:e}))}catch(e){Dm.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){return uu(this,void 0,void 0,(function*(){Dm.info("_internalSendWebcam()"),this._webcamProducerPromise=(()=>uu(this,void 0,void 0,(function*(){try{if(!this._webcamTrack||"live"!==this._webcamTrack.readyState||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},Du("video",!1,this._features)),{appData:{streamId:Im,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}}));e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;Dm.info('webcamProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&(yield this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){Dm.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(yield this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))()}))}_replaceWebcamTrack(){return uu(this,void 0,void 0,(function*(){Dm.info("_replaceWebcamTrack()"),this._webcamTrack&&(!this._webcamProducer&&this._webcamTrack.enabled&&(yield this._internalSendWebcam()),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack()))}))}_pauseResumeWebcam(){var e,t;Dm.info("_pauseResumeWebcam()"),this._webcamProducer&&!this._webcamProducer.closed&&this._webcamPaused!==this._webcamProducer.paused&&(this._webcamPaused?(this._webcamProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._webcamProducer.id]})):(this._webcamProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._webcamProducer.id]})),this._pauseResumeWebcam())}_sendWebcam(e){return uu(this,void 0,void 0,(function*(){return Dm.info("_sendWebcam() [track:%o]",e),this._webcamTrack=e,this._webcamProducer?yield this._replaceWebcamTrack():this._webcamProducerPromise?void 0:this._sendTransport?yield this._internalSendWebcam():void 0}))}_internalSendScreenVideo(){return uu(this,void 0,void 0,(function*(){Dm.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>uu(this,void 0,void 0,(function*(){try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},Du("video",!0,this._features)),{appData:{streamId:xm,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;Dm.info('screenVideoProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack())}catch(e){Dm.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return uu(this,void 0,void 0,(function*(){Dm.info("_replaceScreenVideoTrack()"),this._screenVideoTrack&&this._screenVideoProducer&&!this._screenVideoProducer.closed&&this._screenVideoProducer.track!==this._screenVideoTrack&&(yield this._screenVideoProducer.replaceTrack({track:this._screenVideoTrack}),yield this._replaceScreenVideoTrack())}))}_sendScreenVideo(e){return uu(this,void 0,void 0,(function*(){return Dm.info("_sendScreenVideo() [track:%o]",e),this._screenVideoTrack=e,this._screenVideoProducer?yield this._replaceScreenVideoTrack():this._screenVideoProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenVideo():void 0}))}_internalSendScreenAudio(){return uu(this,void 0,void 0,(function*(){Dm.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>uu(this,void 0,void 0,(function*(){try{if(!this._screenAudioTrack||!this._sendTransport||this._screenAudioProducer)return void(this._screenAudioProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenAudioTrack,disableTrackOnPause:!1,stopTracks:!1},Du("audio",!0,this._features)),{appData:{streamId:xm,sourceClientId:this._selfId,screenShare:!0,source:"screenaudio",paused:!1}}));this._screenAudioProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;Dm.info('screenAudioProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenAudioTrack!==this._screenAudioProducer.track&&(yield this._replaceScreenAudioTrack())}catch(e){Dm.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return uu(this,void 0,void 0,(function*(){Dm.info("_replaceScreenAudioTrack()"),this._screenAudioTrack&&this._screenAudioProducer&&!this._screenAudioProducer.closed&&this._screenAudioProducer.track!==this._screenAudioTrack&&(yield this._screenAudioProducer.replaceTrack({track:this._screenAudioTrack}),yield this._replaceScreenAudioTrack())}))}_sendScreenAudio(e){return uu(this,void 0,void 0,(function*(){return Dm.info("_sendScreenAudio() [track:%o]",e),this._screenAudioTrack=e,this._screenAudioProducer?yield this._replaceScreenAudioTrack():this._screenAudioProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenAudio():void 0}))}_stopProducer(e){Dm.info("_stopProducer()"),e&&!e.closed&&(e.appData.localClosed=!0,e.close())}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._room.name===t&&Boolean(r)}setEventClaim(e){var t;this._eventClaim=e,null===(t=this._vegaConnection)||void 0===t||t.message("eventClaim",{eventClaim:e})}setColocation(e){var t;this._colocation=e,null===(t=this._vegaConnection)||void 0===t||t.message("setColocation",{colocation:e}),e||!this._micScoreProducer||this._micScoreProducerPromise||this._stopMicScoreProducer(),this._syncMicAnalyser(),Qu.sendEvent("colocation_changed",{colocation:e})}setAudioOnly(e){var t;null===(t=this._vegaConnection)||void 0===t||t.message(e?"enableAudioOnly":"disableAudioOnly")}setRemoteScreenshareVideoTrackIds(){}setRoomSessionId(e){this._roomSessionId=e}disconnect(e,t,r){var i;if(Dm.info("disconnect() [clientIdOrStreamId:%s, eventClaim:%s]",e,r),this._clientStates.has(e)){const t=this._clientStates.get(e);t.hasAcceptedWebcamStream=!1,t.hasAcceptedScreenStream=!1,this._syncIncomingStreamsWithPWA(e)}r&&(this._eventClaim=r,null===(i=this._vegaConnection)||void 0===i||i.message("eventClaim",{eventClaim:r}))}replaceTrack(e,t){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){Dm.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(uh,{streamId:xm,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_onMicAnalyserScoreUpdated(e){var t,r;null===(r=null===(t=this._micAnalyserDebugger)||void 0===t?void 0:t.onScoreUpdated)||void 0===r||r.call(t,e),this._sendMicScore(this._micPaused?0:e.out)}addNewStream(e,t,r,i){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0];e&&this._sendWebcam(e),n&&(this._sendMic(n),this._syncMicAnalyser(),this._startMonitoringAudioTrack(n)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const s=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",s),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",s)}}else{const e=t.getVideoTracks()[0],r=t.getAudioTracks()[0];e&&this._sendScreenVideo(e),r&&this._sendScreenAudio(r),this._emitScreenshareStarted()}}_syncMicAnalyser(){if(!this._micTrack||!this._colocation||this._micAnalyser)return this._micAnalyser&&!this._colocation?(this._micAnalyser.close(),void(this._micAnalyser=null)):void 0;this._micAnalyser=function({micTrack:e,params:t,onScoreUpdated:r}){const i=new AudioContext;let n=null,s=null,a=null,o=!1;const c=e=>uu(this,void 0,void 0,(function*(){if(a&&o&&a.stop(),o=!1,e&&t.separateTrack)try{const r=yield navigator.mediaDevices.getUserMedia({audio:Object.assign({deviceId:null==a?void 0:a.getSettings().deviceId},t.separateTrack),video:!1});e=r.getAudioTracks()[0],o=!0}catch(e){Sm.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(a=e,s&&(s.disconnect(),s=null),e){const t=new MediaStream([e]);s=i.createMediaStreamSource(t),s.connect(n)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},wm),e),!n||n.fftSize!==2*t.bins){let e=null;n&&(e=a,c(null)),n=i.createAnalyser(),n.fftSize=2*t.bins,e&&c(e)}const s=new Uint8Array(n.frequencyBinCount),o=[];n.minDecibels=t.minDecibels,n.maxDecibels=t.maxDecibels,n.smoothingTimeConstant=t.smoothingTimeConstant;const l=t.initScript&&new Function("f","setTrack","lastTrack",t.initScript.join("\n")),p=t.scoreScript&&new Function("bins","g","f",t.scoreScript.join("\n")),u=t.scoreFormula&&new Function("bands",`return ${t.scoreFormula}`),h=t.outFormula&&new Function("score","avg","max","scores",`return ${t.outFormula}`),m=t.binFormula&&new Function("bin","index",`return ${t.binFormula}`);let f=0;const g=l&&l(bm,c,a);d=setInterval((()=>{n.getByteFrequencyData(s);let e=0;if(u){const r=t.bands.map((e=>{const t=e.map((e=>m(s[e]/255,e)));return{avg:t.reduce(((e,t)=>e+t),0)/e.length,min:t.reduce(((e,t)=>Math.min(e,t/255)),Number.MAX_VALUE),max:t.reduce(((e,t)=>Math.max(e,t/255)),0)}}));e=u(r)||0}else p&&(e=p(s,g,bm),isNaN(e)&&(e=0));if(o.push(e),o.length>t.aggSize&&o.shift(),f++,f>=t.reportRate){f=0;const t=o.reduce(((e,t)=>Math.max(e,t)),0),i=o.reduce(((e,t)=>e+t),0)/o.length,n=h(e,i,t,o);r({bins:s,score:e,max:t,avg:i,out:n})}}),1e3/t.sampleRate)};return l(t),c(e),{setParams:l,setTrack:c,close(){c(null),clearInterval(d),i.close()}}}({micTrack:this._micTrack,onScoreUpdated:this._onMicAnalyserScoreUpdated.bind(this)})}stopOrResumeAudio(e,t){Dm.info("stopOrResumeAudio() [enabled:%s]",t),this._micPaused=!t,this._pauseResumeMic()}_handleStopOrResumeVideo({enable:e,track:t}){e?this._sendWebcam(t):this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track===t&&(this._stopProducer(this._webcamProducer),this._webcamProducer=null,this._webcamTrack=null)}stopOrResumeVideo(e,t){if(Dm.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(Em))if(t){if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emitToPWA(xh,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(Mh,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){Dm.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();const r=this._getOrCreateClientState(t);e!==t?(r.hasAcceptedScreenStream=!0,r.hasEmittedScreenStream=!1):(r.hasAcceptedWebcamStream=!0,r.hasEmittedWebcamStream=!1),this._syncIncomingStreamsWithPWA(t)}updateStreamResolution(e,t,{width:r,height:i}){var n,s,a,o;Dm.info("updateStreamResolution()",{streamId:e,width:r,height:i});const c=this._streamIdToVideoConsumerId.get(e),d=this._consumers.get(c);if(!d)return;let l=0;this._consumers.forEach((e=>{var t,r;e._closed||e._paused||"webcam"!==(null===(t=e._appData)||void 0===t?void 0:t.source)&&"screenvideo"!==(null===(r=e._appData)||void 0===r?void 0:r.source)||l++}));let p=2;/T3/.test((null===(a=null===(s=null===(n=d._rtpParameters)||void 0===n?void 0:n.encodings)||void 0===s?void 0:s[0])||void 0===a?void 0:a.scalabilityMode)||"")&&(p=3);const u=Math.max(r,i);let h=u>=480?u>=960?2:1:0,m=p-1;u<100&&(m=Math.max(p-2,0)),l>8&&0===h&&(m=Math.max(p-2,0)),l<4&&u>300&&0===h&&(h=1),d.appData.spatialLayer===h&&d.appData.temporalLayer===m||(d.appData.spatialLayer=h,d.appData.temporalLayer=m,null===(o=this._vegaConnection)||void 0===o||o.message("setConsumersPreferredLayers",{consumerIds:[c],spatialLayer:h,temporalLayer:m}))}disconnectAll(){var e,t,r,i;this._reconnect=!1,this._reconnectTimeOut&&(clearTimeout(this._reconnectTimeOut),this._reconnectTimeOut=null),this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null),this._socketListenerDeregisterFunctions=[],null===(e=this._vegaConnection)||void 0===e||e.removeAllListeners(),null===(t=this._vegaConnection)||void 0===t||t.close(),null===(r=this._sendTransport)||void 0===r||r.close(),null===(i=this._receiveTransport)||void 0===i||i.close(),this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._streamIdToVideoConsumerId.clear(),this._mediasoupDevice=null}sendAudioMutedStats(e){Qu.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Qu.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Qu.sendEvent(e,t)}rtcStatsDisconnect(){Qu.server.close()}rtcStatsReconnect(){Qu.server.connected||Qu.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_onMessage(e){return uu(this,void 0,void 0,(function*(){const{method:t,data:r}=e;return Promise.resolve().then((()=>{switch(t){case"consumerReady":return this._onConsumerReady(r);case"consumerClosed":return this._onConsumerClosed(r);case"consumerPaused":return this._onConsumerPaused(r);case"consumerResumed":return this._onConsumerResumed(r);case"dataConsumerReady":return this._onDataConsumerReady(r);case"dataConsumerClosed":return this._onDataConsumerClosed(r);case"dominantSpeaker":return this._onDominantSpeaker(r);case"consumerScore":return this._onConsumerScore(r);case"producerScore":return this._onProducerScore(r);default:return void Dm.info(`unknown message method "${t}"`)}})).catch((e=>{Dm.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return uu(this,void 0,void 0,(function*(){Dm.info("_onConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consume(e);if(t.pause(),t.appData.localPaused=!0,t.appData.spatialLayer=2,this._consumers.set(t.id,t),this._qualityMonitor.addConsumer(t.appData.sourceClientId,t.id),t.observer.once("close",(()=>{this._consumers.delete(t.id),this._qualityMonitor.removeConsumer(t.appData.sourceClientId,t.id),this._consumerClosedCleanup(t)})),this._features.increaseIncomingMediaBufferOn&&t.rtpReceiver)try{t.rtpReceiver.jitterBufferTarget=xu,t.rtpReceiver.playoutDelayHint=.4}catch(e){Dm.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:i,streamId:n}=t.appData,s=this._getOrCreateClientState(r);i?(s.hasEmittedScreenStream=!1,s.screenShareStreamId=n):(s.hasEmittedWebcamStream=!1,s.camStreamId=n);let a=i?s.screenStream:s.webcamStream;a&&a.inboundId===n||(a=new MediaStream,a.inboundId=n,i?s.screenStream=a:s.webcamStream=a),"video"===t.kind&&this._streamIdToVideoConsumerId.set(a.id,t.id),a.addTrack(t.track),this._syncIncomingStreamsWithPWA(r)}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return uu(this,void 0,void 0,(function*(){Dm.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){Dm.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){Dm.info("_onConsumerResumed()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!1,t.appData.localPaused||t.resume())}_onConsumerScore({consumerId:e,kind:t,score:r}){Dm.info("_onConsumerScore()",{consumerId:e,kind:t,score:r});const{appData:{sourceClientId:i}}=this._consumers.get(e)||{appData:{}};i&&this._qualityMonitor.addConsumerScore(i,e,t,r)}_onProducerScore({producerId:e,kind:t,score:r}){Dm.info("_onProducerScore()",{producerId:e,kind:t,score:r}),[this._micProducer,this._webcamProducer,this._screenVideoProducer,this._screenAudioProducer].forEach((i=>{(null==i?void 0:i.id)===e&&this._qualityMonitor.addProducerScore(this._selfId,e,t,r)}))}_onDataConsumerReady(e){return uu(this,void 0,void 0,(function*(){Dm.info("_onDataConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consumeData(e);this._dataConsumers.set(t.id,t),t.once("close",(()=>{this._dataConsumers.delete(t.id)}));const{clientId:r}=t.appData;t.on("message",(e=>{var r;if(!this._micAnalyserDebugger)return;if("string"!=typeof e)return;const{score:i}=JSON.parse(e);i&&(null===(r=this._micAnalyserDebugger)||void 0===r||r.onConsumerScore(t.appData.clientId,i))})),this._syncIncomingStreamsWithPWA(r)}))}_onDataConsumerClosed({dataConsumerId:e,reason:t}){return uu(this,void 0,void 0,(function*(){Dm.info("_onDataConsumerClosed()",{dataConsumerId:e,reason:t});const r=this._dataConsumers.get(e);null==r||r.close()}))}_onDominantSpeaker({consumerId:e}){const t=this._consumers.get(e);if(!t)return;const{sourceClientId:r}=t.appData;this._emitToPWA(um,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,i=this._getOrCreateClientState(t),n=r?i.screenStream:i.webcamStream;n&&(n.removeTrack(e.track),0===n.getTracks().length&&(this._streamIdToVideoConsumerId.delete(n.id),r?(i.screenStream=null,i.hasEmittedScreenStream=!1,i.screenShareStreamId=null):(i.hasEmittedWebcamStream=!1,i.camStreamId=null)))}_syncIncomingStreamsWithPWA(e){var t,r;const i=this._getOrCreateClientState(e),{webcamStream:n,screenStream:s,hasEmittedWebcamStream:a,hasEmittedScreenStream:o,hasAcceptedWebcamStream:c,hasAcceptedScreenStream:d,screenShareStreamId:l,camStreamId:p}=i,u=[],h=[];this._consumers.forEach((t=>{if(t.appData.sourceClientId!==e)return;const r=t.appData.screenShare?d:c;!t.appData.localPaused!==r&&(r?(t.appData.remotePaused||t.resume(),t.appData.localPaused=!1,h.push(t.id)):(t.pause(),t.appData.localPaused=!0,u.push(t.id)))})),u.length>0&&(null===(t=this._vegaConnection)||void 0===t||t.message("pauseConsumers",{consumerIds:u})),h.length>0&&(null===(r=this._vegaConnection)||void 0===r||r.message("resumeConsumers",{consumerIds:h})),n&&!a&&c&&(this._emitToPWA(Eh,{clientId:e,stream:n,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),s&&!o&&d&&(this._emitToPWA(Eh,{clientId:e,stream:s,streamId:l,streamType:"screenshare"}),i.hasEmittedScreenStream=!0)}_getOrCreateClientState(e){let t=this._clientStates.get(e);return t||(t={hasAcceptedWebcamStream:!1,hasAcceptedScreenStream:!1,hasEmittedWebcamStream:!1,hasEmittedScreenStream:!1,webcamStream:null,screenStream:null,screenShareStreamId:null,camStreamId:null},this._clientStates.set(e,t)),t}_emitToPWA(e,t){this._emitter.emit(e,t)}_emitToSignal(e,t,r){this._serverSocket.emit(e,t,r)}shouldAcceptStreamsFromBothSides(){return!0}setMicAnalyserDebugger(e){this._micAnalyserDebugger=e}setMicAnalyserParams(e){var t;null===(t=this._micAnalyser)||void 0===t||t.setParams(e)}hasClient(e){return this._clientStates.has(e)}}class jm{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(yh,(({room:n,selfId:s,error:a,eventClaim:o})=>{if(a)return;const c={selfId:s,room:n,emitter:e,serverSocket:t,webrtcProvider:r,features:i,eventClaim:o,deviceHandlerFactory:null==i?void 0:i.deviceHandlerFactory},d=!!n.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:s,roomName:n.name,isSfu:d}))return void(this.currentManager.setEventClaim&&o&&this.currentManager.setEventClaim(o));this.currentManager.disconnectAll(),e.emit(Ih)}let l=null;l=d?new Mm(c):new ym(c),l.setupSocketListeners(),e.emit(Oh,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(Ih))}}var Lm;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(Lm||(Lm={}));class Am extends Error{constructor(e){super(e.message),this.name="AssertionError",this.code="ERR_ASSERTION",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,Error.captureStackTrace&&Error.captureStackTrace(this,e.stackStartFn)}}function Nm(e){if(e.message instanceof Error)throw e.message;throw new Am(e)}function Bm(...e){!function(e,t,r,i){if(!r){let n=!1;if(0===t)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;const s=new Am({actual:r,expected:!0,message:i,operator:"==",stackStartFn:e});throw s.generatedMessage=n,s}}(Bm,e.length,...e)}const Fm={fail:e=>{Nm({actual:"fail()",expected:"fail() should not be called",message:e,operator:"fail",stackStartFn:Fm.fail})},ok:Bm,notEqual:function e(t,r,i){if(arguments.length<2)throw new Error("'actual' and 'expected' arguments are required");t==r&&Nm({actual:t,expected:r,message:i,operator:"!=",stackStartFn:e})}};Fm.ok=Bm;const Um=new vu;class $m extends Ft{constructor(e){super(),this._socket=e,this._clients={},this._signalDisconnectTime=void 0,this.rtcManager=void 0,this.metrics={roomJoinedLate:0,pendingClientCanceled:0,evaluationFailed:0,roomJoined:0},e.on("disconnect",(()=>{this._signalDisconnectTime=Date.now()})),e.on(yh,(e=>this._onRoomJoined(e))),e.on(gh,(e=>this._onNewClient(e))),e.on(mh,(e=>this._onClientLeft(e))),e.on(Ph,(e=>this._onPendingClientLeft(e))),e.on(hh,(e=>this._onAudioEnabled(e))),e.on(bh,(e=>this._onVideoEnabled(e))),e.on(vh,(e=>this._onScreenshareChanged(e,!0))),e.on(_h,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return uu(this,void 0,void 0,(function*(){if(!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(yh,e);if(!e.selfId)return void this.emit(yh,e);const i=null===(r=e.room.clients.find((t=>e.selfId===t.id)))||void 0===r?void 0:r.deviceId;if(!i)return void this.emit(yh,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(yh,e);const n=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>n)return this._resetClientState(e),this.emit(yh,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const s=yield;e.room.clients.forEach((t=>{var r;try{if(t.id===e.selfId)return;if(!this._clients[t.id])return void this._addClientToState(t);if(!(null===(r=this.rtcManager)||void 0===r?void 0:r.hasClient(t.id)))return;if(this._hasClientStateChanged({clientId:t.id,webcam:t.isVideoEnabled,mic:t.isAudioEnabled,screenShare:t.streams.length>1}))return;if(this._wasClientSendingMedia(t.id)&&!this._isClientMediaActive(s,t.id))return;t.mergeWithOldClientState=!0}catch(e){Um.error("Failed to evaluate if we should merge client state %o",e),this.metrics.evaluationFailed++}})),e.room.clients.forEach((e=>{e.isPendingToLeave&&this._onPendingClientLeft({clientId:e.id})})),this.metrics.roomJoined++,this.emit(yh,e)}))}_onClientLeft(e){var t;const{clientId:r}=e,i=this._clients[r];i&&(clearTimeout(i.timeout),delete this._clients[r]),null===(t=this.rtcManager)||void 0===t||t.disconnect(r,null,e.eventClaim),this.emit(mh,e)}_onPendingClientLeft(e){const{clientId:t}=e,r=this._clients[t];r?r.isPendingToLeave||(r.isPendingToLeave=!0,this._wasClientSendingMedia(t)&&(r.checkActiveMediaAttempts=0,this._abortIfNotActive(e))):Um.warn(`client ${t} not found`)}_onNewClient(e){const{client:{id:t,deviceId:r}}=e,i=this._clients[t];if(i&&i.isPendingToLeave)return clearTimeout(i.timeoutHandler),i.isPendingToLeave=!1,void this.metrics.pendingClientCanceled++;this._getPendingClientsByDeviceId(r).forEach((e=>{clearTimeout(e.timeoutHandler),e.isPendingToLeave=void 0,this.emit(mh,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(gh,e)}_abortIfNotActive(e){return uu(this,void 0,void 0,(function*(){const{clientId:t}=e;let r=this._clients[t];if(!(null==r?void 0:r.isPendingToLeave))return;if(r.checkActiveMediaAttempts++,r.checkActiveMediaAttempts>3)return;(yield this._checkIsActive(t))?r.timeoutHandler=setTimeout((()=>this._abortIfNotActive(e)),500):(r=this._clients[t],(null==r?void 0:r.isPendingToLeave)&&(clearTimeout(r.timeoutHandler),delete this._clients[t],this.emit(mh,e)))}))}_checkIsActive(e){return uu(this,void 0,void 0,(function*(){const t=yield;return this._isClientMediaActive(t,e)}))}_isClientMediaActive(e,t){const r=null==e?void 0:e[t];let i=!1;return r&&Object.entries(r.tracks).forEach((([e,t])=>{"probator"!==e&&Object.values(t.ssrcs).forEach((e=>{(e.bitrate||0)>0&&(i=!0)}))})),i}_onAudioEnabled(e){const{clientId:t,isAudioEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isAudioEnabled:r})}_onVideoEnabled(e){const{clientId:t,isVideoEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isVideoEnabled:r})}_onScreenshareChanged(e,t){const{clientId:r}=e;this._clients[r]=Object.assign(Object.assign({},this._clients[r]||{}),{isScreenshareEnabled:t})}_hasClientStateChanged({clientId:e,webcam:t,mic:r,screenShare:i}){const n=this._clients[e];if(!n)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==n.isVideoEnabled||(r!==n.isAudioEnabled||i!==n.isScreenshareEnabled)}_addClientToState(e){this._clients[e.id]=Object.assign(Object.assign({},this._clients[e.id]||{}),{isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled,isScreenshareEnabled:e.streams.length>1,deviceId:e.deviceId,isPendingToLeave:e.isPendingToLeave,clientId:e.id})}_wasClientSendingMedia(e){const t=this._clients[e];if(!t)throw new Error(`Client ${e} not found in ReconnectManager state`);return t.isAudioEnabled||t.isVideoEnabled||t.isScreenshareEnabled}_getPendingClientsByDeviceId(e){return Object.values(this._clients).filter((t=>t.deviceId===e&&t.isPendingToLeave))}_resetClientState(e){this._clients={},e.room.clients.forEach((t=>{t.id!==e.selfId&&this._addClientToState(t)}))}}var zm;const Vm=null!==(zm=Sd.default)&&void 0!==zm?zm:Sd;class qm{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=pu(e,Object.assign({path:"/protocol/socket.io/v4",randomizationFactor:.5,reconnectionDelay:250,reconnectionDelayMax:5e3,timeout:5e3,transports:["websocket"],withCredentials:!0},t)),this._socket.io.on("reconnect",(()=>{this._socket.sendBuffer=[]})),this._socket.io.on("reconnect_attempt",(()=>{this._wasConnectedUsingWebsocket?(this._socket.io.opts.transports=["websocket"],"safari"!==Vm.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new $m(this._socket)),this._socket.on("connect",(()=>{"websocket"===this.getTransport()&&(this._wasConnectedUsingWebsocket=!0,this.noopKeepaliveInterval||(this.noopKeepaliveInterval=setInterval((()=>{try{this._socket.connected&&this._socket.io.engine.sendPacket("noop")}catch(e){}}),2e3)))})),this._socket.on("disconnect",(()=>{this.noopKeepaliveInterval&&(clearInterval(this.noopKeepaliveInterval),this.noopKeepaliveInterval=null)}))}setRtcManager(e){this._reconnectManager&&(this._reconnectManager.rtcManager=e)}connect(){this.isConnected()||this.isConnecting()||this._socket.open()}disconnect(){this._socket.disconnect()}disconnectOnConnect(){this._socket.once("connect",(()=>{this._socket.disconnect()}))}emit(e,...t){this._socket.emit.apply(this._socket,arguments)}emitIfConnected(e,t){this.isConnected()&&this.emit(e,t)}getTransport(){return this._socket&&this._socket.io&&this._socket.io.engine&&this._socket.io.engine.transport&&this._socket.io.engine.transport.name}getManager(){return this._socket.io}isConnecting(){return this._socket&&this._socket.connecting}isConnected(){return this._socket&&this._socket.connected}on(e,t){const r=[yh,mh,gh];return this._reconnectManager&&r.includes(e)?this._interceptEvent(e,t):(this._socket.on(e,t),()=>{this._socket.off(e,t)})}once(e,t){this._socket.once(e,t)}off(e,t){this._socket.off(e,t)}_interceptEvent(e,t){return this._reconnectManager&&this._reconnectManager.on(e,t),()=>{this._reconnectManager&&this._reconnectManager.removeListener(e,t)}}getGlitchFreeMetrics(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.metrics}}const Gm=[{pattern:/^(?:([^.]+)[.])?(server:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?(localhost:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?((\d+[.]){3}:?\d*)$/,separator:"."},{pattern:/^(?:([^.]+)-)?(ip-[^.]*[.](?:hereby[.]dev|rfc1918[.]disappear[.]at)(?::\d+|))$/,separator:"-"},{pattern:/^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/,separator:"."}];function Wm({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,n=".";for(const{separator:t,pattern:s}of Gm){const a=s.exec(e);if(a){r=a[1]||"",i=a[2],n=t;break}}const s=r?`${r}${n}${i}`:i;return{domain:i,domainWithSeparator:`${n}${i}`,organizationDomain:s,organization:`${t}//${s}`,service:`${t}//${i}`,subdomain:r}}Wm(window&&window.location);var Hm={exports:{}};Hm.exports=function(e){return(e instanceof Buffer?e:Buffer.from(e.toString(),"binary")).toString("base64")};var Km=Ht(Hm.exports);function Jm(e,t){return function(){return e.apply(t,arguments)}}const{toString:Qm}=Object.prototype,{getPrototypeOf:Zm}=Object,Ym=(e=>t=>{const r=Qm.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Xm=e=>(e=e.toLowerCase(),t=>Ym(t)===e),ef=e=>t=>typeof t===e,{isArray:tf}=Array,rf=ef("undefined");const nf=Xm("ArrayBuffer");const sf=ef("string"),af=ef("function"),of=ef("number"),cf=e=>null!==e&&"object"==typeof e,df=e=>{if("object"!==Ym(e))return!1;const t=Zm(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},lf=Xm("Date"),pf=Xm("File"),uf=Xm("Blob"),hf=Xm("FileList"),mf=Xm("URLSearchParams");function ff(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let i,n;if("object"!=typeof e&&(e=[e]),tf(e))for(i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else{const n=r?Object.getOwnPropertyNames(e):Object.keys(e),s=n.length;let a;for(i=0;i<s;i++)a=n[i],t.call(null,e[a],a,e)}}function gf(e,t){t=t.toLowerCase();const r=Object.keys(e);let i,n=r.length;for(;n-- >0;)if(i=r[n],t===i.toLowerCase())return i;return null}const vf="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,_f=e=>!rf(e)&&e!==vf;const yf=(bf="undefined"!=typeof Uint8Array&&Zm(Uint8Array),e=>bf&&e instanceof bf);var bf;const wf=Xm("HTMLFormElement"),Sf=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),Cf=Xm("RegExp"),Rf=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),i={};ff(r,((r,n)=>{let s;!1!==(s=t(r,n,e))&&(i[n]=s||r)})),Object.defineProperties(e,i)},Tf="abcdefghijklmnopqrstuvwxyz",Pf="0123456789",kf={DIGIT:Pf,ALPHA:Tf,ALPHA_DIGIT:Tf+Tf.toUpperCase()+Pf};const Df=Xm("AsyncFunction");var Ef={isArray:tf,isArrayBuffer:nf,isBuffer:function(e){return null!==e&&!rf(e)&&null!==e.constructor&&!rf(e.constructor)&&af(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||af(e.append)&&("formdata"===(t=Ym(e))||"object"===t&&af(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&nf(e.buffer),t},isString:sf,isNumber:of,isBoolean:e=>!0===e||!1===e,isObject:cf,isPlainObject:df,isUndefined:rf,isDate:lf,isFile:pf,isBlob:uf,isRegExp:Cf,isFunction:af,isStream:e=>cf(e)&&af(e.pipe),isURLSearchParams:mf,isTypedArray:yf,isFileList:hf,forEach:ff,merge:function e(){const{caseless:t}=_f(this)&&this||{},r={},i=(i,n)=>{const s=t&&gf(r,n)||n;df(r[s])&&df(i)?r[s]=e(r[s],i):df(i)?r[s]=e({},i):tf(i)?r[s]=i.slice():r[s]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&ff(arguments[e],i);return r},extend:(e,t,r,{allOwnKeys:i}={})=>(ff(t,((t,i)=>{r&&af(t)?e[i]=Jm(t,r):e[i]=t}),{allOwnKeys:i}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,i)=>{let n,s,a;const o={};if(t=t||{},null==e)return t;do{for(n=Object.getOwnPropertyNames(e),s=n.length;s-- >0;)a=n[s],i&&!i(a,e,t)||o[a]||(t[a]=e[a],o[a]=!0);e=!1!==r&&Zm(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:Ym,kindOfTest:Xm,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const i=e.indexOf(t,r);return-1!==i&&i===r},toArray:e=>{if(!e)return null;if(tf(e))return e;let t=e.length;if(!of(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let i;for(;(i=r.next())&&!i.done;){const r=i.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const i=[];for(;null!==(r=e.exec(t));)i.push(r);return i},isHTMLForm:wf,hasOwnProperty:Sf,hasOwnProp:Sf,reduceDescriptors:Rf,freezeMethods:e=>{Rf(e,((t,r)=>{if(af(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const i=e[r];af(i)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},i=e=>{e.forEach((e=>{r[e]=!0}))};return tf(e)?i(e):i(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:gf,global:vf,isContextDefined:_f,ALPHABET:kf,generateString:(e=16,t=kf.ALPHA_DIGIT)=>{let r="";const{length:i}=t;for(;e--;)r+=t[Math.random()*i|0];return r},isSpecCompliantForm:function(e){return!!(e&&af(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,i)=>{if(cf(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[i]=e;const n=tf(e)?[]:{};return ff(e,((e,t)=>{const s=r(e,i+1);!rf(s)&&(n[t]=s)})),t[i]=void 0,n}}return e};return r(e,0)},isAsyncFn:Df,isThenable:e=>e&&(cf(e)||af(e))&&af(e.then)&&af(e.catch)};function Of(e,t,r,i,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),i&&(this.request=i),n&&(this.response=n)}Ef.inherits(Of,Error,{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:Ef.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const If=Of.prototype,xf={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{xf[e]={value:e}})),Object.defineProperties(Of,xf),Object.defineProperty(If,"isAxiosError",{value:!0}),Of.from=(e,t,r,i,n,s)=>{const a=Object.create(If);return Ef.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),Of.call(a,e.message,t,r,i,n),a.cause=e,a.name=e.name,s&&Object.assign(a,s),a};function Mf(e){return Ef.isPlainObject(e)||Ef.isArray(e)}function jf(e){return Ef.endsWith(e,"[]")?e.slice(0,-2):e}function Lf(e,t,r){return e?e.concat(t).map((function(e,t){return e=jf(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const Af=Ef.toFlatObject(Ef,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Nf(e,t,r){if(!Ef.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(r=Ef.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Ef.isUndefined(t[e])}))).metaTokens,n=r.visitor||d,s=r.dots,a=r.indexes,o=(r.Blob||"undefined"!=typeof Blob&&Blob)&&Ef.isSpecCompliantForm(t);if(!Ef.isFunction(n))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(Ef.isDate(e))return e.toISOString();if(!o&&Ef.isBlob(e))throw new Of("Blob is not supported. Use a Buffer instead.");return Ef.isArrayBuffer(e)||Ef.isTypedArray(e)?o&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,r,n){let o=e;if(e&&!n&&"object"==typeof e)if(Ef.endsWith(r,"{}"))r=i?r:r.slice(0,-2),e=JSON.stringify(e);else if(Ef.isArray(e)&&function(e){return Ef.isArray(e)&&!e.some(Mf)}(e)||(Ef.isFileList(e)||Ef.endsWith(r,"[]"))&&(o=Ef.toArray(e)))return r=jf(r),o.forEach((function(e,i){!Ef.isUndefined(e)&&null!==e&&t.append(!0===a?Lf([r],i,s):null===a?r:r+"[]",c(e))})),!1;return!!Mf(e)||(t.append(Lf(n,r,s),c(e)),!1)}const l=[],p=Object.assign(Af,{defaultVisitor:d,convertValue:c,isVisitable:Mf});if(!Ef.isObject(e))throw new TypeError("data must be an object");return function e(r,i){if(!Ef.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+i.join("."));l.push(r),Ef.forEach(r,(function(r,s){!0===(!(Ef.isUndefined(r)||null===r)&&n.call(t,r,Ef.isString(s)?s.trim():s,i,p))&&e(r,i?i.concat(s):[s])})),l.pop()}}(e),t}function Bf(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Ff(e,t){this._pairs=[],e&&Nf(e,this,t)}const Uf=Ff.prototype;function $f(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function zf(e,t,r){if(!t)return e;const i=r&&r.encode||$f,n=r&&r.serialize;let s;if(s=n?n(t,r):Ef.isURLSearchParams(t)?t.toString():new Ff(t,r).toString(i),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}Uf.append=function(e,t){this._pairs.push([e,t])},Uf.toString=function(e){const t=e?function(t){return e.call(this,t,Bf)}:Bf;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class Vf{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Ef.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var qf={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Gf={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Ff,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const Wf="undefined"!=typeof window&&"undefined"!=typeof document,Hf=(Kf="undefined"!=typeof navigator&&navigator.product,Wf&&["ReactNative","NativeScript","NS"].indexOf(Kf)<0);var Kf;const Jf="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var Qf={...Object.freeze({__proto__:null,hasBrowserEnv:Wf,hasStandardBrowserEnv:Hf,hasStandardBrowserWebWorkerEnv:Jf}),...Gf};function Zf(e){function t(e,r,i,n){let s=e[n++];if("__proto__"===s)return!0;const a=Number.isFinite(+s),o=n>=e.length;if(s=!s&&Ef.isArray(i)?i.length:s,o)return Ef.hasOwnProp(i,s)?i[s]=[i[s],r]:i[s]=r,!a;i[s]&&Ef.isObject(i[s])||(i[s]=[]);return t(e,r,i[s],n)&&Ef.isArray(i[s])&&(i[s]=function(e){const t={},r=Object.keys(e);let i;const n=r.length;let s;for(i=0;i<n;i++)s=r[i],t[s]=e[s];return t}(i[s])),!a}if(Ef.isFormData(e)&&Ef.isFunction(e.entries)){const r={};return Ef.forEachEntry(e,((e,i)=>{t(function(e){return Ef.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),i,r,0)})),r}return null}const Yf={transitional:qf,adapter:["xhr","http"],transformRequest:[function(e,t){const r=t.getContentType()||"",i=r.indexOf("application/json")>-1,n=Ef.isObject(e);n&&Ef.isHTMLForm(e)&&(e=new FormData(e));if(Ef.isFormData(e))return i?JSON.stringify(Zf(e)):e;if(Ef.isArrayBuffer(e)||Ef.isBuffer(e)||Ef.isStream(e)||Ef.isFile(e)||Ef.isBlob(e))return e;if(Ef.isArrayBufferView(e))return e.buffer;if(Ef.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(n){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Nf(e,new Qf.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,i){return Qf.isNode&&Ef.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=Ef.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Nf(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return n||i?(t.setContentType("application/json",!1),function(e,t,r){if(Ef.isString(e))try{return(t||JSON.parse)(e),Ef.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Yf.transitional,r=t&&t.forcedJSONParsing,i="json"===this.responseType;if(e&&Ef.isString(e)&&(r&&!this.responseType||i)){const r=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw Of.from(e,Of.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Qf.classes.FormData,Blob:Qf.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Ef.forEach(["delete","get","head","post","put","patch"],(e=>{Yf.headers[e]={}}));var Xf=Yf;const eg=Ef.toObjectSet(["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"]);const tg=Symbol("internals");function rg(e){return e&&String(e).trim().toLowerCase()}function ig(e){return!1===e||null==e?e:Ef.isArray(e)?e.map(ig):String(e)}function ng(e,t,r,i,n){return Ef.isFunction(i)?i.call(this,t,r):(n&&(t=r),Ef.isString(t)?Ef.isString(i)?-1!==t.indexOf(i):Ef.isRegExp(i)?i.test(t):void 0:void 0)}class sg{constructor(e){e&&this.set(e)}set(e,t,r){const i=this;function n(e,t,r){const n=rg(t);if(!n)throw new Error("header name must be a non-empty string");const s=Ef.findKey(i,n);(!s||void 0===i[s]||!0===r||void 0===r&&!1!==i[s])&&(i[s||t]=ig(e))}const s=(e,t)=>Ef.forEach(e,((e,r)=>n(e,r,t)));return Ef.isPlainObject(e)||e instanceof this.constructor?s(e,t):Ef.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let r,i,n;return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),r=e.substring(0,n).trim().toLowerCase(),i=e.substring(n+1).trim(),!r||t[r]&&eg[r]||("set-cookie"===r?t[r]?t[r].push(i):t[r]=[i]:t[r]=t[r]?t[r]+", "+i:i)})),t})(e),t):null!=e&&n(t,e,r),this}get(e,t){if(e=rg(e)){const r=Ef.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)t[i[1]]=i[2];return t}(e);if(Ef.isFunction(t))return t.call(this,e,r);if(Ef.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=rg(e)){const r=Ef.findKey(this,e);return!(!r||void 0===this[r]||t&&!ng(0,this[r],r,t))}return!1}delete(e,t){const r=this;let i=!1;function n(e){if(e=rg(e)){const n=Ef.findKey(r,e);!n||t&&!ng(0,r[n],n,t)||(delete r[n],i=!0)}}return Ef.isArray(e)?e.forEach(n):n(e),i}clear(e){const t=Object.keys(this);let r=t.length,i=!1;for(;r--;){const n=t[r];e&&!ng(0,this[n],n,e,!0)||(delete this[n],i=!0)}return i}normalize(e){const t=this,r={};return Ef.forEach(this,((i,n)=>{const s=Ef.findKey(r,n);if(s)return t[s]=ig(i),void delete t[n];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(n):String(n).trim();a!==n&&delete t[n],t[a]=ig(i),r[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Ef.forEach(this,((r,i)=>{null!=r&&!1!==r&&(t[i]=e&&Ef.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[tg]=this[tg]={accessors:{}}).accessors,r=this.prototype;function i(e){const i=rg(e);t[i]||(!function(e,t){const r=Ef.toCamelCase(" "+t);["get","set","has"].forEach((i=>{Object.defineProperty(e,i+r,{value:function(e,r,n){return this[i].call(this,t,e,r,n)},configurable:!0})}))}(r,e),t[i]=!0)}return Ef.isArray(e)?e.forEach(i):i(e),this}}sg.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Ef.reduceDescriptors(sg.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),Ef.freezeMethods(sg);var ag=sg;function og(e,t){const r=this||Xf,i=t||r,n=ag.from(i.headers);let s=i.data;return Ef.forEach(e,(function(e){s=e.call(r,s,n.normalize(),t?t.status:void 0)})),n.normalize(),s}function cg(e){return!(!e||!e.__CANCEL__)}function dg(e,t,r){Of.call(this,null==e?"canceled":e,Of.ERR_CANCELED,t,r),this.name="CanceledError"}Ef.inherits(dg,Of,{__CANCEL__:!0});var lg=Qf.hasStandardBrowserEnv?{write(e,t,r,i,n,s){const a=[e+"="+encodeURIComponent(t)];Ef.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),Ef.isString(i)&&a.push("path="+i),Ef.isString(n)&&a.push("domain="+n),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function pg(e,t){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var ug=Qf.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let r;function i(r){let i=r;return e&&(t.setAttribute("href",i),i=t.href),t.setAttribute("href",i),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return r=i(window.location.href),function(e){const t=Ef.isString(e)?i(e):e;return t.protocol===r.protocol&&t.host===r.host}}():function(){return!0};function hg(e,t){let r=0;const i=function(e,t){e=e||10;const r=new Array(e),i=new Array(e);let n,s=0,a=0;return t=void 0!==t?t:1e3,function(o){const c=Date.now(),d=i[a];n||(n=c),r[s]=o,i[s]=c;let l=a,p=0;for(;l!==s;)p+=r[l++],l%=e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-n<t)return;const u=d&&c-d;return u?Math.round(1e3*p/u):void 0}}(50,250);return n=>{const s=n.loaded,a=n.lengthComputable?n.total:void 0,o=s-r,c=i(o);r=s;const d={loaded:s,total:a,progress:a?s/a:void 0,bytes:o,rate:c||void 0,estimated:c&&a&&s<=a?(a-s)/c:void 0,event:n};d[t?"download":"upload"]=!0,e(d)}}var mg="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){let i=e.data;const n=ag.from(e.headers).normalize();let s,a,{responseType:o,withXSRFToken:c}=e;function d(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(Ef.isFormData(i))if(Qf.hasStandardBrowserEnv||Qf.hasStandardBrowserWebWorkerEnv)n.setContentType(!1);else if(!1!==(a=n.getContentType())){const[e,...t]=a?a.split(";").map((e=>e.trim())).filter(Boolean):[];n.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",r=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.set("Authorization","Basic "+btoa(t+":"+r))}const p=pg(e.baseURL,e.url);function u(){if(!l)return;const i=ag.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,r){const i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(new Of("Request failed with status code "+r.status,[Of.ERR_BAD_REQUEST,Of.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}((function(e){t(e),d()}),(function(e){r(e),d()}),{data:o&&"text"!==o&&"json"!==o?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:i,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),zf(p,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=u:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(u)},l.onabort=function(){l&&(r(new Of("Request aborted",Of.ECONNABORTED,e,l)),l=null)},l.onerror=function(){r(new Of("Network Error",Of.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const i=e.transitional||qf;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(new Of(t,i.clarifyTimeoutError?Of.ETIMEDOUT:Of.ECONNABORTED,e,l)),l=null},Qf.hasStandardBrowserEnv&&(c&&Ef.isFunction(c)&&(c=c(e)),c||!1!==c&&ug(p))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&lg.read(e.xsrfCookieName);t&&n.set(e.xsrfHeaderName,t)}void 0===i&&n.setContentType(null),"setRequestHeader"in l&&Ef.forEach(n.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),Ef.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),o&&"json"!==o&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",hg(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",hg(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(r(!t||t.type?new dg(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const h=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(p);h&&-1===Qf.protocols.indexOf(h)?r(new Of("Unsupported protocol "+h+":",Of.ERR_BAD_REQUEST,e)):l.send(i||null)}))};const fg={http:null,xhr:mg};Ef.forEach(fg,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const gg=e=>`- ${e}`,vg=e=>Ef.isFunction(e)||null===e||!1===e;var _g=e=>{e=Ef.isArray(e)?e:[e];const{length:t}=e;let r,i;const n={};for(let s=0;s<t;s++){let t;if(r=e[s],i=r,!vg(r)&&(i=fg[(t=String(r)).toLowerCase()],void 0===i))throw new Of(`Unknown adapter '${t}'`);if(i)break;n[t||"#"+s]=i}if(!i){const e=Object.entries(n).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new Of("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(gg).join("\n"):" "+gg(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function yg(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new dg(null,e)}function bg(e){yg(e),e.headers=ag.from(e.headers),e.data=og.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return _g(e.adapter||Xf.adapter)(e).then((function(t){return yg(e),t.data=og.call(e,e.transformResponse,t),t.headers=ag.from(t.headers),t}),(function(t){return cg(t)||(yg(e),t&&t.response&&(t.response.data=og.call(e,e.transformResponse,t.response),t.response.headers=ag.from(t.response.headers))),Promise.reject(t)}))}const wg=e=>e instanceof ag?e.toJSON():e;function Sg(e,t){t=t||{};const r={};function i(e,t,r){return Ef.isPlainObject(e)&&Ef.isPlainObject(t)?Ef.merge.call({caseless:r},e,t):Ef.isPlainObject(t)?Ef.merge({},t):Ef.isArray(t)?t.slice():t}function n(e,t,r){return Ef.isUndefined(t)?Ef.isUndefined(e)?void 0:i(void 0,e,r):i(e,t,r)}function s(e,t){if(!Ef.isUndefined(t))return i(void 0,t)}function a(e,t){return Ef.isUndefined(t)?Ef.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function o(r,n,s){return s in t?i(r,n):s in e?i(void 0,r):void 0}const c={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o,headers:(e,t)=>n(wg(e),wg(t),!0)};return Ef.forEach(Object.keys(Object.assign({},e,t)),(function(i){const s=c[i]||n,a=s(e[i],t[i],i);Ef.isUndefined(a)&&s!==o||(r[i]=a)})),r}const Cg="1.6.7",Rg={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Rg[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const Tg={};Rg.transitional=function(e,t,r){function i(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,n,s)=>{if(!1===e)throw new Of(i(n," has been removed"+(t?" in "+t:"")),Of.ERR_DEPRECATED);return t&&!Tg[n]&&(Tg[n]=!0,console.warn(i(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,s)}};var Pg={assertOptions:function(e,t,r){if("object"!=typeof e)throw new Of("options must be an object",Of.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let n=i.length;for(;n-- >0;){const s=i[n],a=t[s];if(a){const t=e[s],r=void 0===t||a(t,s,e);if(!0!==r)throw new Of("option "+s+" must be "+r,Of.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new Of("Unknown option "+s,Of.ERR_BAD_OPTION)}},validators:Rg};const kg=Pg.validators;class Dg{constructor(e){this.defaults=e,this.interceptors={request:new Vf,response:new Vf}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Sg(this.defaults,t);const{transitional:r,paramsSerializer:i,headers:n}=t;void 0!==r&&Pg.assertOptions(r,{silentJSONParsing:kg.transitional(kg.boolean),forcedJSONParsing:kg.transitional(kg.boolean),clarifyTimeoutError:kg.transitional(kg.boolean)},!1),null!=i&&(Ef.isFunction(i)?t.paramsSerializer={serialize:i}:Pg.assertOptions(i,{encode:kg.function,serialize:kg.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=n&&Ef.merge(n.common,n[t.method]);n&&Ef.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete n[e]})),t.headers=ag.concat(s,n);const a=[];let o=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(o=o&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const c=[];let d;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,p=0;if(!o){const e=[bg.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,c),l=e.length,d=Promise.resolve(t);p<l;)d=d.then(e[p++],e[p++]);return d}l=a.length;let u=t;for(p=0;p<l;){const e=a[p++],t=a[p++];try{u=e(u)}catch(e){t.call(this,e);break}}try{d=bg.call(this,u)}catch(e){return Promise.reject(e)}for(p=0,l=c.length;p<l;)d=d.then(c[p++],c[p++]);return d}getUri(e){return zf(pg((e=Sg(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}Ef.forEach(["delete","get","head","options"],(function(e){Dg.prototype[e]=function(t,r){return this.request(Sg(r||{},{method:e,url:t,data:(r||{}).data}))}})),Ef.forEach(["post","put","patch"],(function(e){function t(t){return function(r,i,n){return this.request(Sg(n||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:i}))}}Dg.prototype[e]=t(),Dg.prototype[e+"Form"]=t(!0)}));var Eg=Dg;class Og{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const i=new Promise((e=>{r.subscribe(e),t=e})).then(e);return i.cancel=function(){r.unsubscribe(t)},i},e((function(e,i,n){r.reason||(r.reason=new dg(e,i,n),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new Og((function(t){e=t})),cancel:e}}}var Ig=Og;const xg={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(xg).forEach((([e,t])=>{xg[t]=e}));var Mg=xg;const jg=function e(t){const r=new Eg(t),i=Jm(Eg.prototype.request,r);return Ef.extend(i,Eg.prototype,r,{allOwnKeys:!0}),Ef.extend(i,r,null,{allOwnKeys:!0}),i.create=function(r){return e(Sg(t,r))},i}(Xf);function Lg(e,t){return et(e,t)}jg.Axios=Eg,jg.CanceledError=dg,jg.CancelToken=Ig,jg.isCancel=cg,jg.VERSION=Cg,jg.toFormData=Nf,jg.AxiosError=Of,jg.Cancel=jg.CanceledError,jg.all=function(e){return Promise.all(e)},jg.spread=function(e){return function(t){return e.apply(null,t)}},jg.isAxiosError=function(e){return Ef.isObject(e)&&!0===e.isAxiosError},jg.mergeConfig=Sg,jg.AxiosHeaders=ag,jg.formToJSON=e=>Zf(Ef.isHTMLForm(e)?new FormData(e):e),jg.getAdapter=_g,jg.HttpStatusCode=Mg,jg.default=jg;const Ag=((e={})=>{const t=new Map,{extra:r,onError:i=Nt}=e;gt(i,"onError");const n=e=>{let r=Oe(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=It(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&xt(e)}))(r)};Object.assign(n,{withTypes:()=>n});const s=e=>{const{type:r,effect:i,predicate:n}=Ot(e),s=Oe(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===n)&&e.effect===i));return s&&(s.unsubscribe(),e.cancelActive&&xt(s)),!!s};Object.assign(s,{withTypes:()=>s});const a=async(e,s,a,o)=>{const c=new AbortController,d=Et(n,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(s,Tt({},a,{getOriginalState:o,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Rt(c.signal),pause:Ct(c.signal),extra:r,signal:c.signal,fork:Dt(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(bt(e,ht),r.delete(e))}))},cancel:()=>{bt(c,ht),e.pending.delete(c)},throwIfCancelled:()=>{wt(c.signal)}})))}catch(e){e instanceof ft||Mt(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),bt(c,mt),e.pending.delete(c)}},o=(e=>()=>{e.forEach(xt),e.clear()})(t);return{middleware:e=>r=>c=>{if(!g(c))return r(c);if(jt.match(c))return n(c.payload);if(Lt.match(c))return void o();if(At.match(c))return s(c.payload);let d=e.getState();const l=()=>{if(d===Pt)throw new Error(`${kt}: getOriginalState can only be called synchronously`);return d};let p;try{if(p=r(c),t.size>0){const r=e.getState(),n=Array.from(t.values());for(const t of n){let n=!1;try{n=t.predicate(c,r,d)}catch(e){n=!1,Mt(i,e,{raisedBy:"predicate"})}n&&a(t,c,e,l)}}}finally{d=Pt}return p},startListening:n,stopListening:s,clearListeners:o}})(),Ng=Ag.startListening,Bg=(e,t)=>Ng({predicate:(t,r,i)=>{const n=e.map((e=>e(i))),s=e.map((e=>e(r)));return n.some(((e,t)=>e!==s[t]))},effect:(r,{dispatch:i,getState:n,extra:s})=>{const a=e.map((e=>e(n())));t({dispatch:i,getState:n,extra:s},...a)}}),Fg=at({name:"app",initialState:{isNodeSdk:!1,wantsToJoin:!1,roomName:null,roomKey:null,roomUrl:null,displayName:null,sdkVersion:null,externalId:null},reducers:{doAppJoin:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,wantsToJoin:!0})},appLeft:e=>Object.assign(Object.assign({},e),{wantsToJoin:!1}),setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})}}),{doAppJoin:Ug,appLeft:$g,setRoomKey:zg}=Fg.actions,Vg=e=>e.app.wantsToJoin,qg=e=>e.app.roomName,Gg=e=>e.app.roomKey,Wg=e=>e.app.displayName,Hg=e=>e.app.sdkVersion,Kg=e=>e.app.externalId,Jg=e=>e.app.isNodeSdk;function Qg(e){return ke(`signalConnection/event/${e}`)}const Zg={audioEnabled:Qg("audioEnabled"),chatMessage:Qg("chatMessage"),clientLeft:Qg("clientLeft"),clientKicked:Qg("clientKicked"),clientMetadataReceived:Qg("clientMetadataReceived"),cloudRecordingStarted:Qg("cloudRecordingStarted"),cloudRecordingStopped:Qg("cloudRecordingStopped"),disconnect:Qg("disconnect"),knockerLeft:Qg("knockerLeft"),knockHandled:Qg("knockHandled"),newClient:Qg("newClient"),roomJoined:Qg("roomJoined"),roomKnocked:Qg("roomKnocked"),roomSessionEnded:Qg("roomSessionEnded"),screenshareStarted:Qg("screenshareStarted"),screenshareStopped:Qg("screenshareStopped"),streamingStopped:Qg("streamingStopped"),videoEnabled:Qg("videoEnabled")};function Yg(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){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(a,o)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const Xg=at({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(ev.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(ev.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(ev.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),ev=Lg("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>Yg(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),tv=e=>e.deviceCredentials;Bg([be(Vg,tv,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(ev())}));const rv=at({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"",socket:null},reducers:{socketConnecting:e=>Object.assign(Object.assign({},e),{status:"connecting"}),socketConnected:(e,t)=>Object.assign(Object.assign({},e),{socket:t.payload,status:"connected"}),socketDisconnected:e=>Object.assign(Object.assign({},e),{status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnect"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(Zg.disconnect,(e=>Object.assign(Object.assign({},e),{status:"disconnected"})))}}),{deviceIdentifying:iv,deviceIdentified:nv,socketConnected:sv,socketConnecting:av,socketDisconnected:ov}=rv.actions,cv=()=>(e,t)=>{if(gv(t()))return;e(av());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new qm(e,{autoConnect:!1})}();r.on("connect",(()=>e(sv(r)))),r.on("device_identified",(()=>e(nv()))),r.getManager().on("reconnect",(()=>e(pv()))),function(e,t){e.on("room_joined",(e=>t(Zg.roomJoined(e)))),e.on("new_client",(e=>t(Zg.newClient(e)))),e.on("client_left",(e=>t(Zg.clientLeft(e)))),e.on("client_kicked",(e=>t(Zg.clientKicked(e)))),e.on("audio_enabled",(e=>t(Zg.audioEnabled(e)))),e.on("video_enabled",(e=>t(Zg.videoEnabled(e)))),e.on("client_metadata_received",(e=>t(Zg.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(Zg.chatMessage(e)))),e.on("disconnect",(()=>t(Zg.disconnect()))),e.on("room_knocked",(e=>t(Zg.roomKnocked(e)))),e.on("room_session_ended",(e=>t(Zg.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(Zg.knockerLeft(e)))),e.on("knock_handled",(e=>t(Zg.knockHandled(e)))),e.on("screenshare_started",(e=>t(Zg.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(Zg.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(Zg.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(Zg.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(Zg.streamingStopped())))}(r,e),r.connect()},dv=({deviceCredentials:e})=>(t,r)=>{const i=r(),n=gv(i);n&&(n.emit("identify_device",{deviceCredentials:e}),t(iv()))},lv=()=>(e,t)=>{const r=hv(t()).socket;null==r||r.emit("leave_room"),null==r||r.disconnect(),e(ov())},pv=()=>(e,t)=>{const r=tv(t());e(uv()),r.data&&e(dv({deviceCredentials:r.data}))},{socketReconnecting:uv}=rv.actions,hv=e=>e.signalConnection,mv=e=>e.signalConnection.deviceIdentified,fv=e=>e.signalConnection.status,gv=e=>e.signalConnection.socket;Ng({actionCreator:$g,effect:(e,{dispatch:t})=>{t(lv())}});Bg([be(Vg,fv,((e,t)=>!(!e||!["","reconnect"].includes(t))))],(({dispatch:e},t)=>{t&&e(cv())}));const vv=be(tv,fv,mv,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));Bg([vv,tv],(({dispatch:e},t,r)=>{t&&r.data&&e(dv({deviceCredentials:r.data}))}));const _v=at({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(Zg.chatMessage,((e,t)=>{const r={senderId:t.payload.senderId,timestamp:t.payload.timestamp,text:t.payload.text};return Object.assign(Object.assign({},e),{chatMessages:[...e.chatMessages,r]})}))}}),yv=e=>(t,r)=>{const i=r(),n=hv(i).socket;null==n||n.emit("chat_message",{text:e.text})},bv=at({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(Zg.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(Zg.cloudRecordingStarted,((e,t)=>{const{payload:r}=t;return r.error?Object.assign(Object.assign({},e),{isRecording:!1,status:"error",error:r.error}):e})),e.addCase(Zg.newClient,((e,{payload:t})=>{var r;const{client:i}=t;return"recorder"===(null===(r=i.role)||void 0===r?void 0:r.roleName)?Object.assign(Object.assign({},e),{isRecording:!0,status:"recording",startedAt:i.startedCloudRecordingAt?new Date(i.startedCloudRecordingAt).getTime():(new Date).getTime()}):e}))}}),{recordingRequestStarted:wv}=bv.actions,Sv=()=>(e,t)=>{const r=t(),i=hv(r).socket,n=Rv(r);n&&["recording","requested"].includes(n)||(null==i||i.emit("start_recording",{recording:"cloud"}),e(wv()))},Cv=()=>(e,t)=>{const r=t(),i=hv(r).socket;null==i||i.emit("stop_recording")},Rv=e=>e.cloudRecording.status;const Tv=at({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isTogglingCamera:!1,microphoneEnabled:!1,status:"",isSwitchingStream:!1},reducers:{deviceBusy:(e,t)=>e.busyDeviceIds.includes(t.payload.deviceId)?e:Object.assign(Object.assign({},e),{busyDeviceIds:[...e.busyDeviceIds,t.payload.deviceId]}),toggleCameraEnabled(e,t){var r;return Object.assign(Object.assign({},e),{cameraEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.cameraEnabled})},setCurrentCameraDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentCameraDeviceId:t.payload.deviceId}),toggleMicrophoneEnabled(e,t){var r;return Object.assign(Object.assign({},e),{microphoneEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.microphoneEnabled})},setCurrentMicrophoneDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentMicrophoneDeviceId:t.payload.deviceId}),setDevices:(e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}),setLocalMediaStream:(e,t)=>Object.assign(Object.assign({},e),{stream:t.payload.stream}),setLocalMediaOptions:(e,t)=>Object.assign(Object.assign({},e),{options:t.payload.options}),localMediaStopped:e=>Object.assign(Object.assign({},e),{status:"stopped",stream:void 0}),localStreamMetadataUpdated(e,t){const{audio:r,video:i}=t.payload;return Object.assign(Object.assign({},e),{currentCameraDeviceId:i.deviceId,currentMicrophoneDeviceId:r.deviceId,busyDeviceIds:e.busyDeviceIds.filter((e=>e!==r.deviceId&&e!==i.deviceId))})}},extraReducers:e=>{e.addCase(Ug,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(Nv.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(Nv.fulfilled,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice})})),e.addCase(Nv.rejected,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice,cameraDeviceError:i?t.error:e.cameraDeviceError,microphoneDeviceError:r?t.error:e.microphoneDeviceError})})),e.addCase(Lv.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(Lv.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(Bv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(Uv.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Uv.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let i,n,s=!1,a=!1;const o=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return o&&(n=o.getSettings().deviceId,a=o.enabled),c&&(s=c.enabled,i=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:i,currentMicrophoneDeviceId:n,cameraEnabled:s,microphoneEnabled:a,onDeviceChange:r})})),e.addCase(Uv.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(Fv.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(Fv.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(Fv.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:Pv,setCurrentCameraDeviceId:kv,setCurrentMicrophoneDeviceId:Dv,toggleCameraEnabled:Ev,toggleMicrophoneEnabled:Ov,setLocalMediaOptions:Iv,setLocalMediaStream:xv,localMediaStopped:Mv,localStreamMetadataUpdated:jv}=Tv.actions,Lv=Lg("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>Yg(void 0,void 0,void 0,(function*(){const e=t(),i=Zv(e);if(!i)return;let n=i.getVideoTracks()[0];const s=Gv(e);try{if(s)if(n)n.enabled=!0;else{const t=Xv(e),r=Vv(e);yield Vu(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:i}),n=i.getVideoTracks()[0]}else{if(!n)return;n.enabled=!1,n.stop(),i.removeTrack(n)}i.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:n,enable:s}}))}catch(e){return r(e)}})))),Av=Lg("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),n=Zv(i);if(!n)return;const s=Wv(i),a=null===(r=n.getAudioTracks())||void 0===r?void 0:r[0];a&&(a.enabled=s)})),Nv=Lg("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>Yg(void 0,void 0,void 0,(function*(){try{const i=r(),n=Zv(i);if(!n)throw new Error("No stream");const s=!!e&&qv(i),a=!!t&&Vv(i),o=Xv(i),{replacedTracks:c}=yield Vu(Object.assign(Object.assign({},o),{audioId:s,videoId:a,type:"exact"}),{replaceStream:n}),d=Wv(i);n.getAudioTracks().forEach((e=>e.enabled=d));const l=Gv(i);return n.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),Bv=Lg("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>Yg(void 0,void 0,void 0,(function*(){var e,n;const s=t();let a=[],o=[];const c=Zv(s),d=zv(s);try{a=yield navigator.mediaDevices.enumerateDevices(),o=Hv(s);if(!(c&&!Yv(s)&&a&&o&&o.find((e=>e.deviceId))))return{devices:a};const{changedDevices:l}=qu({oldDevices:o,newDevices:a,currentAudioId:qv(s),currentVideoId:Vv(s)});let p=null===(e=l.audioinput)||void 0===e?void 0:e.deviceId,u=null===(n=l.videoinput)||void 0===n?void 0:n.deviceId;function h(e,t){const r=t?e.findIndex((e=>e.deviceId===t)):0;return(e[(r+1)%e.length]||{}).deviceId}if(void 0!==u){const m=Hv(s).filter((e=>"videoinput"===e.kind)),f=Vv(s);let g=h(m.filter((e=>!d.includes(e.deviceId))),f);g&&f!==g||(g=h(m,f)),f!==g&&(u=g)}if(void 0!==p){const v=Hv(s).filter((e=>"audioinput"===e.kind)),_=qv(s);let y=h(v.filter((e=>!d.includes(e.deviceId))),_);y&&_!==y||(y=h(v,_)),_!==y&&(p=y)}return void 0===p&&void 0===u||r(Fv({audioId:p,videoId:u})),{devices:a}}catch(b){return i(b)}})))),Fv=Lg("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:n})=>Yg(void 0,void 0,void 0,(function*(){const s=i(),a=Zv(s),o=Xv(s),c=!(!t||e)||!(t||!e);if(a)try{const{replacedTracks:i}=yield Vu(Object.assign(Object.assign({},o),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:a}),n=e||t;return c&&n&&r(Pv({deviceId:n})),{replacedTracks:i}}catch(i){console.error(i);const s=e||t;return c&&s&&r(Pv({deviceId:s})),n(i)}})))),Uv=Lg("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>Yg(void 0,void 0,void 0,(function*(){const n=function(e,{delay:t=500,edges:r}={}){let i,n=0;return(...s)=>{n+=1,r&&1===n&&e(...s),clearTimeout(i),i=setTimeout((()=>{(!r||n>1)&&e(...s),i=void 0,n=0}),t)}}((()=>{r(Bv())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",n),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:n});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:n};r(Iv({options:e}));try{yield r(Bv());const i=t(),s=Xv(i),{stream:a}=yield Vu(Object.assign(Object.assign({},s),{audioId:e.audio,videoId:e.video}));return{stream:a,onDeviceChange:n}}catch(e){return i(e)}})))),$v=()=>(e,t)=>{const r=Zv(t()),i=Jv(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(Mv())},zv=e=>e.localMedia.busyDeviceIds,Vv=e=>e.localMedia.currentCameraDeviceId,qv=e=>e.localMedia.currentMicrophoneDeviceId,Gv=e=>e.localMedia.cameraEnabled,Wv=e=>e.localMedia.microphoneEnabled,Hv=e=>e.localMedia.devices,Kv=e=>e.localMedia.options;be(Kv,(e=>!!e));const Jv=e=>e.localMedia,Qv=e=>e.localMedia.status,Zv=e=>e.localMedia.stream,Yv=e=>e.localMedia.isSwitchingStream,Xv=be(Hv,(e=>({devices:e,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:!1,simulcast:!0,widescreen:!0}}))),e_=be(Qv,(e=>"starting"===e)),t_=be(Hv,zv,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),r_=be(Hv,zv,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),i_=be(Hv,(e=>e.filter((e=>"audiooutput"===e.kind))));Bg([be(Vg,Qv,Kv,Jg,((e,t,r,i)=>{if(e&&""===t&&!i&&r)return r}))],(({dispatch:e},t)=>{t&&e(Uv(t))}));Bg([be(Vg,Qv,Kv,((e,t,r)=>!e&&""!==t&&!!r))],(({dispatch:e},t)=>{t&&e($v())})),Ng({predicate:(e,t,r)=>{const i=Wv(r),n=Wv(t);return"started"===Qv(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Av())}}),Ng({predicate:(e,t,r)=>{if(t.localMedia.isTogglingCamera)return!1;const i=Gv(r),n=Gv(t);return"started"===Qv(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Lv())}}),Ng({predicate:(e,t,r)=>{const i=Vv(r),n=Vv(t);return"started"===Qv(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Nv({audio:!1,video:!0}))}}),Ng({predicate:(e,t,r)=>{const i=qv(r),n=qv(t);return"started"===Qv(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Nv({audio:!0,video:!1}))}}),Ng({matcher:Je(Uv.fulfilled,Bv.fulfilled,Fv.fulfilled,Fv.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),n=Zv(i),s=Hv(i);if(!n)return;const a=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:i,lastAudioId:n,lastVideoId:s}){const a=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=a(t)||i,e=a(e),{video:$u("videoinput",t,r,s),audio:$u("audioinput",e,r,n)}}({audioTrack:n.getAudioTracks()[0],videoTrack:n.getVideoTracks()[0],devices:s});t(jv(a))}});const n_={displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"",clientClaim:void 0},s_=Lg("localParticipant/doEnableAudio",((e,{getState:t})=>Yg(void 0,void 0,void 0,(function*(){const r=t(),i=hv(r).socket;return null==i||i.emit("enable_audio",{enabled:e.enabled}),e.enabled})))),a_=Lg("localParticipant/doEnableVideo",((e,{getState:t})=>Yg(void 0,void 0,void 0,(function*(){const r=t(),i=hv(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),o_=Lg("localParticipant/doSetDisplayName",((e,{getState:t})=>Yg(void 0,void 0,void 0,(function*(){const r=t(),i=hv(r).socket;return null==i||i.emit("send_client_metadata",{type:"UserData",payload:e}),e.displayName})))),c_=at({name:"localParticipant",initialState:n_,reducers:{doSetLocalParticipant:(e,t)=>Object.assign(Object.assign({},e),t.payload)},extraReducers:e=>{e.addCase(Ug,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(s_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(a_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(o_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload}))),e.addCase(Zg.roomJoined,((e,t)=>{var r,i;const n=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{id:t.payload.selfId,clientClaim:t.payload.clientClaim,roleName:(null==n?void 0:n.role.roleName)||""})}))}});c_.actions;const d_=e=>e.localParticipant,l_=e=>e.localParticipant.id;Ng({actionCreator:Ev,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:n}=d_(r());t(a_({enabled:i||!n}))}}),Ng({actionCreator:Ov,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:n}=d_(r());t(s_({enabled:i||!n}))}});const p_=at({name:"localScreenshare",initialState:{status:"",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"",stream:null})},extraReducers:e=>{e.addCase(h_.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(h_.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(h_.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"",stream:null})))}}),{stopScreenshare:u_}=p_.actions,h_=Lg("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>Yg(void 0,void 0,void 0,(function*(){var e;try{const i=r(),n=f_(i);if(n)return{stream:n};const s=yield navigator.mediaDevices.getDisplayMedia(),a=()=>{t(m_())};return"oninactive"in s?s.addEventListener("inactive",a):null===(e=s.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",a),{stream:s}}catch(e){return i(e)}})))),m_=()=>(e,t)=>{const r=t(),i=f_(r);i&&(i.getTracks().forEach((e=>e.stop())),e(u_({stream:i})))},f_=e=>e.localScreenshare.stream;Ng({actionCreator:Mv,effect:(e,{getState:t})=>{const r=t(),i=f_(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const g_=at({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(v_.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(v_.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(v_.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),v_=Lg("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>Yg(void 0,void 0,void 0,(function*(){try{const e=r().app.roomUrl,i=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!i)throw new Error("Invalid room url");return i}catch(e){console.error(e)}})))),__=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId};function y_(e){return ke(`rtcConnection/event/${e}`)}Bg([be(Vg,(e=>e.organization),tv,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)))],(({dispatch:e},t)=>{t&&e(v_())}));const b_={rtcManagerCreated:y_("rtcManagerCreated"),rtcManagerDestroyed:y_("rtcManagerDestroyed"),streamAdded:y_("streamAdded")},w_=["recorder","streamer"];function S_(e,t=!1){const{streams:r}=e,i=function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}(e,["streams"]);return Object.assign(Object.assign({},i),{stream:null,streams:r.map((e=>({id:e,state:t?"new_accept":"to_accept"}))),isLocalParticipant:!1,presentationStream:null,newJoiner:t})}function C_(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function R_(e,t,r){const{participant:i,index:n}=C_(e,t);return i?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,n),Object.assign(Object.assign({},i),r),...e.remoteParticipants.slice(n+1)]}):(console.error(`Did not find client for update ${t}`),e)}function T_(e,t,r,i){const{participant:n}=C_(e,t);if(!n)return console.error(`No client ${t} found to update stream ${r} ${i}`),e;const s=n.streams.findIndex((e=>e.id===r)),a=[...n.streams];return a[s]=Object.assign(Object.assign({},a[s]),{state:i}),R_(e,t,{streams:a})}function P_(e,t,r){const{participant:i}=C_(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):R_(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const k_=at({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:n}of t.payload)r=T_(r,e,i,n);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return R_(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return P_(e,r,i)}},extraReducers:e=>{e.addCase(Zg.roomJoined,((e,t)=>{var r;if(!(null===(r=t.payload)||void 0===r?void 0:r.room))return e;const i=t.payload.selfId,{clients:n}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:n.filter((e=>e.id!==i)).filter((e=>!w_.includes(e.role.roleName))).map((e=>S_(e)))})})),e.addCase(b_.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:n}=t;let{streamId:s}=t;const{participant:a}=C_(e,r);if(!a)return console.error(`Did not find client ${r} for adding stream`),e;const o=e.remoteParticipants;s||(s=i.id);const c=o.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===s));return c.stream&&(c.stream.id===s||c.stream.inboundId===s)||!c.stream&&"webcam"===n||!c.stream&&!n&&!d?R_(e,r,{stream:i}):R_(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(Zg.newClient,((e,t)=>{const{client:r}=t.payload;return w_.includes(r.role.roleName)?e:function(e,t){const{participant:r}=C_(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,S_(r,!0))})),e.addCase(Zg.clientLeft,((e,t)=>{const{clientId:r}=t.payload;return function(e,t){return Object.assign(Object.assign({},e),{remoteParticipants:e.remoteParticipants.filter((e=>e.id!==t))})}(e,r)})),e.addCase(Zg.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return R_(e,r,{isAudioEnabled:i})})),e.addCase(Zg.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return R_(e,r,{isVideoEnabled:i})})),e.addCase(Zg.clientMetadataReceived,((e,t)=>{const{clientId:r,displayName:i}=t.payload.payload;return R_(e,r,{displayName:i})})),e.addCase(Zg.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return P_(e,r,i)})),e.addCase(Zg.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,n;const{participant:s}=C_(e,t);if(!s)return console.error(`No participant ${t} found to remove stream ${r}`),e;const a=s.stream&&s.stream.id,o=(null===(i=s.presentationStream)||void 0===i?void 0:i.inboundId)||(null===(n=s.presentationStream)||void 0===n?void 0:n.id),c=s.streams.findIndex((e=>e.id===r));return R_(e,t,Object.assign(Object.assign({streams:s.streams.filter(((e,t)=>t!==c))},a===r&&{stream:null}),o===r&&{presentationStream:null}))}(e,r,i)}))}}),{participantStreamAdded:D_,participantStreamIdAdded:E_,streamStatusUpdated:O_}=k_.actions,I_=e=>e.remoteParticipants.remoteParticipants,x_=be(f_,I_,((e,t)=>{const r=[];e&&r.push({id:e.id,participantId:"local",hasAudioTrack:e.getAudioTracks().length>0,stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id,participantId:e.id,hasAudioTrack:e.presentationStream.getAudioTracks().length>0,stream:e.presentationStream,isLocal:!1});return r})),M_=at({initialState:{session:null,status:"initializing",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(Zg.roomJoined,((e,t)=>{var r,i;const{error:n,isLocked:s}=t.payload;return"room_locked"===n&&s?Object.assign(Object.assign({},e),{status:"room_locked"}):n?Object.assign(Object.assign({},e),{status:"disconnected",error:n}):Object.assign(Object.assign({},e),{status:"connected",session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(Zg.disconnect,(e=>Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(Zg.newClient,((e,t)=>{var r,i;return Object.assign(Object.assign({},e),{session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(Zg.roomSessionEnded,((e,t)=>{var r;return(null===(r=e.session)||void 0===r?void 0:r.id)!==t.payload.roomSessionId?e:Object.assign(Object.assign({},e),{session:null})})),e.addCase(Zg.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(uv,(e=>Object.assign(Object.assign({},e),{status:"reconnect"})))}}),{connectionStatusChanged:j_}=M_.actions,L_=()=>(e,t)=>{const r=t(),i=hv(r).socket,n=qg(r),s=Gg(r),a=Wg(r),o=Hg(r),c=Kg(r),d=__(r);null==i||i.emit("knock_room",{avatarUrl:null,config:{isAudioEnabled:!0,isVideoEnabled:!0},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,selfId:"",userAgent:`browser-sdk:${o||"unknown"}`,externalId:c}),e(j_("knocking"))},A_=()=>(e,t)=>{const r=t(),i=hv(r).socket,n=qg(r),s=Gg(r),a=Wg(r),o=Hg(r),c=Kg(r),d=__(r),l=Gv(t()),p=Wv(t()),u=l_(t()),h=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign(Object.assign({avatarUrl:null,config:{isAudioEnabled:p,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,selfId:u},!!h&&{clientClaim:h}),{userAgent:`browser-sdk:${o||"unknown"}`,externalId:c})),e(j_("connecting"))},N_=e=>e.roomConnection.status;Bg([be([__,N_,mv,Qv,Jg],((e,t,r,i,n)=>!("started"!==i&&!n||!r||!e||!["initializing","reconnect"].includes(t))))],(({dispatch:e},t)=>{t&&e(A_())})),Ng({actionCreator:Zg.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:n}=e,s=r();i===l_(s)&&("accepted"===n?(t(zg(e.metadata.roomKey)),t(A_())):"rejected"===n&&t(j_("knock_rejected")))}});const B_=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(Y_(r)):"stream_added"===t?e(b_.streamAdded(r)):"rtc_manager_destroyed"===t&&e(G_())}}),F_={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"",isAcceptingStreams:!1},U_=at({name:"rtcConnection",initialState:F_,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:i,height:n}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:i,height:n}})})},rtcDisconnected:()=>Object.assign({},F_),rtcDispatcherCreated:(e,t)=>Object.assign(Object.assign({},e),{dispatcherCreated:!0,rtcManagerDispatcher:t.payload}),rtcManagerCreated:(e,t)=>Object.assign(Object.assign({},e),{rtcManager:t.payload,status:"ready"}),rtcManagerDestroyed:e=>Object.assign(Object.assign({},e),{rtcManager:null}),rtcManagerInitialized:e=>Object.assign(Object.assign({},e),{rtcManagerInitialized:!0})},extraReducers:e=>{e.addCase(uv,(e=>Object.assign(Object.assign({},e),{status:"reconnect"}))),e.addCase(Zg.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnect"===e.status?"ready":e.status})))}}),{resolutionReported:$_,rtcDispatcherCreated:z_,rtcDisconnected:V_,rtcManagerCreated:q_,rtcManagerDestroyed:G_,rtcManagerInitialized:W_,isAcceptingStreams:H_}=U_.actions,K_=()=>(e,t)=>{const r=t(),i=hv(r).socket,n=ey(r).rtcManagerDispatcher,s=Gv(r),a=Wv(r),o=Jg(r);if(n||!i)return;const c={getMediaConstraints:()=>({audio:a,video:s}),deferrable:e=>!e},d=new jm({emitter:B_(e),serverSocket:i,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:o?Rn.createFactory():void 0}});e(z_(d))},J_=()=>(e,t)=>{const{rtcManager:r}=ey(t());r&&r.disconnectAll(),e(V_())},Q_=e=>(t,r)=>{var i;t(H_(!0));const n=r(),s=ey(n).rtcManager,a=I_(n);if(!s)throw new Error("No rtc manager");const o=null===(i=s.shouldAcceptStreamsFromBothSides)||void 0===i?void 0:i.call(s),c=[];for(const{clientId:t,streamId:r,state:i}of e){if(a.find((e=>e.id===t))){if("to_accept"===i||"new_accept"===i&&o||"old_accept"===i&&!o)s.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false});else if("new_accept"===i||"old_accept"===i);else if("to_unaccept"===i)null==s||s.disconnect("0"===r?t:r,false);else if("done_accept"!==i)continue;c.push({clientId:t,streamId:r,state:i.replace(/to_|new_|old_/,"done_")})}}t(O_(c)),t(H_(!1))},Z_=({streamId:e,width:t,height:r})=>(i,n)=>{const{reportedStreamResolutions:s,rtcManager:a}=ey(n()),o=Zv(n());if(!a||(null==o?void 0:o.id)===e)return;const c=s[e];c&&c.width===t&&c.height===r||a.updateStreamResolution(e,null,{width:t||1,height:r||1}),i($_({streamId:e,width:t,height:r}))},Y_=e=>t=>{const{rtcManager:r}=e;t(q_(r))},X_=()=>(e,t)=>{const r=Zv(t()),i=ey(t()).rtcManager,n=Gv(t()),s=Wv(t());r&&i&&i.addNewStream("0",r,!s,!n),e(W_())},ey=e=>e.rtcConnection,ty=e=>e.rtcConnection.rtcManagerInitialized,ry=e=>e.rtcConnection.status;Ng({actionCreator:Nv.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=ey(t()),n=Zv(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==n?void 0:n.getTracks().find((t=>t.kind===e));r&&(null==i||i.replaceTrack(t,r))})(e.kind,e)}))}}),Ng({actionCreator:h_.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=ey(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),Ng({actionCreator:u_,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=ey(t());null==i||i.removeStream(r.id,r,null)}});Bg([be((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),gv,((e,t,r)=>!(e||t||!r)))],(({dispatch:e},t)=>{t&&e(K_())}));const iy=be((e=>e.rtcConnection.rtcManager),ty,Qv,((e,t,r)=>!("started"!==r||!e||t)));Bg([iy],(({dispatch:e},t)=>{t&&e(X_())}));Bg([be(ry,Vg,((e,t)=>!t&&!["","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(J_())}));const ny=be(ry,I_,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:i,newJoiner:n}=e;for(let e=0;e<t.length;e++){let s=t[e].id,a=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(s=t[1].id,a=t[1].state):1===e&&(s=t[0].id,a=t[0].state)),"done_accept"!==a&&r.push({clientId:i,streamId:s,state:(n&&"0"===s?"new":"to")+"_accept"})}}return r}));Bg([ny,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(Q_(t))}));const sy={audioEnabled:{actions:[s_.fulfilled],rtcEventName:"audioEnabled",getValue:e=>Wv(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[a_.fulfilled],rtcEventName:"videoEnabled",getValue:e=>Gv(e),getOutput:e=>({enabled:e})},localStream:{actions:[Nv.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=Zv(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({stream:e})},localScreenshareStream:{actions:[h_.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=f_(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({tracks:e})},localScreenshareStreamStopped:{actions:[u_],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[o_.fulfilled],rtcEventName:"displayName",getValue:e=>Wg(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>l_(e),getOutput:e=>({clientId:e})},deviceId:{actions:null,rtcEventName:"deviceId",getValue:e=>(e=>{var t,r;return null===(r=null===(t=e.deviceCredentials.data)||void 0===t?void 0:t.credentials)||void 0===r?void 0:r.uuid})(e),getOutput:e=>({deviceId:e})},externalId:{actions:null,rtcEventName:"externalId",getValue:e=>Kg(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>__(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>fv(e),getOutput:e=>({status:e})},roomSessionId:{actions:[Zg.newClient,Zg.roomJoined,Zg.roomSessionEnded,Zg.clientLeft],rtcEventName:"roomSessionId",getValue:e=>(e=>{var t;return null===(t=e.roomConnection.session)||void 0===t?void 0:t.id})(e),getOutput:e=>({roomSessionId:e})},rtcConnectionStatus:{actions:null,rtcEventName:"rtcConnectionStatus",getValue:e=>ry(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>(e=>e.localParticipant.roleName)(e),getOutput:e=>({userRole:e})}},ay=Object.values(sy).flatMap((({actions:e})=>{var t;return null!==(t=null==e?void 0:e.map((e=>e)))&&void 0!==t?t:null})).filter((e=>null!==e)),oy=e=>"object"==typeof e?JSON.stringify(e):e,cy=at({initialState:{reportedValues:{}},name:"rtcAnalytics",reducers:{updateReportedValues:(e,t)=>Object.assign(Object.assign({},e),{reportedValues:Object.assign(Object.assign({},e.reportedValues),{[t.payload.rtcEventName]:t.payload.value})})}}),dy=()=>(e,t)=>{const r=t(),i=ey(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(sy).forEach((({rtcEventName:t,getValue:n,getOutput:s})=>{var a;const o=n(r),c=Object.assign(Object.assign({},s(o)),{_time:Date.now()}),d=oy(o);(null===(a=r.rtcAnalytics.reportedValues)||void 0===a?void 0:a[t])!==d&&(i.sendStatsCustomEvent(t,c),e(ly({rtcEventName:t,value:o})))})))},{updateReportedValues:ly}=cy.actions;Ng({matcher:Je(...ay),effect:({type:e},{getState:t,dispatch:r})=>{var i;const n=t(),s=ey(n).rtcManager;if(!s)return;const a=Object.values(sy).find((({actions:t})=>null==t?void 0:t.map((e=>e.type)).includes(e)));if(!a)return;const{getValue:o,getOutput:c,rtcEventName:d}=a,l=o(n),p=oy(l),u=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(i=n.rtcAnalytics.reportedValues)||void 0===i?void 0:i[d])!==p&&(s.sendStatsCustomEvent(d,u),r(ly({rtcEventName:d,value:l})))}}),Bg([ty],(({dispatch:e},t)=>{t&&e(dy())}));const py=at({name:"streaming",initialState:{isStreaming:!1,error:null,startedAt:void 0},reducers:{doHandleStreamingStarted:e=>Object.assign(Object.assign({},e),{isStreaming:!0,error:null,startedAt:(new Date).getTime()}),doHandleStreamingStopped:e=>Object.assign(Object.assign({},e),{isStreaming:!1})}});py.actions;const uy=at({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(Zg.roomJoined,((e,{payload:t})=>{var r;return(null===(r=t.room)||void 0===r?void 0:r.knockers.length)?Object.assign(Object.assign({},e),{waitingParticipants:t.room.knockers.map((e=>({id:e.clientId,displayName:e.displayName})))}):e})),e.addCase(Zg.roomKnocked,((e,t)=>{const{clientId:r,displayName:i}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:[...e.waitingParticipants,{id:r,displayName:i}]})})),e.addCase(Zg.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}}),hy=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=gv(n);null==s||s.emit("handle_knock",{action:"accept",clientId:i,response:{}})},my=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=gv(n);null==s||s.emit("handle_knock",{action:"reject",clientId:i,response:{}})};const fy=null===!1&&!1,gy=m({app:Fg.reducer,chat:_v.reducer,cloudRecording:bv.reducer,deviceCredentials:Xg.reducer,localMedia:Tv.reducer,localParticipant:c_.reducer,localScreenshare:p_.reducer,organization:g_.reducer,remoteParticipants:k_.reducer,roomConnection:M_.reducer,rtcAnalytics:cy.reducer,rtcConnection:U_.reducer,signalConnection:rv.reducer,streaming:py.reducer,waitingParticipants:uy.reducer}),vy=({preloadedState:e,injectServices:t})=>We({devTools:fy,reducer:gy,middleware:e=>e({thunk:{extraArgument:{services:t}},serializableCheck:!1}).prepend(Ag.middleware),preloadedState:e}),_y=(e,t,r)=>{let i;function n(){const n=t(e.getState());n!==i&&(i=n,r(i))}const s=e.subscribe(n);return n(),s};class yy{constructor(e={}){this.data=void 0===e.data?{}:e.data,this.headers=e.headers||{},this.status=e.status||200,this.statusText=e.statusText||"OK",this.url=e.url||null}}function by(e,t){return Fm.ok(e,`${t} is required`),e}function wy(e,t){return Fm.ok("boolean"==typeof e,`${t}<boolean> is required`),e}function Sy(e,t){return Fm.ok("number"==typeof e,`${t}<number> is required`),e}function Cy(e,t){return Fm.ok("string"==typeof e,`${t}<string> is required`),e}function Ry(e,t,r){const i=r||t.name[0].toLowerCase()+t.name.substring(1);return Fm.ok(e instanceof t,`${i}<${t.name}> is required`),e}function Ty(e,t){return Fm.ok(Array.isArray(e),`${t}<array> is required`),e}function Py(e,t){if(null==e||"object"!=typeof e||Array.isArray(e))throw new Error(`${t} must be a record. ${JSON.stringify(e)}`);return e}function ky(e,t,r){Cy(t,"name"),function(e,t,r,i){Cy(r,"name");const n=i||`${r} must be null or of type ${t}`;Fm.ok(null===e||typeof e===t,n)}(e,"string",t,r)}function Dy({baseUrl:e,url:t}){return e?e+t:t}class Ey{constructor({baseUrl:e}){Cy(e,"baseUrl"),this._baseUrl=e}_requestAxios(e,t){const r=Object.assign({},t,{url:e,baseURL:this._baseUrl});return jg.request(r)}request(e,t){return Cy(e,"url"),Fm.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Fm.ok(t,"options are required"),this._requestAxios(e,t).then((e=>{const{data:t,headers:r,status:i,statusText:n,config:s}=e,a=s&&s.url?Dy({baseUrl:s.baseURL,url:s.url}):null;return new yy({data:t,headers:r,status:i,statusText:n,url:a})})).catch((e=>{const t=e.response;if(!t)throw new Error("Could not make the request.");const{data:r,headers:i,status:n,statusText:s,config:a}=t,o=a&&a.url?Dy({baseUrl:a.baseURL,url:a.url}):null;return Promise.reject(new yy({data:r,headers:i,status:n,statusText:s,url:o}))}))}}class Oy{constructor({httpClient:e}){Fm.ok(e,"httpClient is required"),this._httpClient=e}static dataToFormData(e){Fm.ok(e,"data is required");const t=new FormData;return Object.keys(e).forEach((r=>{const i=e[r];t.append(r,i)})),t}request(e,t={}){const r=Object.assign(t.headers||{},{"Content-Type":void 0});return this._httpClient.request(e,Object.assign(t,{headers:r,transformRequest:Oy.dataToFormData}))}}let Iy;Iy="object"==typeof window?window.btoa||Km:"object"==typeof global&&global.btoa||Km;const xy=()=>Promise.resolve(null);class My{constructor({httpClient:e,fetchDeviceCredentials:t}){this._httpClient=e,this._fetchDeviceCredentials=t}request(e,t){return this._fetchDeviceCredentials().then((r=>{const i=Object.assign({},t.headers,function(e){if(e&&e.credentials){const t=`${e.credentials.uuid}:${e.hmac}`;return{Authorization:`Basic ${Iy(t)}`}}return{}}(r),{"X-Appearin-Device-Platform":"web"}),n=Object.assign({},t,{headers:i});return this._httpClient.request(e,n)}))}}class jy{constructor({baseUrl:e="https://api.appearin.net",fetchDeviceCredentials:t=xy}={}){this.authenticatedHttpClient=new My({httpClient:new Ey({baseUrl:e}),fetchDeviceCredentials:t}),this.authenticatedFormDataHttpClient=new Oy({httpClient:this.authenticatedHttpClient})}request(e,t){return Cy(e,"url"),Fm.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Fm.ok(t,"options are required"),this.authenticatedHttpClient.request(e,t)}requestMultipart(e,t){return Cy(e,"url"),Fm.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Fm.ok(t,"options are required"),this.authenticatedFormDataHttpClient.request(e,t)}}function Ly(e,t){return Cy(Py(e,"data")[t],t)}const Ay=(Ny=Ly,(e,t)=>{const r=Py(e,"data")[t];return null==r?null:Ny(e,t)});var Ny;function By(e,t,r){return function(e,t){return Ty(Py(e,"data")[t],t)}(e,t).map((e=>r(e)))}class Fy{constructor(e,t,r=void 0){this.credentials={uuid:e},this.hmac=t,this.userId=r}toJson(){return Object.assign({credentials:this.credentials,hmac:this.hmac},this.userId&&{userId:this.userId})}static fromJson(e){return new Fy(Ly(function(e,t){const r=Py(e,"data")[t];return void 0===r?null:r}(e,"credentials"),"uuid"),Ly(e,"hmac"),Ay(e,"userId")||void 0)}}class Uy{constructor({apiClient:e}){this._apiClient=e}getCredentials(){return this._apiClient.request("/devices",{method:"post"}).then((({data:e})=>Fy.fromJson(e))).catch((e=>{if(e.response&&404===e.response.status)return null;throw e}))}}class $y{constructor(e,t){this._key=e,this._chromeStorage=t}loadOrDefault(e){return new Promise((t=>{this._chromeStorage.get(this._key,(r=>{t(r[this._key]||e)}))}))}save(e){return new Promise((t=>{this._chromeStorage.set({[this._key]:e},(()=>{t()}))}))}}class zy{constructor(e,t){by(t,"localStorage"),this._key=Cy(e,"key"),this._localStorage=t}loadOrDefault(e){try{const t=this._localStorage.getItem(this._key);if(t)try{return Promise.resolve(JSON.parse(t))}catch(e){}return Promise.resolve(e)}catch(t){return console.warn("Error getting access to storage. Are cookies blocked?",t),Promise.resolve(e)}}save(e){try{return this._localStorage.setItem(this._key,JSON.stringify(e)),Promise.resolve()}catch(e){return console.warn("Error getting access to storage. Are cookies blocked?",e),Promise.reject(e)}}}let Vy;try{Vy=self.localStorage}catch(ub){Vy={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}var qy=Vy;const Gy="credentials_saved";class Wy extends Ft{constructor({deviceService:e,credentialsStore:t}){super(),this._deviceService=e,this._credentialsStore=t}static create({baseUrl:e,storeName:t="CredentialsStorage",storeType:r="localStorage"}){const i=new Uy({apiClient:new jy({baseUrl:e})});let n=null;if("localStorage"===r)n=new zy(t,qy);else{if("chromeStorage"!==r)throw new Error(`Unknown store type: ${r}`);n=new $y(t,window.chrome.storage.local)}return new Wy({deviceService:i,credentialsStore:n})}_fetchNewCredentialsFromApi(){const e=this._credentialsStore;return new Promise((t=>{const r=()=>{this._deviceService.getCredentials().then((r=>e.save(r?r.toJson():null).then((()=>t(r))))).catch((()=>{setTimeout(r,2e3)}))};r()}))}getCurrentCredentials(){return this._credentialsStore.loadOrDefault(null).then((e=>e?Fy.fromJson(e):null))}getCredentials(){return this.credentialsPromise||(this.credentialsPromise=this.getCurrentCredentials().then((e=>e||this._fetchNewCredentialsFromApi()))),this.credentialsPromise}saveCredentials(e){return this.credentialsPromise=void 0,this._credentialsStore.save(e.toJson()).then((()=>(this.emit(Gy,e),e)))}setUserId(e){return this.getCurrentCredentials().then((t=>{t||console.error("Illegal state: no credentials to set user id for.");if(null===t||t.userId!==e)return this._credentialsStore.save(Object.assign({},null==t?void 0:t.toJson(),{userId:e}))})).then((()=>{}))}}class Hy{constructor({isExhausted:e,renewsAt:t,totalMinutesLimit:r,totalMinutesUsed:i}){this.isExhausted=e,this.renewsAt=t,this.totalMinutesLimit=r,this.totalMinutesUsed=i}static fromJson(e){return new Hy({isExhausted:wy(e.isExhausted,"isExhausted"),renewsAt:new Date(Cy(e.renewsAt,"renewsAt")),totalMinutesLimit:Sy(e.totalMinutesLimit,"totalMinutesLimit"),totalMinutesUsed:Sy(e.totalMinutesUsed,"totalMinutesUsed")})}}class Ky{constructor({basePlanId:e,embeddedFreeTierStatus:t,isDeactivated:r,isOnTrial:i,onTrialUntil:n,trialStatus:s}){this.basePlanId=e,this.isDeactivated=r,this.isOnTrial=i,this.onTrialUntil=n||null,this.trialStatus=s||null,this.embeddedFreeTierStatus=t||null}static fromJson(e){return new Ky({basePlanId:"string"==typeof e.basePlanId?e.basePlanId:null,isDeactivated:wy(e.isDeactivated,"isDeactivated"),isOnTrial:wy(e.isOnTrial,"isOnTrial"),onTrialUntil:"string"==typeof e.onTrialUntil?new Date(e.onTrialUntil):null,trialStatus:"string"==typeof e.trialStatus?e.trialStatus:null,embeddedFreeTierStatus:e.embeddedFreeTierStatus?Hy.fromJson(e.embeddedFreeTierStatus):null})}}function Jy(e){return null!=e}function Qy(e={}){return{maxNumberOfInvitationsAndUsers:Jy(null==e?void 0:e.maxNumberOfInvitationsAndUsers)?Number(null==e?void 0:e.maxNumberOfInvitationsAndUsers):null,maxNumberOfClaimedRooms:Jy(null==e?void 0:e.maxNumberOfClaimedRooms)?Number(null==e?void 0:e.maxNumberOfClaimedRooms):null,maxRoomLimitPerOrganization:Jy(null==e?void 0:e.maxRoomLimitPerOrganization)?Number(null==e?void 0:e.maxRoomLimitPerOrganization):null,trialMinutesLimit:Jy(null==e?void 0:e.trialMinutesLimit)?Number(null==e?void 0:e.trialMinutesLimit):null,includedUnits:Jy(null==e?void 0:e.includedUnits)?Number(null==e?void 0:e.includedUnits):null}}class Zy{constructor(e){this.logoImageUrl=null,this.roomBackgroundImageUrl=null,this.roomBackgroundThumbnailUrl=null,this.roomKnockPageBackgroundImageUrl=null,this.roomKnockPageBackgroundThumbnailUrl=null,this.preferences=null,this.onboardingSurvey=null,this.type=null,Ry(e,Object,"properties"),Cy(e.organizationId,"organizationId"),Cy(e.organizationName,"organizationName"),Cy(e.subdomain,"subdomain"),Ry(e.permissions,Object,"permissions"),Ry(e.limits,Object,"limits"),this.organizationId=e.organizationId,this.organizationName=e.organizationName,this.subdomain=e.subdomain,this.permissions=e.permissions,this.limits=e.limits,this.account=e.account?new Ky(e.account):null,this.logoImageUrl=e.logoImageUrl,this.roomBackgroundImageUrl=e.roomBackgroundImageUrl,this.roomBackgroundThumbnailUrl=e.roomBackgroundThumbnailUrl,this.roomKnockPageBackgroundImageUrl=e.roomKnockPageBackgroundImageUrl,this.roomKnockPageBackgroundThumbnailUrl=e.roomKnockPageBackgroundThumbnailUrl,this.preferences=e.preferences,this.onboardingSurvey=e.onboardingSurvey,this.type=e.type}static fromJson(e){const t=Ry(e,Object,"data"),r=(null==t?void 0:t.preferences)||{},i=(null==t?void 0:t.onboardingSurvey)||null,n=Ry(t.permissions,Object,"permissions");return new Zy({organizationId:Cy(t.organizationId,"organizationId"),organizationName:Cy(t.organizationName,"organizationName"),subdomain:Cy(t.subdomain,"subdomain"),permissions:n,limits:Qy(Ry(t.limits,Object,"limits")),account:t.account?Ky.fromJson(t.account):null,logoImageUrl:"string"==typeof t.logoImageUrl?t.logoImageUrl:null,roomBackgroundImageUrl:"string"==typeof t.roomBackgroundImageUrl?t.roomBackgroundImageUrl:null,roomBackgroundThumbnailUrl:"string"==typeof t.roomBackgroundThumbnailUrl?t.roomBackgroundThumbnailUrl:null,roomKnockPageBackgroundImageUrl:"string"==typeof t.roomKnockPageBackgroundImageUrl?t.roomKnockPageBackgroundImageUrl:null,roomKnockPageBackgroundThumbnailUrl:"string"==typeof t.roomKnockPageBackgroundThumbnailUrl?t.roomKnockPageBackgroundThumbnailUrl:null,preferences:r,onboardingSurvey:i,type:"string"==typeof t.type?t.type:null})}}Zy.GLOBAL_ORGANIZATION_ID="1";class Yy{constructor({apiClient:e}){this._apiClient=e}createOrganization({organizationName:e,subdomain:t,owner:r}){const{displayName:i,consents:n}=r||{},s="email"in r?{value:r.email,verificationCode:Cy(r.verificationCode,"owner.verificationCode")}:null,a="idToken"in r?r.idToken:null;if(Cy(t,"subdomain"),Cy(e,"organizationName"),Cy(i,"owner.displayName"),Fm.ok(s||a,"owner.email or owner.idToken is required"),n){Ty(n,"consents");for(const{consentRevisionId:e,action:t}of n)Cy(e,"consentRevisionId"),ky(t,"action")}return this._apiClient.request("/organizations",{method:"POST",data:{organizationName:e,type:"private",subdomain:t,owner:Object.assign(Object.assign(Object.assign(Object.assign({},s&&{email:s}),a&&{idToken:a}),n&&{consents:n}),{displayName:i})}}).then((({data:e})=>Ly(e,"organizationId")))}getOrganizationBySubdomain(e){return Cy(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/?fields=permissions,account,onboardingSurvey`,{method:"GET"}).then((({data:e})=>Zy.fromJson(e))).catch((e=>{if(e instanceof yy){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationByOrganizationId(e){return Cy(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}?fields=permissions,account`,{method:"GET"}).then((({data:e})=>Zy.fromJson(e))).catch((e=>{if(e instanceof yy){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationsByContactPoint(e){const{code:t}=e,r="email"in e?e.email:null,i="phoneNumber"in e?e.phoneNumber:null;Fm.ok((r||i)&&!(r&&i),"either email or phoneNumber is required"),Cy(t,"code");const n=r?{type:"email",value:r}:{type:"phoneNumber",value:i};return this._apiClient.request("/organization-queries",{method:"POST",data:{contactPoint:n,code:t}}).then((({data:e})=>By(e,"organizations",(e=>Zy.fromJson(e)))))}getOrganizationsByIdToken({idToken:e}){return Cy(e,"idToken"),this._apiClient.request("/organization-queries",{method:"POST",data:{idToken:e}}).then((({data:e})=>By(e,"organizations",(e=>Zy.fromJson(Object.assign({permissions:{},limits:{}},Py(e,"organization")))))))}getOrganizationsByLoggedInUser(){return this._apiClient.request("/user/organizations",{method:"GET"}).then((({data:e})=>By(e,"organizations",(e=>Zy.fromJson(Object.assign({permissions:{},limits:{}},Py(e,"organization")))))))}getSubdomainAvailability(e){return Cy(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/availability`,{method:"GET"}).then((({data:e})=>(Ry(e,Object,"data"),{status:Ly(e,"status")})))}updatePreferences({organizationId:e,preferences:t}){return by(e,"organizationId"),by(t,"preferences"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}/preferences`,{method:"PATCH",data:t}).then((()=>{}))}deleteOrganization({organizationId:e}){return by(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}`,{method:"DELETE"}).then((()=>{}))}}class Xy{constructor({organizationService:e,subdomain:t}){this._organizationService=e,this._subdomain=t,this._organizationPromise=null}initOrganization(){return this.fetchOrganization().then((()=>{}))}fetchOrganization(){return this._organizationPromise||(this._organizationPromise=this._organizationService.getOrganizationBySubdomain(this._subdomain)),this._organizationPromise}}const eb="https://api.whereby.dev";function tb(){const e=Wy.create({baseUrl:eb}),t=new jy({fetchDeviceCredentials:e.getCredentials.bind(e),baseUrl:eb}),r=new Yy({apiClient:t});return{credentialsService:e,apiClient:t,organizationService:r,fetchOrganizationFromRoomUrl:e=>{const t=Wm({host:new URL(e).host});return new Xy({organizationService:r,subdomain:t.subdomain}).fetchOrganization()}}}const rb=be((e=>e.chat.chatMessages),(e=>e.cloudRecording),d_,Zv,I_,x_,N_,(e=>e.streaming),(e=>e.waitingParticipants.waitingParticipants),((e,t,r,i,n,s,a,o,c)=>({chatMessages:e,cloudRecording:t.isRecording?{status:"recording"}:void 0,localScreenshareStatus:r.isScreenSharing?"active":void 0,localParticipant:Object.assign(Object.assign({},r),{stream:i}),remoteParticipants:n,screenshares:s,connectionStatus:a,liveStream:o.isStreaming?{status:"streaming",startedAt:o.startedAt}:void 0,waitingParticipants:c}))),ib={chatMessages:[],remoteParticipants:[],connectionStatus:"initializing",screenshares:[],waitingParticipants:[]},nb={localMediaOptions:{audio:!0,video:!0}};const sb=be((e=>e.localMedia.cameraDeviceError),t_,Vv,qv,(e=>e.localMedia.isSettingCameraDevice),(e=>e.localMedia.isSettingMicrophoneDevice),e_,Zv,(e=>e.localMedia.microphoneDeviceError),r_,i_,(e=>e.localMedia.startError),((e,t,r,i,n,s,a,o,c,d,l,p)=>({cameraDeviceError:e,cameraDevices:t,currentCameraDeviceId:r,currentMicrophoneDeviceId:i,isSettingCameraDevice:n,isSettingMicrophoneDevice:s,isStarting:a,localStream:o,microphoneDeviceError:c,microphoneDevices:d,speakerDevices:l,startError:p}))),ab={cameraDeviceError:null,cameraDevices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isStarting:!1,microphoneDeviceError:null,microphoneDevices:[],speakerDevices:[],startError:null};return e.VideoView=s,e.useLocalMedia=function(e={audio:!0,video:!0}){const[r]=t.useState((()=>{const e=tb();return vy({injectServices:e})})),[i,n]=t.useState(ab);return t.useEffect((()=>{const t=_y(r,sb,n);return r.dispatch(Uv(e)),()=>{t(),r.dispatch($v())}}),[]),{state:i,actions:{setCameraDevice:t.useCallback((e=>r.dispatch(kv({deviceId:e}))),[r]),setMicrophoneDevice:t.useCallback((e=>r.dispatch(Dv({deviceId:e}))),[r]),toggleCameraEnabled:t.useCallback((e=>r.dispatch(Ev({enabled:e}))),[r]),toggleMicrophoneEnabled:t.useCallback((e=>r.dispatch(Ov({enabled:e}))),[r])},store:r}},e.useRoomConnection=function(e,t=nb){const[r]=n.useState((()=>{if(t.localMedia)return t.localMedia.store;const e=tb();return vy({injectServices:e})})),[i,a]=n.useState(),[o,c]=n.useState(ib);return n.useEffect((()=>{const i=_y(r,rb,c),n=new URL(e),s=new URLSearchParams(n.search).get("roomKey");return r.dispatch(Ug({displayName:t.displayName||"Guest",localMediaOptions:t.localMedia?void 0:t.localMediaOptions,roomKey:s,roomUrl:e,sdkVersion:"0.8.0",externalId:t.externalId||null})),()=>{i(),r.dispatch($g())}}),[]),n.useEffect((()=>{r&&!i&&a((()=>e=>n.createElement(s,Object.assign({},e,{onResize:({stream:e,width:t,height:i})=>{r.dispatch(Z_({streamId:e.id,width:t,height:i}))}}))))}),[r,i]),{state:o,actions:{sendChatMessage:n.useCallback((e=>r.dispatch(yv({text:e}))),[r]),knock:n.useCallback((()=>r.dispatch(L_())),[r]),setDisplayName:n.useCallback((e=>r.dispatch(o_({displayName:e}))),[r]),toggleCamera:n.useCallback((e=>r.dispatch(Ev({enabled:e}))),[r]),toggleMicrophone:n.useCallback((e=>r.dispatch(Ov({enabled:e}))),[r]),acceptWaitingParticipant:n.useCallback((e=>r.dispatch(hy({participantId:e}))),[r]),rejectWaitingParticipant:n.useCallback((e=>r.dispatch(my({participantId:e}))),[r]),startCloudRecording:n.useCallback((()=>r.dispatch(Sv())),[r]),startScreenshare:n.useCallback((()=>r.dispatch(h_())),[r]),stopCloudRecording:n.useCallback((()=>r.dispatch(Cv())),[r]),stopScreenshare:n.useCallback((()=>r.dispatch(m_())),[r])},components:{VideoView:i||s},_ref:r}},e}({},React);
|