39 lines
406 KiB
JavaScript
39 lines
406 KiB
JavaScript
import{E as U,_ as Yi,i as da,j as ua,r as F,k as Dl,m as ha,c as Y,f as x,d as z,w as Q,e as oe,n as Ml,p as xl,a as fa,o as $,U as Ri,g as Fe,D as ue,X as pa,t as le,h as he,F as ai,B as oi,W as ma,a8 as Al,L as Ve,b as Ie,J as Ce,a9 as Nl,aa as Ll,ab as Ul,a6 as Fl,s as gt,ac as jl,l as Pt,N as Bl,ad as Vl,u as ql,Y as Te,ae as tr,af as ir,ag as nr,a5 as Kl}from"./index-DikBC4WP.js";import{a as sr,b as Gl,B as Wl,u as zl}from"./room-BKpValiO.js";import Hl from"./index-eGhvKdrr.js";import{e as ot}from"./bus-C8MdfDPM.js";import{C as Jl}from"./index-Ba59pKR3.js";const $l="/assets/shrink-Cp-w-M07.png",Ql="/assets/amplify-D21nWILD.png";var rr={};function Yl(n,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in n)){var s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,s.get?s:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(n)}var Xl=Object.defineProperty,Zl=(n,e,t)=>e in n?Xl(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,ar=(n,e,t)=>Zl(n,typeof e!="symbol"?e+"":e,t);class Ne{constructor(){ar(this,"_locking"),ar(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const t=new Promise(s=>e=()=>{this._locks-=1,s()}),i=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),i}}function me(n,e){if(!n)throw new Error(e)}const ed=34028234663852886e22,td=-34028234663852886e22,id=4294967295,nd=2147483647,sd=-2147483648;function Ii(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>nd||n<sd)throw new Error("invalid int 32: "+n)}function Un(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>id||n<0)throw new Error("invalid uint 32: "+n)}function ga(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>ed||n<td))throw new Error("invalid float 32: "+n)}const va=Symbol("@bufbuild/protobuf/enum-type");function rd(n){const e=n[va];return me(e,"missing enum type on enum object"),e}function ba(n,e,t,i){n[va]=ya(e,t.map(s=>({no:s.no,name:s.name,localName:n[s.no]})))}function ya(n,e,t){const i=Object.create(null),s=Object.create(null),r=[];for(const a of e){const o=ka(a);r.push(o),i[a.name]=o,s[a.no]=o}return{typeName:n,values:r,findName(a){return i[a]},findNumber(a){return s[a]}}}function ad(n,e,t){const i={};for(const s of e){const r=ka(s);i[r.localName]=r.no,i[r.no]=r.localName}return ba(i,n,e),i}function ka(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class ds{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){const i=this.getType(),s=i.runtime.bin,r=s.makeReadOptions(t);return s.readMessage(this,r.readerFactory(e),e.byteLength,r),this}fromJson(e,t){const i=this.getType(),s=i.runtime.json,r=s.makeReadOptions(t);return s.readMessage(i,e,r,this),this}fromJsonString(e,t){let i;try{i=JSON.parse(e)}catch(s){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(s instanceof Error?s.message:String(s)))}return this.fromJson(i,t)}toBinary(e){const t=this.getType(),i=t.runtime.bin,s=i.makeWriteOptions(e),r=s.writerFactory();return i.writeMessage(this,r,s),r.finish()}toJson(e){const t=this.getType(),i=t.runtime.json,s=i.makeWriteOptions(e);return i.writeMessage(this,s)}toJsonString(e){var t;const i=this.toJson(e);return JSON.stringify(i,null,(t=e==null?void 0:e.prettySpaces)!==null&&t!==void 0?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function od(n,e,t,i){var s;const r=(s=i==null?void 0:i.localName)!==null&&s!==void 0?s:e.substring(e.lastIndexOf(".")+1),a={[r]:function(o){n.util.initFields(this),n.util.initPartial(o,this)}}[r];return Object.setPrototypeOf(a.prototype,new ds),Object.assign(a,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(o,c){return new a().fromBinary(o,c)},fromJson(o,c){return new a().fromJson(o,c)},fromJsonString(o,c){return new a().fromJsonString(o,c)},equals(o,c){return n.util.equals(a,o,c)}}),a}function cd(){let n=0,e=0;for(let i=0;i<28;i+=7){let s=this.buf[this.pos++];if(n|=(s&127)<<i,!(s&128))return this.assertBounds(),[n,e]}let t=this.buf[this.pos++];if(n|=(t&15)<<28,e=(t&112)>>4,!(t&128))return this.assertBounds(),[n,e];for(let i=3;i<=31;i+=7){let s=this.buf[this.pos++];if(e|=(s&127)<<i,!(s&128))return this.assertBounds(),[n,e]}throw new Error("invalid varint")}function Tn(n,e,t){for(let r=0;r<28;r=r+7){const a=n>>>r,o=!(!(a>>>7)&&e==0),c=(o?a|128:a)&255;if(t.push(c),!o)return}const i=n>>>28&15|(e&7)<<4,s=!!(e>>3);if(t.push((s?i|128:i)&255),!!s){for(let r=3;r<31;r=r+7){const a=e>>>r,o=!!(a>>>7),c=(o?a|128:a)&255;if(t.push(c),!o)return}t.push(e>>>31&1)}}const Oi=4294967296;function or(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let i=0,s=0;function r(a,o){const c=Number(n.slice(a,o));s*=t,i=i*t+c,i>=Oi&&(s=s+(i/Oi|0),i=i%Oi)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),e?Ca(i,s):us(i,s)}function ld(n,e){let t=us(n,e);const i=t.hi&2147483648;i&&(t=Ca(t.lo,t.hi));const s=Ta(t.lo,t.hi);return i?"-"+s:s}function Ta(n,e){if({lo:n,hi:e}=dd(n,e),e<=2097151)return String(Oi*e+n);const t=n&16777215,i=(n>>>24|e<<8)&16777215,s=e>>16&65535;let r=t+i*6777216+s*6710656,a=i+s*8147497,o=s*2;const c=1e7;return r>=c&&(a+=Math.floor(r/c),r%=c),a>=c&&(o+=Math.floor(a/c),a%=c),o.toString()+cr(a)+cr(r)}function dd(n,e){return{lo:n>>>0,hi:e>>>0}}function us(n,e){return{lo:n|0,hi:e|0}}function Ca(n,e){return e=~e,n?n=~n+1:e+=1,us(n,e)}const cr=n=>{const e=String(n);return"0000000".slice(e.length)+e};function lr(n,e){if(n>=0){for(;n>127;)e.push(n&127|128),n=n>>>7;e.push(n)}else{for(let t=0;t<9;t++)e.push(n&127|128),n=n>>7;e.push(1)}}function ud(){let n=this.buf[this.pos++],e=n&127;if(!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<7,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<14,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<21,!(n&128))return this.assertBounds(),e;n=this.buf[this.pos++],e|=(n&15)<<28;for(let t=5;n&128&&t<10;t++)n=this.buf[this.pos++];if(n&128)throw new Error("invalid varint");return this.assertBounds(),e>>>0}function hd(){const n=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof n.getBigInt64=="function"&&typeof n.getBigUint64=="function"&&typeof n.setBigInt64=="function"&&typeof n.setBigUint64=="function"&&(typeof process!="object"||typeof rr!="object"||rr.BUF_BIGINT_DISABLE!=="1")){const s=BigInt("-9223372036854775808"),r=BigInt("9223372036854775807"),a=BigInt("0"),o=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(c){const l=typeof c=="bigint"?c:BigInt(c);if(l>r||l<s)throw new Error("int64 invalid: ".concat(c));return l},uParse(c){const l=typeof c=="bigint"?c:BigInt(c);if(l>o||l<a)throw new Error("uint64 invalid: ".concat(c));return l},enc(c){return n.setBigInt64(0,this.parse(c),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(c){return n.setBigInt64(0,this.uParse(c),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(c,l){return n.setInt32(0,c,!0),n.setInt32(4,l,!0),n.getBigInt64(0,!0)},uDec(c,l){return n.setInt32(0,c,!0),n.setInt32(4,l,!0),n.getBigUint64(0,!0)}}}const t=s=>me(/^-?[0-9]+$/.test(s),"int64 invalid: ".concat(s)),i=s=>me(/^[0-9]+$/.test(s),"uint64 invalid: ".concat(s));return{zero:"0",supported:!1,parse(s){return typeof s!="string"&&(s=s.toString()),t(s),s},uParse(s){return typeof s!="string"&&(s=s.toString()),i(s),s},enc(s){return typeof s!="string"&&(s=s.toString()),t(s),or(s)},uEnc(s){return typeof s!="string"&&(s=s.toString()),i(s),or(s)},dec(s,r){return ld(s,r)},uDec(s,r){return Ta(s,r)}}}const de=hd();var R;(function(n){n[n.DOUBLE=1]="DOUBLE",n[n.FLOAT=2]="FLOAT",n[n.INT64=3]="INT64",n[n.UINT64=4]="UINT64",n[n.INT32=5]="INT32",n[n.FIXED64=6]="FIXED64",n[n.FIXED32=7]="FIXED32",n[n.BOOL=8]="BOOL",n[n.STRING=9]="STRING",n[n.BYTES=12]="BYTES",n[n.UINT32=13]="UINT32",n[n.SFIXED32=15]="SFIXED32",n[n.SFIXED64=16]="SFIXED64",n[n.SINT32=17]="SINT32",n[n.SINT64=18]="SINT64"})(R||(R={}));var Ct;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(Ct||(Ct={}));function mt(n,e,t){if(e===t)return!0;if(n==R.BYTES){if(!(e instanceof Uint8Array)||!(t instanceof Uint8Array)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}switch(n){case R.UINT64:case R.FIXED64:case R.INT64:case R.SFIXED64:case R.SINT64:return e==t}return!1}function Gt(n,e){switch(n){case R.BOOL:return!1;case R.UINT64:case R.FIXED64:case R.INT64:case R.SFIXED64:case R.SINT64:return e==0?de.zero:"0";case R.DOUBLE:case R.FLOAT:return 0;case R.BYTES:return new Uint8Array(0);case R.STRING:return"";default:return 0}}function Sa(n,e){switch(n){case R.BOOL:return e===!1;case R.STRING:return e==="";case R.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var ge;(function(n){n[n.Varint=0]="Varint",n[n.Bit64=1]="Bit64",n[n.LengthDelimited=2]="LengthDelimited",n[n.StartGroup=3]="StartGroup",n[n.EndGroup=4]="EndGroup",n[n.Bit32=5]="Bit32"})(ge||(ge={}));class fd{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let s=0;s<this.chunks.length;s++)e+=this.chunks[s].length;let t=new Uint8Array(e),i=0;for(let s=0;s<this.chunks.length;s++)t.set(this.chunks[s],i),i+=this.chunks[s].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Un(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return Ii(e),lr(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){ga(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){Un(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){Ii(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return Ii(e),e=(e<<1^e>>31)>>>0,lr(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),s=de.enc(e);return i.setInt32(0,s.lo,!0),i.setInt32(4,s.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),s=de.uEnc(e);return i.setInt32(0,s.lo,!0),i.setInt32(4,s.hi,!0),this.raw(t)}int64(e){let t=de.enc(e);return Tn(t.lo,t.hi,this.buf),this}sint64(e){let t=de.enc(e),i=t.hi>>31,s=t.lo<<1^i,r=(t.hi<<1|t.lo>>>31)^i;return Tn(s,r,this.buf),this}uint64(e){let t=de.uEnc(e);return Tn(t.lo,t.hi,this.buf),this}}class pd{constructor(e,t){this.varint64=cd,this.uint32=ud,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,i=e&7;if(t<=0||i<0||i>5)throw new Error("illegal tag: field no "+t+" wire type "+i);return[t,i]}skip(e,t){let i=this.pos;switch(e){case ge.Varint:for(;this.buf[this.pos++]&128;);break;case ge.Bit64:this.pos+=4;case ge.Bit32:this.pos+=4;break;case ge.LengthDelimited:let s=this.uint32();this.pos+=s;break;case ge.StartGroup:for(;;){const[r,a]=this.tag();if(a===ge.EndGroup){if(t!==void 0&&r!==t)throw new Error("invalid end group tag");break}this.skip(a,r)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(i,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return de.dec(...this.varint64())}uint64(){return de.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(e&1);return e=(e>>>1|(t&1)<<31)^i,t=t>>>1^i,de.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return de.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return de.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function md(n,e,t,i){let s;return{typeName:e,extendee:t,get field(){if(!s){const r=typeof i=="function"?i():i;r.name=e.split(".").pop(),r.jsonName="[".concat(e,"]"),s=n.util.newFieldList([r]).list()[0]}return s},runtime:n}}function Pa(n){const e=n.field.localName,t=Object.create(null);return t[e]=gd(n),[t,()=>t[e]]}function gd(n){const e=n.field;if(e.repeated)return[];if(e.default!==void 0)return e.default;switch(e.kind){case"enum":return e.T.values[0].no;case"scalar":return Gt(e.T,e.L);case"message":const t=e.T,i=new t;return t.fieldWrapper?t.fieldWrapper.unwrapField(i):i;case"map":throw"map fields are not allowed to be extensions"}}function vd(n,e){if(!e.repeated&&(e.kind=="enum"||e.kind=="scalar")){for(let t=n.length-1;t>=0;--t)if(n[t].no==e.no)return[n[t]];return[]}return n.filter(t=>t.no===e.no)}let ct="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Xi=[];for(let n=0;n<ct.length;n++)Xi[ct[n].charCodeAt(0)]=n;Xi[45]=ct.indexOf("+");Xi[95]=ct.indexOf("/");const Ea={dec(n){let e=n.length*3/4;n[n.length-2]=="="?e-=2:n[n.length-1]=="="&&(e-=1);let t=new Uint8Array(e),i=0,s=0,r,a=0;for(let o=0;o<n.length;o++){if(r=Xi[n.charCodeAt(o)],r===void 0)switch(n[o]){case"=":s=0;case`
|
||
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string.")}switch(s){case 0:a=r,s=1;break;case 1:t[i++]=a<<2|(r&48)>>4,a=r,s=2;break;case 2:t[i++]=(a&15)<<4|(r&60)>>2,a=r,s=3;break;case 3:t[i++]=(a&3)<<6|r,s=0;break}}if(s==1)throw Error("invalid base64 string.");return t.subarray(0,i)},enc(n){let e="",t=0,i,s=0;for(let r=0;r<n.length;r++)switch(i=n[r],t){case 0:e+=ct[i>>2],s=(i&3)<<4,t=1;break;case 1:e+=ct[s|i>>4],s=(i&15)<<2,t=2;break;case 2:e+=ct[s|i>>6],e+=ct[i&63],t=0;break}return t&&(e+=ct[s],e+="=",t==1&&(e+="=")),e}};function bd(n,e,t){wa(e,n);const i=e.runtime.bin.makeReadOptions(t),s=vd(n.getType().runtime.bin.listUnknownFields(n),e.field),[r,a]=Pa(e);for(const o of s)e.runtime.bin.readField(r,i.readerFactory(o.data),e.field,o.wireType,i);return a()}function yd(n,e,t,i){wa(e,n);const s=e.runtime.bin.makeReadOptions(i),r=e.runtime.bin.makeWriteOptions(i);if(_a(n,e)){const l=n.getType().runtime.bin.listUnknownFields(n).filter(d=>d.no!=e.field.no);n.getType().runtime.bin.discardUnknownFields(n);for(const d of l)n.getType().runtime.bin.onUnknownField(n,d.no,d.wireType,d.data)}const a=r.writerFactory();let o=e.field;!o.opt&&!o.repeated&&(o.kind=="enum"||o.kind=="scalar")&&(o=Object.assign(Object.assign({},e.field),{opt:!0})),e.runtime.bin.writeField(o,t,a,r);const c=s.readerFactory(a.finish());for(;c.pos<c.len;){const[l,d]=c.tag(),f=c.skip(d,l);n.getType().runtime.bin.onUnknownField(n,l,d,f)}}function _a(n,e){const t=n.getType();return e.extendee.typeName===t.typeName&&!!t.runtime.bin.listUnknownFields(n).find(i=>i.no==e.field.no)}function wa(n,e){me(n.extendee.typeName==e.getType().typeName,"extension ".concat(n.typeName," can only be applied to message ").concat(n.extendee.typeName))}function Ra(n,e){const t=n.localName;if(n.repeated)return e[t].length>0;if(n.oneof)return e[n.oneof.localName].case===t;switch(n.kind){case"enum":case"scalar":return n.opt||n.req?e[t]!==void 0:n.kind=="enum"?e[t]!==n.T.values[0].no:!Sa(n.T,e[t]);case"message":return e[t]!==void 0;case"map":return Object.keys(e[t]).length>0}}function dr(n,e){const t=n.localName,i=!n.opt&&!n.req;if(n.repeated)e[t]=[];else if(n.oneof)e[n.oneof.localName]={case:void 0};else switch(n.kind){case"map":e[t]={};break;case"enum":e[t]=i?n.T.values[0].no:void 0;break;case"scalar":e[t]=i?Gt(n.T,n.L):void 0;break;case"message":e[t]=void 0;break}}function Et(n,e){if(n===null||typeof n!="object"||!Object.getOwnPropertyNames(ds.prototype).every(i=>i in n&&typeof n[i]=="function"))return!1;const t=n.getType();return t===null||typeof t!="function"||!("typeName"in t)||typeof t.typeName!="string"?!1:e===void 0?!0:t.typeName==e.typeName}function Ia(n,e){return Et(e)||!n.fieldWrapper?e:n.fieldWrapper.wrapField(e)}R.DOUBLE,R.FLOAT,R.INT64,R.UINT64,R.INT32,R.UINT32,R.BOOL,R.STRING,R.BYTES;const ur={ignoreUnknownFields:!1},hr={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function kd(n){return n?Object.assign(Object.assign({},ur),n):ur}function Td(n){return n?Object.assign(Object.assign({},hr),n):hr}const Ki=Symbol(),Di=Symbol();function Cd(){return{makeReadOptions:kd,makeWriteOptions:Td,readMessage(n,e,t,i){if(e==null||Array.isArray(e)||typeof e!="object")throw new Error("cannot decode message ".concat(n.typeName," from JSON: ").concat(et(e)));i=i??new n;const s=new Map,r=t.typeRegistry;for(const[a,o]of Object.entries(e)){const c=n.fields.findJsonName(a);if(c){if(c.oneof){if(o===null&&c.kind=="scalar")continue;const l=s.get(c.oneof);if(l!==void 0)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: multiple keys for oneof "').concat(c.oneof.name,'" present: "').concat(l,'", "').concat(a,'"'));s.set(c.oneof,a)}fr(i,o,c,t,n)}else{let l=!1;if(r!=null&&r.findExtension&&a.startsWith("[")&&a.endsWith("]")){const d=r.findExtension(a.substring(1,a.length-1));if(d&&d.extendee.typeName==n.typeName){l=!0;const[f,p]=Pa(d);fr(f,o,d.field,t,d),yd(i,d,p(),t)}}if(!l&&!t.ignoreUnknownFields)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: key "').concat(a,'" is unknown'))}}return i},writeMessage(n,e){const t=n.getType(),i={};let s;try{for(s of t.fields.byNumber()){if(!Ra(s,n)){if(s.req)throw"required field not set";if(!e.emitDefaultValues||!Pd(s))continue}const a=s.oneof?n[s.oneof.localName].value:n[s.localName],o=pr(s,a,e);o!==void 0&&(i[e.useProtoFieldName?s.name:s.jsonName]=o)}const r=e.typeRegistry;if(r!=null&&r.findExtensionFor)for(const a of t.runtime.bin.listUnknownFields(n)){const o=r.findExtensionFor(t.typeName,a.no);if(o&&_a(n,o)){const c=bd(n,o,e),l=pr(o.field,c,e);l!==void 0&&(i[o.field.jsonName]=l)}}}catch(r){const a=s?"cannot encode field ".concat(t.typeName,".").concat(s.name," to JSON"):"cannot encode message ".concat(t.typeName," to JSON"),o=r instanceof Error?r.message:String(r);throw new Error(a+(o.length>0?": ".concat(o):""))}return i},readScalar(n,e,t){return ci(n,e,t??Ct.BIGINT,!0)},writeScalar(n,e,t){if(e!==void 0&&(t||Sa(n,e)))return Mi(n,e)},debug:et}}function et(n){if(n===null)return"null";switch(typeof n){case"object":return Array.isArray(n)?"array":"object";case"string":return n.length>100?"string":'"'.concat(n.split('"').join('\\"'),'"');default:return String(n)}}function fr(n,e,t,i,s){let r=t.localName;if(t.repeated){if(me(t.kind!="map"),e===null)return;if(!Array.isArray(e))throw new Error("cannot decode field ".concat(s.typeName,".").concat(t.name," from JSON: ").concat(et(e)));const a=n[r];for(const o of e){if(o===null)throw new Error("cannot decode field ".concat(s.typeName,".").concat(t.name," from JSON: ").concat(et(o)));switch(t.kind){case"message":a.push(t.T.fromJson(o,i));break;case"enum":const c=Cn(t.T,o,i.ignoreUnknownFields,!0);c!==Di&&a.push(c);break;case"scalar":try{a.push(ci(t.T,o,t.L,!0))}catch(l){let d="cannot decode field ".concat(s.typeName,".").concat(t.name," from JSON: ").concat(et(o));throw l instanceof Error&&l.message.length>0&&(d+=": ".concat(l.message)),new Error(d)}break}}}else if(t.kind=="map"){if(e===null)return;if(typeof e!="object"||Array.isArray(e))throw new Error("cannot decode field ".concat(s.typeName,".").concat(t.name," from JSON: ").concat(et(e)));const a=n[r];for(const[o,c]of Object.entries(e)){if(c===null)throw new Error("cannot decode field ".concat(s.typeName,".").concat(t.name," from JSON: map value null"));let l;try{l=Sd(t.K,o)}catch(d){let f="cannot decode map key for field ".concat(s.typeName,".").concat(t.name," from JSON: ").concat(et(e));throw d instanceof Error&&d.message.length>0&&(f+=": ".concat(d.message)),new Error(f)}switch(t.V.kind){case"message":a[l]=t.V.T.fromJson(c,i);break;case"enum":const d=Cn(t.V.T,c,i.ignoreUnknownFields,!0);d!==Di&&(a[l]=d);break;case"scalar":try{a[l]=ci(t.V.T,c,Ct.BIGINT,!0)}catch(f){let p="cannot decode map value for field ".concat(s.typeName,".").concat(t.name," from JSON: ").concat(et(e));throw f instanceof Error&&f.message.length>0&&(p+=": ".concat(f.message)),new Error(p)}break}}}else switch(t.oneof&&(n=n[t.oneof.localName]={case:r},r="value"),t.kind){case"message":const a=t.T;if(e===null&&a.typeName!="google.protobuf.Value")return;let o=n[r];Et(o)?o.fromJson(e,i):(n[r]=o=a.fromJson(e,i),a.fieldWrapper&&!t.oneof&&(n[r]=a.fieldWrapper.unwrapField(o)));break;case"enum":const c=Cn(t.T,e,i.ignoreUnknownFields,!1);switch(c){case Ki:dr(t,n);break;case Di:break;default:n[r]=c;break}break;case"scalar":try{const l=ci(t.T,e,t.L,!1);switch(l){case Ki:dr(t,n);break;default:n[r]=l;break}}catch(l){let d="cannot decode field ".concat(s.typeName,".").concat(t.name," from JSON: ").concat(et(e));throw l instanceof Error&&l.message.length>0&&(d+=": ".concat(l.message)),new Error(d)}break}}function Sd(n,e){if(n===R.BOOL)switch(e){case"true":e=!0;break;case"false":e=!1;break}return ci(n,e,Ct.BIGINT,!0).toString()}function ci(n,e,t,i){if(e===null)return i?Gt(n,t):Ki;switch(n){case R.DOUBLE:case R.FLOAT:if(e==="NaN")return Number.NaN;if(e==="Infinity")return Number.POSITIVE_INFINITY;if(e==="-Infinity")return Number.NEGATIVE_INFINITY;if(e===""||typeof e=="string"&&e.trim().length!==e.length||typeof e!="string"&&typeof e!="number")break;const s=Number(e);if(Number.isNaN(s)||!Number.isFinite(s))break;return n==R.FLOAT&&ga(s),s;case R.INT32:case R.FIXED32:case R.SFIXED32:case R.SINT32:case R.UINT32:let r;if(typeof e=="number"?r=e:typeof e=="string"&&e.length>0&&e.trim().length===e.length&&(r=Number(e)),r===void 0)break;return n==R.UINT32||n==R.FIXED32?Un(r):Ii(r),r;case R.INT64:case R.SFIXED64:case R.SINT64:if(typeof e!="number"&&typeof e!="string")break;const a=de.parse(e);return t?a.toString():a;case R.FIXED64:case R.UINT64:if(typeof e!="number"&&typeof e!="string")break;const o=de.uParse(e);return t?o.toString():o;case R.BOOL:if(typeof e!="boolean")break;return e;case R.STRING:if(typeof e!="string")break;try{encodeURIComponent(e)}catch{throw new Error("invalid UTF8")}return e;case R.BYTES:if(e==="")return new Uint8Array(0);if(typeof e!="string")break;return Ea.dec(e)}throw new Error}function Cn(n,e,t,i){if(e===null)return n.typeName=="google.protobuf.NullValue"?0:i?n.values[0].no:Ki;switch(typeof e){case"number":if(Number.isInteger(e))return e;break;case"string":const s=n.findName(e);if(s!==void 0)return s.no;if(t)return Di;break}throw new Error("cannot decode enum ".concat(n.typeName," from JSON: ").concat(et(e)))}function Pd(n){return n.repeated||n.kind=="map"?!0:!(n.oneof||n.kind=="message"||n.opt||n.req)}function pr(n,e,t){if(n.kind=="map"){me(typeof e=="object"&&e!=null);const i={},s=Object.entries(e);switch(n.V.kind){case"scalar":for(const[a,o]of s)i[a.toString()]=Mi(n.V.T,o);break;case"message":for(const[a,o]of s)i[a.toString()]=o.toJson(t);break;case"enum":const r=n.V.T;for(const[a,o]of s)i[a.toString()]=Sn(r,o,t.enumAsInteger);break}return t.emitDefaultValues||s.length>0?i:void 0}if(n.repeated){me(Array.isArray(e));const i=[];switch(n.kind){case"scalar":for(let s=0;s<e.length;s++)i.push(Mi(n.T,e[s]));break;case"enum":for(let s=0;s<e.length;s++)i.push(Sn(n.T,e[s],t.enumAsInteger));break;case"message":for(let s=0;s<e.length;s++)i.push(e[s].toJson(t));break}return t.emitDefaultValues||i.length>0?i:void 0}switch(n.kind){case"scalar":return Mi(n.T,e);case"enum":return Sn(n.T,e,t.enumAsInteger);case"message":return Ia(n.T,e).toJson(t)}}function Sn(n,e,t){var i;if(me(typeof e=="number"),n.typeName=="google.protobuf.NullValue")return null;if(t)return e;const s=n.findNumber(e);return(i=s==null?void 0:s.name)!==null&&i!==void 0?i:e}function Mi(n,e){switch(n){case R.INT32:case R.SFIXED32:case R.SINT32:case R.FIXED32:case R.UINT32:return me(typeof e=="number"),e;case R.FLOAT:case R.DOUBLE:return me(typeof e=="number"),Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case R.STRING:return me(typeof e=="string"),e;case R.BOOL:return me(typeof e=="boolean"),e;case R.UINT64:case R.FIXED64:case R.INT64:case R.SFIXED64:case R.SINT64:return me(typeof e=="bigint"||typeof e=="string"||typeof e=="number"),e.toString();case R.BYTES:return me(e instanceof Uint8Array),Ea.enc(e)}}const xt=Symbol("@bufbuild/protobuf/unknown-fields"),mr={readUnknownFields:!0,readerFactory:n=>new pd(n)},gr={writeUnknownFields:!0,writerFactory:()=>new fd};function Ed(n){return n?Object.assign(Object.assign({},mr),n):mr}function _d(n){return n?Object.assign(Object.assign({},gr),n):gr}function wd(){return{makeReadOptions:Ed,makeWriteOptions:_d,listUnknownFields(n){var e;return(e=n[xt])!==null&&e!==void 0?e:[]},discardUnknownFields(n){delete n[xt]},writeUnknownFields(n,e){const i=n[xt];if(i)for(const s of i)e.tag(s.no,s.wireType).raw(s.data)},onUnknownField(n,e,t,i){const s=n;Array.isArray(s[xt])||(s[xt]=[]),s[xt].push({no:e,wireType:t,data:i})},readMessage(n,e,t,i,s){const r=n.getType(),a=s?e.len:e.pos+t;let o,c;for(;e.pos<a&&([o,c]=e.tag(),!(s===!0&&c==ge.EndGroup));){const l=r.fields.find(o);if(!l){const d=e.skip(c,o);i.readUnknownFields&&this.onUnknownField(n,o,c,d);continue}vr(n,e,l,c,i)}if(s&&(c!=ge.EndGroup||o!==t))throw new Error("invalid end group tag")},readField:vr,writeMessage(n,e,t){const i=n.getType();for(const s of i.fields.byNumber()){if(!Ra(s,n)){if(s.req)throw new Error("cannot encode field ".concat(i.typeName,".").concat(s.name," to binary: required field not set"));continue}const r=s.oneof?n[s.oneof.localName].value:n[s.localName];br(s,r,e,t)}return t.writeUnknownFields&&this.writeUnknownFields(n,e),e},writeField(n,e,t,i){e!==void 0&&br(n,e,t,i)}}}function vr(n,e,t,i,s){let{repeated:r,localName:a}=t;switch(t.oneof&&(n=n[t.oneof.localName],n.case!=a&&delete n.value,n.case=a,a="value"),t.kind){case"scalar":case"enum":const o=t.kind=="enum"?R.INT32:t.T;let c=Gi;if(t.kind=="scalar"&&t.L>0&&(c=Id),r){let p=n[a];if(i==ge.LengthDelimited&&o!=R.STRING&&o!=R.BYTES){let y=e.uint32()+e.pos;for(;e.pos<y;)p.push(c(e,o))}else p.push(c(e,o))}else n[a]=c(e,o);break;case"message":const l=t.T;r?n[a].push(xi(e,new l,s,t)):Et(n[a])?xi(e,n[a],s,t):(n[a]=xi(e,new l,s,t),l.fieldWrapper&&!t.oneof&&!t.repeated&&(n[a]=l.fieldWrapper.unwrapField(n[a])));break;case"map":let[d,f]=Rd(t,e,s);n[a][d]=f;break}}function xi(n,e,t,i){const s=e.getType().runtime.bin,r=i==null?void 0:i.delimited;return s.readMessage(e,n,r?i.no:n.uint32(),t,r),e}function Rd(n,e,t){const i=e.uint32(),s=e.pos+i;let r,a;for(;e.pos<s;){const[o]=e.tag();switch(o){case 1:r=Gi(e,n.K);break;case 2:switch(n.V.kind){case"scalar":a=Gi(e,n.V.T);break;case"enum":a=e.int32();break;case"message":a=xi(e,new n.V.T,t,void 0);break}break}}if(r===void 0&&(r=Gt(n.K,Ct.BIGINT)),typeof r!="string"&&typeof r!="number"&&(r=r.toString()),a===void 0)switch(n.V.kind){case"scalar":a=Gt(n.V.T,Ct.BIGINT);break;case"enum":a=n.V.T.values[0].no;break;case"message":a=new n.V.T;break}return[r,a]}function Id(n,e){const t=Gi(n,e);return typeof t=="bigint"?t.toString():t}function Gi(n,e){switch(e){case R.STRING:return n.string();case R.BOOL:return n.bool();case R.DOUBLE:return n.double();case R.FLOAT:return n.float();case R.INT32:return n.int32();case R.INT64:return n.int64();case R.UINT64:return n.uint64();case R.FIXED64:return n.fixed64();case R.BYTES:return n.bytes();case R.FIXED32:return n.fixed32();case R.SFIXED32:return n.sfixed32();case R.SFIXED64:return n.sfixed64();case R.SINT64:return n.sint64();case R.UINT32:return n.uint32();case R.SINT32:return n.sint32()}}function br(n,e,t,i){me(e!==void 0);const s=n.repeated;switch(n.kind){case"scalar":case"enum":let r=n.kind=="enum"?R.INT32:n.T;if(s)if(me(Array.isArray(e)),n.packed)Dd(t,r,n.no,e);else for(const a of e)li(t,r,n.no,a);else li(t,r,n.no,e);break;case"message":if(s){me(Array.isArray(e));for(const a of e)yr(t,i,n,a)}else yr(t,i,n,e);break;case"map":me(typeof e=="object"&&e!=null);for(const[a,o]of Object.entries(e))Od(t,i,n,a,o);break}}function Od(n,e,t,i,s){n.tag(t.no,ge.LengthDelimited),n.fork();let r=i;switch(t.K){case R.INT32:case R.FIXED32:case R.UINT32:case R.SFIXED32:case R.SINT32:r=Number.parseInt(i);break;case R.BOOL:me(i=="true"||i=="false"),r=i=="true";break}switch(li(n,t.K,1,r),t.V.kind){case"scalar":li(n,t.V.T,2,s);break;case"enum":li(n,R.INT32,2,s);break;case"message":me(s!==void 0),n.tag(2,ge.LengthDelimited).bytes(s.toBinary(e));break}n.join()}function yr(n,e,t,i){const s=Ia(t.T,i);t.delimited?n.tag(t.no,ge.StartGroup).raw(s.toBinary(e)).tag(t.no,ge.EndGroup):n.tag(t.no,ge.LengthDelimited).bytes(s.toBinary(e))}function li(n,e,t,i){me(i!==void 0);let[s,r]=Oa(e);n.tag(t,s)[r](i)}function Dd(n,e,t,i){if(!i.length)return;n.tag(t,ge.LengthDelimited).fork();let[,s]=Oa(e);for(let r=0;r<i.length;r++)n[s](i[r]);n.join()}function Oa(n){let e=ge.Varint;switch(n){case R.BYTES:case R.STRING:e=ge.LengthDelimited;break;case R.DOUBLE:case R.FIXED64:case R.SFIXED64:e=ge.Bit64;break;case R.FIXED32:case R.SFIXED32:case R.FLOAT:e=ge.Bit32;break}const t=R[n].toLowerCase();return[e,t]}function Md(){return{setEnumType:ba,initPartial(n,e){if(n===void 0)return;const t=e.getType();for(const i of t.fields.byMember()){const s=i.localName,r=e,a=n;if(a[s]!=null)switch(i.kind){case"oneof":const o=a[s].case;if(o===void 0)continue;const c=i.findField(o);let l=a[s].value;c&&c.kind=="message"&&!Et(l,c.T)?l=new c.T(l):c&&c.kind==="scalar"&&c.T===R.BYTES&&(l=Zt(l)),r[s]={case:o,value:l};break;case"scalar":case"enum":let d=a[s];i.T===R.BYTES&&(d=i.repeated?d.map(Zt):Zt(d)),r[s]=d;break;case"map":switch(i.V.kind){case"scalar":case"enum":if(i.V.T===R.BYTES)for(const[m,y]of Object.entries(a[s]))r[s][m]=Zt(y);else Object.assign(r[s],a[s]);break;case"message":const p=i.V.T;for(const m of Object.keys(a[s])){let y=a[s][m];p.fieldWrapper||(y=new p(y)),r[s][m]=y}break}break;case"message":const f=i.T;if(i.repeated)r[s]=a[s].map(p=>Et(p,f)?p:new f(p));else{const p=a[s];f.fieldWrapper?f.typeName==="google.protobuf.BytesValue"?r[s]=Zt(p):r[s]=p:r[s]=Et(p,f)?p:new f(p)}break}}},equals(n,e,t){return e===t?!0:!e||!t?!1:n.fields.byMember().every(i=>{const s=e[i.localName],r=t[i.localName];if(i.repeated){if(s.length!==r.length)return!1;switch(i.kind){case"message":return s.every((a,o)=>i.T.equals(a,r[o]));case"scalar":return s.every((a,o)=>mt(i.T,a,r[o]));case"enum":return s.every((a,o)=>mt(R.INT32,a,r[o]))}throw new Error("repeated cannot contain ".concat(i.kind))}switch(i.kind){case"message":return i.T.equals(s,r);case"enum":return mt(R.INT32,s,r);case"scalar":return mt(i.T,s,r);case"oneof":if(s.case!==r.case)return!1;const a=i.findField(s.case);if(a===void 0)return!0;switch(a.kind){case"message":return a.T.equals(s.value,r.value);case"enum":return mt(R.INT32,s.value,r.value);case"scalar":return mt(a.T,s.value,r.value)}throw new Error("oneof cannot contain ".concat(a.kind));case"map":const o=Object.keys(s).concat(Object.keys(r));switch(i.V.kind){case"message":const c=i.V.T;return o.every(d=>c.equals(s[d],r[d]));case"enum":return o.every(d=>mt(R.INT32,s[d],r[d]));case"scalar":const l=i.V.T;return o.every(d=>mt(l,s[d],r[d]))}break}})},clone(n){const e=n.getType(),t=new e,i=t;for(const s of e.fields.byMember()){const r=n[s.localName];let a;if(s.repeated)a=r.map(Pi);else if(s.kind=="map"){a=i[s.localName];for(const[o,c]of Object.entries(r))a[o]=Pi(c)}else s.kind=="oneof"?a=s.findField(r.case)?{case:r.case,value:Pi(r.value)}:{case:void 0}:a=Pi(r);i[s.localName]=a}for(const s of e.runtime.bin.listUnknownFields(n))e.runtime.bin.onUnknownField(i,s.no,s.wireType,s.data);return t}}}function Pi(n){if(n===void 0)return n;if(Et(n))return n.clone();if(n instanceof Uint8Array){const e=new Uint8Array(n.byteLength);return e.set(n),e}return n}function Zt(n){return n instanceof Uint8Array?n:new Uint8Array(n)}function xd(n,e,t){return{syntax:n,json:Cd(),bin:wd(),util:Object.assign(Object.assign({},Md()),{newFieldList:e,initFields:t}),makeMessageType(i,s,r){return od(this,i,s,r)},makeEnum:ad,makeEnumType:ya,getEnumType:rd,makeExtension(i,s,r){return md(this,i,s,r)}}}class Ad{constructor(e,t){this._fields=e,this._normalizer=t}findJsonName(e){if(!this.jsonNames){const t={};for(const i of this.list())t[i.jsonName]=t[i.name]=i;this.jsonNames=t}return this.jsonNames[e]}find(e){if(!this.numbers){const t={};for(const i of this.list())t[i.no]=i;this.numbers=t}return this.numbers[e]}list(){return this.all||(this.all=this._normalizer(this._fields)),this.all}byNumber(){return this.numbersAsc||(this.numbersAsc=this.list().concat().sort((e,t)=>e.no-t.no)),this.numbersAsc}byMember(){if(!this.members){this.members=[];const e=this.members;let t;for(const i of this.list())i.oneof?i.oneof!==t&&(t=i.oneof,e.push(t)):e.push(i)}return this.members}}function Da(n,e){const t=Ma(n);return e?t:Bd(jd(t))}function Nd(n){return Da(n,!1)}const Ld=Ma;function Ma(n){let e=!1;const t=[];for(let i=0;i<n.length;i++){let s=n.charAt(i);switch(s){case"_":e=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.push(s),e=!1;break;default:e&&(e=!1,s=s.toUpperCase()),t.push(s);break}}return t.join("")}const Ud=new Set(["constructor","toString","toJSON","valueOf"]),Fd=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),xa=n=>"".concat(n,"$"),jd=n=>Fd.has(n)?xa(n):n,Bd=n=>Ud.has(n)?xa(n):n;class Vd{constructor(e){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=e,this.localName=Nd(e)}addField(e){me(e.oneof===this,"field ".concat(e.name," not one of ").concat(this.name)),this.fields.push(e)}findField(e){if(!this._lookup){this._lookup=Object.create(null);for(let t=0;t<this.fields.length;t++)this._lookup[this.fields[t].localName]=this.fields[t]}return this._lookup[e]}}function qd(n,e){var t,i,s,r,a,o;const c=[];let l;for(const d of typeof n=="function"?n():n){const f=d;if(f.localName=Da(d.name,d.oneof!==void 0),f.jsonName=(t=d.jsonName)!==null&&t!==void 0?t:Ld(d.name),f.repeated=(i=d.repeated)!==null&&i!==void 0?i:!1,d.kind=="scalar"&&(f.L=(s=d.L)!==null&&s!==void 0?s:Ct.BIGINT),f.delimited=(r=d.delimited)!==null&&r!==void 0?r:!1,f.req=(a=d.req)!==null&&a!==void 0?a:!1,f.opt=(o=d.opt)!==null&&o!==void 0?o:!1,d.packed===void 0&&(f.packed=d.kind=="enum"||d.kind=="scalar"&&d.T!=R.BYTES&&d.T!=R.STRING),d.oneof!==void 0){const p=typeof d.oneof=="string"?d.oneof:d.oneof.name;(!l||l.name!=p)&&(l=new Vd(p)),f.oneof=l,l.addField(f)}c.push(f)}return c}const T=xd("proto3",n=>new Ad(n,e=>qd(e)),n=>{for(const e of n.getType().fields.byMember()){if(e.opt)continue;const t=e.localName,i=n;if(e.repeated){i[t]=[];continue}switch(e.kind){case"oneof":i[t]={case:void 0};break;case"enum":i[t]=0;break;case"map":i[t]={};break;case"scalar":i[t]=Gt(e.T,e.L);break}}});class Oe extends ds{constructor(e){super(),this.seconds=de.zero,this.nanos=0,T.util.initPartial(e,this)}fromJson(e,t){if(typeof e!="string")throw new Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(T.json.debug(e)));const i=e.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!i)throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");const s=Date.parse(i[1]+"-"+i[2]+"-"+i[3]+"T"+i[4]+":"+i[5]+":"+i[6]+(i[8]?i[8]:"Z"));if(Number.isNaN(s))throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");if(s<Date.parse("0001-01-01T00:00:00Z")||s>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");return this.seconds=de.parse(s/1e3),this.nanos=0,i[7]&&(this.nanos=parseInt("1"+i[7]+"0".repeat(9-i[7].length))-1e9),this}toJson(e){const t=Number(this.seconds)*1e3;if(t<Date.parse("0001-01-01T00:00:00Z")||t>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");if(this.nanos<0)throw new Error("cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative");let i="Z";if(this.nanos>0){const s=(this.nanos+1e9).toString().substring(1);s.substring(3)==="000000"?i="."+s.substring(0,3)+"Z":s.substring(6)==="000"?i="."+s.substring(0,6)+"Z":i="."+s+"Z"}return new Date(t).toISOString().replace(".000Z",i)}toDate(){return new Date(Number(this.seconds)*1e3+Math.ceil(this.nanos/1e6))}static now(){return Oe.fromDate(new Date)}static fromDate(e){const t=e.getTime();return new Oe({seconds:de.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return new Oe().fromBinary(e,t)}static fromJson(e,t){return new Oe().fromJson(e,t)}static fromJsonString(e,t){return new Oe().fromJsonString(e,t)}static equals(e,t){return T.util.equals(Oe,e,t)}}Oe.runtime=T;Oe.typeName="google.protobuf.Timestamp";Oe.fields=T.util.newFieldList(()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]);const Kd=T.makeMessageType("livekit.MetricsBatch",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:Oe},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:Gd,repeated:!0},{no:5,name:"events",kind:"message",T:zd,repeated:!0}]),Gd=T.makeMessageType("livekit.TimeSeriesMetric",()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"samples",kind:"message",T:Wd,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}]),Wd=T.makeMessageType("livekit.MetricSample",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:Oe},{no:3,name:"value",kind:"scalar",T:2}]),zd=T.makeMessageType("livekit.EventMetric",()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"start_timestamp_ms",kind:"scalar",T:3},{no:5,name:"end_timestamp_ms",kind:"scalar",T:3,opt:!0},{no:6,name:"normalized_start_timestamp",kind:"message",T:Oe},{no:7,name:"normalized_end_timestamp",kind:"message",T:Oe,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}]),Ge=T.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),Re=T.makeEnum("livekit.TrackSource",[{no:0,name:"UNKNOWN"},{no:1,name:"CAMERA"},{no:2,name:"MICROPHONE"},{no:3,name:"SCREEN_SHARE"},{no:4,name:"SCREEN_SHARE_AUDIO"}]),hs=T.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),ri=T.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),pi=T.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),ze=T.makeEnum("livekit.DisconnectReason",[{no:0,name:"UNKNOWN_REASON"},{no:1,name:"CLIENT_INITIATED"},{no:2,name:"DUPLICATE_IDENTITY"},{no:3,name:"SERVER_SHUTDOWN"},{no:4,name:"PARTICIPANT_REMOVED"},{no:5,name:"ROOM_DELETED"},{no:6,name:"STATE_MISMATCH"},{no:7,name:"JOIN_FAILURE"},{no:8,name:"MIGRATION"},{no:9,name:"SIGNAL_CLOSE"},{no:10,name:"ROOM_CLOSED"},{no:11,name:"USER_UNAVAILABLE"},{no:12,name:"USER_REJECTED"},{no:13,name:"SIP_TRUNK_FAILURE"}]),At=T.makeEnum("livekit.ReconnectReason",[{no:0,name:"RR_UNKNOWN"},{no:1,name:"RR_SIGNAL_DISCONNECTED"},{no:2,name:"RR_PUBLISHER_FAILED"},{no:3,name:"RR_SUBSCRIBER_FAILED"},{no:4,name:"RR_SWITCH_CANDIDATE"}]),Hd=T.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),tt=T.makeEnum("livekit.AudioTrackFeature",[{no:0,name:"TF_STEREO"},{no:1,name:"TF_NO_DTX"},{no:2,name:"TF_AUTO_GAIN_CONTROL"},{no:3,name:"TF_ECHO_CANCELLATION"},{no:4,name:"TF_NOISE_SUPPRESSION"},{no:5,name:"TF_ENHANCED_NOISE_CANCELLATION"}]),fs=T.makeMessageType("livekit.Room",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"empty_timeout",kind:"scalar",T:13},{no:14,name:"departure_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:5,name:"creation_time",kind:"scalar",T:3},{no:6,name:"turn_password",kind:"scalar",T:9},{no:7,name:"enabled_codecs",kind:"message",T:Wi,repeated:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"num_participants",kind:"scalar",T:13},{no:11,name:"num_publishers",kind:"scalar",T:13},{no:10,name:"active_recording",kind:"scalar",T:8},{no:13,name:"version",kind:"message",T:Wa}]),Wi=T.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),Jd=T.makeMessageType("livekit.ParticipantPermission",()=>[{no:1,name:"can_subscribe",kind:"scalar",T:8},{no:2,name:"can_publish",kind:"scalar",T:8},{no:3,name:"can_publish_data",kind:"scalar",T:8},{no:9,name:"can_publish_sources",kind:"enum",T:T.getEnumType(Re),repeated:!0},{no:7,name:"hidden",kind:"scalar",T:8},{no:8,name:"recorder",kind:"scalar",T:8},{no:10,name:"can_update_metadata",kind:"scalar",T:8},{no:11,name:"agent",kind:"scalar",T:8},{no:12,name:"can_subscribe_metrics",kind:"scalar",T:8}]),mi=T.makeMessageType("livekit.ParticipantInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"identity",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:T.getEnumType(Fn)},{no:4,name:"tracks",kind:"message",T:Ut,repeated:!0},{no:5,name:"metadata",kind:"scalar",T:9},{no:6,name:"joined_at",kind:"scalar",T:3},{no:9,name:"name",kind:"scalar",T:9},{no:10,name:"version",kind:"scalar",T:13},{no:11,name:"permission",kind:"message",T:Jd},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:T.getEnumType(zi)},{no:15,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:16,name:"disconnect_reason",kind:"enum",T:T.getEnumType(ze)}]),Fn=T.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),zi=T.makeEnum("livekit.ParticipantInfo.Kind",[{no:0,name:"STANDARD"},{no:1,name:"INGRESS"},{no:2,name:"EGRESS"},{no:3,name:"SIP"},{no:4,name:"AGENT"}]),Ae=T.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),$d=T.makeMessageType("livekit.SimulcastCodecInfo",()=>[{no:1,name:"mime_type",kind:"scalar",T:9},{no:2,name:"mid",kind:"scalar",T:9},{no:3,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:_t,repeated:!0}]),Ut=T.makeMessageType("livekit.TrackInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:T.getEnumType(Ge)},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"muted",kind:"scalar",T:8},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"simulcast",kind:"scalar",T:8},{no:8,name:"disable_dtx",kind:"scalar",T:8},{no:9,name:"source",kind:"enum",T:T.getEnumType(Re)},{no:10,name:"layers",kind:"message",T:_t,repeated:!0},{no:11,name:"mime_type",kind:"scalar",T:9},{no:12,name:"mid",kind:"scalar",T:9},{no:13,name:"codecs",kind:"message",T:$d,repeated:!0},{no:14,name:"stereo",kind:"scalar",T:8},{no:15,name:"disable_red",kind:"scalar",T:8},{no:16,name:"encryption",kind:"enum",T:T.getEnumType(Ae)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:Wa},{no:19,name:"audio_features",kind:"enum",T:T.getEnumType(tt),repeated:!0}]),_t=T.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:T.getEnumType(hs)},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13},{no:4,name:"bitrate",kind:"scalar",T:13},{no:5,name:"ssrc",kind:"scalar",T:13}]),vt=T.makeMessageType("livekit.DataPacket",()=>[{no:1,name:"kind",kind:"enum",T:T.getEnumType(ae)},{no:4,name:"participant_identity",kind:"scalar",T:9},{no:5,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:2,name:"user",kind:"message",T:Na,oneof:"value"},{no:3,name:"speaker",kind:"message",T:Qd,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:La,oneof:"value"},{no:7,name:"transcription",kind:"message",T:Yd,oneof:"value"},{no:8,name:"metrics",kind:"message",T:Kd,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:jn,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:Ua,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:Fa,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:ja,oneof:"value"},{no:13,name:"stream_header",kind:"message",T:ru,oneof:"value"},{no:14,name:"stream_chunk",kind:"message",T:au,oneof:"value"}]),ae=T.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),Qd=T.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:Aa,repeated:!0}]),Aa=T.makeMessageType("livekit.SpeakerInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"level",kind:"scalar",T:2},{no:3,name:"active",kind:"scalar",T:8}]),Na=T.makeMessageType("livekit.UserPacket",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:5,name:"participant_identity",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:12},{no:3,name:"destination_sids",kind:"scalar",T:9,repeated:!0},{no:6,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:4,name:"topic",kind:"scalar",T:9,opt:!0},{no:8,name:"id",kind:"scalar",T:9,opt:!0},{no:9,name:"start_time",kind:"scalar",T:4,opt:!0},{no:10,name:"end_time",kind:"scalar",T:4,opt:!0}]),La=T.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),Yd=T.makeMessageType("livekit.Transcription",()=>[{no:2,name:"transcribed_participant_identity",kind:"scalar",T:9},{no:3,name:"track_id",kind:"scalar",T:9},{no:4,name:"segments",kind:"message",T:Xd,repeated:!0}]),Xd=T.makeMessageType("livekit.TranscriptionSegment",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"text",kind:"scalar",T:9},{no:3,name:"start_time",kind:"scalar",T:4},{no:4,name:"end_time",kind:"scalar",T:4},{no:5,name:"final",kind:"scalar",T:8},{no:6,name:"language",kind:"scalar",T:9}]),jn=T.makeMessageType("livekit.ChatMessage",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"edit_timestamp",kind:"scalar",T:3,opt:!0},{no:4,name:"message",kind:"scalar",T:9},{no:5,name:"deleted",kind:"scalar",T:8},{no:6,name:"generated",kind:"scalar",T:8}]),Ua=T.makeMessageType("livekit.RpcRequest",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"method",kind:"scalar",T:9},{no:3,name:"payload",kind:"scalar",T:9},{no:4,name:"response_timeout_ms",kind:"scalar",T:13},{no:5,name:"version",kind:"scalar",T:13}]),Fa=T.makeMessageType("livekit.RpcAck",()=>[{no:1,name:"request_id",kind:"scalar",T:9}]),ja=T.makeMessageType("livekit.RpcResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:9,oneof:"value"},{no:3,name:"error",kind:"message",T:Ba,oneof:"value"}]),Ba=T.makeMessageType("livekit.RpcError",()=>[{no:1,name:"code",kind:"scalar",T:13},{no:2,name:"message",kind:"scalar",T:9},{no:3,name:"data",kind:"scalar",T:9}]),Va=T.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),Zd=T.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:T.getEnumType(qa)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"region",kind:"scalar",T:9},{no:5,name:"node_id",kind:"scalar",T:9},{no:6,name:"debug_info",kind:"scalar",T:9},{no:7,name:"agent_protocol",kind:"scalar",T:5}]),qa=T.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),eu=T.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",kind:"enum",T:T.getEnumType(Ka)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"os",kind:"scalar",T:9},{no:5,name:"os_version",kind:"scalar",T:9},{no:6,name:"device_model",kind:"scalar",T:9},{no:7,name:"browser",kind:"scalar",T:9},{no:8,name:"browser_version",kind:"scalar",T:9},{no:9,name:"address",kind:"scalar",T:9},{no:10,name:"network",kind:"scalar",T:9},{no:11,name:"other_sdks",kind:"scalar",T:9}]),Ka=T.makeEnum("livekit.ClientInfo.SDK",[{no:0,name:"UNKNOWN"},{no:1,name:"JS"},{no:2,name:"SWIFT"},{no:3,name:"ANDROID"},{no:4,name:"FLUTTER"},{no:5,name:"GO"},{no:6,name:"UNITY"},{no:7,name:"REACT_NATIVE"},{no:8,name:"RUST"},{no:9,name:"PYTHON"},{no:10,name:"CPP"},{no:11,name:"UNITY_WEB"},{no:12,name:"NODE"}]),Ga=T.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:kr},{no:2,name:"screen",kind:"message",T:kr},{no:3,name:"resume_connection",kind:"enum",T:T.getEnumType(pi)},{no:4,name:"disabled_codecs",kind:"message",T:tu},{no:5,name:"force_relay",kind:"enum",T:T.getEnumType(pi)}]),kr=T.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:T.getEnumType(pi)}]),tu=T.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:Wi,repeated:!0},{no:2,name:"publish",kind:"message",T:Wi,repeated:!0}]),Wa=T.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),iu=T.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),nu=T.makeMessageType("livekit.DataStream.TextHeader",()=>[{no:1,name:"operation_type",kind:"enum",T:T.getEnumType(iu)},{no:2,name:"version",kind:"scalar",T:5},{no:3,name:"reply_to_stream_id",kind:"scalar",T:9},{no:4,name:"attached_stream_ids",kind:"scalar",T:9,repeated:!0},{no:5,name:"generated",kind:"scalar",T:8}],{localName:"DataStream_TextHeader"}),su=T.makeMessageType("livekit.DataStream.FileHeader",()=>[{no:1,name:"file_name",kind:"scalar",T:9}],{localName:"DataStream_FileHeader"}),ru=T.makeMessageType("livekit.DataStream.Header",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"topic",kind:"scalar",T:9},{no:4,name:"mime_type",kind:"scalar",T:9},{no:5,name:"total_length",kind:"scalar",T:4,opt:!0},{no:6,name:"total_chunks",kind:"scalar",T:4,opt:!0},{no:7,name:"encryption_type",kind:"enum",T:T.getEnumType(Ae)},{no:8,name:"extensions",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:9,name:"text_header",kind:"message",T:nu,oneof:"content_header"},{no:10,name:"file_header",kind:"message",T:su,oneof:"content_header"}],{localName:"DataStream_Header"}),au=T.makeMessageType("livekit.DataStream.Chunk",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"chunk_index",kind:"scalar",T:4},{no:3,name:"content",kind:"scalar",T:12},{no:4,name:"complete",kind:"scalar",T:8},{no:5,name:"version",kind:"scalar",T:5},{no:6,name:"iv",kind:"scalar",T:12,opt:!0}],{localName:"DataStream_Chunk"}),We=T.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),Bn=T.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),ou=T.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),cu=T.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:wt,oneof:"message"},{no:2,name:"answer",kind:"message",T:wt,oneof:"message"},{no:3,name:"trickle",kind:"message",T:ps,oneof:"message"},{no:4,name:"add_track",kind:"message",T:qn,oneof:"message"},{no:5,name:"mute",kind:"message",T:ms,oneof:"message"},{no:6,name:"subscription",kind:"message",T:Zi,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:za,oneof:"message"},{no:8,name:"leave",kind:"message",T:en,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:Ja,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:Xa,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:Za,oneof:"message"},{no:13,name:"simulate",kind:"message",T:Ze,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:$a,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:to,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:Ha,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:fu,oneof:"message"}]),Tr=T.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:lu,oneof:"message"},{no:2,name:"answer",kind:"message",T:wt,oneof:"message"},{no:3,name:"offer",kind:"message",T:wt,oneof:"message"},{no:4,name:"trickle",kind:"message",T:ps,oneof:"message"},{no:5,name:"update",kind:"message",T:hu,oneof:"message"},{no:6,name:"track_published",kind:"message",T:gs,oneof:"message"},{no:8,name:"leave",kind:"message",T:en,oneof:"message"},{no:9,name:"mute",kind:"message",T:ms,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:pu,oneof:"message"},{no:11,name:"room_update",kind:"message",T:mu,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:vu,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:yu,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:Tu,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:Cu,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:uu,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:du,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:Su,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:_u,oneof:"message"},{no:22,name:"request_response",kind:"message",T:wu,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:Ru,oneof:"message"}]),Vn=T.makeMessageType("livekit.SimulcastCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"cid",kind:"scalar",T:9}]),qn=T.makeMessageType("livekit.AddTrackRequest",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"type",kind:"enum",T:T.getEnumType(Ge)},{no:4,name:"width",kind:"scalar",T:13},{no:5,name:"height",kind:"scalar",T:13},{no:6,name:"muted",kind:"scalar",T:8},{no:7,name:"disable_dtx",kind:"scalar",T:8},{no:8,name:"source",kind:"enum",T:T.getEnumType(Re)},{no:9,name:"layers",kind:"message",T:_t,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:Vn,repeated:!0},{no:11,name:"sid",kind:"scalar",T:9},{no:12,name:"stereo",kind:"scalar",T:8},{no:13,name:"disable_red",kind:"scalar",T:8},{no:14,name:"encryption",kind:"enum",T:T.getEnumType(Ae)},{no:15,name:"stream",kind:"scalar",T:9}]),ps=T.makeMessageType("livekit.TrickleRequest",()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:T.getEnumType(We)},{no:3,name:"final",kind:"scalar",T:8}]),ms=T.makeMessageType("livekit.MuteTrackRequest",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]),lu=T.makeMessageType("livekit.JoinResponse",()=>[{no:1,name:"room",kind:"message",T:fs},{no:2,name:"participant",kind:"message",T:mi},{no:3,name:"other_participants",kind:"message",T:mi,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:Qa,repeated:!0},{no:6,name:"subscriber_primary",kind:"scalar",T:8},{no:7,name:"alternative_url",kind:"scalar",T:9},{no:8,name:"client_configuration",kind:"message",T:Ga},{no:9,name:"server_region",kind:"scalar",T:9},{no:10,name:"ping_timeout",kind:"scalar",T:5},{no:11,name:"ping_interval",kind:"scalar",T:5},{no:12,name:"server_info",kind:"message",T:Zd},{no:13,name:"sif_trailer",kind:"scalar",T:12},{no:14,name:"enabled_publish_codecs",kind:"message",T:Wi,repeated:!0},{no:15,name:"fast_publish",kind:"scalar",T:8}]),du=T.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:Qa,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:Ga}]),gs=T.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:Ut}]),uu=T.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),wt=T.makeMessageType("livekit.SessionDescription",()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9}]),hu=T.makeMessageType("livekit.ParticipantUpdate",()=>[{no:1,name:"participants",kind:"message",T:mi,repeated:!0}]),Zi=T.makeMessageType("livekit.UpdateSubscription",()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"participant_tracks",kind:"message",T:Va,repeated:!0}]),za=T.makeMessageType("livekit.UpdateTrackSettings",()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:3,name:"disabled",kind:"scalar",T:8},{no:4,name:"quality",kind:"enum",T:T.getEnumType(hs)},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"fps",kind:"scalar",T:13},{no:8,name:"priority",kind:"scalar",T:13}]),Ha=T.makeMessageType("livekit.UpdateLocalAudioTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:T.getEnumType(tt),repeated:!0}]),fu=T.makeMessageType("livekit.UpdateLocalVideoTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13}]),en=T.makeMessageType("livekit.LeaveRequest",()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:T.getEnumType(ze)},{no:3,name:"action",kind:"enum",T:T.getEnumType(jt)},{no:4,name:"regions",kind:"message",T:Pu}]),jt=T.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),Ja=T.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:_t,repeated:!0}]),$a=T.makeMessageType("livekit.UpdateParticipantMetadata",()=>[{no:1,name:"metadata",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:4,name:"request_id",kind:"scalar",T:13}]),Qa=T.makeMessageType("livekit.ICEServer",()=>[{no:1,name:"urls",kind:"scalar",T:9,repeated:!0},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"credential",kind:"scalar",T:9}]),pu=T.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:Aa,repeated:!0}]),mu=T.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:fs}]),gu=T.makeMessageType("livekit.ConnectionQualityInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:T.getEnumType(ri)},{no:3,name:"score",kind:"scalar",T:2}]),vu=T.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:gu,repeated:!0}]),bu=T.makeMessageType("livekit.StreamStateInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:T.getEnumType(Bn)}]),yu=T.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:bu,repeated:!0}]),vs=T.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:T.getEnumType(hs)},{no:2,name:"enabled",kind:"scalar",T:8}]),ku=T.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:vs,repeated:!0}]),Tu=T.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:vs,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:ku,repeated:!0}]),Ya=T.makeMessageType("livekit.TrackPermission",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"all_tracks",kind:"scalar",T:8},{no:3,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:4,name:"participant_identity",kind:"scalar",T:9}]),Xa=T.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:Ya,repeated:!0}]),Cu=T.makeMessageType("livekit.SubscriptionPermissionUpdate",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"allowed",kind:"scalar",T:8}]),Za=T.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:wt},{no:2,name:"subscription",kind:"message",T:Zi},{no:3,name:"publish_tracks",kind:"message",T:gs,repeated:!0},{no:4,name:"data_channels",kind:"message",T:eo,repeated:!0},{no:5,name:"offer",kind:"message",T:wt},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0}]),eo=T.makeMessageType("livekit.DataChannelInfo",()=>[{no:1,name:"label",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:13},{no:3,name:"target",kind:"enum",T:T.getEnumType(We)}]),Ze=T.makeMessageType("livekit.SimulateScenario",()=>[{no:1,name:"speaker_update",kind:"scalar",T:5,oneof:"scenario"},{no:2,name:"node_failure",kind:"scalar",T:8,oneof:"scenario"},{no:3,name:"migration",kind:"scalar",T:8,oneof:"scenario"},{no:4,name:"server_leave",kind:"scalar",T:8,oneof:"scenario"},{no:5,name:"switch_candidate_protocol",kind:"enum",T:T.getEnumType(ou),oneof:"scenario"},{no:6,name:"subscriber_bandwidth",kind:"scalar",T:3,oneof:"scenario"},{no:7,name:"disconnect_signal_on_resume",kind:"scalar",T:8,oneof:"scenario"},{no:8,name:"disconnect_signal_on_resume_no_messages",kind:"scalar",T:8,oneof:"scenario"},{no:9,name:"leave_request_full_reconnect",kind:"scalar",T:8,oneof:"scenario"}]),to=T.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),Su=T.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),Pu=T.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:Eu,repeated:!0}]),Eu=T.makeMessageType("livekit.RegionInfo",()=>[{no:1,name:"region",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9},{no:3,name:"distance",kind:"scalar",T:3}]),_u=T.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:T.getEnumType(Hd)}]),wu=T.makeMessageType("livekit.RequestResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"reason",kind:"enum",T:T.getEnumType(io)},{no:3,name:"message",kind:"scalar",T:9}]),io=T.makeEnum("livekit.RequestResponse.Reason",[{no:0,name:"OK"},{no:1,name:"NOT_FOUND"},{no:2,name:"NOT_ALLOWED"},{no:3,name:"LIMIT_EXCEEDED"}]),Ru=T.makeMessageType("livekit.TrackSubscribed",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]);function Iu(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Ai={exports:{}},Ou=Ai.exports,Cr;function Du(){return Cr||(Cr=1,function(n){(function(e,t){n.exports?n.exports=t():e.log=t()})(Ou,function(){var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),s=["trace","debug","info","warn","error"],r={},a=null;function o(C,_){var b=C[_];if(typeof b.bind=="function")return b.bind(C);try{return Function.prototype.bind.call(b,C)}catch{return function(){return Function.prototype.apply.apply(b,[C,arguments])}}}function c(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function l(C){return C==="debug"&&(C="log"),typeof console===t?!1:C==="trace"&&i?c:console[C]!==void 0?o(console,C):console.log!==void 0?o(console,"log"):e}function d(){for(var C=this.getLevel(),_=0;_<s.length;_++){var b=s[_];this[b]=_<C?e:this.methodFactory(b,C,this.name)}if(this.log=this.debug,typeof console===t&&C<this.levels.SILENT)return"No console available for logging"}function f(C){return function(){typeof console!==t&&(d.call(this),this[C].apply(this,arguments))}}function p(C,_,b){return l(C)||f.apply(this,arguments)}function m(C,_){var b=this,G,W,P,k="loglevel";typeof C=="string"?k+=":"+C:typeof C=="symbol"&&(k=void 0);function w(q){var B=(s[q]||"silent").toUpperCase();if(!(typeof window===t||!k)){try{window.localStorage[k]=B;return}catch{}try{window.document.cookie=encodeURIComponent(k)+"="+B+";"}catch{}}}function S(){var q;if(!(typeof window===t||!k)){try{q=window.localStorage[k]}catch{}if(typeof q===t)try{var B=window.document.cookie,K=encodeURIComponent(k),ve=B.indexOf(K+"=");ve!==-1&&(q=/^([^;]+)/.exec(B.slice(ve+K.length+1))[1])}catch{}return b.levels[q]===void 0&&(q=void 0),q}}function I(){if(!(typeof window===t||!k)){try{window.localStorage.removeItem(k)}catch{}try{window.document.cookie=encodeURIComponent(k)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function M(q){var B=q;if(typeof B=="string"&&b.levels[B.toUpperCase()]!==void 0&&(B=b.levels[B.toUpperCase()]),typeof B=="number"&&B>=0&&B<=b.levels.SILENT)return B;throw new TypeError("log.setLevel() called with invalid level: "+q)}b.name=C,b.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},b.methodFactory=_||p,b.getLevel=function(){return P??W??G},b.setLevel=function(q,B){return P=M(q),B!==!1&&w(P),d.call(b)},b.setDefaultLevel=function(q){W=M(q),S()||b.setLevel(q,!1)},b.resetLevel=function(){P=null,I(),d.call(b)},b.enableAll=function(q){b.setLevel(b.levels.TRACE,q)},b.disableAll=function(q){b.setLevel(b.levels.SILENT,q)},b.rebuild=function(){if(a!==b&&(G=M(a.getLevel())),d.call(b),a===b)for(var q in r)r[q].rebuild()},G=M(a?a.getLevel():"WARN");var A=S();A!=null&&(P=M(A)),d.call(b)}a=new m,a.getLogger=function(_){if(typeof _!="symbol"&&typeof _!="string"||_==="")throw new TypeError("You must supply a name when creating a logger.");var b=r[_];return b||(b=r[_]=new m(_,a.methodFactory)),b};var y=typeof window!==t?window.log:void 0;return a.noConflict=function(){return typeof window!==t&&window.log===a&&(window.log=y),a},a.getLoggers=function(){return r},a.default=a,a})}(Ai)),Ai.exports}var tn=Du(),Kn;(function(n){n[n.trace=0]="trace",n[n.debug=1]="debug",n[n.info=2]="info",n[n.warn=3]="warn",n[n.error=4]="error",n[n.silent=5]="silent"})(Kn||(Kn={}));var Je;(function(n){n.Default="livekit",n.Room="livekit-room",n.Participant="livekit-participant",n.Track="livekit-track",n.Publication="livekit-track-publication",n.Engine="livekit-engine",n.Signal="livekit-signal",n.PCManager="livekit-pc-manager",n.PCTransport="livekit-pc-transport",n.E2EE="lk-e2ee"})(Je||(Je={}));let Z=tn.getLogger("livekit");Object.values(Je).map(n=>tn.getLogger(n));Z.setDefaultLevel(Kn.info);function dt(n){const e=tn.getLogger(n);return e.setDefaultLevel(Z.getLevel()),e}const Mu=tn.getLogger("lk-e2ee"),ei=7e3,xu=[0,300,2*2*300,3*3*300,4*4*300,ei,ei,ei,ei,ei];class Au{constructor(e){this._retryDelays=e!==void 0?[...e]:xu}nextRetryDelayInMs(e){if(e.retryCount>=this._retryDelays.length)return null;const t=this._retryDelays[e.retryCount];return e.retryCount<=1?t:t+Math.random()*1e3}}function g(n,e,t,i){function s(r){return r instanceof t?r:new t(function(a){a(r)})}return new(t||(t=Promise))(function(r,a){function o(d){try{l(i.next(d))}catch(f){a(f)}}function c(d){try{l(i.throw(d))}catch(f){a(f)}}function l(d){d.done?r(d.value):s(d.value).then(o,c)}l((i=i.apply(n,e||[])).next())})}function Sr(n){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&n[e],i=0;if(t)return t.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&i>=n.length&&(n=void 0),{value:n&&n[i++],done:!n}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Lt(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=n[Symbol.asyncIterator],t;return e?e.call(n):(n=typeof Sr=="function"?Sr(n):n[Symbol.iterator](),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(r){t[r]=n[r]&&function(a){return new Promise(function(o,c){a=n[r](a),s(o,c,a.done,a.value)})}}function s(r,a,o,c){Promise.resolve(c).then(function(l){r({value:l,done:o})},a)}}var Ei={exports:{}},Pr;function Nu(){if(Pr)return Ei.exports;Pr=1;var n=typeof Reflect=="object"?Reflect:null,e=n&&typeof n.apply=="function"?n.apply:function(k,w,S){return Function.prototype.apply.call(k,w,S)},t;n&&typeof n.ownKeys=="function"?t=n.ownKeys:Object.getOwnPropertySymbols?t=function(k){return Object.getOwnPropertyNames(k).concat(Object.getOwnPropertySymbols(k))}:t=function(k){return Object.getOwnPropertyNames(k)};function i(P){console&&console.warn&&console.warn(P)}var s=Number.isNaN||function(k){return k!==k};function r(){r.init.call(this)}Ei.exports=r,Ei.exports.once=b,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._eventsCount=0,r.prototype._maxListeners=void 0;var a=10;function o(P){if(typeof P!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof P)}Object.defineProperty(r,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(P){if(typeof P!="number"||P<0||s(P))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+P+".");a=P}}),r.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},r.prototype.setMaxListeners=function(k){if(typeof k!="number"||k<0||s(k))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+k+".");return this._maxListeners=k,this};function c(P){return P._maxListeners===void 0?r.defaultMaxListeners:P._maxListeners}r.prototype.getMaxListeners=function(){return c(this)},r.prototype.emit=function(k){for(var w=[],S=1;S<arguments.length;S++)w.push(arguments[S]);var I=k==="error",M=this._events;if(M!==void 0)I=I&&M.error===void 0;else if(!I)return!1;if(I){var A;if(w.length>0&&(A=w[0]),A instanceof Error)throw A;var q=new Error("Unhandled error."+(A?" ("+A.message+")":""));throw q.context=A,q}var B=M[k];if(B===void 0)return!1;if(typeof B=="function")e(B,this,w);else for(var K=B.length,ve=y(B,K),S=0;S<K;++S)e(ve[S],this,w);return!0};function l(P,k,w,S){var I,M,A;if(o(w),M=P._events,M===void 0?(M=P._events=Object.create(null),P._eventsCount=0):(M.newListener!==void 0&&(P.emit("newListener",k,w.listener?w.listener:w),M=P._events),A=M[k]),A===void 0)A=M[k]=w,++P._eventsCount;else if(typeof A=="function"?A=M[k]=S?[w,A]:[A,w]:S?A.unshift(w):A.push(w),I=c(P),I>0&&A.length>I&&!A.warned){A.warned=!0;var q=new Error("Possible EventEmitter memory leak detected. "+A.length+" "+String(k)+" listeners added. Use emitter.setMaxListeners() to increase limit");q.name="MaxListenersExceededWarning",q.emitter=P,q.type=k,q.count=A.length,i(q)}return P}r.prototype.addListener=function(k,w){return l(this,k,w,!1)},r.prototype.on=r.prototype.addListener,r.prototype.prependListener=function(k,w){return l(this,k,w,!0)};function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(P,k,w){var S={fired:!1,wrapFn:void 0,target:P,type:k,listener:w},I=d.bind(S);return I.listener=w,S.wrapFn=I,I}r.prototype.once=function(k,w){return o(w),this.on(k,f(this,k,w)),this},r.prototype.prependOnceListener=function(k,w){return o(w),this.prependListener(k,f(this,k,w)),this},r.prototype.removeListener=function(k,w){var S,I,M,A,q;if(o(w),I=this._events,I===void 0)return this;if(S=I[k],S===void 0)return this;if(S===w||S.listener===w)--this._eventsCount===0?this._events=Object.create(null):(delete I[k],I.removeListener&&this.emit("removeListener",k,S.listener||w));else if(typeof S!="function"){for(M=-1,A=S.length-1;A>=0;A--)if(S[A]===w||S[A].listener===w){q=S[A].listener,M=A;break}if(M<0)return this;M===0?S.shift():C(S,M),S.length===1&&(I[k]=S[0]),I.removeListener!==void 0&&this.emit("removeListener",k,q||w)}return this},r.prototype.off=r.prototype.removeListener,r.prototype.removeAllListeners=function(k){var w,S,I;if(S=this._events,S===void 0)return this;if(S.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):S[k]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete S[k]),this;if(arguments.length===0){var M=Object.keys(S),A;for(I=0;I<M.length;++I)A=M[I],A!=="removeListener"&&this.removeAllListeners(A);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(w=S[k],typeof w=="function")this.removeListener(k,w);else if(w!==void 0)for(I=w.length-1;I>=0;I--)this.removeListener(k,w[I]);return this};function p(P,k,w){var S=P._events;if(S===void 0)return[];var I=S[k];return I===void 0?[]:typeof I=="function"?w?[I.listener||I]:[I]:w?_(I):y(I,I.length)}r.prototype.listeners=function(k){return p(this,k,!0)},r.prototype.rawListeners=function(k){return p(this,k,!1)},r.listenerCount=function(P,k){return typeof P.listenerCount=="function"?P.listenerCount(k):m.call(P,k)},r.prototype.listenerCount=m;function m(P){var k=this._events;if(k!==void 0){var w=k[P];if(typeof w=="function")return 1;if(w!==void 0)return w.length}return 0}r.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};function y(P,k){for(var w=new Array(k),S=0;S<k;++S)w[S]=P[S];return w}function C(P,k){for(;k+1<P.length;k++)P[k]=P[k+1];P.pop()}function _(P){for(var k=new Array(P.length),w=0;w<k.length;++w)k[w]=P[w].listener||P[w];return k}function b(P,k){return new Promise(function(w,S){function I(A){P.removeListener(k,M),S(A)}function M(){typeof P.removeListener=="function"&&P.removeListener("error",I),w([].slice.call(arguments))}W(P,k,M,{once:!0}),k!=="error"&&G(P,I,{once:!0})})}function G(P,k,w){typeof P.on=="function"&&W(P,"error",k,w)}function W(P,k,w,S){if(typeof P.on=="function")S.once?P.once(k,w):P.on(k,w);else if(typeof P.addEventListener=="function")P.addEventListener(k,function I(M){S.once&&P.removeEventListener(k,I),w(M)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof P)}return Ei.exports}var nt=Nu();let no=!0,so=!0;function Ni(n,e,t){const i=n.match(e);return i&&i.length>=t&&parseInt(i[t],10)}function It(n,e,t){if(!n.RTCPeerConnection)return;const i=n.RTCPeerConnection.prototype,s=i.addEventListener;i.addEventListener=function(a,o){if(a!==e)return s.apply(this,arguments);const c=l=>{const d=t(l);d&&(o.handleEvent?o.handleEvent(d):o(d))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(o,c),s.apply(this,[a,c])};const r=i.removeEventListener;i.removeEventListener=function(a,o){if(a!==e||!this._eventMap||!this._eventMap[e])return r.apply(this,arguments);if(!this._eventMap[e].has(o))return r.apply(this,arguments);const c=this._eventMap[e].get(o);return this._eventMap[e].delete(o),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,r.apply(this,[a,c])},Object.defineProperty(i,"on"+e,{get(){return this["_on"+e]},set(a){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),a&&this.addEventListener(e,this["_on"+e]=a)},enumerable:!0,configurable:!0})}function Lu(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(no=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function Uu(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(so=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function ro(){if(typeof window=="object"){if(no)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function bs(n,e){so&&console.warn(n+" is deprecated, please use "+e+" instead.")}function Fu(n){const e={browser:null,version:null};if(typeof n>"u"||!n.navigator||!n.navigator.userAgent)return e.browser="Not a browser.",e;const{navigator:t}=n;if(t.userAgentData&&t.userAgentData.brands){const i=t.userAgentData.brands.find(s=>s.brand==="Chromium");if(i)return{browser:"chrome",version:parseInt(i.version,10)}}if(t.mozGetUserMedia)e.browser="firefox",e.version=Ni(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia||n.isSecureContext===!1&&n.webkitRTCPeerConnection)e.browser="chrome",e.version=Ni(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(n.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=Ni(t.userAgent,/AppleWebKit\/(\d+)\./,1),e.supportsUnifiedPlan=n.RTCRtpTransceiver&&"currentDirection"in n.RTCRtpTransceiver.prototype;else return e.browser="Not a supported browser.",e;return e}function Er(n){return Object.prototype.toString.call(n)==="[object Object]"}function ao(n){return Er(n)?Object.keys(n).reduce(function(e,t){const i=Er(n[t]),s=i?ao(n[t]):n[t],r=i&&!Object.keys(s).length;return s===void 0||r?e:Object.assign(e,{[t]:s})},{}):n}function Gn(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(i=>{i.endsWith("Id")?Gn(n,n.get(e[i]),t):i.endsWith("Ids")&&e[i].forEach(s=>{Gn(n,n.get(s),t)})}))}function _r(n,e,t){const i=t?"outbound-rtp":"inbound-rtp",s=new Map;if(e===null)return s;const r=[];return n.forEach(a=>{a.type==="track"&&a.trackIdentifier===e.id&&r.push(a)}),r.forEach(a=>{n.forEach(o=>{o.type===i&&o.trackId===a.id&&Gn(n,o,s)})}),s}const wr=ro;function oo(n,e){const t=n&&n.navigator;if(!t.mediaDevices)return;const i=function(o){if(typeof o!="object"||o.mandatory||o.optional)return o;const c={};return Object.keys(o).forEach(l=>{if(l==="require"||l==="advanced"||l==="mediaSource")return;const d=typeof o[l]=="object"?o[l]:{ideal:o[l]};d.exact!==void 0&&typeof d.exact=="number"&&(d.min=d.max=d.exact);const f=function(p,m){return p?p+m.charAt(0).toUpperCase()+m.slice(1):m==="deviceId"?"sourceId":m};if(d.ideal!==void 0){c.optional=c.optional||[];let p={};typeof d.ideal=="number"?(p[f("min",l)]=d.ideal,c.optional.push(p),p={},p[f("max",l)]=d.ideal,c.optional.push(p)):(p[f("",l)]=d.ideal,c.optional.push(p))}d.exact!==void 0&&typeof d.exact!="number"?(c.mandatory=c.mandatory||{},c.mandatory[f("",l)]=d.exact):["min","max"].forEach(p=>{d[p]!==void 0&&(c.mandatory=c.mandatory||{},c.mandatory[f(p,l)]=d[p])})}),o.advanced&&(c.optional=(c.optional||[]).concat(o.advanced)),c},s=function(o,c){if(e.version>=61)return c(o);if(o=JSON.parse(JSON.stringify(o)),o&&typeof o.audio=="object"){const l=function(d,f,p){f in d&&!(p in d)&&(d[p]=d[f],delete d[f])};o=JSON.parse(JSON.stringify(o)),l(o.audio,"autoGainControl","googAutoGainControl"),l(o.audio,"noiseSuppression","googNoiseSuppression"),o.audio=i(o.audio)}if(o&&typeof o.video=="object"){let l=o.video.facingMode;l=l&&(typeof l=="object"?l:{ideal:l});const d=e.version<66;if(l&&(l.exact==="user"||l.exact==="environment"||l.ideal==="user"||l.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!d)){delete o.video.facingMode;let f;if(l.exact==="environment"||l.ideal==="environment"?f=["back","rear"]:(l.exact==="user"||l.ideal==="user")&&(f=["front"]),f)return t.mediaDevices.enumerateDevices().then(p=>{p=p.filter(y=>y.kind==="videoinput");let m=p.find(y=>f.some(C=>y.label.toLowerCase().includes(C)));return!m&&p.length&&f.includes("back")&&(m=p[p.length-1]),m&&(o.video.deviceId=l.exact?{exact:m.deviceId}:{ideal:m.deviceId}),o.video=i(o.video),wr("chrome: "+JSON.stringify(o)),c(o)})}o.video=i(o.video)}return wr("chrome: "+JSON.stringify(o)),c(o)},r=function(o){return e.version>=64?o:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[o.name]||o.name,message:o.message,constraint:o.constraint||o.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},a=function(o,c,l){s(o,d=>{t.webkitGetUserMedia(d,c,f=>{l&&l(r(f))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){const o=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(c){return s(c,l=>o(l).then(d=>{if(l.audio&&!d.getAudioTracks().length||l.video&&!d.getVideoTracks().length)throw d.getTracks().forEach(f=>{f.stop()}),new DOMException("","NotFoundError");return d},d=>Promise.reject(r(d))))}}}function co(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function lo(n){if(typeof n=="object"&&n.RTCPeerConnection&&!("ontrack"in n.RTCPeerConnection.prototype)){Object.defineProperty(n.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(t){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=t)},enumerable:!0,configurable:!0});const e=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=i=>{i.stream.addEventListener("addtrack",s=>{let r;n.RTCPeerConnection.prototype.getReceivers?r=this.getReceivers().find(o=>o.track&&o.track.id===s.track.id):r={track:s.track};const a=new Event("track");a.track=s.track,a.receiver=r,a.transceiver={receiver:r},a.streams=[i.stream],this.dispatchEvent(a)}),i.stream.getTracks().forEach(s=>{let r;n.RTCPeerConnection.prototype.getReceivers?r=this.getReceivers().find(o=>o.track&&o.track.id===s.id):r={track:s};const a=new Event("track");a.track=s,a.receiver=r,a.transceiver={receiver:r},a.streams=[i.stream],this.dispatchEvent(a)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else It(n,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function uo(n){if(typeof n=="object"&&n.RTCPeerConnection&&!("getSenders"in n.RTCPeerConnection.prototype)&&"createDTMFSender"in n.RTCPeerConnection.prototype){const e=function(s,r){return{track:r,get dtmf(){return this._dtmf===void 0&&(r.kind==="audio"?this._dtmf=s.createDTMFSender(r):this._dtmf=null),this._dtmf},_pc:s}};if(!n.RTCPeerConnection.prototype.getSenders){n.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const s=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(o,c){let l=s.apply(this,arguments);return l||(l=e(this,o),this._senders.push(l)),l};const r=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(o){r.apply(this,arguments);const c=this._senders.indexOf(o);c!==-1&&this._senders.splice(c,1)}}const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(r){this._senders=this._senders||[],t.apply(this,[r]),r.getTracks().forEach(a=>{this._senders.push(e(this,a))})};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(r){this._senders=this._senders||[],i.apply(this,[r]),r.getTracks().forEach(a=>{const o=this._senders.find(c=>c.track===a);o&&this._senders.splice(this._senders.indexOf(o),1)})}}else if(typeof n=="object"&&n.RTCPeerConnection&&"getSenders"in n.RTCPeerConnection.prototype&&"createDTMFSender"in n.RTCPeerConnection.prototype&&n.RTCRtpSender&&!("dtmf"in n.RTCRtpSender.prototype)){const e=n.RTCPeerConnection.prototype.getSenders;n.RTCPeerConnection.prototype.getSenders=function(){const i=e.apply(this,[]);return i.forEach(s=>s._pc=this),i},Object.defineProperty(n.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function ho(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender&&n.RTCRtpReceiver))return;if(!("getStats"in n.RTCRtpSender.prototype)){const t=n.RTCPeerConnection.prototype.getSenders;t&&(n.RTCPeerConnection.prototype.getSenders=function(){const r=t.apply(this,[]);return r.forEach(a=>a._pc=this),r});const i=n.RTCPeerConnection.prototype.addTrack;i&&(n.RTCPeerConnection.prototype.addTrack=function(){const r=i.apply(this,arguments);return r._pc=this,r}),n.RTCRtpSender.prototype.getStats=function(){const r=this;return this._pc.getStats().then(a=>_r(a,r.track,!0))}}if(!("getStats"in n.RTCRtpReceiver.prototype)){const t=n.RTCPeerConnection.prototype.getReceivers;t&&(n.RTCPeerConnection.prototype.getReceivers=function(){const s=t.apply(this,[]);return s.forEach(r=>r._pc=this),s}),It(n,"track",i=>(i.receiver._pc=i.srcElement,i)),n.RTCRtpReceiver.prototype.getStats=function(){const s=this;return this._pc.getStats().then(r=>_r(r,s.track,!1))}}if(!("getStats"in n.RTCRtpSender.prototype&&"getStats"in n.RTCRtpReceiver.prototype))return;const e=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof n.MediaStreamTrack){const i=arguments[0];let s,r,a;return this.getSenders().forEach(o=>{o.track===i&&(s?a=!0:s=o)}),this.getReceivers().forEach(o=>(o.track===i&&(r?a=!0:r=o),o.track===i)),a||s&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):s?s.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function fo(n){n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(a=>this._shimmedLocalStreams[a][0])};const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(a,o){if(!o)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const c=e.apply(this,arguments);return this._shimmedLocalStreams[o.id]?this._shimmedLocalStreams[o.id].indexOf(c)===-1&&this._shimmedLocalStreams[o.id].push(c):this._shimmedLocalStreams[o.id]=[o,c],c};const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(a){this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(l=>{if(this.getSenders().find(f=>f.track===l))throw new DOMException("Track already exists.","InvalidAccessError")});const o=this.getSenders();t.apply(this,arguments);const c=this.getSenders().filter(l=>o.indexOf(l)===-1);this._shimmedLocalStreams[a.id]=[a].concat(c)};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[a.id],i.apply(this,arguments)};const s=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(o=>{const c=this._shimmedLocalStreams[o].indexOf(a);c!==-1&&this._shimmedLocalStreams[o].splice(c,1),this._shimmedLocalStreams[o].length===1&&delete this._shimmedLocalStreams[o]}),s.apply(this,arguments)}}function po(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return fo(n);const t=n.RTCPeerConnection.prototype.getLocalStreams;n.RTCPeerConnection.prototype.getLocalStreams=function(){const d=t.apply(this);return this._reverseStreams=this._reverseStreams||{},d.map(f=>this._reverseStreams[f.id])};const i=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(d){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},d.getTracks().forEach(f=>{if(this.getSenders().find(m=>m.track===f))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[d.id]){const f=new n.MediaStream(d.getTracks());this._streams[d.id]=f,this._reverseStreams[f.id]=d,d=f}i.apply(this,[d])};const s=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(d){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},s.apply(this,[this._streams[d.id]||d]),delete this._reverseStreams[this._streams[d.id]?this._streams[d.id].id:d.id],delete this._streams[d.id]},n.RTCPeerConnection.prototype.addTrack=function(d,f){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const p=[].slice.call(arguments,1);if(p.length!==1||!p[0].getTracks().find(C=>C===d))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(C=>C.track===d))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const y=this._streams[f.id];if(y)y.addTrack(d),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const C=new n.MediaStream([d]);this._streams[f.id]=C,this._reverseStreams[C.id]=f,this.addStream(C)}return this.getSenders().find(C=>C.track===d)};function r(l,d){let f=d.sdp;return Object.keys(l._reverseStreams||[]).forEach(p=>{const m=l._reverseStreams[p],y=l._streams[m.id];f=f.replace(new RegExp(y.id,"g"),m.id)}),new RTCSessionDescription({type:d.type,sdp:f})}function a(l,d){let f=d.sdp;return Object.keys(l._reverseStreams||[]).forEach(p=>{const m=l._reverseStreams[p],y=l._streams[m.id];f=f.replace(new RegExp(m.id,"g"),y.id)}),new RTCSessionDescription({type:d.type,sdp:f})}["createOffer","createAnswer"].forEach(function(l){const d=n.RTCPeerConnection.prototype[l],f={[l](){const p=arguments;return arguments.length&&typeof arguments[0]=="function"?d.apply(this,[y=>{const C=r(this,y);p[0].apply(null,[C])},y=>{p[1]&&p[1].apply(null,y)},arguments[2]]):d.apply(this,arguments).then(y=>r(this,y))}};n.RTCPeerConnection.prototype[l]=f[l]});const o=n.RTCPeerConnection.prototype.setLocalDescription;n.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?o.apply(this,arguments):(arguments[0]=a(this,arguments[0]),o.apply(this,arguments))};const c=Object.getOwnPropertyDescriptor(n.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(n.RTCPeerConnection.prototype,"localDescription",{get(){const l=c.get.apply(this);return l.type===""?l:r(this,l)}}),n.RTCPeerConnection.prototype.removeTrack=function(d){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!d._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(d._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let p;Object.keys(this._streams).forEach(m=>{this._streams[m].getTracks().find(C=>d.track===C)&&(p=this._streams[m])}),p&&(p.getTracks().length===1?this.removeStream(this._reverseStreams[p.id]):p.removeTrack(d.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Wn(n,e){!n.RTCPeerConnection&&n.webkitRTCPeerConnection&&(n.RTCPeerConnection=n.webkitRTCPeerConnection),n.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const i=n.RTCPeerConnection.prototype[t],s={[t](){return arguments[0]=new(t==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};n.RTCPeerConnection.prototype[t]=s[t]})}function mo(n,e){It(n,"negotiationneeded",t=>{const i=t.target;if(!((e.version<72||i.getConfiguration&&i.getConfiguration().sdpSemantics==="plan-b")&&i.signalingState!=="stable"))return t})}var Rr=Object.freeze({__proto__:null,fixNegotiationNeeded:mo,shimAddTrackRemoveTrack:po,shimAddTrackRemoveTrackWithNative:fo,shimGetSendersWithDtmf:uo,shimGetUserMedia:oo,shimMediaStream:co,shimOnTrack:lo,shimPeerConnection:Wn,shimSenderReceiverGetStats:ho});function go(n,e){const t=n&&n.navigator,i=n&&n.MediaStreamTrack;if(t.getUserMedia=function(s,r,a){bs("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(s).then(r,a)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const s=function(a,o,c){o in a&&!(c in a)&&(a[c]=a[o],delete a[o])},r=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(a){return typeof a=="object"&&typeof a.audio=="object"&&(a=JSON.parse(JSON.stringify(a)),s(a.audio,"autoGainControl","mozAutoGainControl"),s(a.audio,"noiseSuppression","mozNoiseSuppression")),r(a)},i&&i.prototype.getSettings){const a=i.prototype.getSettings;i.prototype.getSettings=function(){const o=a.apply(this,arguments);return s(o,"mozAutoGainControl","autoGainControl"),s(o,"mozNoiseSuppression","noiseSuppression"),o}}if(i&&i.prototype.applyConstraints){const a=i.prototype.applyConstraints;i.prototype.applyConstraints=function(o){return this.kind==="audio"&&typeof o=="object"&&(o=JSON.parse(JSON.stringify(o)),s(o,"autoGainControl","mozAutoGainControl"),s(o,"noiseSuppression","mozNoiseSuppression")),a.apply(this,[o])}}}}function ju(n,e){n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||n.navigator.mediaDevices&&(n.navigator.mediaDevices.getDisplayMedia=function(i){if(!(i&&i.video)){const s=new DOMException("getDisplayMedia without video constraints is undefined");return s.name="NotFoundError",s.code=8,Promise.reject(s)}return i.video===!0?i.video={mediaSource:e}:i.video.mediaSource=e,n.navigator.mediaDevices.getUserMedia(i)})}function vo(n){typeof n=="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function zn(n,e){if(typeof n!="object"||!(n.RTCPeerConnection||n.mozRTCPeerConnection))return;!n.RTCPeerConnection&&n.mozRTCPeerConnection&&(n.RTCPeerConnection=n.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(s){const r=n.RTCPeerConnection.prototype[s],a={[s](){return arguments[0]=new(s==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};n.RTCPeerConnection.prototype[s]=a[s]});const t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){const[r,a,o]=arguments;return i.apply(this,[r||null]).then(c=>{if(e.version<53&&!a)try{c.forEach(l=>{l.type=t[l.type]||l.type})}catch(l){if(l.name!=="TypeError")throw l;c.forEach((d,f)=>{c.set(f,Object.assign({},d,{type:t[d.type]||d.type}))})}return c}).then(a,o)}}function bo(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender)||n.RTCRtpSender&&"getStats"in n.RTCRtpSender.prototype)return;const e=n.RTCPeerConnection.prototype.getSenders;e&&(n.RTCPeerConnection.prototype.getSenders=function(){const s=e.apply(this,[]);return s.forEach(r=>r._pc=this),s});const t=n.RTCPeerConnection.prototype.addTrack;t&&(n.RTCPeerConnection.prototype.addTrack=function(){const s=t.apply(this,arguments);return s._pc=this,s}),n.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function yo(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender)||n.RTCRtpSender&&"getStats"in n.RTCRtpReceiver.prototype)return;const e=n.RTCPeerConnection.prototype.getReceivers;e&&(n.RTCPeerConnection.prototype.getReceivers=function(){const i=e.apply(this,[]);return i.forEach(s=>s._pc=this),i}),It(n,"track",t=>(t.receiver._pc=t.srcElement,t)),n.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function ko(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){bs("removeStream","removeTrack"),this.getSenders().forEach(i=>{i.track&&t.getTracks().includes(i.track)&&this.removeTrack(i)})})}function To(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function Co(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.addTransceiver;e&&(n.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let i=arguments[1]&&arguments[1].sendEncodings;i===void 0&&(i=[]),i=[...i];const s=i.length>0;s&&i.forEach(a=>{if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(parseFloat(a.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in a&&!(parseFloat(a.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const r=e.apply(this,arguments);if(s){const{sender:a}=r,o=a.getParameters();(!("encodings"in o)||o.encodings.length===1&&Object.keys(o.encodings[0]).length===0)&&(o.encodings=i,a.sendEncodings=i,this.setParametersPromises.push(a.setParameters(o).then(()=>{delete a.sendEncodings}).catch(()=>{delete a.sendEncodings})))}return r})}function So(n){if(!(typeof n=="object"&&n.RTCRtpSender))return;const e=n.RTCRtpSender.prototype.getParameters;e&&(n.RTCRtpSender.prototype.getParameters=function(){const i=e.apply(this,arguments);return"encodings"in i||(i.encodings=[].concat(this.sendEncodings||[{}])),i})}function Po(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function Eo(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.createAnswer;n.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}var Ir=Object.freeze({__proto__:null,shimAddTransceiver:Co,shimCreateAnswer:Eo,shimCreateOffer:Po,shimGetDisplayMedia:ju,shimGetParameters:So,shimGetUserMedia:go,shimOnTrack:vo,shimPeerConnection:zn,shimRTCDataChannel:To,shimReceiverGetStats:yo,shimRemoveStream:ko,shimSenderGetStats:bo});function _o(n){if(!(typeof n!="object"||!n.RTCPeerConnection)){if("getLocalStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in n.RTCPeerConnection.prototype)){const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addStream=function(i){this._localStreams||(this._localStreams=[]),this._localStreams.includes(i)||this._localStreams.push(i),i.getAudioTracks().forEach(s=>e.call(this,s,i)),i.getVideoTracks().forEach(s=>e.call(this,s,i))},n.RTCPeerConnection.prototype.addTrack=function(i){for(var s=arguments.length,r=new Array(s>1?s-1:0),a=1;a<s;a++)r[a-1]=arguments[a];return r&&r.forEach(o=>{this._localStreams?this._localStreams.includes(o)||this._localStreams.push(o):this._localStreams=[o]}),e.apply(this,arguments)}}"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){this._localStreams||(this._localStreams=[]);const i=this._localStreams.indexOf(t);if(i===-1)return;this._localStreams.splice(i,1);const s=t.getTracks();this.getSenders().forEach(r=>{s.includes(r.track)&&this.removeTrack(r)})})}}function wo(n){if(!(typeof n!="object"||!n.RTCPeerConnection)&&("getRemoteStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in n.RTCPeerConnection.prototype))){Object.defineProperty(n.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=i=>{i.streams.forEach(s=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(s))return;this._remoteStreams.push(s);const r=new Event("addstream");r.stream=s,this.dispatchEvent(r)})})}});const e=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){const i=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(s){s.streams.forEach(r=>{if(i._remoteStreams||(i._remoteStreams=[]),i._remoteStreams.indexOf(r)>=0)return;i._remoteStreams.push(r);const a=new Event("addstream");a.stream=r,i.dispatchEvent(a)})}),e.apply(i,arguments)}}}function Ro(n){if(typeof n!="object"||!n.RTCPeerConnection)return;const e=n.RTCPeerConnection.prototype,t=e.createOffer,i=e.createAnswer,s=e.setLocalDescription,r=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(l,d){const f=arguments.length>=2?arguments[2]:arguments[0],p=t.apply(this,[f]);return d?(p.then(l,d),Promise.resolve()):p},e.createAnswer=function(l,d){const f=arguments.length>=2?arguments[2]:arguments[0],p=i.apply(this,[f]);return d?(p.then(l,d),Promise.resolve()):p};let o=function(c,l,d){const f=s.apply(this,[c]);return d?(f.then(l,d),Promise.resolve()):f};e.setLocalDescription=o,o=function(c,l,d){const f=r.apply(this,[c]);return d?(f.then(l,d),Promise.resolve()):f},e.setRemoteDescription=o,o=function(c,l,d){const f=a.apply(this,[c]);return d?(f.then(l,d),Promise.resolve()):f},e.addIceCandidate=o}function Io(n){const e=n&&n.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const t=e.mediaDevices,i=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=s=>i(Oo(s))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(i,s,r){e.mediaDevices.getUserMedia(i).then(s,r)}).bind(e))}function Oo(n){return n&&n.video!==void 0?Object.assign({},n,{video:ao(n.video)}):n}function Do(n){if(!n.RTCPeerConnection)return;const e=n.RTCPeerConnection;n.RTCPeerConnection=function(i,s){if(i&&i.iceServers){const r=[];for(let a=0;a<i.iceServers.length;a++){let o=i.iceServers[a];o.urls===void 0&&o.url?(bs("RTCIceServer.url","RTCIceServer.urls"),o=JSON.parse(JSON.stringify(o)),o.urls=o.url,delete o.url,r.push(o)):r.push(i.iceServers[a])}i.iceServers=r}return new e(i,s)},n.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(n.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function Mo(n){typeof n=="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function xo(n){const e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(i){if(i){typeof i.offerToReceiveAudio<"u"&&(i.offerToReceiveAudio=!!i.offerToReceiveAudio);const s=this.getTransceivers().find(a=>a.receiver.track.kind==="audio");i.offerToReceiveAudio===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):i.offerToReceiveAudio===!0&&!s&&this.addTransceiver("audio",{direction:"recvonly"}),typeof i.offerToReceiveVideo<"u"&&(i.offerToReceiveVideo=!!i.offerToReceiveVideo);const r=this.getTransceivers().find(a=>a.receiver.track.kind==="video");i.offerToReceiveVideo===!1&&r?r.direction==="sendrecv"?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":r.direction==="recvonly"&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):i.offerToReceiveVideo===!0&&!r&&this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function Ao(n){typeof n!="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}var Or=Object.freeze({__proto__:null,shimAudioContext:Ao,shimCallbacksAPI:Ro,shimConstraints:Oo,shimCreateOfferLegacy:xo,shimGetUserMedia:Io,shimLocalStreamsAPI:_o,shimRTCIceServerUrls:Do,shimRemoteStreamsAPI:wo,shimTrackEventTransceiver:Mo}),Pn={exports:{}},Dr;function Bu(){return Dr||(Dr=1,function(n){const e={};e.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
|
||
`).map(i=>i.trim())},e.splitSections=function(t){return t.split(`
|
||
m=`).map((s,r)=>(r>0?"m="+s:s).trim()+`\r
|
||
`)},e.getDescription=function(t){const i=e.splitSections(t);return i&&i[0]},e.getMediaSections=function(t){const i=e.splitSections(t);return i.shift(),i},e.matchPrefix=function(t,i){return e.splitLines(t).filter(s=>s.indexOf(i)===0)},e.parseCandidate=function(t){let i;t.indexOf("a=candidate:")===0?i=t.substring(12).split(" "):i=t.substring(10).split(" ");const s={foundation:i[0],component:{1:"rtp",2:"rtcp"}[i[1]]||i[1],protocol:i[2].toLowerCase(),priority:parseInt(i[3],10),ip:i[4],address:i[4],port:parseInt(i[5],10),type:i[7]};for(let r=8;r<i.length;r+=2)switch(i[r]){case"raddr":s.relatedAddress=i[r+1];break;case"rport":s.relatedPort=parseInt(i[r+1],10);break;case"tcptype":s.tcpType=i[r+1];break;case"ufrag":s.ufrag=i[r+1],s.usernameFragment=i[r+1];break;default:s[i[r]]===void 0&&(s[i[r]]=i[r+1]);break}return s},e.writeCandidate=function(t){const i=[];i.push(t.foundation);const s=t.component;s==="rtp"?i.push(1):s==="rtcp"?i.push(2):i.push(s),i.push(t.protocol.toUpperCase()),i.push(t.priority),i.push(t.address||t.ip),i.push(t.port);const r=t.type;return i.push("typ"),i.push(r),r!=="host"&&t.relatedAddress&&t.relatedPort&&(i.push("raddr"),i.push(t.relatedAddress),i.push("rport"),i.push(t.relatedPort)),t.tcpType&&t.protocol.toLowerCase()==="tcp"&&(i.push("tcptype"),i.push(t.tcpType)),(t.usernameFragment||t.ufrag)&&(i.push("ufrag"),i.push(t.usernameFragment||t.ufrag)),"candidate:"+i.join(" ")},e.parseIceOptions=function(t){return t.substring(14).split(" ")},e.parseRtpMap=function(t){let i=t.substring(9).split(" ");const s={payloadType:parseInt(i.shift(),10)};return i=i[0].split("/"),s.name=i[0],s.clockRate=parseInt(i[1],10),s.channels=i.length===3?parseInt(i[2],10):1,s.numChannels=s.channels,s},e.writeRtpMap=function(t){let i=t.payloadType;t.preferredPayloadType!==void 0&&(i=t.preferredPayloadType);const s=t.channels||t.numChannels||1;return"a=rtpmap:"+i+" "+t.name+"/"+t.clockRate+(s!==1?"/"+s:"")+`\r
|
||
`},e.parseExtmap=function(t){const i=t.substring(9).split(" ");return{id:parseInt(i[0],10),direction:i[0].indexOf("/")>0?i[0].split("/")[1]:"sendrecv",uri:i[1],attributes:i.slice(2).join(" ")}},e.writeExtmap=function(t){return"a=extmap:"+(t.id||t.preferredId)+(t.direction&&t.direction!=="sendrecv"?"/"+t.direction:"")+" "+t.uri+(t.attributes?" "+t.attributes:"")+`\r
|
||
`},e.parseFmtp=function(t){const i={};let s;const r=t.substring(t.indexOf(" ")+1).split(";");for(let a=0;a<r.length;a++)s=r[a].trim().split("="),i[s[0].trim()]=s[1];return i},e.writeFmtp=function(t){let i="",s=t.payloadType;if(t.preferredPayloadType!==void 0&&(s=t.preferredPayloadType),t.parameters&&Object.keys(t.parameters).length){const r=[];Object.keys(t.parameters).forEach(a=>{t.parameters[a]!==void 0?r.push(a+"="+t.parameters[a]):r.push(a)}),i+="a=fmtp:"+s+" "+r.join(";")+`\r
|
||
`}return i},e.parseRtcpFb=function(t){const i=t.substring(t.indexOf(" ")+1).split(" ");return{type:i.shift(),parameter:i.join(" ")}},e.writeRtcpFb=function(t){let i="",s=t.payloadType;return t.preferredPayloadType!==void 0&&(s=t.preferredPayloadType),t.rtcpFeedback&&t.rtcpFeedback.length&&t.rtcpFeedback.forEach(r=>{i+="a=rtcp-fb:"+s+" "+r.type+(r.parameter&&r.parameter.length?" "+r.parameter:"")+`\r
|
||
`}),i},e.parseSsrcMedia=function(t){const i=t.indexOf(" "),s={ssrc:parseInt(t.substring(7,i),10)},r=t.indexOf(":",i);return r>-1?(s.attribute=t.substring(i+1,r),s.value=t.substring(r+1)):s.attribute=t.substring(i+1),s},e.parseSsrcGroup=function(t){const i=t.substring(13).split(" ");return{semantics:i.shift(),ssrcs:i.map(s=>parseInt(s,10))}},e.getMid=function(t){const i=e.matchPrefix(t,"a=mid:")[0];if(i)return i.substring(6)},e.parseFingerprint=function(t){const i=t.substring(14).split(" ");return{algorithm:i[0].toLowerCase(),value:i[1].toUpperCase()}},e.getDtlsParameters=function(t,i){return{role:"auto",fingerprints:e.matchPrefix(t+i,"a=fingerprint:").map(e.parseFingerprint)}},e.writeDtlsParameters=function(t,i){let s="a=setup:"+i+`\r
|
||
`;return t.fingerprints.forEach(r=>{s+="a=fingerprint:"+r.algorithm+" "+r.value+`\r
|
||
`}),s},e.parseCryptoLine=function(t){const i=t.substring(9).split(" ");return{tag:parseInt(i[0],10),cryptoSuite:i[1],keyParams:i[2],sessionParams:i.slice(3)}},e.writeCryptoLine=function(t){return"a=crypto:"+t.tag+" "+t.cryptoSuite+" "+(typeof t.keyParams=="object"?e.writeCryptoKeyParams(t.keyParams):t.keyParams)+(t.sessionParams?" "+t.sessionParams.join(" "):"")+`\r
|
||
`},e.parseCryptoKeyParams=function(t){if(t.indexOf("inline:")!==0)return null;const i=t.substring(7).split("|");return{keyMethod:"inline",keySalt:i[0],lifeTime:i[1],mkiValue:i[2]?i[2].split(":")[0]:void 0,mkiLength:i[2]?i[2].split(":")[1]:void 0}},e.writeCryptoKeyParams=function(t){return t.keyMethod+":"+t.keySalt+(t.lifeTime?"|"+t.lifeTime:"")+(t.mkiValue&&t.mkiLength?"|"+t.mkiValue+":"+t.mkiLength:"")},e.getCryptoParameters=function(t,i){return e.matchPrefix(t+i,"a=crypto:").map(e.parseCryptoLine)},e.getIceParameters=function(t,i){const s=e.matchPrefix(t+i,"a=ice-ufrag:")[0],r=e.matchPrefix(t+i,"a=ice-pwd:")[0];return s&&r?{usernameFragment:s.substring(12),password:r.substring(10)}:null},e.writeIceParameters=function(t){let i="a=ice-ufrag:"+t.usernameFragment+`\r
|
||
a=ice-pwd:`+t.password+`\r
|
||
`;return t.iceLite&&(i+=`a=ice-lite\r
|
||
`),i},e.parseRtpParameters=function(t){const i={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=e.splitLines(t)[0].split(" ");i.profile=r[2];for(let o=3;o<r.length;o++){const c=r[o],l=e.matchPrefix(t,"a=rtpmap:"+c+" ")[0];if(l){const d=e.parseRtpMap(l),f=e.matchPrefix(t,"a=fmtp:"+c+" ");switch(d.parameters=f.length?e.parseFmtp(f[0]):{},d.rtcpFeedback=e.matchPrefix(t,"a=rtcp-fb:"+c+" ").map(e.parseRtcpFb),i.codecs.push(d),d.name.toUpperCase()){case"RED":case"ULPFEC":i.fecMechanisms.push(d.name.toUpperCase());break}}}e.matchPrefix(t,"a=extmap:").forEach(o=>{i.headerExtensions.push(e.parseExtmap(o))});const a=e.matchPrefix(t,"a=rtcp-fb:* ").map(e.parseRtcpFb);return i.codecs.forEach(o=>{a.forEach(c=>{o.rtcpFeedback.find(d=>d.type===c.type&&d.parameter===c.parameter)||o.rtcpFeedback.push(c)})}),i},e.writeRtpDescription=function(t,i){let s="";s+="m="+t+" ",s+=i.codecs.length>0?"9":"0",s+=" "+(i.profile||"UDP/TLS/RTP/SAVPF")+" ",s+=i.codecs.map(a=>a.preferredPayloadType!==void 0?a.preferredPayloadType:a.payloadType).join(" ")+`\r
|
||
`,s+=`c=IN IP4 0.0.0.0\r
|
||
`,s+=`a=rtcp:9 IN IP4 0.0.0.0\r
|
||
`,i.codecs.forEach(a=>{s+=e.writeRtpMap(a),s+=e.writeFmtp(a),s+=e.writeRtcpFb(a)});let r=0;return i.codecs.forEach(a=>{a.maxptime>r&&(r=a.maxptime)}),r>0&&(s+="a=maxptime:"+r+`\r
|
||
`),i.headerExtensions&&i.headerExtensions.forEach(a=>{s+=e.writeExtmap(a)}),s},e.parseRtpEncodingParameters=function(t){const i=[],s=e.parseRtpParameters(t),r=s.fecMechanisms.indexOf("RED")!==-1,a=s.fecMechanisms.indexOf("ULPFEC")!==-1,o=e.matchPrefix(t,"a=ssrc:").map(p=>e.parseSsrcMedia(p)).filter(p=>p.attribute==="cname"),c=o.length>0&&o[0].ssrc;let l;const d=e.matchPrefix(t,"a=ssrc-group:FID").map(p=>p.substring(17).split(" ").map(y=>parseInt(y,10)));d.length>0&&d[0].length>1&&d[0][0]===c&&(l=d[0][1]),s.codecs.forEach(p=>{if(p.name.toUpperCase()==="RTX"&&p.parameters.apt){let m={ssrc:c,codecPayloadType:parseInt(p.parameters.apt,10)};c&&l&&(m.rtx={ssrc:l}),i.push(m),r&&(m=JSON.parse(JSON.stringify(m)),m.fec={ssrc:c,mechanism:a?"red+ulpfec":"red"},i.push(m))}}),i.length===0&&c&&i.push({ssrc:c});let f=e.matchPrefix(t,"b=");return f.length&&(f[0].indexOf("b=TIAS:")===0?f=parseInt(f[0].substring(7),10):f[0].indexOf("b=AS:")===0?f=parseInt(f[0].substring(5),10)*1e3*.95-50*40*8:f=void 0,i.forEach(p=>{p.maxBitrate=f})),i},e.parseRtcpParameters=function(t){const i={},s=e.matchPrefix(t,"a=ssrc:").map(o=>e.parseSsrcMedia(o)).filter(o=>o.attribute==="cname")[0];s&&(i.cname=s.value,i.ssrc=s.ssrc);const r=e.matchPrefix(t,"a=rtcp-rsize");i.reducedSize=r.length>0,i.compound=r.length===0;const a=e.matchPrefix(t,"a=rtcp-mux");return i.mux=a.length>0,i},e.writeRtcpParameters=function(t){let i="";return t.reducedSize&&(i+=`a=rtcp-rsize\r
|
||
`),t.mux&&(i+=`a=rtcp-mux\r
|
||
`),t.ssrc!==void 0&&t.cname&&(i+="a=ssrc:"+t.ssrc+" cname:"+t.cname+`\r
|
||
`),i},e.parseMsid=function(t){let i;const s=e.matchPrefix(t,"a=msid:");if(s.length===1)return i=s[0].substring(7).split(" "),{stream:i[0],track:i[1]};const r=e.matchPrefix(t,"a=ssrc:").map(a=>e.parseSsrcMedia(a)).filter(a=>a.attribute==="msid");if(r.length>0)return i=r[0].value.split(" "),{stream:i[0],track:i[1]}},e.parseSctpDescription=function(t){const i=e.parseMLine(t),s=e.matchPrefix(t,"a=max-message-size:");let r;s.length>0&&(r=parseInt(s[0].substring(19),10)),isNaN(r)&&(r=65536);const a=e.matchPrefix(t,"a=sctp-port:");if(a.length>0)return{port:parseInt(a[0].substring(12),10),protocol:i.fmt,maxMessageSize:r};const o=e.matchPrefix(t,"a=sctpmap:");if(o.length>0){const c=o[0].substring(10).split(" ");return{port:parseInt(c[0],10),protocol:c[1],maxMessageSize:r}}},e.writeSctpDescription=function(t,i){let s=[];return t.protocol!=="DTLS/SCTP"?s=["m="+t.kind+" 9 "+t.protocol+" "+i.protocol+`\r
|
||
`,`c=IN IP4 0.0.0.0\r
|
||
`,"a=sctp-port:"+i.port+`\r
|
||
`]:s=["m="+t.kind+" 9 "+t.protocol+" "+i.port+`\r
|
||
`,`c=IN IP4 0.0.0.0\r
|
||
`,"a=sctpmap:"+i.port+" "+i.protocol+` 65535\r
|
||
`],i.maxMessageSize!==void 0&&s.push("a=max-message-size:"+i.maxMessageSize+`\r
|
||
`),s.join("")},e.generateSessionId=function(){return Math.random().toString().substr(2,22)},e.writeSessionBoilerplate=function(t,i,s){let r;const a=i!==void 0?i:2;return t?r=t:r=e.generateSessionId(),`v=0\r
|
||
o=`+(s||"thisisadapterortc")+" "+r+" "+a+` IN IP4 127.0.0.1\r
|
||
s=-\r
|
||
t=0 0\r
|
||
`},e.getDirection=function(t,i){const s=e.splitLines(t);for(let r=0;r<s.length;r++)switch(s[r]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return s[r].substring(2)}return i?e.getDirection(i):"sendrecv"},e.getKind=function(t){return e.splitLines(t)[0].split(" ")[0].substring(2)},e.isRejected=function(t){return t.split(" ",2)[1]==="0"},e.parseMLine=function(t){const s=e.splitLines(t)[0].substring(2).split(" ");return{kind:s[0],port:parseInt(s[1],10),protocol:s[2],fmt:s.slice(3).join(" ")}},e.parseOLine=function(t){const s=e.matchPrefix(t,"o=")[0].substring(2).split(" ");return{username:s[0],sessionId:s[1],sessionVersion:parseInt(s[2],10),netType:s[3],addressType:s[4],address:s[5]}},e.isValidSDP=function(t){if(typeof t!="string"||t.length===0)return!1;const i=e.splitLines(t);for(let s=0;s<i.length;s++)if(i[s].length<2||i[s].charAt(1)!=="=")return!1;return!0},n.exports=e}(Pn)),Pn.exports}var No=Bu(),Bt=Iu(No),Vu=Yl({__proto__:null,default:Bt},[No]);function Li(n){if(!n.RTCIceCandidate||n.RTCIceCandidate&&"foundation"in n.RTCIceCandidate.prototype)return;const e=n.RTCIceCandidate;n.RTCIceCandidate=function(i){if(typeof i=="object"&&i.candidate&&i.candidate.indexOf("a=")===0&&(i=JSON.parse(JSON.stringify(i)),i.candidate=i.candidate.substring(2)),i.candidate&&i.candidate.length){const s=new e(i),r=Bt.parseCandidate(i.candidate);for(const a in r)a in s||Object.defineProperty(s,a,{value:r[a]});return s.toJSON=function(){return{candidate:s.candidate,sdpMid:s.sdpMid,sdpMLineIndex:s.sdpMLineIndex,usernameFragment:s.usernameFragment}},s}return new e(i)},n.RTCIceCandidate.prototype=e.prototype,It(n,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new n.RTCIceCandidate(t.candidate),writable:"false"}),t))}function Hn(n){!n.RTCIceCandidate||n.RTCIceCandidate&&"relayProtocol"in n.RTCIceCandidate.prototype||It(n,"icecandidate",e=>{if(e.candidate){const t=Bt.parseCandidate(e.candidate.candidate);t.type==="relay"&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e})}function Ui(n,e){if(!n.RTCPeerConnection)return;"sctp"in n.RTCPeerConnection.prototype||Object.defineProperty(n.RTCPeerConnection.prototype,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp}});const t=function(o){if(!o||!o.sdp)return!1;const c=Bt.splitSections(o.sdp);return c.shift(),c.some(l=>{const d=Bt.parseMLine(l);return d&&d.kind==="application"&&d.protocol.indexOf("SCTP")!==-1})},i=function(o){const c=o.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(c===null||c.length<2)return-1;const l=parseInt(c[1],10);return l!==l?-1:l},s=function(o){let c=65536;return e.browser==="firefox"&&(e.version<57?o===-1?c=16384:c=2147483637:e.version<60?c=e.version===57?65535:65536:c=2147483637),c},r=function(o,c){let l=65536;e.browser==="firefox"&&e.version===57&&(l=65535);const d=Bt.matchPrefix(o.sdp,"a=max-message-size:");return d.length>0?l=parseInt(d[0].substring(19),10):e.browser==="firefox"&&c!==-1&&(l=2147483637),l},a=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){const{sdpSemantics:c}=this.getConfiguration();c==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){const c=i(arguments[0]),l=s(c),d=r(arguments[0],c);let f;l===0&&d===0?f=Number.POSITIVE_INFINITY:l===0||d===0?f=Math.max(l,d):f=Math.min(l,d);const p={};Object.defineProperty(p,"maxMessageSize",{get(){return f}}),this._sctp=p}return a.apply(this,arguments)}}function Fi(n){if(!(n.RTCPeerConnection&&"createDataChannel"in n.RTCPeerConnection.prototype))return;function e(i,s){const r=i.send;i.send=function(){const o=arguments[0],c=o.length||o.size||o.byteLength;if(i.readyState==="open"&&s.sctp&&c>s.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+s.sctp.maxMessageSize+" bytes)");return r.apply(i,arguments)}}const t=n.RTCPeerConnection.prototype.createDataChannel;n.RTCPeerConnection.prototype.createDataChannel=function(){const s=t.apply(this,arguments);return e(s,this),s},It(n,"datachannel",i=>(e(i.channel,i.target),i))}function Jn(n){if(!n.RTCPeerConnection||"connectionState"in n.RTCPeerConnection.prototype)return;const e=n.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(t){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),t&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=t)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(t=>{const i=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=s=>{const r=s.target;if(r._lastConnectionState!==r.connectionState){r._lastConnectionState=r.connectionState;const a=new Event("connectionstatechange",s);r.dispatchEvent(a)}return s},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),i.apply(this,arguments)}})}function $n(n,e){if(!n.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e.version>=605)return;const t=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(s){if(s&&s.sdp&&s.sdp.indexOf(`
|
||
a=extmap-allow-mixed`)!==-1){const r=s.sdp.split(`
|
||
`).filter(a=>a.trim()!=="a=extmap-allow-mixed").join(`
|
||
`);n.RTCSessionDescription&&s instanceof n.RTCSessionDescription?arguments[0]=new n.RTCSessionDescription({type:s.type,sdp:r}):s.sdp=r}return t.apply(this,arguments)}}function ji(n,e){if(!(n.RTCPeerConnection&&n.RTCPeerConnection.prototype))return;const t=n.RTCPeerConnection.prototype.addIceCandidate;!t||t.length===0||(n.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():t.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function Bi(n,e){if(!(n.RTCPeerConnection&&n.RTCPeerConnection.prototype))return;const t=n.RTCPeerConnection.prototype.setLocalDescription;!t||t.length===0||(n.RTCPeerConnection.prototype.setLocalDescription=function(){let s=arguments[0]||{};if(typeof s!="object"||s.type&&s.sdp)return t.apply(this,arguments);if(s={type:s.type,sdp:s.sdp},!s.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":s.type="offer";break;default:s.type="answer";break}return s.sdp||s.type!=="offer"&&s.type!=="answer"?t.apply(this,[s]):(s.type==="offer"?this.createOffer:this.createAnswer).apply(this).then(a=>t.apply(this,[a]))})}var qu=Object.freeze({__proto__:null,removeExtmapAllowMixed:$n,shimAddIceCandidateNullOrEmpty:ji,shimConnectionState:Jn,shimMaxMessageSize:Ui,shimParameterlessSetLocalDescription:Bi,shimRTCIceCandidate:Li,shimRTCIceCandidateRelayProtocol:Hn,shimSendThrowTypeError:Fi});function Ku(){let{window:n}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0};const t=ro,i=Fu(n),s={browserDetails:i,commonShim:qu,extractVersion:Ni,disableLog:Lu,disableWarnings:Uu,sdp:Vu};switch(i.browser){case"chrome":if(!Rr||!Wn||!e.shimChrome)return t("Chrome shim is not included in this adapter release."),s;if(i.version===null)return t("Chrome shim can not determine version, not shimming."),s;t("adapter.js shimming chrome."),s.browserShim=Rr,ji(n,i),Bi(n),oo(n,i),co(n),Wn(n,i),lo(n),po(n,i),uo(n),ho(n),mo(n,i),Li(n),Hn(n),Jn(n),Ui(n,i),Fi(n),$n(n,i);break;case"firefox":if(!Ir||!zn||!e.shimFirefox)return t("Firefox shim is not included in this adapter release."),s;t("adapter.js shimming firefox."),s.browserShim=Ir,ji(n,i),Bi(n),go(n,i),zn(n,i),vo(n),ko(n),bo(n),yo(n),To(n),Co(n),So(n),Po(n),Eo(n),Li(n),Jn(n),Ui(n,i),Fi(n);break;case"safari":if(!Or||!e.shimSafari)return t("Safari shim is not included in this adapter release."),s;t("adapter.js shimming safari."),s.browserShim=Or,ji(n,i),Bi(n),Do(n),xo(n),Ro(n),_o(n),wo(n),Mo(n),Io(n),Ao(n),Li(n),Hn(n),Ui(n,i),Fi(n),$n(n,i);break;default:t("Unsupported browser!");break}return s}Ku({window:typeof window>"u"?void 0:window});const Gu=10,_i="lk_e2ee",Wu="LKFrameEncryptionKey",zu={sharedKey:!1,ratchetSalt:Wu,ratchetWindowSize:8,failureTolerance:Gu,keyringSize:16};var Tt;(function(n){n.SetKey="setKey",n.RatchetRequest="ratchetRequest",n.KeyRatcheted="keyRatcheted"})(Tt||(Tt={}));var Mr;(function(n){n.KeyRatcheted="keyRatcheted"})(Mr||(Mr={}));var kt;(function(n){n.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",n.EncryptionError="encryptionError"})(kt||(kt={}));var xr;(function(n){n.Error="cryptorError"})(xr||(xr={}));function Hu(){return Ju()||Qn()}function Qn(){return typeof window.RTCRtpScriptTransform<"u"}function Ju(){return typeof window.RTCRtpSender<"u"&&typeof window.RTCRtpSender.prototype.createEncodedStreams<"u"}class im extends nt.EventEmitter{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};super(),this.onKeyRatcheted=(t,i)=>{Z.debug("key ratcheted event received",{material:t,keyIndex:i})},this.keyInfoMap=new Map,this.options=Object.assign(Object.assign({},zu),e),this.on(Tt.KeyRatcheted,this.onKeyRatcheted)}onSetEncryptionKey(e,t,i){const s={key:e,participantIdentity:t,keyIndex:i};if(!this.options.sharedKey&&!t)throw new Error("participant identity needs to be passed for encryption key if sharedKey option is false");this.keyInfoMap.set("".concat(t??"shared","-").concat(i??0),s),this.emit(Tt.SetKey,s)}getKeys(){return Array.from(this.keyInfoMap.values())}getOptions(){return this.options}ratchetKey(e,t){this.emit(Tt.RatchetRequest,e,t)}}class Ot extends Error{constructor(e,t){super(t||"an error has occured"),this.code=e}}var te;(function(n){n[n.NotAllowed=0]="NotAllowed",n[n.ServerUnreachable=1]="ServerUnreachable",n[n.InternalError=2]="InternalError",n[n.Cancelled=3]="Cancelled",n[n.LeaveRequest=4]="LeaveRequest"})(te||(te={}));class re extends Ot{constructor(e,t,i,s){super(1,e),this.status=i,this.reason=t,this.context=s}}class ys extends Ot{constructor(e){super(21,e??"device is unsupported")}}class it extends Ot{constructor(e){super(20,e??"track is invalid")}}class $u extends Ot{constructor(e){super(10,e??"unsupported server")}}class ye extends Ot{constructor(e){super(12,e??"unexpected connection state")}}class Yn extends Ot{constructor(e){super(13,e??"unable to negotiate")}}class Ar extends Ot{constructor(e,t){super(15,e),this.reason=t}}var Hi;(function(n){n.PermissionDenied="PermissionDenied",n.NotFound="NotFound",n.DeviceInUse="DeviceInUse",n.Other="Other"})(Hi||(Hi={}));(function(n){function e(t){if(t&&"name"in t)return t.name==="NotFoundError"||t.name==="DevicesNotFoundError"?n.NotFound:t.name==="NotAllowedError"||t.name==="PermissionDeniedError"?n.PermissionDenied:t.name==="NotReadableError"||t.name==="TrackStartError"?n.DeviceInUse:n.Other}n.getFailure=e})(Hi||(Hi={}));var Nr;(function(n){n[n.InvalidKey=0]="InvalidKey",n[n.MissingKey=1]="MissingKey",n[n.InternalError=2]="InternalError"})(Nr||(Nr={}));var D;(function(n){n.Connected="connected",n.Reconnecting="reconnecting",n.SignalReconnecting="signalReconnecting",n.Reconnected="reconnected",n.Disconnected="disconnected",n.ConnectionStateChanged="connectionStateChanged",n.MediaDevicesChanged="mediaDevicesChanged",n.ParticipantConnected="participantConnected",n.ParticipantDisconnected="participantDisconnected",n.TrackPublished="trackPublished",n.TrackSubscribed="trackSubscribed",n.TrackSubscriptionFailed="trackSubscriptionFailed",n.TrackUnpublished="trackUnpublished",n.TrackUnsubscribed="trackUnsubscribed",n.TrackMuted="trackMuted",n.TrackUnmuted="trackUnmuted",n.LocalTrackPublished="localTrackPublished",n.LocalTrackUnpublished="localTrackUnpublished",n.LocalAudioSilenceDetected="localAudioSilenceDetected",n.ActiveSpeakersChanged="activeSpeakersChanged",n.ParticipantMetadataChanged="participantMetadataChanged",n.ParticipantNameChanged="participantNameChanged",n.ParticipantAttributesChanged="participantAttributesChanged",n.RoomMetadataChanged="roomMetadataChanged",n.DataReceived="dataReceived",n.SipDTMFReceived="sipDTMFReceived",n.TranscriptionReceived="transcriptionReceived",n.ConnectionQualityChanged="connectionQualityChanged",n.TrackStreamStateChanged="trackStreamStateChanged",n.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",n.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",n.AudioPlaybackStatusChanged="audioPlaybackChanged",n.VideoPlaybackStatusChanged="videoPlaybackChanged",n.MediaDevicesError="mediaDevicesError",n.ParticipantPermissionsChanged="participantPermissionsChanged",n.SignalConnected="signalConnected",n.RecordingStatusChanged="recordingStatusChanged",n.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",n.EncryptionError="encryptionError",n.DCBufferStatusChanged="dcBufferStatusChanged",n.ActiveDeviceChanged="activeDeviceChanged",n.ChatMessage="chatMessage",n.LocalTrackSubscribed="localTrackSubscribed",n.MetricsReceived="metricsReceived"})(D||(D={}));var L;(function(n){n.TrackPublished="trackPublished",n.TrackSubscribed="trackSubscribed",n.TrackSubscriptionFailed="trackSubscriptionFailed",n.TrackUnpublished="trackUnpublished",n.TrackUnsubscribed="trackUnsubscribed",n.TrackMuted="trackMuted",n.TrackUnmuted="trackUnmuted",n.LocalTrackPublished="localTrackPublished",n.LocalTrackUnpublished="localTrackUnpublished",n.ParticipantMetadataChanged="participantMetadataChanged",n.ParticipantNameChanged="participantNameChanged",n.DataReceived="dataReceived",n.SipDTMFReceived="sipDTMFReceived",n.TranscriptionReceived="transcriptionReceived",n.IsSpeakingChanged="isSpeakingChanged",n.ConnectionQualityChanged="connectionQualityChanged",n.TrackStreamStateChanged="trackStreamStateChanged",n.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",n.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",n.MediaDevicesError="mediaDevicesError",n.AudioStreamAcquired="audioStreamAcquired",n.ParticipantPermissionsChanged="participantPermissionsChanged",n.PCTrackAdded="pcTrackAdded",n.AttributesChanged="attributesChanged",n.LocalTrackSubscribed="localTrackSubscribed",n.ChatMessage="chatMessage"})(L||(L={}));var j;(function(n){n.TransportsCreated="transportsCreated",n.Connected="connected",n.Disconnected="disconnected",n.Resuming="resuming",n.Resumed="resumed",n.Restarting="restarting",n.Restarted="restarted",n.SignalResumed="signalResumed",n.SignalRestarted="signalRestarted",n.Closing="closing",n.MediaTrackAdded="mediaTrackAdded",n.ActiveSpeakersUpdate="activeSpeakersUpdate",n.DataPacketReceived="dataPacketReceived",n.RTPVideoMapUpdate="rtpVideoMapUpdate",n.DCBufferStatusChanged="dcBufferStatusChanged",n.ParticipantUpdate="participantUpdate",n.RoomUpdate="roomUpdate",n.SpeakersChanged="speakersChanged",n.StreamStateChanged="streamStateChanged",n.ConnectionQualityUpdate="connectionQualityUpdate",n.SubscriptionError="subscriptionError",n.SubscriptionPermissionUpdate="subscriptionPermissionUpdate",n.RemoteMute="remoteMute",n.SubscribedQualityUpdate="subscribedQualityUpdate",n.LocalTrackUnpublished="localTrackUnpublished",n.LocalTrackSubscribed="localTrackSubscribed",n.Offline="offline",n.SignalRequestResponse="signalRequestResponse"})(j||(j={}));var N;(function(n){n.Message="message",n.Muted="muted",n.Unmuted="unmuted",n.Restarted="restarted",n.Ended="ended",n.Subscribed="subscribed",n.Unsubscribed="unsubscribed",n.UpdateSettings="updateSettings",n.UpdateSubscription="updateSubscription",n.AudioPlaybackStarted="audioPlaybackStarted",n.AudioPlaybackFailed="audioPlaybackFailed",n.AudioSilenceDetected="audioSilenceDetected",n.VisibilityChanged="visibilityChanged",n.VideoDimensionsChanged="videoDimensionsChanged",n.VideoPlaybackStarted="videoPlaybackStarted",n.VideoPlaybackFailed="videoPlaybackFailed",n.ElementAttached="elementAttached",n.ElementDetached="elementDetached",n.UpstreamPaused="upstreamPaused",n.UpstreamResumed="upstreamResumed",n.SubscriptionPermissionChanged="subscriptionPermissionChanged",n.SubscriptionStatusChanged="subscriptionStatusChanged",n.SubscriptionFailed="subscriptionFailed",n.TrackProcessorUpdate="trackProcessorUpdate",n.AudioTrackFeatureUpdate="audioTrackFeatureUpdate",n.TranscriptionReceived="transcriptionReceived",n.TimeSyncUpdate="timeSyncUpdate"})(N||(N={}));function ks(n,e,t){var i,s,r;e===void 0&&(e=50),t===void 0&&(t={});var a=(i=t.isImmediate)!=null&&i,o=(s=t.callback)!=null&&s,c=t.maxWait,l=Date.now(),d=[];function f(){if(c!==void 0){var m=Date.now()-l;if(m+e>=c)return c-m}return e}var p=function(){var m=[].slice.call(arguments),y=this;return new Promise(function(C,_){var b=a&&r===void 0;if(r!==void 0&&clearTimeout(r),r=setTimeout(function(){if(r=void 0,l=Date.now(),!a){var W=n.apply(y,m);o&&o(W),d.forEach(function(P){return(0,P.resolve)(W)}),d=[]}},f()),b){var G=n.apply(y,m);return o&&o(G),C(G)}d.push({resolve:C,reject:_})})};return p.cancel=function(m){r!==void 0&&clearTimeout(r),d.forEach(function(y){return(0,y.reject)(m)}),d=[]},p}const Qu=/version\/(\d+(\.?_?\d+)+)/i;let En;function ut(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(typeof navigator>"u")return;const t=navigator.userAgent.toLowerCase();if(En===void 0||e){const i=Yu.find(s=>{let{test:r}=s;return r.test(t)});En=i==null?void 0:i.describe(t)}return En}const Yu=[{test:/firefox|iceweasel|fxios/i,describe(n){return{name:"Firefox",version:Vi(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,n),os:n.toLowerCase().includes("fxios")?"iOS":void 0,osVersion:_n(n)}}},{test:/chrom|crios|crmo/i,describe(n){return{name:"Chrome",version:Vi(/(?:chrome|chromium|crios|crmo)\/(\d+(\.?_?\d+)+)/i,n),os:n.toLowerCase().includes("crios")?"iOS":void 0,osVersion:_n(n)}}},{test:/safari|applewebkit/i,describe(n){return{name:"Safari",version:Vi(Qu,n),os:n.includes("mobile/")?"iOS":"macOS",osVersion:_n(n)}}}];function Vi(n,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;const i=e.match(n);return i&&i.length>=t&&i[t]||""}function _n(n){return n.includes("mac os")?Vi(/\(.+?(\d+_\d+(:?_\d+)?)/,n,1).replace(/_/g,"."):void 0}var Xu="2.7.5";const Zu=Xu,eh=15;class Ee{}Ee.setTimeout=function(){return setTimeout(...arguments)};Ee.setInterval=function(){return setInterval(...arguments)};Ee.clearTimeout=function(){return clearTimeout(...arguments)};Ee.clearInterval=function(){return clearInterval(...arguments)};class ne{constructor(e,t,i,s,r){if(typeof e=="object")this.width=e.width,this.height=e.height,this.aspectRatio=e.aspectRatio,this.encoding={maxBitrate:e.maxBitrate,maxFramerate:e.maxFramerate,priority:e.priority};else if(t!==void 0&&i!==void 0)this.width=e,this.height=t,this.aspectRatio=e/t,this.encoding={maxBitrate:i,maxFramerate:s,priority:r};else throw new TypeError("Unsupported options: provide at least width, height and maxBitrate")}get resolution(){return{width:this.width,height:this.height,frameRate:this.encoding.maxFramerate,aspectRatio:this.aspectRatio}}}const th=["vp8","h264"],ih=["vp8","h264","vp9","av1"];function nh(n){return!!th.find(e=>e===n)}var Xn;(function(n){n.telephone={maxBitrate:12e3},n.speech={maxBitrate:24e3},n.music={maxBitrate:48e3},n.musicStereo={maxBitrate:64e3},n.musicHighQuality={maxBitrate:96e3},n.musicHighQualityStereo={maxBitrate:128e3}})(Xn||(Xn={}));const gi={h90:new ne(160,90,9e4,20),h180:new ne(320,180,16e4,20),h216:new ne(384,216,18e4,20),h360:new ne(640,360,45e4,20),h540:new ne(960,540,8e5,25),h720:new ne(1280,720,17e5,30),h1080:new ne(1920,1080,3e6,30),h1440:new ne(2560,1440,5e6,30),h2160:new ne(3840,2160,8e6,30)},Zn={h120:new ne(160,120,7e4,20),h180:new ne(240,180,125e3,20),h240:new ne(320,240,14e4,20),h360:new ne(480,360,33e4,20),h480:new ne(640,480,5e5,20),h540:new ne(720,540,6e5,25),h720:new ne(960,720,13e5,30),h1080:new ne(1440,1080,23e5,30),h1440:new ne(1920,1440,38e5,30)},Ts={h360fps3:new ne(640,360,2e5,3,"medium"),h360fps15:new ne(640,360,4e5,15,"medium"),h720fps5:new ne(1280,720,8e5,5,"medium"),h720fps15:new ne(1280,720,15e5,15,"medium"),h720fps30:new ne(1280,720,2e6,30,"medium"),h1080fps15:new ne(1920,1080,25e5,15,"medium"),h1080fps30:new ne(1920,1080,5e6,30,"medium"),original:new ne(0,0,7e6,30,"medium")};function sh(n){if(!(typeof n>"u"))return typeof structuredClone=="function"?structuredClone(n):JSON.parse(JSON.stringify(n))}const rh=5e3,ti=[];var je;(function(n){n[n.LOW=0]="LOW",n[n.MEDIUM=1]="MEDIUM",n[n.HIGH=2]="HIGH"})(je||(je={}));class E extends nt.EventEmitter{constructor(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var s;super(),this.attachedElements=[],this.isMuted=!1,this.streamState=E.StreamState.Active,this.isInBackground=!1,this._currentBitrate=0,this.log=Z,this.appVisibilityChangedListener=()=>{this.backgroundTimeout&&clearTimeout(this.backgroundTimeout),document.visibilityState==="hidden"?this.backgroundTimeout=setTimeout(()=>this.handleAppVisibilityChanged(),rh):this.handleAppVisibilityChanged()},this.log=dt((s=i.loggerName)!==null&&s!==void 0?s:Je.Track),this.loggerContextCb=i.loggerContextCb,this.setMaxListeners(100),this.kind=t,this._mediaStreamTrack=e,this._mediaStreamID=e.id,this.source=E.Source.Unknown}get logContext(){var e;return Object.assign(Object.assign({},(e=this.loggerContextCb)===null||e===void 0?void 0:e.call(this)),se(this))}get currentBitrate(){return this._currentBitrate}get mediaStreamTrack(){return this._mediaStreamTrack}get mediaStreamID(){return this._mediaStreamID}attach(e){let t="audio";this.kind===E.Kind.Video&&(t="video"),this.attachedElements.length===0&&this.kind===E.Kind.Video&&this.addAppVisibilityListener(),e||(t==="audio"&&(ti.forEach(r=>{r.parentElement===null&&!e&&(e=r)}),e&&ti.splice(ti.indexOf(e),1)),e||(e=document.createElement(t))),this.attachedElements.includes(e)||this.attachedElements.push(e),Ft(this.mediaStreamTrack,e);const i=e.srcObject.getTracks(),s=i.some(r=>r.kind==="audio");return e.play().then(()=>{this.emit(s?N.AudioPlaybackStarted:N.VideoPlaybackStarted)}).catch(r=>{r.name==="NotAllowedError"?this.emit(s?N.AudioPlaybackFailed:N.VideoPlaybackFailed,r):r.name==="AbortError"?Z.debug("".concat(s?"audio":"video"," playback aborted, likely due to new play request")):Z.warn("could not playback ".concat(s?"audio":"video"),r),s&&e&&i.some(a=>a.kind==="video")&&r.name==="NotAllowedError"&&(e.muted=!0,e.play().catch(()=>{}))}),this.emit(N.ElementAttached,e),e}detach(e){try{if(e){Vt(this.mediaStreamTrack,e);const i=this.attachedElements.indexOf(e);return i>=0&&(this.attachedElements.splice(i,1),this.recycleElement(e),this.emit(N.ElementDetached,e)),e}const t=[];return this.attachedElements.forEach(i=>{Vt(this.mediaStreamTrack,i),t.push(i),this.recycleElement(i),this.emit(N.ElementDetached,i)}),this.attachedElements=[],t}finally{this.attachedElements.length===0&&this.removeAppVisibilityListener()}}stop(){this.stopMonitor(),this._mediaStreamTrack.stop()}enable(){this._mediaStreamTrack.enabled=!0}disable(){this._mediaStreamTrack.enabled=!1}stopMonitor(){this.monitorInterval&&clearInterval(this.monitorInterval),this.timeSyncHandle&&cancelAnimationFrame(this.timeSyncHandle)}updateLoggerOptions(e){e.loggerName&&(this.log=dt(e.loggerName)),e.loggerContextCb&&(this.loggerContextCb=e.loggerContextCb)}recycleElement(e){if(e instanceof HTMLAudioElement){let t=!0;e.pause(),ti.forEach(i=>{i.parentElement||(t=!1)}),t&&ti.push(e)}}handleAppVisibilityChanged(){return g(this,void 0,void 0,function*(){this.isInBackground=document.visibilityState==="hidden",!this.isInBackground&&this.kind===E.Kind.Video&&setTimeout(()=>this.attachedElements.forEach(e=>e.play().catch(()=>{})),0)})}addAppVisibilityListener(){Le()?(this.isInBackground=document.visibilityState==="hidden",document.addEventListener("visibilitychange",this.appVisibilityChangedListener)):this.isInBackground=!1}removeAppVisibilityListener(){Le()&&document.removeEventListener("visibilitychange",this.appVisibilityChangedListener)}}function Ft(n,e){let t;e.srcObject instanceof MediaStream?t=e.srcObject:t=new MediaStream;let i;n.kind==="audio"?i=t.getAudioTracks():i=t.getVideoTracks(),i.includes(n)||(i.forEach(s=>{t.removeTrack(s)}),t.addTrack(n)),(!Rt()||!(e instanceof HTMLVideoElement))&&(e.autoplay=!0),e.muted=t.getAudioTracks().length===0,e instanceof HTMLVideoElement&&(e.playsInline=!0),e.srcObject!==t&&(e.srcObject=t,(Rt()||Wt())&&e instanceof HTMLVideoElement&&setTimeout(()=>{e.srcObject=t,e.play().catch(()=>{})},0))}function Vt(n,e){if(e.srcObject instanceof MediaStream){const t=e.srcObject;t.removeTrack(n),t.getTracks().length>0?e.srcObject=t:e.srcObject=null}}(function(n){let e;(function(l){l.Audio="audio",l.Video="video",l.Unknown="unknown"})(e=n.Kind||(n.Kind={}));let t;(function(l){l.Camera="camera",l.Microphone="microphone",l.ScreenShare="screen_share",l.ScreenShareAudio="screen_share_audio",l.Unknown="unknown"})(t=n.Source||(n.Source={}));let i;(function(l){l.Active="active",l.Paused="paused",l.Unknown="unknown"})(i=n.StreamState||(n.StreamState={}));function s(l){switch(l){case e.Audio:return Ge.AUDIO;case e.Video:return Ge.VIDEO;default:return Ge.DATA}}n.kindToProto=s;function r(l){switch(l){case Ge.AUDIO:return e.Audio;case Ge.VIDEO:return e.Video;default:return e.Unknown}}n.kindFromProto=r;function a(l){switch(l){case t.Camera:return Re.CAMERA;case t.Microphone:return Re.MICROPHONE;case t.ScreenShare:return Re.SCREEN_SHARE;case t.ScreenShareAudio:return Re.SCREEN_SHARE_AUDIO;default:return Re.UNKNOWN}}n.sourceToProto=a;function o(l){switch(l){case Re.CAMERA:return t.Camera;case Re.MICROPHONE:return t.Microphone;case Re.SCREEN_SHARE:return t.ScreenShare;case Re.SCREEN_SHARE_AUDIO:return t.ScreenShareAudio;default:return t.Unknown}}n.sourceFromProto=o;function c(l){switch(l){case Bn.ACTIVE:return i.Active;case Bn.PAUSED:return i.Paused;default:return i.Unknown}}n.streamStateFromProto=c})(E||(E={}));function Lo(n,e,t){var i;const{optionsWithoutProcessor:s,audioProcessor:r,videoProcessor:a}=Cs(n??{}),o=(i=sh(s))!==null&&i!==void 0?i:{};return o.audio===!0&&(o.audio={}),o.video===!0&&(o.video={}),o.audio&&(es(o.audio,e),r&&(o.audio.processor=r)),o.video&&(es(o.video,t),a&&(o.video.processor=a)),o}function es(n,e){return Object.keys(e).forEach(t=>{n[t]===void 0&&(n[t]=e[t])}),n}function nn(n){const e={};if(n.video)if(typeof n.video=="object"){const t={},i=t,s=n.video;Object.keys(s).forEach(r=>{switch(r){case"resolution":es(i,s.resolution);break;default:i[r]=s[r]}}),e.video=t}else e.video=n.video;else e.video=!1;return n.audio?typeof n.audio=="object"?e.audio=n.audio:e.audio=!0:e.audio=!1,e}function ah(n){return g(this,arguments,void 0,function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:200;return function*(){const i=Uo();if(i){const s=i.createAnalyser();s.fftSize=2048;const r=s.frequencyBinCount,a=new Uint8Array(r);i.createMediaStreamSource(new MediaStream([e.mediaStreamTrack])).connect(s),yield He(t),s.getByteTimeDomainData(a);const c=a.some(l=>l!==128&&l!==0);return i.close(),!c}return!1}()})}function Uo(){const n=typeof window<"u"&&(window.AudioContext||window.webkitAudioContext);if(n)return new n({latencyHint:"interactive"})}function Lr(n){return n===E.Source.Microphone?"audioinput":n===E.Source.Camera?"videoinput":void 0}function oh(n){var e,t;let i=(e=n.video)!==null&&e!==void 0?e:!0;return n.resolution&&n.resolution.width>0&&n.resolution.height>0&&(i=typeof i=="boolean"?{}:i,Rt()?i=Object.assign(Object.assign({},i),{width:{max:n.resolution.width},height:{max:n.resolution.height},frameRate:n.resolution.frameRate}):i=Object.assign(Object.assign({},i),{width:{ideal:n.resolution.width},height:{ideal:n.resolution.height},frameRate:n.resolution.frameRate})),{audio:(t=n.audio)!==null&&t!==void 0?t:!1,video:i,controller:n.controller,selfBrowserSurface:n.selfBrowserSurface,surfaceSwitching:n.surfaceSwitching,systemAudio:n.systemAudio,preferCurrentTab:n.preferCurrentTab}}function qi(n){return n.split("/")[1].toLowerCase()}function ch(n){const e=[];return n.forEach(t=>{t.track!==void 0&&e.push(new gs({cid:t.track.mediaStreamID,track:t.trackInfo}))}),e}function se(n){return n instanceof E?{trackID:n.sid,source:n.source,muted:n.isMuted,enabled:n.mediaStreamTrack.enabled,kind:n.kind,streamID:n.mediaStreamID,streamTrackID:n.mediaStreamTrack.id}:{trackID:n.trackSid,enabled:n.isEnabled,muted:n.isMuted,trackInfo:Object.assign({mimeType:n.mimeType,name:n.trackName,encrypted:n.isEncrypted,kind:n.kind,source:n.source},n.track?se(n.track):{})}}function lh(){return typeof RTCRtpReceiver<"u"&&"getSynchronizationSources"in RTCRtpReceiver}function dh(n,e){var t;n===void 0&&(n={}),e===void 0&&(e={});const i=[...Object.keys(e),...Object.keys(n)],s={};for(const r of i)n[r]!==e[r]&&(s[r]=(t=e[r])!==null&&t!==void 0?t:"");return s}function Cs(n){const e=Object.assign({},n);let t,i;return typeof e.audio=="object"&&e.audio.processor&&(t=e.audio.processor,e.audio=Object.assign(Object.assign({},e.audio),{processor:void 0})),typeof e.video=="object"&&e.video.processor&&(i=e.video.processor,e.video=Object.assign(Object.assign({},e.video),{processor:void 0})),{audioProcessor:t,videoProcessor:i,optionsWithoutProcessor:e}}const uh="|",Ur="https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension";function hh(n){const e=n.split(uh);return e.length>1?[e[0],n.substr(e[0].length+1)]:[n,""]}function He(n){return g(this,void 0,void 0,function*(){return new Promise(e=>Ee.setTimeout(e,n))})}function ts(){return"addTransceiver"in RTCPeerConnection.prototype}function is(){return"addTrack"in RTCPeerConnection.prototype}function fh(){if(!("getCapabilities"in RTCRtpSender)||Rt())return!1;const n=RTCRtpSender.getCapabilities("video");let e=!1;if(n){for(const t of n.codecs)if(t.mimeType==="video/AV1"){e=!0;break}}return e}function ph(){if(!("getCapabilities"in RTCRtpSender)||Wt())return!1;if(Rt()){const t=ut();if(t!=null&&t.version&&zt(t.version,"16")<0)return!1}const n=RTCRtpSender.getCapabilities("video");let e=!1;if(n){for(const t of n.codecs)if(t.mimeType==="video/VP9"){e=!0;break}}return e}function di(n){return n==="av1"||n==="vp9"}function ns(n){return document?(n||(n=document.createElement("audio")),"setSinkId"in n):!1}function mh(){return typeof RTCPeerConnection>"u"?!1:ts()||is()}function Wt(){var n;return((n=ut())===null||n===void 0?void 0:n.name)==="Firefox"}function Rt(){var n;return((n=ut())===null||n===void 0?void 0:n.name)==="Safari"}function gh(){const n=ut();return(n==null?void 0:n.name)==="Safari"&&n.version.startsWith("17.")}function Fo(){var n,e;return Le()?(e=(n=navigator.userAgentData)===null||n===void 0?void 0:n.mobile)!==null&&e!==void 0?e:/Tablet|iPad|Mobile|Android|BlackBerry/.test(navigator.userAgent):!1}function vh(){const n=ut(),e="17.2";if(n)return n.name!=="Safari"&&n.os!=="iOS"||n.os==="iOS"&&n.osVersion&&zt(e,n.osVersion)>=0?!0:n.name==="Safari"&&zt(e,n.version)>=0}function Le(){return typeof document<"u"}function ht(){return navigator.product=="ReactNative"}function ss(n){return n.hostname.endsWith(".livekit.cloud")||n.hostname.endsWith(".livekit.run")}function jo(){if(global&&global.LiveKitReactNativeGlobal)return global.LiveKitReactNativeGlobal}function Bo(){if(!ht())return;let n=jo();if(n)return n.platform}function Fr(){if(Le())return window.devicePixelRatio;if(ht()){let n=jo();if(n)return n.devicePixelRatio}return 1}function zt(n,e){const t=n.split("."),i=e.split("."),s=Math.min(t.length,i.length);for(let r=0;r<s;++r){const a=parseInt(t[r],10),o=parseInt(i[r],10);if(a>o)return 1;if(a<o)return-1;if(r===s-1&&a===o)return 0}return n===""&&e!==""?-1:e===""?1:t.length==i.length?0:t.length<i.length?-1:1}function bh(n){for(const e of n)e.target.handleResize(e)}function yh(n){for(const e of n)e.target.handleVisibilityChanged(e)}let wn=null;const jr=()=>(wn||(wn=new ResizeObserver(bh)),wn);let Rn=null;const Br=()=>(Rn||(Rn=new IntersectionObserver(yh,{root:null,rootMargin:"0px"})),Rn);function kh(){var n;const e=new eu({sdk:Ka.JS,protocol:eh,version:Zu});return ht()&&(e.os=(n=Bo())!==null&&n!==void 0?n:""),e}function Vr(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:16,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:16,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const s=document.createElement("canvas");s.width=n,s.height=e;const r=s.getContext("2d");r==null||r.fillRect(0,0,s.width,s.height),i&&r&&(r.beginPath(),r.arc(n/2,e/2,50,0,Math.PI*2,!0),r.closePath(),r.fillStyle="grey",r.fill());const a=s.captureStream(),[o]=a.getTracks();if(!o)throw Error("Could not get empty media stream video track");return o.enabled=t,o}let ii;function In(){if(!ii){const n=new AudioContext,e=n.createOscillator(),t=n.createGain();t.gain.setValueAtTime(0,0);const i=n.createMediaStreamDestination();if(e.connect(t),t.connect(i),e.start(),[ii]=i.stream.getAudioTracks(),!ii)throw Error("Could not get empty media stream audio track");ii.enabled=!1}return ii.clone()}class Vo{constructor(e,t){this.onFinally=t,this.promise=new Promise((i,s)=>g(this,void 0,void 0,function*(){this.resolve=i,this.reject=s,e&&(yield e(i,s))})).finally(()=>{var i;return(i=this.onFinally)===null||i===void 0?void 0:i.call(this)})}}function Th(n){return ih.includes(n)}function lt(n){if(typeof n=="string"||typeof n=="number")return n;if(Array.isArray(n))return n[0];if(n.exact)return Array.isArray(n.exact)?n.exact[0]:n.exact;if(n.ideal)return Array.isArray(n.ideal)?n.ideal[0]:n.ideal;throw Error("could not unwrap constraint")}function Ch(n){return n.startsWith("http")?n.replace(/^(http)/,"ws"):n}function qr(n){return n.startsWith("ws")?n.replace(/^(ws)/,"http"):n}function Sh(n,e){return n.segments.map(t=>{let{id:i,text:s,language:r,startTime:a,endTime:o,final:c}=t;var l;const d=(l=e.get(i))!==null&&l!==void 0?l:Date.now(),f=Date.now();return c?e.delete(i):e.set(i,d),{id:i,text:s,startTime:Number.parseInt(a.toString()),endTime:Number.parseInt(o.toString()),final:c,language:r,firstReceivedTime:d,lastReceivedTime:f}})}function Ph(n){const{id:e,timestamp:t,message:i,editTimestamp:s}=n;return{id:e,timestamp:Number.parseInt(t.toString()),editTimestamp:s?Number.parseInt(s.toString()):void 0,message:i}}function Kr(n){switch(n.reason){case te.LeaveRequest:return n.context;case te.Cancelled:return ze.CLIENT_INITIATED;case te.NotAllowed:return ze.USER_REJECTED;case te.ServerUnreachable:return ze.JOIN_FAILURE;default:return ze.UNKNOWN_REASON}}const On="default";class Pe{static getInstance(){return this.instance===void 0&&(this.instance=new Pe),this.instance}getDevices(e){return g(this,arguments,void 0,function(t){var i=this;let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){var r;if(((r=Pe.userMediaPromiseMap)===null||r===void 0?void 0:r.size)>0){Z.debug("awaiting getUserMedia promise");try{t?yield Pe.userMediaPromiseMap.get(t):yield Promise.all(Pe.userMediaPromiseMap.values())}catch{Z.warn("error waiting for media permissons")}}let a=yield navigator.mediaDevices.enumerateDevices();if(s&&!(Rt()&&i.hasDeviceInUse(t))&&(a.filter(c=>c.kind===t).length===0||a.some(c=>{const l=c.label==="",d=t?c.kind===t:!0;return l&&d}))){const c={video:t!=="audioinput"&&t!=="audiooutput",audio:t!=="videoinput"},l=yield navigator.mediaDevices.getUserMedia(c);a=yield navigator.mediaDevices.enumerateDevices(),l.getTracks().forEach(d=>{d.stop()})}return t&&(a=a.filter(o=>o.kind===t)),a}()})}normalizeDeviceId(e,t,i){return g(this,void 0,void 0,function*(){if(t!==On)return t;const s=yield this.getDevices(e),r=s.find(o=>o.deviceId===On);if(!r){Z.warn("could not reliably determine default device");return}const a=s.find(o=>o.deviceId!==On&&o.groupId===(i??r.groupId));if(!a){Z.warn("could not reliably determine default device");return}return a==null?void 0:a.deviceId})}hasDeviceInUse(e){return e?Pe.userMediaPromiseMap.has(e):Pe.userMediaPromiseMap.size>0}}Pe.mediaDeviceKinds=["audioinput","audiooutput","videoinput"];Pe.userMediaPromiseMap=new Map;const Eh=1e3;class qt extends E{get sender(){return this._sender}set sender(e){this._sender=e}get constraints(){return this._constraints}constructor(e,t,i){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,r=arguments.length>4?arguments[4]:void 0;super(e,t,r),this.manuallyStopped=!1,this._isUpstreamPaused=!1,this.handleTrackMuteEvent=()=>this.debouncedTrackMuteHandler().catch(()=>this.log.debug("track mute bounce got cancelled by an unmute event",this.logContext)),this.debouncedTrackMuteHandler=ks(()=>g(this,void 0,void 0,function*(){yield this.pauseUpstream()}),5e3),this.handleTrackUnmuteEvent=()=>g(this,void 0,void 0,function*(){this.debouncedTrackMuteHandler.cancel("unmute"),yield this.resumeUpstream()}),this.handleEnded=()=>{this.isInBackground&&(this.reacquireTrack=!0),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),this.emit(N.Ended,this)},this.reacquireTrack=!1,this.providedByUser=s,this.muteLock=new Ne,this.pauseUpstreamLock=new Ne,this.processorLock=new Ne,this.restartLock=new Ne,this.setMediaStreamTrack(e,!0),this._constraints=e.getConstraints(),i&&(this._constraints=i)}get id(){return this._mediaStreamTrack.id}get dimensions(){if(this.kind!==E.Kind.Video)return;const{width:e,height:t}=this._mediaStreamTrack.getSettings();if(e&&t)return{width:e,height:t}}get isUpstreamPaused(){return this._isUpstreamPaused}get isUserProvided(){return this.providedByUser}get mediaStreamTrack(){var e,t;return(t=(e=this.processor)===null||e===void 0?void 0:e.processedTrack)!==null&&t!==void 0?t:this._mediaStreamTrack}getSourceTrackSettings(){return this._mediaStreamTrack.getSettings()}setMediaStreamTrack(e,t){return g(this,void 0,void 0,function*(){if(e===this._mediaStreamTrack&&!t)return;this._mediaStreamTrack&&(this.attachedElements.forEach(s=>{Vt(this._mediaStreamTrack,s)}),this.debouncedTrackMuteHandler.cancel("new-track"),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent)),this.mediaStream=new MediaStream([e]),e&&(e.addEventListener("ended",this.handleEnded),e.addEventListener("mute",this.handleTrackMuteEvent),e.addEventListener("unmute",this.handleTrackUnmuteEvent),this._constraints=e.getConstraints());let i;if(this.processor&&e){const s=yield this.processorLock.lock();try{if(this.log.debug("restarting processor",this.logContext),this.kind==="unknown")throw TypeError("cannot set processor on track of unknown kind");this.processorElement&&(Ft(e,this.processorElement),this.processorElement.muted=!0),yield this.processor.restart({track:e,kind:this.kind,element:this.processorElement}),i=this.processor.processedTrack}finally{s()}}this.sender&&(yield this.sender.replaceTrack(i??e)),!this.providedByUser&&this._mediaStreamTrack!==e&&this._mediaStreamTrack.stop(),this._mediaStreamTrack=e,e&&(this._mediaStreamTrack.enabled=!this.isMuted,yield this.resumeUpstream(),this.attachedElements.forEach(s=>{Ft(i??e,s)}))})}waitForDimensions(){return g(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Eh;return function*(){var i;if(e.kind===E.Kind.Audio)throw new Error("cannot get dimensions for audio tracks");((i=ut())===null||i===void 0?void 0:i.os)==="iOS"&&(yield He(10));const s=Date.now();for(;Date.now()-s<t;){const r=e.dimensions;if(r)return r;yield He(50)}throw new it("unable to get track dimensions after timeout")}()})}getDeviceId(){return g(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){if(e.source===E.Source.ScreenShare)return;const{deviceId:i,groupId:s}=e._mediaStreamTrack.getSettings(),r=e.kind===E.Kind.Audio?"audioinput":"videoinput";return t?Pe.getInstance().normalizeDeviceId(r,i,s):i}()})}mute(){return g(this,void 0,void 0,function*(){return this.setTrackMuted(!0),this})}unmute(){return g(this,void 0,void 0,function*(){return this.setTrackMuted(!1),this})}replaceTrack(e,t){return g(this,void 0,void 0,function*(){if(!this.sender)throw new it("unable to replace an unpublished track");let i,s;return typeof t=="boolean"?i=t:t!==void 0&&(i=t.userProvidedTrack,s=t.stopProcessor),this.providedByUser=i??!0,this.log.debug("replace MediaStreamTrack",this.logContext),yield this.setMediaStreamTrack(e),s&&this.processor&&(yield this.stopProcessor()),this})}restart(e){return g(this,void 0,void 0,function*(){this.manuallyStopped=!1;const t=yield this.restartLock.lock();try{e||(e=this._constraints),this.log.debug("restarting track with constraints",Object.assign(Object.assign({},this.logContext),{constraints:e}));const i={audio:!1,video:!1};this.kind===E.Kind.Video?i.video=e:i.audio=e,this.attachedElements.forEach(a=>{Vt(this.mediaStreamTrack,a)}),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.stop();const r=(yield navigator.mediaDevices.getUserMedia(i)).getTracks()[0];return r.addEventListener("ended",this.handleEnded),this.log.debug("re-acquired MediaStreamTrack",this.logContext),yield this.setMediaStreamTrack(r),this._constraints=e,this.emit(N.Restarted,this),this.manuallyStopped&&(this.log.warn("track was stopped during a restart, stopping restarted track",this.logContext),this.stop()),this}finally{t()}})}setTrackMuted(e){this.log.debug("setting ".concat(this.kind," track ").concat(e?"muted":"unmuted"),this.logContext),!(this.isMuted===e&&this._mediaStreamTrack.enabled!==e)&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?N.Muted:N.Unmuted,this))}get needsReAcquisition(){return this._mediaStreamTrack.readyState!=="live"||this._mediaStreamTrack.muted||!this._mediaStreamTrack.enabled||this.reacquireTrack}handleAppVisibilityChanged(){const e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return g(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),Fo()&&(this.log.debug("visibility changed, is in Background: ".concat(this.isInBackground),this.logContext),!this.isInBackground&&this.needsReAcquisition&&!this.isUserProvided&&!this.isMuted&&(this.log.debug("track needs to be reacquired, restarting ".concat(this.source),this.logContext),yield this.restart(),this.reacquireTrack=!1))})}stop(){var e;this.manuallyStopped=!0,super.stop(),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),(e=this.processor)===null||e===void 0||e.destroy(),this.processor=void 0}pauseUpstream(){return g(this,void 0,void 0,function*(){const e=yield this.pauseUpstreamLock.lock();try{if(this._isUpstreamPaused===!0)return;if(!this.sender){this.log.warn("unable to pause upstream for an unpublished track",this.logContext);return}this._isUpstreamPaused=!0,this.emit(N.UpstreamPaused,this);const t=ut();if((t==null?void 0:t.name)==="Safari"&&zt(t.version,"12.0")<0)throw new ys("pauseUpstream is not supported on Safari < 12.");yield this.sender.replaceTrack(null)}finally{e()}})}resumeUpstream(){return g(this,void 0,void 0,function*(){const e=yield this.pauseUpstreamLock.lock();try{if(this._isUpstreamPaused===!1)return;if(!this.sender){this.log.warn("unable to resume upstream for an unpublished track",this.logContext);return}this._isUpstreamPaused=!1,this.emit(N.UpstreamResumed,this),yield this.sender.replaceTrack(this.mediaStreamTrack)}finally{e()}})}getRTCStatsReport(){return g(this,void 0,void 0,function*(){var e;return!((e=this.sender)===null||e===void 0)&&e.getStats?yield this.sender.getStats():void 0})}setProcessor(e){return g(this,arguments,void 0,function(t){var i=this;let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){var r;const a=yield i.processorLock.lock();try{i.log.debug("setting up processor",i.logContext);const o=document.createElement(i.kind),c={kind:i.kind,track:i._mediaStreamTrack,element:o,audioContext:i.audioContext};if(yield t.init(c),i.log.debug("processor initialized",i.logContext),i.processor&&(yield i.stopProcessor()),i.kind==="unknown")throw TypeError("cannot set processor on track of unknown kind");if(Ft(i._mediaStreamTrack,o),o.muted=!0,o.play().catch(l=>i.log.error("failed to play processor element",Object.assign(Object.assign({},i.logContext),{error:l}))),i.processor=t,i.processorElement=o,i.processor.processedTrack){for(const l of i.attachedElements)l!==i.processorElement&&s&&(Vt(i._mediaStreamTrack,l),Ft(i.processor.processedTrack,l));yield(r=i.sender)===null||r===void 0?void 0:r.replaceTrack(i.processor.processedTrack)}i.emit(N.TrackProcessorUpdate,i.processor)}finally{a()}}()})}getProcessor(){return this.processor}stopProcessor(){return g(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){var i,s;e.processor&&(e.log.debug("stopping processor",e.logContext),(i=e.processor.processedTrack)===null||i===void 0||i.stop(),yield e.processor.destroy(),e.processor=void 0,t||((s=e.processorElement)===null||s===void 0||s.remove(),e.processorElement=void 0),yield e._mediaStreamTrack.applyConstraints(e._constraints),yield e.setMediaStreamTrack(e._mediaStreamTrack,!0),e.emit(N.TrackProcessorUpdate))}()})}}class _h extends nt.EventEmitter{constructor(e){super(),this.onWorkerMessage=t=>{var i,s;const{kind:r,data:a}=t.data;switch(r){case"error":Z.error(a.error.message),this.emit(kt.EncryptionError,a.error);break;case"initAck":a.enabled&&this.keyProvider.getKeys().forEach(o=>{this.postKey(o)});break;case"enable":if(a.enabled&&this.keyProvider.getKeys().forEach(o=>{this.postKey(o)}),this.encryptionEnabled!==a.enabled&&a.participantIdentity===((i=this.room)===null||i===void 0?void 0:i.localParticipant.identity))this.emit(kt.ParticipantEncryptionStatusChanged,a.enabled,this.room.localParticipant),this.encryptionEnabled=a.enabled;else if(a.participantIdentity){const o=(s=this.room)===null||s===void 0?void 0:s.getParticipantByIdentity(a.participantIdentity);if(!o)throw TypeError("couldn't set encryption status, participant not found".concat(a.participantIdentity));this.emit(kt.ParticipantEncryptionStatusChanged,a.enabled,o)}break;case"ratchetKey":this.keyProvider.emit(Tt.KeyRatcheted,a.material,a.keyIndex);break}},this.onWorkerError=t=>{Z.error("e2ee worker encountered an error:",{error:t.error}),this.emit(kt.EncryptionError,t.error)},this.keyProvider=e.keyProvider,this.worker=e.worker,this.encryptionEnabled=!1}setup(e){if(!Hu())throw new ys("tried to setup end-to-end encryption on an unsupported browser");if(Z.info("setting up e2ee"),e!==this.room){this.room=e,this.setupEventListeners(e,this.keyProvider);const t={kind:"init",data:{keyProviderOptions:this.keyProvider.getOptions(),loglevel:Mu.getLevel()}};this.worker&&(Z.info("initializing worker",{worker:this.worker}),this.worker.onmessage=this.onWorkerMessage,this.worker.onerror=this.onWorkerError,this.worker.postMessage(t))}}setParticipantCryptorEnabled(e,t){Z.debug("set e2ee to ".concat(e," for participant ").concat(t)),this.postEnable(e,t)}setSifTrailer(e){!e||e.length===0?Z.warn("ignoring server sent trailer as it's empty"):this.postSifTrailer(e)}setupEngine(e){e.on(j.RTPVideoMapUpdate,t=>{this.postRTPMap(t)})}setupEventListeners(e,t){e.on(D.TrackPublished,(i,s)=>this.setParticipantCryptorEnabled(i.trackInfo.encryption!==Ae.NONE,s.identity)),e.on(D.ConnectionStateChanged,i=>{i===ie.Connected&&e.remoteParticipants.forEach(s=>{s.trackPublications.forEach(r=>{this.setParticipantCryptorEnabled(r.trackInfo.encryption!==Ae.NONE,s.identity)})})}).on(D.TrackUnsubscribed,(i,s,r)=>{var a;const o={kind:"removeTransform",data:{participantIdentity:r.identity,trackId:i.mediaStreamID}};(a=this.worker)===null||a===void 0||a.postMessage(o)}).on(D.TrackSubscribed,(i,s,r)=>{this.setupE2EEReceiver(i,r.identity,s.trackInfo)}).on(D.SignalConnected,()=>{if(!this.room)throw new TypeError("expected room to be present on signal connect");t.getKeys().forEach(i=>{this.postKey(i)}),this.setParticipantCryptorEnabled(this.room.localParticipant.isE2EEEnabled,this.room.localParticipant.identity)}),e.localParticipant.on(L.LocalTrackPublished,i=>g(this,void 0,void 0,function*(){this.setupE2EESender(i.track,i.track.sender)})),t.on(Tt.SetKey,i=>this.postKey(i)).on(Tt.RatchetRequest,(i,s)=>this.postRatchetRequest(i,s))}postRatchetRequest(e,t){if(!this.worker)throw Error("could not ratchet key, worker is missing");const i={kind:"ratchetRequest",data:{participantIdentity:e,keyIndex:t}};this.worker.postMessage(i)}postKey(e){let{key:t,participantIdentity:i,keyIndex:s}=e;var r;if(!this.worker)throw Error("could not set key, worker is missing");const a={kind:"setKey",data:{participantIdentity:i,isPublisher:i===((r=this.room)===null||r===void 0?void 0:r.localParticipant.identity),key:t,keyIndex:s}};this.worker.postMessage(a)}postEnable(e,t){if(this.worker){const i={kind:"enable",data:{enabled:e,participantIdentity:t}};this.worker.postMessage(i)}else throw new ReferenceError("failed to enable e2ee, worker is not ready")}postRTPMap(e){var t;if(!this.worker)throw TypeError("could not post rtp map, worker is missing");if(!(!((t=this.room)===null||t===void 0)&&t.localParticipant.identity))throw TypeError("could not post rtp map, local participant identity is missing");const i={kind:"setRTPMap",data:{map:e,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(i)}postSifTrailer(e){if(!this.worker)throw Error("could not post SIF trailer, worker is missing");const t={kind:"setSifTrailer",data:{trailer:e}};this.worker.postMessage(t)}setupE2EEReceiver(e,t,i){if(e.receiver){if(!(i!=null&&i.mimeType)||i.mimeType==="")throw new TypeError("MimeType missing from trackInfo, cannot set up E2EE cryptor");this.handleReceiver(e.receiver,e.mediaStreamID,t,e.kind==="video"?qi(i.mimeType):void 0)}}setupE2EESender(e,t){if(!(e instanceof qt)||!t){t||Z.warn("early return because sender is not ready");return}this.handleSender(t,e.mediaStreamID,void 0)}handleReceiver(e,t,i,s){return g(this,void 0,void 0,function*(){if(this.worker){if(Qn()){const r={kind:"decode",participantIdentity:i,trackId:t,codec:s};e.transform=new RTCRtpScriptTransform(this.worker,r)}else{if(_i in e&&s){const c={kind:"updateCodec",data:{trackId:t,codec:s,participantIdentity:i}};this.worker.postMessage(c);return}let r=e.writableStream,a=e.readableStream;if(!r||!a){const c=e.createEncodedStreams();e.writableStream=c.writable,r=c.writable,e.readableStream=c.readable,a=c.readable}const o={kind:"decode",data:{readableStream:a,writableStream:r,trackId:t,codec:s,participantIdentity:i}};this.worker.postMessage(o,[a,r])}e[_i]=!0}})}handleSender(e,t,i){var s;if(!(_i in e||!this.worker)){if(!(!((s=this.room)===null||s===void 0)&&s.localParticipant.identity)||this.room.localParticipant.identity==="")throw TypeError("local identity needs to be known in order to set up encrypted sender");if(Qn()){Z.info("initialize script transform");const r={kind:"encode",participantIdentity:this.room.localParticipant.identity,trackId:t,codec:i};e.transform=new RTCRtpScriptTransform(this.worker,r)}else{Z.info("initialize encoded streams");const r=e.createEncodedStreams(),a={kind:"encode",data:{readableStream:r.readable,writableStream:r.writable,codec:i,trackId:t,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(a,[r.readable,r.writable])}e[_i]=!0}}}var ui;(function(n){n[n.WAITING=0]="WAITING",n[n.RUNNING=1]="RUNNING",n[n.COMPLETED=2]="COMPLETED"})(ui||(ui={}));class wh{constructor(){this.pendingTasks=new Map,this.taskMutex=new Ne,this.nextTaskIndex=0}run(e){return g(this,void 0,void 0,function*(){const t={id:this.nextTaskIndex++,enqueuedAt:Date.now(),status:ui.WAITING};this.pendingTasks.set(t.id,t);const i=yield this.taskMutex.lock();try{return t.executedAt=Date.now(),t.status=ui.RUNNING,yield e()}finally{t.status=ui.COMPLETED,this.pendingTasks.delete(t.id),i()}})}flush(){return g(this,void 0,void 0,function*(){return this.run(()=>g(this,void 0,void 0,function*(){}))})}snapshot(){return Array.from(this.pendingTasks.values())}}const Rh=["syncState","trickle","offer","answer","simulate","leave"];function Ih(n){const e=Rh.indexOf(n.case)>=0;return Z.trace("request allowed to bypass queue:",{canPass:e,req:n}),e}var ce;(function(n){n[n.CONNECTING=0]="CONNECTING",n[n.CONNECTED=1]="CONNECTED",n[n.RECONNECTING=2]="RECONNECTING",n[n.DISCONNECTING=3]="DISCONNECTING",n[n.DISCONNECTED=4]="DISCONNECTED"})(ce||(ce={}));class Ss{get currentState(){return this.state}get isDisconnected(){return this.state===ce.DISCONNECTING||this.state===ce.DISCONNECTED}get isEstablishingConnection(){return this.state===ce.CONNECTING||this.state===ce.RECONNECTING}getNextRequestId(){return this._requestId+=1,this._requestId}constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var i;this.rtt=0,this.state=ce.DISCONNECTED,this.log=Z,this._requestId=0,this.resetCallbacks=()=>{this.onAnswer=void 0,this.onLeave=void 0,this.onLocalTrackPublished=void 0,this.onLocalTrackUnpublished=void 0,this.onNegotiateRequested=void 0,this.onOffer=void 0,this.onRemoteMuteChanged=void 0,this.onSubscribedQualityUpdate=void 0,this.onTokenRefresh=void 0,this.onTrickle=void 0,this.onClose=void 0},this.log=dt((i=t.loggerName)!==null&&i!==void 0?i:Je.Signal),this.loggerContextCb=t.loggerContextCb,this.useJSON=e,this.requestQueue=new wh,this.queuedRequests=[],this.closingLock=new Ne,this.connectionLock=new Ne,this.state=ce.DISCONNECTED}get logContext(){var e,t;return(t=(e=this.loggerContextCb)===null||e===void 0?void 0:e.call(this))!==null&&t!==void 0?t:{}}join(e,t,i,s){return g(this,void 0,void 0,function*(){return this.state=ce.CONNECTING,this.options=i,yield this.connect(e,t,i,s)})}reconnect(e,t,i,s){return g(this,void 0,void 0,function*(){if(!this.options){this.log.warn("attempted to reconnect without signal options being set, ignoring",this.logContext);return}return this.state=ce.RECONNECTING,this.clearPingInterval(),yield this.connect(e,t,Object.assign(Object.assign({},this.options),{reconnect:!0,sid:i,reconnectReason:s}))})}connect(e,t,i,s){this.connectOptions=i,e=Ch(e),e=e.replace(/\/$/,""),e+="/rtc";const r=kh(),a=Oh(t,r,i);return new Promise((o,c)=>g(this,void 0,void 0,function*(){const l=yield this.connectionLock.lock();try{const d=()=>g(this,void 0,void 0,function*(){this.close(),clearTimeout(f),c(new re("room connection has been cancelled (signal)",te.Cancelled))}),f=setTimeout(()=>{this.close(),c(new re("room connection has timed out (signal)",te.ServerUnreachable))},i.websocketTimeout);s!=null&&s.aborted&&d(),s==null||s.addEventListener("abort",d),this.log.debug("connecting to ".concat(e+a),this.logContext),this.ws&&(yield this.close(!1)),this.ws=new WebSocket(e+a),this.ws.binaryType="arraybuffer",this.ws.onopen=()=>{clearTimeout(f)},this.ws.onerror=p=>g(this,void 0,void 0,function*(){if(this.state!==ce.CONNECTED){this.state=ce.DISCONNECTED,clearTimeout(f);try{const m=yield fetch("http".concat(e.substring(2),"/validate").concat(a));if(m.status.toFixed(0).startsWith("4")){const y=yield m.text();c(new re(y,te.NotAllowed,m.status))}else c(new re("Internal error",te.InternalError,m.status))}catch{c(new re("server was not reachable",te.ServerUnreachable))}return}this.handleWSError(p)}),this.ws.onmessage=p=>g(this,void 0,void 0,function*(){var m,y,C;let _;if(typeof p.data=="string"){const b=JSON.parse(p.data);_=Tr.fromJson(b,{ignoreUnknownFields:!0})}else if(p.data instanceof ArrayBuffer)_=Tr.fromBinary(new Uint8Array(p.data));else{this.log.error("could not decode websocket message: ".concat(typeof p.data),this.logContext);return}if(this.state!==ce.CONNECTED){let b=!1;if(((m=_.message)===null||m===void 0?void 0:m.case)==="join"?(this.state=ce.CONNECTED,s==null||s.removeEventListener("abort",d),this.pingTimeoutDuration=_.message.value.pingTimeout,this.pingIntervalDuration=_.message.value.pingInterval,this.pingTimeoutDuration&&this.pingTimeoutDuration>0&&(this.log.debug("ping config",Object.assign(Object.assign({},this.logContext),{timeout:this.pingTimeoutDuration,interval:this.pingIntervalDuration})),this.startPingInterval()),o(_.message.value)):this.state===ce.RECONNECTING&&_.message.case!=="leave"?(this.state=ce.CONNECTED,s==null||s.removeEventListener("abort",d),this.startPingInterval(),((y=_.message)===null||y===void 0?void 0:y.case)==="reconnect"?o(_.message.value):(this.log.debug("declaring signal reconnected without reconnect response received",this.logContext),o(void 0),b=!0)):this.isEstablishingConnection&&_.message.case==="leave"?c(new re("Received leave request while trying to (re)connect",te.LeaveRequest,void 0,_.message.value.reason)):i.reconnect||c(new re("did not receive join response, got ".concat((C=_.message)===null||C===void 0?void 0:C.case," instead"),te.InternalError)),!b)return}this.signalLatency&&(yield He(this.signalLatency)),this.handleSignalResponse(_)}),this.ws.onclose=p=>{this.isEstablishingConnection&&c(new re("Websocket got closed during a (re)connection attempt",te.InternalError)),this.log.warn("websocket closed",Object.assign(Object.assign({},this.logContext),{reason:p.reason,code:p.code,wasClean:p.wasClean,state:this.state})),this.handleOnClose(p.reason)}}finally{l()}}))}close(){return g(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){const i=yield e.closingLock.lock();try{if(e.clearPingInterval(),t&&(e.state=ce.DISCONNECTING),e.ws){e.ws.onmessage=null,e.ws.onopen=null,e.ws.onclose=null;const s=new Promise(r=>{e.ws?e.ws.onclose=()=>{r()}:r()});e.ws.readyState<e.ws.CLOSING&&(e.ws.close(),yield Promise.race([s,He(250)])),e.ws=void 0}}finally{t&&(e.state=ce.DISCONNECTED),i()}}()})}sendOffer(e){this.log.debug("sending offer",Object.assign(Object.assign({},this.logContext),{offerSdp:e.sdp})),this.sendRequest({case:"offer",value:Ji(e)})}sendAnswer(e){return this.log.debug("sending answer",Object.assign(Object.assign({},this.logContext),{answerSdp:e.sdp})),this.sendRequest({case:"answer",value:Ji(e)})}sendIceCandidate(e,t){return this.log.trace("sending ice candidate",Object.assign(Object.assign({},this.logContext),{candidate:e})),this.sendRequest({case:"trickle",value:new ps({candidateInit:JSON.stringify(e),target:t})})}sendMuteTrack(e,t){return this.sendRequest({case:"mute",value:new ms({sid:e,muted:t})})}sendAddTrack(e){return this.sendRequest({case:"addTrack",value:e})}sendUpdateLocalMetadata(e,t){return g(this,arguments,void 0,function(i,s){var r=this;let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return function*(){const o=r.getNextRequestId();return yield r.sendRequest({case:"updateMetadata",value:new $a({requestId:o,metadata:i,name:s,attributes:a})}),o}()})}sendUpdateTrackSettings(e){this.sendRequest({case:"trackSetting",value:e})}sendUpdateSubscription(e){return this.sendRequest({case:"subscription",value:e})}sendSyncState(e){return this.sendRequest({case:"syncState",value:e})}sendUpdateVideoLayers(e,t){return this.sendRequest({case:"updateLayers",value:new Ja({trackSid:e,layers:t})})}sendUpdateSubscriptionPermissions(e,t){return this.sendRequest({case:"subscriptionPermission",value:new Xa({allParticipants:e,trackPermissions:t})})}sendSimulateScenario(e){return this.sendRequest({case:"simulate",value:e})}sendPing(){return Promise.all([this.sendRequest({case:"ping",value:de.parse(Date.now())}),this.sendRequest({case:"pingReq",value:new to({timestamp:de.parse(Date.now()),rtt:de.parse(this.rtt)})})])}sendUpdateLocalAudioTrack(e,t){return this.sendRequest({case:"updateAudioTrack",value:new Ha({trackSid:e,features:t})})}sendLeave(){return this.sendRequest({case:"leave",value:new en({reason:ze.CLIENT_INITIATED,action:jt.DISCONNECT})})}sendRequest(e){return g(this,arguments,void 0,function(t){var i=this;let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return function*(){if(!s&&!Ih(t)&&i.state===ce.RECONNECTING){i.queuedRequests.push(()=>g(i,void 0,void 0,function*(){yield this.sendRequest(t,!0)}));return}if(s||(yield i.requestQueue.flush()),i.signalLatency&&(yield He(i.signalLatency)),!i.ws||i.ws.readyState!==i.ws.OPEN){i.log.error("cannot send signal request before connected, type: ".concat(t==null?void 0:t.case),i.logContext);return}const a=new cu({message:t});try{i.useJSON?i.ws.send(a.toJsonString()):i.ws.send(a.toBinary())}catch(o){i.log.error("error sending signal message",Object.assign(Object.assign({},i.logContext),{error:o}))}}()})}handleSignalResponse(e){var t,i;const s=e.message;if(s==null){this.log.debug("received unsupported message",this.logContext);return}let r=!1;if(s.case==="answer"){const a=Gr(s.value);this.onAnswer&&this.onAnswer(a)}else if(s.case==="offer"){const a=Gr(s.value);this.onOffer&&this.onOffer(a)}else if(s.case==="trickle"){const a=JSON.parse(s.value.candidateInit);this.onTrickle&&this.onTrickle(a,s.value.target)}else s.case==="update"?this.onParticipantUpdate&&this.onParticipantUpdate((t=s.value.participants)!==null&&t!==void 0?t:[]):s.case==="trackPublished"?this.onLocalTrackPublished&&this.onLocalTrackPublished(s.value):s.case==="speakersChanged"?this.onSpeakersChanged&&this.onSpeakersChanged((i=s.value.speakers)!==null&&i!==void 0?i:[]):s.case==="leave"?this.onLeave&&this.onLeave(s.value):s.case==="mute"?this.onRemoteMuteChanged&&this.onRemoteMuteChanged(s.value.sid,s.value.muted):s.case==="roomUpdate"?this.onRoomUpdate&&s.value.room&&this.onRoomUpdate(s.value.room):s.case==="connectionQuality"?this.onConnectionQuality&&this.onConnectionQuality(s.value):s.case==="streamStateUpdate"?this.onStreamStateUpdate&&this.onStreamStateUpdate(s.value):s.case==="subscribedQualityUpdate"?this.onSubscribedQualityUpdate&&this.onSubscribedQualityUpdate(s.value):s.case==="subscriptionPermissionUpdate"?this.onSubscriptionPermissionUpdate&&this.onSubscriptionPermissionUpdate(s.value):s.case==="refreshToken"?this.onTokenRefresh&&this.onTokenRefresh(s.value):s.case==="trackUnpublished"?this.onLocalTrackUnpublished&&this.onLocalTrackUnpublished(s.value):s.case==="subscriptionResponse"?this.onSubscriptionError&&this.onSubscriptionError(s.value):s.case==="pong"||(s.case==="pongResp"?(this.rtt=Date.now()-Number.parseInt(s.value.lastPingTimestamp.toString()),this.resetPingTimeout(),r=!0):s.case==="requestResponse"?this.onRequestResponse&&this.onRequestResponse(s.value):s.case==="trackSubscribed"?this.onLocalTrackSubscribed&&this.onLocalTrackSubscribed(s.value.trackSid):this.log.debug("unsupported message",Object.assign(Object.assign({},this.logContext),{msgCase:s.case})));r||this.resetPingTimeout()}setReconnected(){for(;this.queuedRequests.length>0;){const e=this.queuedRequests.shift();e&&this.requestQueue.run(e)}}handleOnClose(e){return g(this,void 0,void 0,function*(){if(this.state===ce.DISCONNECTED)return;const t=this.onClose;yield this.close(),this.log.debug("websocket connection closed: ".concat(e),Object.assign(Object.assign({},this.logContext),{reason:e})),t&&t(e)})}handleWSError(e){this.log.error("websocket error",Object.assign(Object.assign({},this.logContext),{error:e}))}resetPingTimeout(){if(this.clearPingTimeout(),!this.pingTimeoutDuration){this.log.warn("ping timeout duration not set",this.logContext);return}this.pingTimeout=Ee.setTimeout(()=>{this.log.warn("ping timeout triggered. last pong received at: ".concat(new Date(Date.now()-this.pingTimeoutDuration*1e3).toUTCString()),this.logContext),this.handleOnClose("ping timeout")},this.pingTimeoutDuration*1e3)}clearPingTimeout(){this.pingTimeout&&Ee.clearTimeout(this.pingTimeout)}startPingInterval(){if(this.clearPingInterval(),this.resetPingTimeout(),!this.pingIntervalDuration){this.log.warn("ping interval duration not set",this.logContext);return}this.log.debug("start ping interval",this.logContext),this.pingInterval=Ee.setInterval(()=>{this.sendPing()},this.pingIntervalDuration*1e3)}clearPingInterval(){this.log.debug("clearing ping interval",this.logContext),this.clearPingTimeout(),this.pingInterval&&Ee.clearInterval(this.pingInterval)}}function Gr(n){const e={type:"offer",sdp:n.sdp};switch(n.type){case"answer":case"offer":case"pranswer":case"rollback":e.type=n.type;break}return e}function Ji(n){return new wt({sdp:n.sdp,type:n.type})}function Oh(n,e,t){var i;const s=new URLSearchParams;return s.set("access_token",n),t.reconnect&&(s.set("reconnect","1"),t.sid&&s.set("sid",t.sid)),s.set("auto_subscribe",t.autoSubscribe?"1":"0"),s.set("sdk",ht()?"reactnative":"js"),s.set("version",e.version),s.set("protocol",e.protocol.toString()),e.deviceModel&&s.set("device_model",e.deviceModel),e.os&&s.set("os",e.os),e.osVersion&&s.set("os_version",e.osVersion),e.browser&&s.set("browser",e.browser),e.browserVersion&&s.set("browser_version",e.browserVersion),t.adaptiveStream&&s.set("adaptive_stream","1"),t.reconnectReason&&s.set("reconnect_reason",t.reconnectReason.toString()),!((i=navigator.connection)===null||i===void 0)&&i.type&&s.set("network",navigator.connection.type),"?".concat(s.toString())}var Xe={},Dn={},Mn={exports:{}},Wr;function qo(){if(Wr)return Mn.exports;Wr=1;var n=Mn.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 e.address!=null?"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 e.subtype!=null?"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 e.sessionConfig!=null?"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+=e.raddr!=null?" raddr %s rport %d":"%v%v",t+=e.tcptype!=null?" tcptype %s":"%v",e.generation!=null&&(t+=" generation %d"),t+=e["network-id"]!=null?" network-id %d":"%v",t+=e["network-cost"]!=null?" network-cost %d":"%v",t}},{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 e.attribute!=null&&(t+=" %s",e.value!=null&&(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 e.maxMessageSize!=null?"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"+(e.clksrcExt!=null?"=%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+=e.id!=null?"id=%s %s":"%v%s",t+=e.mediaClockValue!=null?"=%s":"",t+=e.rateNumerator!=null?" rate=%s":"",t+=e.rateDenominator!=null?"/%s":"",t}},{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"]}]};return Object.keys(n).forEach(function(e){var t=n[e];t.forEach(function(i){i.reg||(i.reg=/(.*)/),i.format||(i.format="%s")})}),Mn.exports}var zr;function Dh(){return zr||(zr=1,function(n){var e=function(o){return String(Number(o))===o?Number(o):o},t=function(o,c,l,d){if(d&&!l)c[d]=e(o[1]);else for(var f=0;f<l.length;f+=1)o[f+1]!=null&&(c[l[f]]=e(o[f+1]))},i=function(o,c,l){var d=o.name&&o.names;o.push&&!c[o.push]?c[o.push]=[]:d&&!c[o.name]&&(c[o.name]={});var f=o.push?{}:d?c[o.name]:c;t(l.match(o.reg),f,o.names,o.name),o.push&&c[o.push].push(f)},s=qo(),r=RegExp.prototype.test.bind(/^([a-z])=(.*)/);n.parse=function(o){var c={},l=[],d=c;return o.split(/(\r\n|\r|\n)/).filter(r).forEach(function(f){var p=f[0],m=f.slice(2);p==="m"&&(l.push({rtp:[],fmtp:[]}),d=l[l.length-1]);for(var y=0;y<(s[p]||[]).length;y+=1){var C=s[p][y];if(C.reg.test(m))return i(C,d,m)}}),c.media=l,c};var a=function(o,c){var l=c.split(/=(.+)/,2);return l.length===2?o[l[0]]=e(l[1]):l.length===1&&c.length>1&&(o[l[0]]=void 0),o};n.parseParams=function(o){return o.split(/;\s?/).reduce(a,{})},n.parseFmtpConfig=n.parseParams,n.parsePayloads=function(o){return o.toString().split(" ").map(Number)},n.parseRemoteCandidates=function(o){for(var c=[],l=o.split(" ").map(e),d=0;d<l.length;d+=3)c.push({component:l[d],ip:l[d+1],port:l[d+2]});return c},n.parseImageAttributes=function(o){return o.split(" ").map(function(c){return c.substring(1,c.length-1).split(",").reduce(a,{})})},n.parseSimulcastStreamList=function(o){return o.split(";").map(function(c){return c.split(",").map(function(l){var d,f=!1;return l[0]!=="~"?d=e(l):(d=e(l.substring(1,l.length)),f=!0),{scid:d,paused:f}})})}}(Dn)),Dn}var xn,Hr;function Mh(){if(Hr)return xn;Hr=1;var n=qo(),e=/%[sdv%]/g,t=function(a){var o=1,c=arguments,l=c.length;return a.replace(e,function(d){if(o>=l)return d;var f=c[o];switch(o+=1,d){case"%%":return"%";case"%s":return String(f);case"%d":return Number(f);case"%v":return""}})},i=function(a,o,c){var l=o.format instanceof Function?o.format(o.push?c:c[o.name]):o.format,d=[a+"="+l];if(o.names)for(var f=0;f<o.names.length;f+=1){var p=o.names[f];o.name?d.push(c[o.name][p]):d.push(c[o.names[f]])}else d.push(c[o.name]);return t.apply(null,d)},s=["v","o","s","i","u","e","p","c","b","t","r","z","a"],r=["i","c","b","a"];return xn=function(a,o){o=o||{},a.version==null&&(a.version=0),a.name==null&&(a.name=" "),a.media.forEach(function(f){f.payloads==null&&(f.payloads="")});var c=o.outerOrder||s,l=o.innerOrder||r,d=[];return c.forEach(function(f){n[f].forEach(function(p){p.name in a&&a[p.name]!=null?d.push(i(f,p,a)):p.push in a&&a[p.push]!=null&&a[p.push].forEach(function(m){d.push(i(f,p,m))})})}),a.media.forEach(function(f){d.push(i("m",n.m[0],f)),l.forEach(function(p){n[p].forEach(function(m){m.name in f&&f[m.name]!=null?d.push(i(p,m,f)):m.push in f&&f[m.push]!=null&&f[m.push].forEach(function(y){d.push(i(p,m,y))})})})}),d.join(`\r
|
||
`)+`\r
|
||
`},xn}var Jr;function xh(){if(Jr)return Xe;Jr=1;var n=Dh(),e=Mh();return Xe.write=e,Xe.parse=n.parse,Xe.parseParams=n.parseParams,Xe.parseFmtpConfig=n.parseFmtpConfig,Xe.parsePayloads=n.parsePayloads,Xe.parseRemoteCandidates=n.parseRemoteCandidates,Xe.parseImageAttributes=n.parseImageAttributes,Xe.parseSimulcastStreamList=n.parseSimulcastStreamList,Xe}var bt=xh();const Ah=.7,Nh=20,Kt={NegotiationStarted:"negotiationStarted",NegotiationComplete:"negotiationComplete",RTPVideoPayloadTypes:"rtpVideoPayloadTypes"};class $r extends nt.EventEmitter{get pc(){return this._pc||(this._pc=this.createPC()),this._pc}constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var i;super(),this.log=Z,this.ddExtID=0,this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate=!1,this.trackBitrates=[],this.remoteStereoMids=[],this.remoteNackMids=[],this.negotiate=ks(s=>g(this,void 0,void 0,function*(){this.emit(Kt.NegotiationStarted);try{yield this.createAndSendOffer()}catch(r){if(s)s(r);else throw r}}),Nh),this.close=()=>{this._pc&&(this._pc.close(),this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.ondatachannel=null,this._pc.onnegotiationneeded=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ondatachannel=null,this._pc.ontrack=null,this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc=null)},this.log=dt((i=t.loggerName)!==null&&i!==void 0?i:Je.PCTransport),this.loggerOptions=t,this.config=e,this._pc=this.createPC()}createPC(){const e=new RTCPeerConnection(this.config);return e.onicecandidate=t=>{var i;t.candidate&&((i=this.onIceCandidate)===null||i===void 0||i.call(this,t.candidate))},e.onicecandidateerror=t=>{var i;(i=this.onIceCandidateError)===null||i===void 0||i.call(this,t)},e.oniceconnectionstatechange=()=>{var t;(t=this.onIceConnectionStateChange)===null||t===void 0||t.call(this,e.iceConnectionState)},e.onsignalingstatechange=()=>{var t;(t=this.onSignalingStatechange)===null||t===void 0||t.call(this,e.signalingState)},e.onconnectionstatechange=()=>{var t;(t=this.onConnectionStateChange)===null||t===void 0||t.call(this,e.connectionState)},e.ondatachannel=t=>{var i;(i=this.onDataChannel)===null||i===void 0||i.call(this,t)},e.ontrack=t=>{var i;(i=this.onTrack)===null||i===void 0||i.call(this,t)},e}get logContext(){var e,t;return Object.assign({},(t=(e=this.loggerOptions).loggerContextCb)===null||t===void 0?void 0:t.call(e))}get isICEConnected(){return this._pc!==null&&(this.pc.iceConnectionState==="connected"||this.pc.iceConnectionState==="completed")}addIceCandidate(e){return g(this,void 0,void 0,function*(){if(this.pc.remoteDescription&&!this.restartingIce)return this.pc.addIceCandidate(e);this.pendingCandidates.push(e)})}setRemoteDescription(e){return g(this,void 0,void 0,function*(){var t;let i;if(e.type==="offer"){let{stereoMids:s,nackMids:r}=Lh(e);this.remoteStereoMids=s,this.remoteNackMids=r}else if(e.type==="answer"){const s=bt.parse((t=e.sdp)!==null&&t!==void 0?t:"");s.media.forEach(r=>{r.type==="audio"&&this.trackBitrates.some(a=>{if(!a.transceiver||r.mid!=a.transceiver.mid)return!1;let o=0;if(r.rtp.some(l=>l.codec.toUpperCase()===a.codec.toUpperCase()?(o=l.payload,!0):!1),o===0)return!0;let c=!1;for(const l of r.fmtp)if(l.payload===o){l.config=l.config.split(";").filter(d=>!d.includes("maxaveragebitrate")).join(";"),a.maxbr>0&&(l.config+=";maxaveragebitrate=".concat(a.maxbr*1e3)),c=!0;break}return c||a.maxbr>0&&r.fmtp.push({payload:o,config:"maxaveragebitrate=".concat(a.maxbr*1e3)}),!0})}),i=bt.write(s)}yield this.setMungedSDP(e,i,!0),this.pendingCandidates.forEach(s=>{this.pc.addIceCandidate(s)}),this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate?(this.renegotiate=!1,yield this.createAndSendOffer()):e.type==="answer"&&(this.emit(Kt.NegotiationComplete),e.sdp&&bt.parse(e.sdp).media.forEach(r=>{r.type==="video"&&this.emit(Kt.RTPVideoPayloadTypes,r.rtp)}))})}createAndSendOffer(e){return g(this,void 0,void 0,function*(){var t;if(this.onOffer===void 0)return;if(e!=null&&e.iceRestart&&(this.log.debug("restarting ICE",this.logContext),this.restartingIce=!0),this._pc&&this._pc.signalingState==="have-local-offer"){const r=this._pc.remoteDescription;if(e!=null&&e.iceRestart&&r)yield this._pc.setRemoteDescription(r);else{this.renegotiate=!0;return}}else if(!this._pc||this._pc.signalingState==="closed"){this.log.warn("could not createOffer with closed peer connection",this.logContext);return}this.log.debug("starting to negotiate",this.logContext);const i=yield this.pc.createOffer(e);this.log.debug("original offer",Object.assign({sdp:i.sdp},this.logContext));const s=bt.parse((t=i.sdp)!==null&&t!==void 0?t:"");s.media.forEach(r=>{Yr(r),r.type==="audio"?Qr(r,[],[]):r.type==="video"&&this.trackBitrates.some(a=>{if(!r.msid||!a.cid||!r.msid.includes(a.cid))return!1;let o=0;if(r.rtp.some(l=>l.codec.toUpperCase()===a.codec.toUpperCase()?(o=l.payload,!0):!1),o===0||(di(a.codec)&&this.ensureVideoDDExtensionForSVC(r,s),a.codec!=="av1"))return!0;const c=Math.round(a.maxbr*Ah);for(const l of r.fmtp)if(l.payload===o){l.config.includes("x-google-start-bitrate")||(l.config+=";x-google-start-bitrate=".concat(c));break}return!0})}),yield this.setMungedSDP(i,bt.write(s)),this.onOffer(i)})}createAndSetAnswer(){return g(this,void 0,void 0,function*(){var e;const t=yield this.pc.createAnswer(),i=bt.parse((e=t.sdp)!==null&&e!==void 0?e:"");return i.media.forEach(s=>{Yr(s),s.type==="audio"&&Qr(s,this.remoteStereoMids,this.remoteNackMids)}),yield this.setMungedSDP(t,bt.write(i)),t})}createDataChannel(e,t){return this.pc.createDataChannel(e,t)}addTransceiver(e,t){return this.pc.addTransceiver(e,t)}addTrack(e){if(!this._pc)throw new ye("PC closed, cannot add track");return this._pc.addTrack(e)}setTrackCodecBitrate(e){this.trackBitrates.push(e)}setConfiguration(e){var t;if(!this._pc)throw new ye("PC closed, cannot configure");return(t=this._pc)===null||t===void 0?void 0:t.setConfiguration(e)}canRemoveTrack(){var e;return!!(!((e=this._pc)===null||e===void 0)&&e.removeTrack)}removeTrack(e){var t;return(t=this._pc)===null||t===void 0?void 0:t.removeTrack(e)}getConnectionState(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.connectionState)!==null&&t!==void 0?t:"closed"}getICEConnectionState(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.iceConnectionState)!==null&&t!==void 0?t:"closed"}getSignallingState(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.signalingState)!==null&&t!==void 0?t:"closed"}getTransceivers(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.getTransceivers())!==null&&t!==void 0?t:[]}getSenders(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.getSenders())!==null&&t!==void 0?t:[]}getLocalDescription(){var e;return(e=this._pc)===null||e===void 0?void 0:e.localDescription}getRemoteDescription(){var e;return(e=this.pc)===null||e===void 0?void 0:e.remoteDescription}getStats(){return this.pc.getStats()}getConnectedAddress(){return g(this,void 0,void 0,function*(){var e;if(!this._pc)return;let t="";const i=new Map,s=new Map;if((yield this._pc.getStats()).forEach(o=>{switch(o.type){case"transport":t=o.selectedCandidatePairId;break;case"candidate-pair":t===""&&o.selected&&(t=o.id),i.set(o.id,o);break;case"remote-candidate":s.set(o.id,"".concat(o.address,":").concat(o.port));break}}),t==="")return;const a=(e=i.get(t))===null||e===void 0?void 0:e.remoteCandidateId;if(a!==void 0)return s.get(a)})}setMungedSDP(e,t,i){return g(this,void 0,void 0,function*(){if(t){const s=e.sdp;e.sdp=t;try{this.log.debug("setting munged ".concat(i?"remote":"local"," description"),this.logContext),i?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e);return}catch(r){this.log.warn("not able to set ".concat(e.type,", falling back to unmodified sdp"),Object.assign(Object.assign({},this.logContext),{error:r,sdp:t})),e.sdp=s}}try{i?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e)}catch(s){let r="unknown error";s instanceof Error?r=s.message:typeof s=="string"&&(r=s);const a={error:r,sdp:e.sdp};throw!i&&this.pc.remoteDescription&&(a.remoteSdp=this.pc.remoteDescription),this.log.error("unable to set ".concat(e.type),Object.assign(Object.assign({},this.logContext),{fields:a})),new Yn(r)}})}ensureVideoDDExtensionForSVC(e,t){var i,s;if(!((i=e.ext)===null||i===void 0?void 0:i.some(a=>a.uri===Ur))){if(this.ddExtID===0){let a=0;t.media.forEach(o=>{var c;o.type==="video"&&((c=o.ext)===null||c===void 0||c.forEach(l=>{l.value>a&&(a=l.value)}))}),this.ddExtID=a+1}(s=e.ext)===null||s===void 0||s.push({value:this.ddExtID,uri:Ur})}}}function Qr(n,e,t){let i=0;n.rtp.some(s=>s.codec==="opus"?(i=s.payload,!0):!1),i>0&&(n.rtcpFb||(n.rtcpFb=[]),t.includes(n.mid)&&!n.rtcpFb.some(s=>s.payload===i&&s.type==="nack")&&n.rtcpFb.push({payload:i,type:"nack"}),e.includes(n.mid)&&n.fmtp.some(s=>s.payload===i?(s.config.includes("stereo=1")||(s.config+=";stereo=1"),!0):!1))}function Lh(n){var e;const t=[],i=[],s=bt.parse((e=n.sdp)!==null&&e!==void 0?e:"");let r=0;return s.media.forEach(a=>{var o;a.type==="audio"&&(a.rtp.some(c=>c.codec==="opus"?(r=c.payload,!0):!1),!((o=a.rtcpFb)===null||o===void 0)&&o.some(c=>c.payload===r&&c.type==="nack")&&i.push(a.mid),a.fmtp.some(c=>c.payload===r?(c.config.includes("sprop-stereo=1")&&t.push(a.mid),!0):!1))}),{stereoMids:t,nackMids:i}}function Yr(n){if(n.connection){const e=n.connection.ip.indexOf(":")>=0;(n.connection.version===4&&e||n.connection.version===6&&!e)&&(n.connection.ip="0.0.0.0",n.connection.version=4)}}const rs="vp8",Uh={audioPreset:Xn.music,dtx:!0,red:!0,forceStereo:!1,simulcast:!0,screenShareEncoding:Ts.h1080fps15.encoding,stopMicTrackOnMute:!1,videoCodec:rs,backupCodec:!0},Ko={autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0,voiceIsolation:!0},Go={resolution:gi.h720.resolution},Fh={adaptiveStream:!1,dynacast:!1,stopLocalTrackOnUnpublish:!0,reconnectPolicy:new Au,disconnectOnPageLeave:!0,webAudioMix:!1},Ps={autoSubscribe:!0,maxRetries:1,peerConnectionTimeout:15e3,websocketTimeout:15e3};var pe;(function(n){n[n.NEW=0]="NEW",n[n.CONNECTING=1]="CONNECTING",n[n.CONNECTED=2]="CONNECTED",n[n.FAILED=3]="FAILED",n[n.CLOSING=4]="CLOSING",n[n.CLOSED=5]="CLOSED"})(pe||(pe={}));class jh{get needsPublisher(){return this.isPublisherConnectionRequired}get needsSubscriber(){return this.isSubscriberConnectionRequired}get currentState(){return this.state}constructor(e,t,i){var s;this.peerConnectionTimeout=Ps.peerConnectionTimeout,this.log=Z,this.updateState=()=>{var r;const a=this.state,o=this.requiredTransports.map(c=>c.getConnectionState());o.every(c=>c==="connected")?this.state=pe.CONNECTED:o.some(c=>c==="failed")?this.state=pe.FAILED:o.some(c=>c==="connecting")?this.state=pe.CONNECTING:o.every(c=>c==="closed")?this.state=pe.CLOSED:o.some(c=>c==="closed")?this.state=pe.CLOSING:o.every(c=>c==="new")&&(this.state=pe.NEW),a!==this.state&&(this.log.debug("pc state change: from ".concat(pe[a]," to ").concat(pe[this.state]),this.logContext),(r=this.onStateChange)===null||r===void 0||r.call(this,this.state,this.publisher.getConnectionState(),this.subscriber.getConnectionState()))},this.log=dt((s=i.loggerName)!==null&&s!==void 0?s:Je.PCManager),this.loggerOptions=i,this.isPublisherConnectionRequired=!t,this.isSubscriberConnectionRequired=t,this.publisher=new $r(e,i),this.subscriber=new $r(e,i),this.publisher.onConnectionStateChange=this.updateState,this.subscriber.onConnectionStateChange=this.updateState,this.publisher.onIceConnectionStateChange=this.updateState,this.subscriber.onIceConnectionStateChange=this.updateState,this.publisher.onSignalingStatechange=this.updateState,this.subscriber.onSignalingStatechange=this.updateState,this.publisher.onIceCandidate=r=>{var a;(a=this.onIceCandidate)===null||a===void 0||a.call(this,r,We.PUBLISHER)},this.subscriber.onIceCandidate=r=>{var a;(a=this.onIceCandidate)===null||a===void 0||a.call(this,r,We.SUBSCRIBER)},this.subscriber.onDataChannel=r=>{var a;(a=this.onDataChannel)===null||a===void 0||a.call(this,r)},this.subscriber.onTrack=r=>{var a;(a=this.onTrack)===null||a===void 0||a.call(this,r)},this.publisher.onOffer=r=>{var a;(a=this.onPublisherOffer)===null||a===void 0||a.call(this,r)},this.state=pe.NEW,this.connectionLock=new Ne,this.remoteOfferLock=new Ne}get logContext(){var e,t;return Object.assign({},(t=(e=this.loggerOptions).loggerContextCb)===null||t===void 0?void 0:t.call(e))}requirePublisher(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.isPublisherConnectionRequired=e,this.updateState()}requireSubscriber(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.isSubscriberConnectionRequired=e,this.updateState()}createAndSendPublisherOffer(e){return this.publisher.createAndSendOffer(e)}setPublisherAnswer(e){return this.publisher.setRemoteDescription(e)}removeTrack(e){return this.publisher.removeTrack(e)}close(){return g(this,void 0,void 0,function*(){if(this.publisher&&this.publisher.getSignallingState()!=="closed"){const e=this.publisher;for(const t of e.getSenders())try{e.canRemoveTrack()&&e.removeTrack(t)}catch(i){this.log.warn("could not removeTrack",Object.assign(Object.assign({},this.logContext),{error:i}))}}yield Promise.all([this.publisher.close(),this.subscriber.close()]),this.updateState()})}triggerIceRestart(){return g(this,void 0,void 0,function*(){this.subscriber.restartingIce=!0,this.needsPublisher&&(yield this.createAndSendPublisherOffer({iceRestart:!0}))})}addIceCandidate(e,t){return g(this,void 0,void 0,function*(){t===We.PUBLISHER?yield this.publisher.addIceCandidate(e):yield this.subscriber.addIceCandidate(e)})}createSubscriberAnswerFromOffer(e){return g(this,void 0,void 0,function*(){this.log.debug("received server offer",Object.assign(Object.assign({},this.logContext),{RTCSdpType:e.type,sdp:e.sdp,signalingState:this.subscriber.getSignallingState().toString()}));const t=yield this.remoteOfferLock.lock();try{return yield this.subscriber.setRemoteDescription(e),yield this.subscriber.createAndSetAnswer()}finally{t()}})}updateConfiguration(e,t){this.publisher.setConfiguration(e),this.subscriber.setConfiguration(e),t&&this.triggerIceRestart()}ensurePCTransportConnection(e,t){return g(this,void 0,void 0,function*(){var i;const s=yield this.connectionLock.lock();try{this.isPublisherConnectionRequired&&this.publisher.getConnectionState()!=="connected"&&this.publisher.getConnectionState()!=="connecting"&&(this.log.debug("negotiation required, start negotiating",this.logContext),this.publisher.negotiate()),yield Promise.all((i=this.requiredTransports)===null||i===void 0?void 0:i.map(r=>this.ensureTransportConnected(r,e,t)))}finally{s()}})}negotiate(e){return g(this,void 0,void 0,function*(){return new Promise((t,i)=>g(this,void 0,void 0,function*(){const s=setTimeout(()=>{i("negotiation timed out")},this.peerConnectionTimeout),r=()=>{clearTimeout(s),i("negotiation aborted")};e.signal.addEventListener("abort",r),this.publisher.once(Kt.NegotiationStarted,()=>{e.signal.aborted||this.publisher.once(Kt.NegotiationComplete,()=>{clearTimeout(s),t()})}),yield this.publisher.negotiate(a=>{clearTimeout(s),i(a)})}))})}addPublisherTransceiver(e,t){return this.publisher.addTransceiver(e,t)}addPublisherTrack(e){return this.publisher.addTrack(e)}createPublisherDataChannel(e,t){return this.publisher.createDataChannel(e,t)}getConnectedAddress(e){return e===We.PUBLISHER?this.publisher.getConnectedAddress():e===We.SUBSCRIBER?this.publisher.getConnectedAddress():this.requiredTransports[0].getConnectedAddress()}get requiredTransports(){const e=[];return this.isPublisherConnectionRequired&&e.push(this.publisher),this.isSubscriberConnectionRequired&&e.push(this.subscriber),e}ensureTransportConnected(e,t){return g(this,arguments,void 0,function(i,s){var r=this;let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.peerConnectionTimeout;return function*(){if(i.getConnectionState()!=="connected")return new Promise((c,l)=>g(r,void 0,void 0,function*(){const d=()=>{this.log.warn("abort transport connection",this.logContext),Ee.clearTimeout(f),l(new re("room connection has been cancelled",te.Cancelled))};s!=null&&s.signal.aborted&&d(),s==null||s.signal.addEventListener("abort",d);const f=Ee.setTimeout(()=>{s==null||s.signal.removeEventListener("abort",d),l(new re("could not establish pc connection",te.InternalError))},a);for(;this.state!==pe.CONNECTED;)if(yield He(50),s!=null&&s.signal.aborted){l(new re("room connection has been cancelled",te.Cancelled));return}Ee.clearTimeout(f),s==null||s.signal.removeEventListener("abort",d),c()}))}()})}}const Es=2e3;function sn(n,e){if(!e)return 0;let t,i;return"bytesReceived"in n?(t=n.bytesReceived,i=e.bytesReceived):"bytesSent"in n&&(t=n.bytesSent,i=e.bytesSent),t===void 0||i===void 0||n.timestamp===void 0||e.timestamp===void 0?0:(t-i)*8*1e3/(n.timestamp-e.timestamp)}class Se extends qt{get enhancedNoiseCancellation(){return this.isKrispNoiseFilterEnabled}constructor(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;super(e,E.Kind.Audio,t,i,r),this.stopOnMute=!1,this.isKrispNoiseFilterEnabled=!1,this.monitorSender=()=>g(this,void 0,void 0,function*(){if(!this.sender){this._currentBitrate=0;return}let a;try{a=yield this.getSenderStats()}catch(o){this.log.error("could not get audio sender stats",Object.assign(Object.assign({},this.logContext),{error:o}));return}a&&this.prevStats&&(this._currentBitrate=sn(a,this.prevStats)),this.prevStats=a}),this.handleKrispNoiseFilterEnable=()=>{this.isKrispNoiseFilterEnabled=!0,this.log.debug("Krisp noise filter enabled",this.logContext),this.emit(N.AudioTrackFeatureUpdate,this,tt.TF_ENHANCED_NOISE_CANCELLATION,!0)},this.handleKrispNoiseFilterDisable=()=>{this.isKrispNoiseFilterEnabled=!1,this.log.debug("Krisp noise filter disabled",this.logContext),this.emit(N.AudioTrackFeatureUpdate,this,tt.TF_ENHANCED_NOISE_CANCELLATION,!1)},this.audioContext=s,this.checkForSilence()}setDeviceId(e){return g(this,void 0,void 0,function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===lt(e)?!0:(this._constraints.deviceId=e,this.isMuted||(yield this.restartTrack()),this.isMuted||lt(e)===this._mediaStreamTrack.getSettings().deviceId)})}mute(){const e=Object.create(null,{mute:{get:()=>super.mute}});return g(this,void 0,void 0,function*(){const t=yield this.muteLock.lock();try{return this.isMuted?(this.log.debug("Track already muted",this.logContext),this):(this.source===E.Source.Microphone&&this.stopOnMute&&!this.isUserProvided&&(this.log.debug("stopping mic track",this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this)}finally{t()}})}unmute(){const e=Object.create(null,{unmute:{get:()=>super.unmute}});return g(this,void 0,void 0,function*(){const t=yield this.muteLock.lock();try{if(!this.isMuted)return this.log.debug("Track already unmuted",this.logContext),this;const i=this._constraints.deviceId&&this._mediaStreamTrack.getSettings().deviceId!==lt(this._constraints.deviceId);return this.source===E.Source.Microphone&&(this.stopOnMute||this._mediaStreamTrack.readyState==="ended"||i)&&!this.isUserProvided&&(this.log.debug("reacquiring mic track",this.logContext),yield this.restartTrack()),yield e.unmute.call(this),this}finally{t()}})}restartTrack(e){return g(this,void 0,void 0,function*(){let t;if(e){const i=nn({audio:e});typeof i.audio!="boolean"&&(t=i.audio)}yield this.restart(t)})}restart(e){const t=Object.create(null,{restart:{get:()=>super.restart}});return g(this,void 0,void 0,function*(){const i=yield t.restart.call(this,e);return this.checkForSilence(),i})}startMonitor(){Le()&&(this.monitorInterval||(this.monitorInterval=setInterval(()=>{this.monitorSender()},Es)))}setProcessor(e){return g(this,void 0,void 0,function*(){var t;const i=yield this.processorLock.lock();try{if(!this.audioContext)throw Error("Audio context needs to be set on LocalAudioTrack in order to enable processors");this.processor&&(yield this.stopProcessor());const s={kind:this.kind,track:this._mediaStreamTrack,audioContext:this.audioContext};this.log.debug("setting up audio processor ".concat(e.name),this.logContext),yield e.init(s),this.processor=e,this.processor.processedTrack&&(yield(t=this.sender)===null||t===void 0?void 0:t.replaceTrack(this.processor.processedTrack),this.processor.processedTrack.addEventListener("enable-lk-krisp-noise-filter",this.handleKrispNoiseFilterEnable),this.processor.processedTrack.addEventListener("disable-lk-krisp-noise-filter",this.handleKrispNoiseFilterDisable)),this.emit(N.TrackProcessorUpdate,this.processor)}finally{i()}})}setAudioContext(e){this.audioContext=e}getSenderStats(){return g(this,void 0,void 0,function*(){var e;if(!(!((e=this.sender)===null||e===void 0)&&e.getStats))return;const t=yield this.sender.getStats();let i;return t.forEach(s=>{s.type==="outbound-rtp"&&(i={type:"audio",streamId:s.id,packetsSent:s.packetsSent,packetsLost:s.packetsLost,bytesSent:s.bytesSent,timestamp:s.timestamp,roundTripTime:s.roundTripTime,jitter:s.jitter})}),i})}checkForSilence(){return g(this,void 0,void 0,function*(){const e=yield ah(this);return e&&(this.isMuted||this.log.warn("silence detected on local audio track",this.logContext),this.emit(N.AudioSilenceDetected)),e})}}function Wo(n,e,t){switch(n.kind){case"audio":return new Se(n,e,!1,void 0,t);case"video":return new we(n,e,!1,t);default:throw new it("unsupported track type: ".concat(n.kind))}}const Bh=Object.values(gi),Vh=Object.values(Zn),qh=Object.values(Ts),Kh=[gi.h180,gi.h360],Gh=[Zn.h180,Zn.h360],Wh=n=>[{scaleResolutionDownBy:2,fps:n.encoding.maxFramerate}].map(t=>{var i,s;return new ne(Math.floor(n.width/t.scaleResolutionDownBy),Math.floor(n.height/t.scaleResolutionDownBy),Math.max(15e4,Math.floor(n.encoding.maxBitrate/(Math.pow(t.scaleResolutionDownBy,2)*(((i=n.encoding.maxFramerate)!==null&&i!==void 0?i:30)/((s=t.fps)!==null&&s!==void 0?s:30))))),t.fps,n.encoding.priority)}),as=["q","h","f"];function os(n,e,t,i){var s,r;let a=i==null?void 0:i.videoEncoding;n&&(a=i==null?void 0:i.screenShareEncoding);const o=i==null?void 0:i.simulcast,c=i==null?void 0:i.scalabilityMode,l=i==null?void 0:i.videoCodec;if(!a&&!o&&!c||!e||!t)return[{}];a||(a=Hh(n,e,t,l),Z.debug("using video encoding",a));const d=new ne(e,t,a.maxBitrate,a.maxFramerate,a.priority);if(c&&di(l)){const m=new zo(c),y=[];if(m.spatial>3)throw new Error("unsupported scalabilityMode: ".concat(c));const C=ut();if(Rt()||ht()||(C==null?void 0:C.name)==="Chrome"&&zt(C==null?void 0:C.version,"113")<0){const _=m.suffix=="h"?2:3;for(let b=0;b<m.spatial;b+=1)y.push({rid:as[2-b],maxBitrate:a.maxBitrate/Math.pow(_,b),maxFramerate:d.encoding.maxFramerate});y[0].scalabilityMode=c}else y.push({maxBitrate:a.maxBitrate,maxFramerate:d.encoding.maxFramerate,scalabilityMode:c});return d.encoding.priority&&(y[0].priority=d.encoding.priority,y[0].networkPriority=d.encoding.priority),Z.debug("using svc encoding",{encodings:y}),y}if(!o)return[a];let f=[];n?f=(s=Zr(i==null?void 0:i.screenShareSimulcastLayers))!==null&&s!==void 0?s:Xr(n,d):f=(r=Zr(i==null?void 0:i.videoSimulcastLayers))!==null&&r!==void 0?r:Xr(n,d);let p;if(f.length>0){const m=f[0];f.length>1&&([,p]=f);const y=Math.max(e,t);if(y>=960&&p)return An(e,t,[m,p,d]);if(y>=480)return An(e,t,[m,d])}return An(e,t,[d])}function zh(n,e,t){var i,s,r,a;if(!t.backupCodec||t.backupCodec===!0||t.backupCodec.codec===t.videoCodec)return;e!==t.backupCodec.codec&&Z.warn("requested a different codec than specified as backup",{serverRequested:e,backup:t.backupCodec.codec}),t.videoCodec=e,t.videoEncoding=t.backupCodec.encoding;const o=n.mediaStreamTrack.getSettings(),c=(i=o.width)!==null&&i!==void 0?i:(s=n.dimensions)===null||s===void 0?void 0:s.width,l=(r=o.height)!==null&&r!==void 0?r:(a=n.dimensions)===null||a===void 0?void 0:a.height;return os(n.source===E.Source.ScreenShare,c,l,t)}function Hh(n,e,t,i){const s=Jh(n,e,t);let{encoding:r}=s[0];const a=Math.max(e,t);for(let o=0;o<s.length;o+=1){const c=s[o];if(r=c.encoding,c.width>=a)break}if(i)switch(i){case"av1":r=Object.assign({},r),r.maxBitrate=r.maxBitrate*.7;break;case"vp9":r=Object.assign({},r),r.maxBitrate=r.maxBitrate*.85;break}return r}function Jh(n,e,t){if(n)return qh;const i=e>t?e/t:t/e;return Math.abs(i-16/9)<Math.abs(i-4/3)?Bh:Vh}function Xr(n,e){if(n)return Wh(e);const{width:t,height:i}=e,s=t>i?t/i:i/t;return Math.abs(s-16/9)<Math.abs(s-4/3)?Kh:Gh}function An(n,e,t){const i=[];if(t.forEach((s,r)=>{if(r>=as.length)return;const a=Math.min(n,e),c={rid:as[r],scaleResolutionDownBy:Math.max(1,a/Math.min(s.width,s.height)),maxBitrate:s.encoding.maxBitrate};s.encoding.maxFramerate&&(c.maxFramerate=s.encoding.maxFramerate);const l=Wt()||r===0;s.encoding.priority&&l&&(c.priority=s.encoding.priority,c.networkPriority=s.encoding.priority),i.push(c)}),ht()&&Bo()==="ios"){let s;i.forEach(a=>{s?a.maxFramerate&&a.maxFramerate>s&&(s=a.maxFramerate):s=a.maxFramerate});let r=!0;i.forEach(a=>{var o;a.maxFramerate!=s&&(r&&(r=!1,Z.info("Simulcast on iOS React-Native requires all encodings to share the same framerate.")),Z.info('Setting framerate of encoding "'.concat((o=a.rid)!==null&&o!==void 0?o:"",'" to ').concat(s)),a.maxFramerate=s)})}return i}function Zr(n){if(n)return n.sort((e,t)=>{const{encoding:i}=e,{encoding:s}=t;return i.maxBitrate>s.maxBitrate?1:i.maxBitrate<s.maxBitrate?-1:i.maxBitrate===s.maxBitrate&&i.maxFramerate&&s.maxFramerate?i.maxFramerate>s.maxFramerate?1:-1:0})}class zo{constructor(e){const t=e.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);if(!t)throw new Error("invalid scalability mode");if(this.spatial=parseInt(t[1]),this.temporal=parseInt(t[2]),t.length>3)switch(t[3]){case"h":case"_KEY":case"_KEY_SHIFT":this.suffix=t[3]}}toString(){var e;return"L".concat(this.spatial,"T").concat(this.temporal).concat((e=this.suffix)!==null&&e!==void 0?e:"")}}function $h(n){return n.source===E.Source.ScreenShare||n.constraints.height&<(n.constraints.height)>=1080?"maintain-resolution":"balanced"}const Qh=5e3;class we extends qt{get sender(){return this._sender}set sender(e){this._sender=e,this.degradationPreference&&this.setDegradationPreference(this.degradationPreference)}constructor(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3?arguments[3]:void 0;super(e,E.Kind.Video,t,i,s),this.simulcastCodecs=new Map,this.degradationPreference="balanced",this.monitorSender=()=>g(this,void 0,void 0,function*(){if(!this.sender){this._currentBitrate=0;return}let r;try{r=yield this.getSenderStats()}catch(o){this.log.error("could not get audio sender stats",Object.assign(Object.assign({},this.logContext),{error:o}));return}const a=new Map(r.map(o=>[o.rid,o]));if(this.prevStats){let o=0;a.forEach((c,l)=>{var d;const f=(d=this.prevStats)===null||d===void 0?void 0:d.get(l);o+=sn(c,f)}),this._currentBitrate=o}this.prevStats=a}),this.senderLock=new Ne}get isSimulcast(){return!!(this.sender&&this.sender.getParameters().encodings.length>1)}startMonitor(e){var t;if(this.signalClient=e,!Le())return;const i=(t=this.sender)===null||t===void 0?void 0:t.getParameters();i&&(this.encodings=i.encodings),!this.monitorInterval&&(this.monitorInterval=setInterval(()=>{this.monitorSender()},Es))}stop(){this._mediaStreamTrack.getConstraints(),this.simulcastCodecs.forEach(e=>{e.mediaStreamTrack.stop()}),super.stop()}pauseUpstream(){const e=Object.create(null,{pauseUpstream:{get:()=>super.pauseUpstream}});return g(this,void 0,void 0,function*(){var t,i,s,r,a;yield e.pauseUpstream.call(this);try{for(var o=!0,c=Lt(this.simulcastCodecs.values()),l;l=yield c.next(),t=l.done,!t;o=!0)r=l.value,o=!1,yield(a=r.sender)===null||a===void 0?void 0:a.replaceTrack(null)}catch(d){i={error:d}}finally{try{!o&&!t&&(s=c.return)&&(yield s.call(c))}finally{if(i)throw i.error}}})}resumeUpstream(){const e=Object.create(null,{resumeUpstream:{get:()=>super.resumeUpstream}});return g(this,void 0,void 0,function*(){var t,i,s,r,a;yield e.resumeUpstream.call(this);try{for(var o=!0,c=Lt(this.simulcastCodecs.values()),l;l=yield c.next(),t=l.done,!t;o=!0){r=l.value,o=!1;const d=r;yield(a=d.sender)===null||a===void 0?void 0:a.replaceTrack(d.mediaStreamTrack)}}catch(d){i={error:d}}finally{try{!o&&!t&&(s=c.return)&&(yield s.call(c))}finally{if(i)throw i.error}}})}mute(){const e=Object.create(null,{mute:{get:()=>super.mute}});return g(this,void 0,void 0,function*(){const t=yield this.muteLock.lock();try{return this.isMuted?(this.log.debug("Track already muted",this.logContext),this):(this.source===E.Source.Camera&&!this.isUserProvided&&(this.log.debug("stopping camera track",this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this)}finally{t()}})}unmute(){const e=Object.create(null,{unmute:{get:()=>super.unmute}});return g(this,void 0,void 0,function*(){const t=yield this.muteLock.lock();try{return this.isMuted?(this.source===E.Source.Camera&&!this.isUserProvided&&(this.log.debug("reacquiring camera track",this.logContext),yield this.restartTrack()),yield e.unmute.call(this),this):(this.log.debug("Track already unmuted",this.logContext),this)}finally{t()}})}setTrackMuted(e){super.setTrackMuted(e);for(const t of this.simulcastCodecs.values())t.mediaStreamTrack.enabled=!e}getSenderStats(){return g(this,void 0,void 0,function*(){var e;if(!(!((e=this.sender)===null||e===void 0)&&e.getStats))return[];const t=[],i=yield this.sender.getStats();return i.forEach(s=>{var r;if(s.type==="outbound-rtp"){const a={type:"video",streamId:s.id,frameHeight:s.frameHeight,frameWidth:s.frameWidth,framesPerSecond:s.framesPerSecond,framesSent:s.framesSent,firCount:s.firCount,pliCount:s.pliCount,nackCount:s.nackCount,packetsSent:s.packetsSent,bytesSent:s.bytesSent,qualityLimitationReason:s.qualityLimitationReason,qualityLimitationDurations:s.qualityLimitationDurations,qualityLimitationResolutionChanges:s.qualityLimitationResolutionChanges,rid:(r=s.rid)!==null&&r!==void 0?r:s.id,retransmittedPacketsSent:s.retransmittedPacketsSent,targetBitrate:s.targetBitrate,timestamp:s.timestamp},o=i.get(s.remoteId);o&&(a.jitter=o.jitter,a.packetsLost=o.packetsLost,a.roundTripTime=o.roundTripTime),t.push(a)}}),t.sort((s,r)=>{var a,o;return((a=r.frameWidth)!==null&&a!==void 0?a:0)-((o=s.frameWidth)!==null&&o!==void 0?o:0)}),t})}setPublishingQuality(e){const t=[];for(let i=je.LOW;i<=je.HIGH;i+=1)t.push(new vs({quality:i,enabled:i<=e}));this.log.debug("setting publishing quality. max quality ".concat(e),this.logContext),this.setPublishingLayers(t)}setDeviceId(e){return g(this,void 0,void 0,function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===lt(e)?!0:(this._constraints.deviceId=e,this.isMuted||(yield this.restartTrack()),this.isMuted||lt(e)===this._mediaStreamTrack.getSettings().deviceId)})}restartTrack(e){return g(this,void 0,void 0,function*(){var t,i,s,r;let a;if(e){const d=nn({video:e});typeof d.video!="boolean"&&(a=d.video)}yield this.restart(a);try{for(var o=!0,c=Lt(this.simulcastCodecs.values()),l;l=yield c.next(),t=l.done,!t;o=!0){r=l.value,o=!1;const d=r;d.sender&&(d.mediaStreamTrack=this.mediaStreamTrack.clone(),yield d.sender.replaceTrack(d.mediaStreamTrack))}}catch(d){i={error:d}}finally{try{!o&&!t&&(s=c.return)&&(yield s.call(c))}finally{if(i)throw i.error}}})}setProcessor(e){const t=Object.create(null,{setProcessor:{get:()=>super.setProcessor}});return g(this,arguments,void 0,function(i){var s=this;let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){var a,o,c,l,d,f;if(yield t.setProcessor.call(s,i,r),!((d=s.processor)===null||d===void 0)&&d.processedTrack)try{for(var p=!0,m=Lt(s.simulcastCodecs.values()),y;y=yield m.next(),a=y.done,!a;p=!0)l=y.value,p=!1,yield(f=l.sender)===null||f===void 0?void 0:f.replaceTrack(s.processor.processedTrack)}catch(C){o={error:C}}finally{try{!p&&!a&&(c=m.return)&&(yield c.call(m))}finally{if(o)throw o.error}}}()})}setDegradationPreference(e){return g(this,void 0,void 0,function*(){if(this.degradationPreference=e,this.sender)try{this.log.debug("setting degradationPreference to ".concat(e),this.logContext);const t=this.sender.getParameters();t.degradationPreference=e,this.sender.setParameters(t)}catch(t){this.log.warn("failed to set degradationPreference",Object.assign({error:t},this.logContext))}})}addSimulcastTrack(e,t){if(this.simulcastCodecs.has(e)){this.log.error("".concat(e," already added, skipping adding simulcast codec"),this.logContext);return}const i={codec:e,mediaStreamTrack:this.mediaStreamTrack.clone(),sender:void 0,encodings:t};return this.simulcastCodecs.set(e,i),i}setSimulcastTrackSender(e,t){const i=this.simulcastCodecs.get(e);i&&(i.sender=t,setTimeout(()=>{this.subscribedCodecs&&this.setPublishingCodecs(this.subscribedCodecs)},Qh))}setPublishingCodecs(e){return g(this,void 0,void 0,function*(){var t,i,s,r,a,o,c;if(this.log.debug("setting publishing codecs",Object.assign(Object.assign({},this.logContext),{codecs:e,currentCodec:this.codec})),!this.codec&&e.length>0)return yield this.setPublishingLayers(e[0].qualities),[];this.subscribedCodecs=e;const l=[];try{for(t=!0,i=Lt(e);s=yield i.next(),r=s.done,!r;t=!0){c=s.value,t=!1;const d=c;if(!this.codec||this.codec===d.codec)yield this.setPublishingLayers(d.qualities);else{const f=this.simulcastCodecs.get(d.codec);if(this.log.debug("try setPublishingCodec for ".concat(d.codec),Object.assign(Object.assign({},this.logContext),{simulcastCodecInfo:f})),!f||!f.sender){for(const p of d.qualities)if(p.enabled){l.push(d.codec);break}}else f.encodings&&(this.log.debug("try setPublishingLayersForSender ".concat(d.codec),this.logContext),yield ea(f.sender,f.encodings,d.qualities,this.senderLock,this.log,this.logContext))}}}catch(d){a={error:d}}finally{try{!t&&!r&&(o=i.return)&&(yield o.call(i))}finally{if(a)throw a.error}}return l})}setPublishingLayers(e){return g(this,void 0,void 0,function*(){this.log.debug("setting publishing layers",Object.assign(Object.assign({},this.logContext),{qualities:e})),!(!this.sender||!this.encodings)&&(yield ea(this.sender,this.encodings,e,this.senderLock,this.log,this.logContext))})}handleAppVisibilityChanged(){const e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return g(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),Fo()&&this.isInBackground&&this.source===E.Source.Camera&&(this._mediaStreamTrack.enabled=!1)})}}function ea(n,e,t,i,s,r){return g(this,void 0,void 0,function*(){const a=yield i.lock();s.debug("setPublishingLayersForSender",Object.assign(Object.assign({},r),{sender:n,qualities:t,senderEncodings:e}));try{const o=n.getParameters(),{encodings:c}=o;if(!c)return;if(c.length!==e.length){s.warn("cannot set publishing layers, encodings mismatch",Object.assign(Object.assign({},r),{encodings:c,senderEncodings:e}));return}let l=!1;!1&&c[0].scalabilityMode||c.forEach((f,p)=>{var m;let y=(m=f.rid)!==null&&m!==void 0?m:"";y===""&&(y="q");const C=Ho(y),_=t.find(b=>b.quality===C);_&&f.active!==_.enabled&&(l=!0,f.active=_.enabled,s.debug("setting layer ".concat(_.quality," to ").concat(f.active?"enabled":"disabled"),r),Wt()&&(_.enabled?(f.scaleResolutionDownBy=e[p].scaleResolutionDownBy,f.maxBitrate=e[p].maxBitrate,f.maxFrameRate=e[p].maxFrameRate):(f.scaleResolutionDownBy=4,f.maxBitrate=10,f.maxFrameRate=2)))}),l&&(o.encodings=c,s.debug("setting encodings",Object.assign(Object.assign({},r),{encodings:o.encodings})),yield n.setParameters(o))}finally{a()}})}function Ho(n){switch(n){case"f":return je.HIGH;case"h":return je.MEDIUM;case"q":return je.LOW;default:return je.HIGH}}function ta(n,e,t,i){if(!t)return[new _t({quality:je.HIGH,width:n,height:e,bitrate:0,ssrc:0})];if(i){const s=t[0].scalabilityMode,r=new zo(s),a=[],o=r.suffix=="h"?1.5:2,c=r.suffix=="h"?2:3;for(let l=0;l<r.spatial;l+=1)a.push(new _t({quality:Math.min(je.HIGH,r.spatial-1)-l,width:Math.ceil(n/Math.pow(o,l)),height:Math.ceil(e/Math.pow(o,l)),bitrate:t[0].maxBitrate?Math.ceil(t[0].maxBitrate/Math.pow(c,l)):0,ssrc:0}));return a}return t.map(s=>{var r,a,o;const c=(r=s.scaleResolutionDownBy)!==null&&r!==void 0?r:1;let l=Ho((a=s.rid)!==null&&a!==void 0?a:"");return new _t({quality:l,width:Math.ceil(n/c),height:Math.ceil(e/c),bitrate:(o=s.maxBitrate)!==null&&o!==void 0?o:0,ssrc:0})})}const ia="_lossy",na="_reliable",Yh=2*1e3,Nn="leave-reconnect";var qe;(function(n){n[n.New=0]="New",n[n.Connected=1]="Connected",n[n.Disconnected=2]="Disconnected",n[n.Reconnecting=3]="Reconnecting",n[n.Closed=4]="Closed"})(qe||(qe={}));class Xh extends nt.EventEmitter{get isClosed(){return this._isClosed}get pendingReconnect(){return!!this.reconnectTimeout}constructor(e){var t;super(),this.options=e,this.rtcConfig={},this.peerConnectionTimeout=Ps.peerConnectionTimeout,this.fullReconnectOnNext=!1,this.subscriberPrimary=!1,this.pcState=qe.New,this._isClosed=!0,this.pendingTrackResolvers={},this.reconnectAttempts=0,this.reconnectStart=0,this.attemptingReconnect=!1,this.joinAttempts=0,this.maxJoinAttempts=1,this.shouldFailNext=!1,this.log=Z,this.handleDataChannel=i=>g(this,[i],void 0,function(s){var r=this;let{channel:a}=s;return function*(){if(a){if(a.label===na)r.reliableDCSub=a;else if(a.label===ia)r.lossyDCSub=a;else return;r.log.debug("on data channel ".concat(a.id,", ").concat(a.label),r.logContext),a.onmessage=r.handleDataMessage}}()}),this.handleDataMessage=i=>g(this,void 0,void 0,function*(){var s,r;const a=yield this.dataProcessLock.lock();try{let o;if(i.data instanceof ArrayBuffer)o=i.data;else if(i.data instanceof Blob)o=yield i.data.arrayBuffer();else{this.log.error("unsupported data type",Object.assign(Object.assign({},this.logContext),{data:i.data}));return}const c=vt.fromBinary(new Uint8Array(o));((s=c.value)===null||s===void 0?void 0:s.case)==="speaker"?this.emit(j.ActiveSpeakersUpdate,c.value.value.speakers):(((r=c.value)===null||r===void 0?void 0:r.case)==="user"&&ef(c,c.value.value),this.emit(j.DataPacketReceived,c))}finally{a()}}),this.handleDataError=i=>{const r=i.currentTarget.maxRetransmits===0?"lossy":"reliable";if(i instanceof ErrorEvent&&i.error){const{error:a}=i.error;this.log.error("DataChannel error on ".concat(r,": ").concat(i.message),Object.assign(Object.assign({},this.logContext),{error:a}))}else this.log.error("Unknown DataChannel error on ".concat(r),Object.assign(Object.assign({},this.logContext),{event:i}))},this.handleBufferedAmountLow=i=>{const r=i.currentTarget.maxRetransmits===0?ae.LOSSY:ae.RELIABLE;this.updateAndEmitDCBufferStatus(r)},this.handleDisconnect=(i,s)=>{if(this._isClosed)return;this.log.warn("".concat(i," disconnected"),this.logContext),this.reconnectAttempts===0&&(this.reconnectStart=Date.now());const r=c=>{this.log.warn("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(c,"ms. giving up"),this.logContext),this.emit(j.Disconnected),this.close()},a=Date.now()-this.reconnectStart;let o=this.getNextRetryDelay({elapsedMs:a,retryCount:this.reconnectAttempts});if(o===null){r(a);return}i===Nn&&(o=0),this.log.debug("reconnecting in ".concat(o,"ms"),this.logContext),this.clearReconnectTimeout(),this.token&&this.regionUrlProvider&&this.regionUrlProvider.updateToken(this.token),this.reconnectTimeout=Ee.setTimeout(()=>this.attemptReconnect(s).finally(()=>this.reconnectTimeout=void 0),o)},this.waitForRestarted=()=>new Promise((i,s)=>{this.pcState===qe.Connected&&i();const r=()=>{this.off(j.Disconnected,a),i()},a=()=>{this.off(j.Restarted,r),s()};this.once(j.Restarted,r),this.once(j.Disconnected,a)}),this.updateAndEmitDCBufferStatus=i=>{const s=this.isBufferStatusLow(i);typeof s<"u"&&s!==this.dcBufferStatus.get(i)&&(this.dcBufferStatus.set(i,s),this.emit(j.DCBufferStatusChanged,s,i))},this.isBufferStatusLow=i=>{const s=this.dataChannelForKind(i);if(s)return s.bufferedAmount<=s.bufferedAmountLowThreshold},this.handleBrowserOnLine=()=>{this.client.currentState===ce.RECONNECTING&&(this.clearReconnectTimeout(),this.attemptReconnect(At.RR_SIGNAL_DISCONNECTED))},this.log=dt((t=e.loggerName)!==null&&t!==void 0?t:Je.Engine),this.loggerOptions={loggerName:e.loggerName,loggerContextCb:()=>this.logContext},this.client=new Ss(void 0,this.loggerOptions),this.client.signalLatency=this.options.expSignalLatency,this.reconnectPolicy=this.options.reconnectPolicy,this.registerOnLineListener(),this.closingLock=new Ne,this.dataProcessLock=new Ne,this.dcBufferStatus=new Map([[ae.LOSSY,!0],[ae.RELIABLE,!0]]),this.client.onParticipantUpdate=i=>this.emit(j.ParticipantUpdate,i),this.client.onConnectionQuality=i=>this.emit(j.ConnectionQualityUpdate,i),this.client.onRoomUpdate=i=>this.emit(j.RoomUpdate,i),this.client.onSubscriptionError=i=>this.emit(j.SubscriptionError,i),this.client.onSubscriptionPermissionUpdate=i=>this.emit(j.SubscriptionPermissionUpdate,i),this.client.onSpeakersChanged=i=>this.emit(j.SpeakersChanged,i),this.client.onStreamStateUpdate=i=>this.emit(j.StreamStateChanged,i),this.client.onRequestResponse=i=>this.emit(j.SignalRequestResponse,i)}get logContext(){var e,t,i,s,r,a,o,c;return{room:(t=(e=this.latestJoinResponse)===null||e===void 0?void 0:e.room)===null||t===void 0?void 0:t.name,roomID:(s=(i=this.latestJoinResponse)===null||i===void 0?void 0:i.room)===null||s===void 0?void 0:s.sid,participant:(a=(r=this.latestJoinResponse)===null||r===void 0?void 0:r.participant)===null||a===void 0?void 0:a.identity,pID:(c=(o=this.latestJoinResponse)===null||o===void 0?void 0:o.participant)===null||c===void 0?void 0:c.sid}}join(e,t,i,s){return g(this,void 0,void 0,function*(){this.url=e,this.token=t,this.signalOpts=i,this.maxJoinAttempts=i.maxRetries;try{this.joinAttempts+=1,this.setupSignalClientCallbacks();const r=yield this.client.join(e,t,i,s);return this._isClosed=!1,this.latestJoinResponse=r,this.subscriberPrimary=r.subscriberPrimary,this.pcManager||(yield this.configure(r)),(!this.subscriberPrimary||r.fastPublish)&&this.negotiate(),this.clientConfiguration=r.clientConfiguration,r}catch(r){if(r instanceof re&&r.reason===te.ServerUnreachable&&(this.log.warn("Couldn't connect to server, attempt ".concat(this.joinAttempts," of ").concat(this.maxJoinAttempts),this.logContext),this.joinAttempts<this.maxJoinAttempts))return this.join(e,t,i,s);throw r}})}close(){return g(this,void 0,void 0,function*(){const e=yield this.closingLock.lock();if(this.isClosed){e();return}try{this._isClosed=!0,this.joinAttempts=0,this.emit(j.Closing),this.removeAllListeners(),this.deregisterOnLineListener(),this.clearPendingReconnect(),yield this.cleanupPeerConnections(),yield this.cleanupClient()}finally{e()}})}cleanupPeerConnections(){return g(this,void 0,void 0,function*(){var e;yield(e=this.pcManager)===null||e===void 0?void 0:e.close(),this.pcManager=void 0;const t=i=>{i&&(i.close(),i.onbufferedamountlow=null,i.onclose=null,i.onclosing=null,i.onerror=null,i.onmessage=null,i.onopen=null)};t(this.lossyDC),t(this.lossyDCSub),t(this.reliableDC),t(this.reliableDCSub),this.lossyDC=void 0,this.lossyDCSub=void 0,this.reliableDC=void 0,this.reliableDCSub=void 0})}cleanupClient(){return g(this,void 0,void 0,function*(){yield this.client.close(),this.client.resetCallbacks()})}addTrack(e){if(this.pendingTrackResolvers[e.cid])throw new it("a track with the same ID has already been published");return new Promise((t,i)=>{const s=setTimeout(()=>{delete this.pendingTrackResolvers[e.cid],i(new re("publication of local track timed out, no response from server",te.InternalError))},1e4);this.pendingTrackResolvers[e.cid]={resolve:r=>{clearTimeout(s),t(r)},reject:()=>{clearTimeout(s),i(new Error("Cancelled publication by calling unpublish"))}},this.client.sendAddTrack(e)})}removeTrack(e){if(e.track&&this.pendingTrackResolvers[e.track.id]){const{reject:t}=this.pendingTrackResolvers[e.track.id];t&&t(),delete this.pendingTrackResolvers[e.track.id]}try{return this.pcManager.removeTrack(e),!0}catch(t){this.log.warn("failed to remove track",Object.assign(Object.assign({},this.logContext),{error:t}))}return!1}updateMuteStatus(e,t){this.client.sendMuteTrack(e,t)}get dataSubscriberReadyState(){var e;return(e=this.reliableDCSub)===null||e===void 0?void 0:e.readyState}getConnectedServerAddress(){return g(this,void 0,void 0,function*(){var e;return(e=this.pcManager)===null||e===void 0?void 0:e.getConnectedAddress()})}setRegionUrlProvider(e){this.regionUrlProvider=e}configure(e){return g(this,void 0,void 0,function*(){var t,i;if(this.pcManager&&this.pcManager.currentState!==pe.NEW)return;this.participantSid=(t=e.participant)===null||t===void 0?void 0:t.sid;const s=this.makeRTCConfiguration(e);this.pcManager=new jh(s,e.subscriberPrimary,this.loggerOptions),this.emit(j.TransportsCreated,this.pcManager.publisher,this.pcManager.subscriber),this.pcManager.onIceCandidate=(r,a)=>{this.client.sendIceCandidate(r,a)},this.pcManager.onPublisherOffer=r=>{this.client.sendOffer(r)},this.pcManager.onDataChannel=this.handleDataChannel,this.pcManager.onStateChange=(r,a,o)=>g(this,void 0,void 0,function*(){if(this.log.debug("primary PC state changed ".concat(r),this.logContext),["closed","disconnected","failed"].includes(a)&&(this.publisherConnectionPromise=void 0),r===pe.CONNECTED){const d=this.pcState===qe.New;this.pcState=qe.Connected,d&&this.emit(j.Connected,e)}else r===pe.FAILED&&this.pcState===qe.Connected&&(this.pcState=qe.Disconnected,this.handleDisconnect("peerconnection failed",o==="failed"?At.RR_SUBSCRIBER_FAILED:At.RR_PUBLISHER_FAILED));const c=this.client.isDisconnected||this.client.currentState===ce.RECONNECTING,l=[pe.FAILED,pe.CLOSING,pe.CLOSED].includes(r);c&&l&&!this._isClosed&&this.emit(j.Offline)}),this.pcManager.onTrack=r=>{this.emit(j.MediaTrackAdded,r.track,r.streams[0],r.receiver)},Zh((i=e.serverInfo)===null||i===void 0?void 0:i.protocol)||this.createDataChannels()})}setupSignalClientCallbacks(){this.client.onAnswer=e=>g(this,void 0,void 0,function*(){this.pcManager&&(this.log.debug("received server answer",Object.assign(Object.assign({},this.logContext),{RTCSdpType:e.type})),yield this.pcManager.setPublisherAnswer(e))}),this.client.onTrickle=(e,t)=>{this.pcManager&&(this.log.trace("got ICE candidate from peer",Object.assign(Object.assign({},this.logContext),{candidate:e,target:t})),this.pcManager.addIceCandidate(e,t))},this.client.onOffer=e=>g(this,void 0,void 0,function*(){if(!this.pcManager)return;const t=yield this.pcManager.createSubscriberAnswerFromOffer(e);this.client.sendAnswer(t)}),this.client.onLocalTrackPublished=e=>{var t;if(this.log.debug("received trackPublishedResponse",Object.assign(Object.assign({},this.logContext),{cid:e.cid,track:(t=e.track)===null||t===void 0?void 0:t.sid})),!this.pendingTrackResolvers[e.cid]){this.log.error("missing track resolver for ".concat(e.cid),Object.assign(Object.assign({},this.logContext),{cid:e.cid}));return}const{resolve:i}=this.pendingTrackResolvers[e.cid];delete this.pendingTrackResolvers[e.cid],i(e.track)},this.client.onLocalTrackUnpublished=e=>{this.emit(j.LocalTrackUnpublished,e)},this.client.onLocalTrackSubscribed=e=>{this.emit(j.LocalTrackSubscribed,e)},this.client.onTokenRefresh=e=>{this.token=e},this.client.onRemoteMuteChanged=(e,t)=>{this.emit(j.RemoteMute,e,t)},this.client.onSubscribedQualityUpdate=e=>{this.emit(j.SubscribedQualityUpdate,e)},this.client.onClose=()=>{this.handleDisconnect("signal",At.RR_SIGNAL_DISCONNECTED)},this.client.onLeave=e=>{switch(this.log.debug("client leave request",Object.assign(Object.assign({},this.logContext),{reason:e==null?void 0:e.reason})),e.regions&&this.regionUrlProvider&&(this.log.debug("updating regions",this.logContext),this.regionUrlProvider.setServerReportedRegions(e.regions)),e.action){case jt.DISCONNECT:this.emit(j.Disconnected,e==null?void 0:e.reason),this.close();break;case jt.RECONNECT:this.fullReconnectOnNext=!0,this.handleDisconnect(Nn);break;case jt.RESUME:this.handleDisconnect(Nn)}}}makeRTCConfiguration(e){var t;const i=Object.assign({},this.rtcConfig);if(!((t=this.signalOpts)===null||t===void 0)&&t.e2eeEnabled&&(this.log.debug("E2EE - setting up transports with insertable streams",this.logContext),i.encodedInsertableStreams=!0),e.iceServers&&!i.iceServers){const s=[];e.iceServers.forEach(r=>{const a={urls:r.urls};r.username&&(a.username=r.username),r.credential&&(a.credential=r.credential),s.push(a)}),i.iceServers=s}return e.clientConfiguration&&e.clientConfiguration.forceRelay===pi.ENABLED&&(i.iceTransportPolicy="relay"),i.sdpSemantics="unified-plan",i.continualGatheringPolicy="gather_continually",i}createDataChannels(){this.pcManager&&(this.lossyDC&&(this.lossyDC.onmessage=null,this.lossyDC.onerror=null),this.reliableDC&&(this.reliableDC.onmessage=null,this.reliableDC.onerror=null),this.lossyDC=this.pcManager.createPublisherDataChannel(ia,{ordered:!0,maxRetransmits:0}),this.reliableDC=this.pcManager.createPublisherDataChannel(na,{ordered:!0}),this.lossyDC.onmessage=this.handleDataMessage,this.reliableDC.onmessage=this.handleDataMessage,this.lossyDC.onerror=this.handleDataError,this.reliableDC.onerror=this.handleDataError,this.lossyDC.bufferedAmountLowThreshold=65535,this.reliableDC.bufferedAmountLowThreshold=65535,this.lossyDC.onbufferedamountlow=this.handleBufferedAmountLow,this.reliableDC.onbufferedamountlow=this.handleBufferedAmountLow)}createSender(e,t,i){return g(this,void 0,void 0,function*(){if(ts())return yield this.createTransceiverRTCRtpSender(e,t,i);if(is())return this.log.warn("using add-track fallback",this.logContext),yield this.createRTCRtpSender(e.mediaStreamTrack);throw new ye("Required webRTC APIs not supported on this device")})}createSimulcastSender(e,t,i,s){return g(this,void 0,void 0,function*(){if(ts())return this.createSimulcastTransceiverSender(e,t,i,s);if(is())return this.log.debug("using add-track fallback",this.logContext),this.createRTCRtpSender(e.mediaStreamTrack);throw new ye("Cannot stream on this device")})}createTransceiverRTCRtpSender(e,t,i){return g(this,void 0,void 0,function*(){if(!this.pcManager)throw new ye("publisher is closed");const s=[];e.mediaStream&&s.push(e.mediaStream),e instanceof we&&(e.codec=t.videoCodec);const r={direction:"sendonly",streams:s};return i&&(r.sendEncodings=i),(yield this.pcManager.addPublisherTransceiver(e.mediaStreamTrack,r)).sender})}createSimulcastTransceiverSender(e,t,i,s){return g(this,void 0,void 0,function*(){if(!this.pcManager)throw new ye("publisher is closed");const r={direction:"sendonly"};s&&(r.sendEncodings=s);const a=yield this.pcManager.addPublisherTransceiver(t.mediaStreamTrack,r);if(i.videoCodec)return e.setSimulcastTrackSender(i.videoCodec,a.sender),a.sender})}createRTCRtpSender(e){return g(this,void 0,void 0,function*(){if(!this.pcManager)throw new ye("publisher is closed");return this.pcManager.addPublisherTrack(e)})}attemptReconnect(e){return g(this,void 0,void 0,function*(){var t,i,s;if(!this._isClosed){if(this.attemptingReconnect){Z.warn("already attempting reconnect, returning early",this.logContext);return}(((t=this.clientConfiguration)===null||t===void 0?void 0:t.resumeConnection)===pi.DISABLED||((s=(i=this.pcManager)===null||i===void 0?void 0:i.currentState)!==null&&s!==void 0?s:pe.NEW)===pe.NEW)&&(this.fullReconnectOnNext=!0);try{this.attemptingReconnect=!0,this.fullReconnectOnNext?yield this.restartConnection():yield this.resumeConnection(e),this.clearPendingReconnect(),this.fullReconnectOnNext=!1}catch(r){this.reconnectAttempts+=1;let a=!0;r instanceof ye?(this.log.debug("received unrecoverable error",Object.assign(Object.assign({},this.logContext),{error:r})),a=!1):r instanceof Nt||(this.fullReconnectOnNext=!0),a?this.handleDisconnect("reconnect",At.RR_UNKNOWN):(this.log.info("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(Date.now()-this.reconnectStart,"ms. giving up"),this.logContext),this.emit(j.Disconnected),yield this.close())}finally{this.attemptingReconnect=!1}}})}getNextRetryDelay(e){try{return this.reconnectPolicy.nextRetryDelayInMs(e)}catch(t){this.log.warn("encountered error in reconnect policy",Object.assign(Object.assign({},this.logContext),{error:t}))}return null}restartConnection(e){return g(this,void 0,void 0,function*(){var t,i,s;try{if(!this.url||!this.token)throw new ye("could not reconnect, url or token not saved");this.log.info("reconnecting, attempt: ".concat(this.reconnectAttempts),this.logContext),this.emit(j.Restarting),this.client.isDisconnected||(yield this.client.sendLeave()),yield this.cleanupPeerConnections(),yield this.cleanupClient();let r;try{if(!this.signalOpts)throw this.log.warn("attempted connection restart, without signal options present",this.logContext),new Nt;r=yield this.join(e??this.url,this.token,this.signalOpts)}catch(a){throw a instanceof re&&a.reason===te.NotAllowed?new ye("could not reconnect, token might be expired"):new Nt}if(this.shouldFailNext)throw this.shouldFailNext=!1,new Error("simulated failure");if(this.client.setReconnected(),this.emit(j.SignalRestarted,r),yield this.waitForPCReconnected(),this.client.currentState!==ce.CONNECTED)throw new Nt("Signal connection got severed during reconnect");(t=this.regionUrlProvider)===null||t===void 0||t.resetAttempts(),this.emit(j.Restarted)}catch(r){const a=yield(i=this.regionUrlProvider)===null||i===void 0?void 0:i.getNextBestRegionUrl();if(a){yield this.restartConnection(a);return}else throw(s=this.regionUrlProvider)===null||s===void 0||s.resetAttempts(),r}})}resumeConnection(e){return g(this,void 0,void 0,function*(){var t;if(!this.url||!this.token)throw new ye("could not reconnect, url or token not saved");if(!this.pcManager)throw new ye("publisher and subscriber connections unset");this.log.info("resuming signal connection, attempt ".concat(this.reconnectAttempts),this.logContext),this.emit(j.Resuming);let i;try{this.setupSignalClientCallbacks(),i=yield this.client.reconnect(this.url,this.token,this.participantSid,e)}catch(s){let r="";throw s instanceof Error&&(r=s.message,this.log.error(s.message,Object.assign(Object.assign({},this.logContext),{error:s}))),s instanceof re&&s.reason===te.NotAllowed?new ye("could not reconnect, token might be expired"):s instanceof re&&s.reason===te.LeaveRequest?s:new Nt(r)}if(this.emit(j.SignalResumed),i){const s=this.makeRTCConfiguration(i);this.pcManager.updateConfiguration(s)}else this.log.warn("Did not receive reconnect response",this.logContext);if(this.shouldFailNext)throw this.shouldFailNext=!1,new Error("simulated failure");if(yield this.pcManager.triggerIceRestart(),yield this.waitForPCReconnected(),this.client.currentState!==ce.CONNECTED)throw new Nt("Signal connection got severed during reconnect");this.client.setReconnected(),((t=this.reliableDC)===null||t===void 0?void 0:t.readyState)==="open"&&this.reliableDC.id===null&&this.createDataChannels(),this.emit(j.Resumed)})}waitForPCInitialConnection(e,t){return g(this,void 0,void 0,function*(){if(!this.pcManager)throw new ye("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(t,e)})}waitForPCReconnected(){return g(this,void 0,void 0,function*(){this.pcState=qe.Reconnecting,this.log.debug("waiting for peer connection to reconnect",this.logContext);try{if(yield He(Yh),!this.pcManager)throw new ye("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(void 0,this.peerConnectionTimeout),this.pcState=qe.Connected}catch(e){throw this.pcState=qe.Disconnected,new re("could not establish PC connection, ".concat(e.message),te.InternalError)}})}sendDataPacket(e,t){return g(this,void 0,void 0,function*(){const i=e.toBinary();yield this.ensurePublisherConnected(t);const s=this.dataChannelForKind(t);s&&s.send(i),this.updateAndEmitDCBufferStatus(t)})}ensureDataTransportConnected(e){return g(this,arguments,void 0,function(t){var i=this;let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.subscriberPrimary;return function*(){var r;if(!i.pcManager)throw new ye("PC manager is closed");const a=s?i.pcManager.subscriber:i.pcManager.publisher,o=s?"Subscriber":"Publisher";if(!a)throw new re("".concat(o," connection not set"),te.InternalError);let c=!1;!s&&!i.dataChannelForKind(t,s)&&(i.createDataChannels(),c=!0),!c&&!s&&!i.pcManager.publisher.isICEConnected&&i.pcManager.publisher.getICEConnectionState()!=="checking"&&(c=!0),c&&i.negotiate();const l=i.dataChannelForKind(t,s);if((l==null?void 0:l.readyState)==="open")return;const d=new Date().getTime()+i.peerConnectionTimeout;for(;new Date().getTime()<d;){if(a.isICEConnected&&((r=i.dataChannelForKind(t,s))===null||r===void 0?void 0:r.readyState)==="open")return;yield He(50)}throw new re("could not establish ".concat(o," connection, state: ").concat(a.getICEConnectionState()),te.InternalError)}()})}ensurePublisherConnected(e){return g(this,void 0,void 0,function*(){this.publisherConnectionPromise||(this.publisherConnectionPromise=this.ensureDataTransportConnected(e,!1)),yield this.publisherConnectionPromise})}verifyTransport(){return!(!this.pcManager||this.pcManager.currentState!==pe.CONNECTED||!this.client.ws||this.client.ws.readyState===WebSocket.CLOSED)}negotiate(){return g(this,void 0,void 0,function*(){return new Promise((e,t)=>g(this,void 0,void 0,function*(){if(!this.pcManager){t(new Yn("PC manager is closed"));return}this.pcManager.requirePublisher(),this.pcManager.publisher.getTransceivers().length==0&&!this.lossyDC&&!this.reliableDC&&this.createDataChannels();const i=new AbortController,s=()=>{i.abort(),this.log.debug("engine disconnected while negotiation was ongoing",this.logContext),e()};this.isClosed&&t("cannot negotiate on closed engine"),this.on(j.Closing,s),this.pcManager.publisher.once(Kt.RTPVideoPayloadTypes,r=>{const a=new Map;r.forEach(o=>{const c=o.codec.toLowerCase();Th(c)&&a.set(o.payload,c)}),this.emit(j.RTPVideoMapUpdate,a)});try{yield this.pcManager.negotiate(i),e()}catch(r){r instanceof Yn&&(this.fullReconnectOnNext=!0),this.handleDisconnect("negotiation",At.RR_UNKNOWN),t(r)}finally{this.off(j.Closing,s)}}))})}dataChannelForKind(e,t){if(t){if(e===ae.LOSSY)return this.lossyDCSub;if(e===ae.RELIABLE)return this.reliableDCSub}else{if(e===ae.LOSSY)return this.lossyDC;if(e===ae.RELIABLE)return this.reliableDC}}sendSyncState(e,t){var i,s;if(!this.pcManager){this.log.warn("sync state cannot be sent without peer connection setup",this.logContext);return}const r=this.pcManager.subscriber.getLocalDescription(),a=this.pcManager.subscriber.getRemoteDescription(),o=(s=(i=this.signalOpts)===null||i===void 0?void 0:i.autoSubscribe)!==null&&s!==void 0?s:!0,c=new Array,l=new Array;e.forEach(d=>{d.isDesired!==o&&c.push(d.trackSid),d.isEnabled||l.push(d.trackSid)}),this.client.sendSyncState(new Za({answer:r?Ji({sdp:r.sdp,type:r.type}):void 0,offer:a?Ji({sdp:a.sdp,type:a.type}):void 0,subscription:new Zi({trackSids:c,subscribe:!o,participantTracks:[]}),publishTracks:ch(t),dataChannels:this.dataChannelsInfo(),trackSidsDisabled:l}))}failNext(){this.shouldFailNext=!0}dataChannelsInfo(){const e=[],t=(i,s)=>{(i==null?void 0:i.id)!==void 0&&i.id!==null&&e.push(new eo({label:i.label,id:i.id,target:s}))};return t(this.dataChannelForKind(ae.LOSSY),We.PUBLISHER),t(this.dataChannelForKind(ae.RELIABLE),We.PUBLISHER),t(this.dataChannelForKind(ae.LOSSY,!0),We.SUBSCRIBER),t(this.dataChannelForKind(ae.RELIABLE,!0),We.SUBSCRIBER),e}clearReconnectTimeout(){this.reconnectTimeout&&Ee.clearTimeout(this.reconnectTimeout)}clearPendingReconnect(){this.clearReconnectTimeout(),this.reconnectAttempts=0}registerOnLineListener(){Le()&&window.addEventListener("online",this.handleBrowserOnLine)}deregisterOnLineListener(){Le()&&window.removeEventListener("online",this.handleBrowserOnLine)}}class Nt extends Error{}function Zh(n){return n!==void 0&&n>13}function ef(n,e){const t=n.participantIdentity?n.participantIdentity:e.participantIdentity;n.participantIdentity=t,e.participantIdentity=t;const i=n.destinationIdentities.length!==0?n.destinationIdentities:e.destinationIdentities;n.destinationIdentities=i,e.destinationIdentities=i}class sa{constructor(e,t){this.lastUpdateAt=0,this.settingsCacheTime=3e3,this.attemptedRegions=[],this.serverUrl=new URL(e),this.token=t}updateToken(e){this.token=e}isCloud(){return ss(this.serverUrl)}getServerUrl(){return this.serverUrl}getNextBestRegionUrl(e){return g(this,void 0,void 0,function*(){if(!this.isCloud())throw Error("region availability is only supported for LiveKit Cloud domains");(!this.regionSettings||Date.now()-this.lastUpdateAt>this.settingsCacheTime)&&(this.regionSettings=yield this.fetchRegionSettings(e));const t=this.regionSettings.regions.filter(i=>!this.attemptedRegions.find(s=>s.url===i.url));if(t.length>0){const i=t[0];return this.attemptedRegions.push(i),Z.debug("next region: ".concat(i.region)),i.url}else return null})}resetAttempts(){this.attemptedRegions=[]}fetchRegionSettings(e){return g(this,void 0,void 0,function*(){const t=yield fetch("".concat(tf(this.serverUrl),"/regions"),{headers:{authorization:"Bearer ".concat(this.token)},signal:e});if(t.ok){const i=yield t.json();return this.lastUpdateAt=Date.now(),i}else throw new re("Could not fetch region settings: ".concat(t.statusText),t.status===401?te.NotAllowed:te.InternalError,t.status)})}setServerReportedRegions(e){this.regionSettings=e,this.lastUpdateAt=Date.now()}}function tf(n){return"".concat(n.protocol.replace("ws","http"),"//").concat(n.host,"/settings")}class fe extends Error{constructor(e,t,i){super(t),this.code=e,this.message=aa(t,fe.MAX_MESSAGE_BYTES),this.data=i?aa(i,fe.MAX_DATA_BYTES):void 0}static fromProto(e){return new fe(e.code,e.message,e.data)}toProto(){return new Ba({code:this.code,message:this.message,data:this.data})}static builtIn(e,t){return new fe(fe.ErrorCode[e],fe.ErrorMessage[e],t)}}fe.MAX_MESSAGE_BYTES=256;fe.MAX_DATA_BYTES=15360;fe.ErrorCode={APPLICATION_ERROR:1500,CONNECTION_TIMEOUT:1501,RESPONSE_TIMEOUT:1502,RECIPIENT_DISCONNECTED:1503,RESPONSE_PAYLOAD_TOO_LARGE:1504,SEND_FAILED:1505,UNSUPPORTED_METHOD:1400,RECIPIENT_NOT_FOUND:1401,REQUEST_PAYLOAD_TOO_LARGE:1402,UNSUPPORTED_SERVER:1403,UNSUPPORTED_VERSION:1404};fe.ErrorMessage={APPLICATION_ERROR:"Application error in method handler",CONNECTION_TIMEOUT:"Connection timeout",RESPONSE_TIMEOUT:"Response timeout",RECIPIENT_DISCONNECTED:"Recipient disconnected",RESPONSE_PAYLOAD_TOO_LARGE:"Response payload too large",SEND_FAILED:"Failed to send",UNSUPPORTED_METHOD:"Method not supported at destination",RECIPIENT_NOT_FOUND:"Recipient not found",REQUEST_PAYLOAD_TOO_LARGE:"Request payload too large",UNSUPPORTED_SERVER:"RPC not supported by server",UNSUPPORTED_VERSION:"Unsupported RPC version"};const ra=15360;function cs(n){return new TextEncoder().encode(n).length}function aa(n,e){if(cs(n)<=e)return n;let t=0,i=n.length;const s=new TextEncoder;for(;t<i;){const r=Math.floor((t+i+1)/2);s.encode(n.slice(0,r)).length<=e?t=r:i=r-1}return n.slice(0,t)}class Jo extends E{constructor(e,t,i,s,r){super(e,i,r),this.sid=t,this.receiver=s}setMuted(e){this.isMuted!==e&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?N.Muted:N.Unmuted,this))}setMediaStream(e){this.mediaStream=e;const t=i=>{i.track===this._mediaStreamTrack&&(e.removeEventListener("removetrack",t),this.receiver&&"playoutDelayHint"in this.receiver&&(this.receiver.playoutDelayHint=void 0),this.receiver=void 0,this._currentBitrate=0,this.emit(N.Ended,this))};e.addEventListener("removetrack",t)}start(){this.startMonitor(),super.enable()}stop(){this.stopMonitor(),super.disable()}getRTCStatsReport(){return g(this,void 0,void 0,function*(){var e;return!((e=this.receiver)===null||e===void 0)&&e.getStats?yield this.receiver.getStats():void 0})}setPlayoutDelay(e){this.receiver?"playoutDelayHint"in this.receiver?this.receiver.playoutDelayHint=e:this.log.warn("Playout delay not supported in this browser"):this.log.warn("Cannot set playout delay, track already ended")}getPlayoutDelay(){if(this.receiver){if("playoutDelayHint"in this.receiver)return this.receiver.playoutDelayHint;this.log.warn("Playout delay not supported in this browser")}else this.log.warn("Cannot get playout delay, track already ended");return 0}startMonitor(){this.monitorInterval||(this.monitorInterval=setInterval(()=>this.monitorReceiver(),Es)),lh()&&this.registerTimeSyncUpdate()}registerTimeSyncUpdate(){const e=()=>{var t;this.timeSyncHandle=requestAnimationFrame(()=>e());const i=(t=this.receiver)===null||t===void 0?void 0:t.getSynchronizationSources()[0];if(i){const{timestamp:s,rtpTimestamp:r}=i;r&&this.rtpTimestamp!==r&&(this.emit(N.TimeSyncUpdate,{timestamp:s,rtpTimestamp:r}),this.rtpTimestamp=r)}};e()}}class hi extends Jo{constructor(e,t,i,s,r,a){super(e,t,E.Kind.Audio,i,a),this.monitorReceiver=()=>g(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}const o=yield this.getReceiverStats();o&&this.prevStats&&this.receiver&&(this._currentBitrate=sn(o,this.prevStats)),this.prevStats=o}),this.audioContext=s,this.webAudioPluginNodes=[],r&&(this.sinkId=r.deviceId)}setVolume(e){var t;for(const i of this.attachedElements)this.audioContext?(t=this.gainNode)===null||t===void 0||t.gain.setTargetAtTime(e,0,.1):i.volume=e;ht()&&this._mediaStreamTrack._setVolume(e),this.elementVolume=e}getVolume(){if(this.elementVolume)return this.elementVolume;if(ht())return 1;let e=0;return this.attachedElements.forEach(t=>{t.volume>e&&(e=t.volume)}),e}setSinkId(e){return g(this,void 0,void 0,function*(){this.sinkId=e,yield Promise.all(this.attachedElements.map(t=>{if(ns(t))return t.setSinkId(e)}))})}attach(e){const t=this.attachedElements.length===0;return e?super.attach(e):e=super.attach(),this.sinkId&&ns(e)&&e.setSinkId(this.sinkId),this.audioContext&&t&&(this.log.debug("using audio context mapping",this.logContext),this.connectWebAudio(this.audioContext,e),e.volume=0,e.muted=!0),this.elementVolume&&this.setVolume(this.elementVolume),e}detach(e){let t;return e?(t=super.detach(e),this.audioContext&&(this.attachedElements.length>0?this.connectWebAudio(this.audioContext,this.attachedElements[0]):this.disconnectWebAudio())):(t=super.detach(),this.disconnectWebAudio()),t}setAudioContext(e){this.audioContext=e,e&&this.attachedElements.length>0?this.connectWebAudio(e,this.attachedElements[0]):e||this.disconnectWebAudio()}setWebAudioPlugins(e){this.webAudioPluginNodes=e,this.attachedElements.length>0&&this.audioContext&&this.connectWebAudio(this.audioContext,this.attachedElements[0])}connectWebAudio(e,t){this.disconnectWebAudio(),this.sourceNode=e.createMediaStreamSource(t.srcObject);let i=this.sourceNode;this.webAudioPluginNodes.forEach(s=>{i.connect(s),i=s}),this.gainNode=e.createGain(),i.connect(this.gainNode),this.gainNode.connect(e.destination),this.elementVolume&&this.gainNode.gain.setTargetAtTime(this.elementVolume,0,.1),e.state!=="running"&&e.resume().then(()=>{e.state!=="running"&&this.emit(N.AudioPlaybackFailed,new Error("Audio Context couldn't be started automatically"))}).catch(s=>{this.emit(N.AudioPlaybackFailed,s)})}disconnectWebAudio(){var e,t;(e=this.gainNode)===null||e===void 0||e.disconnect(),(t=this.sourceNode)===null||t===void 0||t.disconnect(),this.gainNode=void 0,this.sourceNode=void 0}getReceiverStats(){return g(this,void 0,void 0,function*(){if(!this.receiver||!this.receiver.getStats)return;const e=yield this.receiver.getStats();let t;return e.forEach(i=>{i.type==="inbound-rtp"&&(t={type:"audio",timestamp:i.timestamp,jitter:i.jitter,bytesReceived:i.bytesReceived,concealedSamples:i.concealedSamples,concealmentEvents:i.concealmentEvents,silentConcealedSamples:i.silentConcealedSamples,silentConcealmentEvents:i.silentConcealmentEvents,totalAudioEnergy:i.totalAudioEnergy,totalSamplesDuration:i.totalSamplesDuration})}),t})}}const Ln=100;class fi extends Jo{constructor(e,t,i,s,r){super(e,t,E.Kind.Video,i,r),this.elementInfos=[],this.monitorReceiver=()=>g(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}const a=yield this.getReceiverStats();a&&this.prevStats&&this.receiver&&(this._currentBitrate=sn(a,this.prevStats)),this.prevStats=a}),this.debouncedHandleResize=ks(()=>{this.updateDimensions()},Ln),this.adaptiveStreamSettings=s}get isAdaptiveStream(){return this.adaptiveStreamSettings!==void 0}get mediaStreamTrack(){return this._mediaStreamTrack}setMuted(e){super.setMuted(e),this.attachedElements.forEach(t=>{e?Vt(this._mediaStreamTrack,t):Ft(this._mediaStreamTrack,t)})}attach(e){if(e?super.attach(e):e=super.attach(),this.adaptiveStreamSettings&&this.elementInfos.find(t=>t.element===e)===void 0){const t=new nf(e);this.observeElementInfo(t)}return e}observeElementInfo(e){this.adaptiveStreamSettings&&this.elementInfos.find(t=>t===e)===void 0?(e.handleResize=()=>{this.debouncedHandleResize()},e.handleVisibilityChanged=()=>{this.updateVisibility()},this.elementInfos.push(e),e.observe(),this.debouncedHandleResize(),this.updateVisibility()):this.log.warn("visibility resize observer not triggered",this.logContext)}stopObservingElementInfo(e){if(!this.isAdaptiveStream){this.log.warn("stopObservingElementInfo ignored",this.logContext);return}const t=this.elementInfos.filter(i=>i===e);for(const i of t)i.stopObserving();this.elementInfos=this.elementInfos.filter(i=>i!==e),this.updateVisibility(),this.debouncedHandleResize()}detach(e){let t=[];if(e)return this.stopObservingElement(e),super.detach(e);t=super.detach();for(const i of t)this.stopObservingElement(i);return t}getDecoderImplementation(){var e;return(e=this.prevStats)===null||e===void 0?void 0:e.decoderImplementation}getReceiverStats(){return g(this,void 0,void 0,function*(){if(!this.receiver||!this.receiver.getStats)return;const e=yield this.receiver.getStats();let t,i="",s=new Map;return e.forEach(r=>{r.type==="inbound-rtp"?(i=r.codecId,t={type:"video",framesDecoded:r.framesDecoded,framesDropped:r.framesDropped,framesReceived:r.framesReceived,packetsReceived:r.packetsReceived,packetsLost:r.packetsLost,frameWidth:r.frameWidth,frameHeight:r.frameHeight,pliCount:r.pliCount,firCount:r.firCount,nackCount:r.nackCount,jitter:r.jitter,timestamp:r.timestamp,bytesReceived:r.bytesReceived,decoderImplementation:r.decoderImplementation}):r.type==="codec"&&s.set(r.id,r)}),t&&i!==""&&s.get(i)&&(t.mimeType=s.get(i).mimeType),t})}stopObservingElement(e){const t=this.elementInfos.filter(i=>i.element===e);for(const i of t)this.stopObservingElementInfo(i)}handleAppVisibilityChanged(){const e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return g(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),this.isAdaptiveStream&&this.updateVisibility()})}updateVisibility(){var e,t;const i=this.elementInfos.reduce((o,c)=>Math.max(o,c.visibilityChangedAt||0),0),s=!((t=(e=this.adaptiveStreamSettings)===null||e===void 0?void 0:e.pauseVideoInBackground)!==null&&t!==void 0)||t?this.isInBackground:!1,r=this.elementInfos.some(o=>o.pictureInPicture),a=this.elementInfos.some(o=>o.visible)&&!s||r;if(this.lastVisible!==a){if(!a&&Date.now()-i<Ln){Ee.setTimeout(()=>{this.updateVisibility()},Ln);return}this.lastVisible=a,this.emit(N.VisibilityChanged,a,this)}}updateDimensions(){var e,t;let i=0,s=0;const r=this.getPixelDensity();for(const a of this.elementInfos){const o=a.width()*r,c=a.height()*r;o+c>i+s&&(i=o,s=c)}((e=this.lastDimensions)===null||e===void 0?void 0:e.width)===i&&((t=this.lastDimensions)===null||t===void 0?void 0:t.height)===s||(this.lastDimensions={width:i,height:s},this.emit(N.VideoDimensionsChanged,this.lastDimensions,this))}getPixelDensity(){var e;const t=(e=this.adaptiveStreamSettings)===null||e===void 0?void 0:e.pixelDensity;return t==="screen"?Fr():t||(Fr()>2?2:1)}}class nf{get visible(){return this.isPiP||this.isIntersecting}get pictureInPicture(){return this.isPiP}constructor(e,t){this.onVisibilityChanged=i=>{var s;const{target:r,isIntersecting:a}=i;r===this.element&&(this.isIntersecting=a,this.isPiP=ni(this.element),this.visibilityChangedAt=Date.now(),(s=this.handleVisibilityChanged)===null||s===void 0||s.call(this))},this.onEnterPiP=()=>{var i,s,r;(s=(i=window.documentPictureInPicture)===null||i===void 0?void 0:i.window)===null||s===void 0||s.addEventListener("pagehide",this.onLeavePiP),this.isPiP=ni(this.element),(r=this.handleVisibilityChanged)===null||r===void 0||r.call(this)},this.onLeavePiP=()=>{var i;this.isPiP=ni(this.element),(i=this.handleVisibilityChanged)===null||i===void 0||i.call(this)},this.element=e,this.isIntersecting=t??ls(e),this.isPiP=Le()&&ni(e),this.visibilityChangedAt=0}width(){return this.element.clientWidth}height(){return this.element.clientHeight}observe(){var e,t,i;this.isIntersecting=ls(this.element),this.isPiP=ni(this.element),this.element.handleResize=()=>{var s;(s=this.handleResize)===null||s===void 0||s.call(this)},this.element.handleVisibilityChanged=this.onVisibilityChanged,Br().observe(this.element),jr().observe(this.element),this.element.addEventListener("enterpictureinpicture",this.onEnterPiP),this.element.addEventListener("leavepictureinpicture",this.onLeavePiP),(e=window.documentPictureInPicture)===null||e===void 0||e.addEventListener("enter",this.onEnterPiP),(i=(t=window.documentPictureInPicture)===null||t===void 0?void 0:t.window)===null||i===void 0||i.addEventListener("pagehide",this.onLeavePiP)}stopObserving(){var e,t,i,s,r;(e=Br())===null||e===void 0||e.unobserve(this.element),(t=jr())===null||t===void 0||t.unobserve(this.element),this.element.removeEventListener("enterpictureinpicture",this.onEnterPiP),this.element.removeEventListener("leavepictureinpicture",this.onLeavePiP),(i=window.documentPictureInPicture)===null||i===void 0||i.removeEventListener("enter",this.onEnterPiP),(r=(s=window.documentPictureInPicture)===null||s===void 0?void 0:s.window)===null||r===void 0||r.removeEventListener("pagehide",this.onLeavePiP)}}function ni(n){var e,t;return document.pictureInPictureElement===n?!0:!((e=window.documentPictureInPicture)===null||e===void 0)&&e.window?ls(n,(t=window.documentPictureInPicture)===null||t===void 0?void 0:t.window):!1}function ls(n,e){const t=e||window;let i=n.offsetTop,s=n.offsetLeft;const r=n.offsetWidth,a=n.offsetHeight,{hidden:o}=n,{display:c}=getComputedStyle(n);for(;n.offsetParent;)n=n.offsetParent,i+=n.offsetTop,s+=n.offsetLeft;return i<t.pageYOffset+t.innerHeight&&s<t.pageXOffset+t.innerWidth&&i+a>t.pageYOffset&&s+r>t.pageXOffset&&!o&&c!=="none"}class at extends nt.EventEmitter{constructor(e,t,i,s){var r;super(),this.metadataMuted=!1,this.encryption=Ae.NONE,this.log=Z,this.handleMuted=()=>{this.emit(N.Muted)},this.handleUnmuted=()=>{this.emit(N.Unmuted)},this.log=dt((r=s==null?void 0:s.loggerName)!==null&&r!==void 0?r:Je.Publication),this.loggerContextCb=this.loggerContextCb,this.setMaxListeners(100),this.kind=e,this.trackSid=t,this.trackName=i,this.source=E.Source.Unknown}setTrack(e){this.track&&(this.track.off(N.Muted,this.handleMuted),this.track.off(N.Unmuted,this.handleUnmuted)),this.track=e,e&&(e.on(N.Muted,this.handleMuted),e.on(N.Unmuted,this.handleUnmuted))}get logContext(){var e;return Object.assign(Object.assign({},(e=this.loggerContextCb)===null||e===void 0?void 0:e.call(this)),se(this))}get isMuted(){return this.metadataMuted}get isEnabled(){return!0}get isSubscribed(){return this.track!==void 0}get isEncrypted(){return this.encryption!==Ae.NONE}get audioTrack(){if(this.track instanceof Se||this.track instanceof hi)return this.track}get videoTrack(){if(this.track instanceof we||this.track instanceof fi)return this.track}updateInfo(e){this.trackSid=e.sid,this.trackName=e.name,this.source=E.sourceFromProto(e.source),this.mimeType=e.mimeType,this.kind===E.Kind.Video&&e.width>0&&(this.dimensions={width:e.width,height:e.height},this.simulcasted=e.simulcast),this.encryption=e.encryption,this.trackInfo=e,this.log.debug("update publication info",Object.assign(Object.assign({},this.logContext),{info:e}))}}(function(n){(function(e){e.Desired="desired",e.Subscribed="subscribed",e.Unsubscribed="unsubscribed"})(n.SubscriptionStatus||(n.SubscriptionStatus={})),function(e){e.Allowed="allowed",e.NotAllowed="not_allowed"}(n.PermissionStatus||(n.PermissionStatus={}))})(at||(at={}));class $i extends at{get isUpstreamPaused(){var e;return(e=this.track)===null||e===void 0?void 0:e.isUpstreamPaused}constructor(e,t,i,s){super(e,t.sid,t.name,s),this.track=void 0,this.handleTrackEnded=()=>{this.emit(N.Ended)},this.updateInfo(t),this.setTrack(i)}setTrack(e){this.track&&this.track.off(N.Ended,this.handleTrackEnded),super.setTrack(e),e&&e.on(N.Ended,this.handleTrackEnded)}get isMuted(){return this.track?this.track.isMuted:super.isMuted}get audioTrack(){return super.audioTrack}get videoTrack(){return super.videoTrack}mute(){return g(this,void 0,void 0,function*(){var e;return(e=this.track)===null||e===void 0?void 0:e.mute()})}unmute(){return g(this,void 0,void 0,function*(){var e;return(e=this.track)===null||e===void 0?void 0:e.unmute()})}pauseUpstream(){return g(this,void 0,void 0,function*(){var e;yield(e=this.track)===null||e===void 0?void 0:e.pauseUpstream()})}resumeUpstream(){return g(this,void 0,void 0,function*(){var e;yield(e=this.track)===null||e===void 0?void 0:e.resumeUpstream()})}getTrackFeatures(){var e;if(this.track instanceof Se){const t=this.track.getSourceTrackSettings(),i=new Set;return t.autoGainControl&&i.add(tt.TF_AUTO_GAIN_CONTROL),t.echoCancellation&&i.add(tt.TF_ECHO_CANCELLATION),t.noiseSuppression&&i.add(tt.TF_NOISE_SUPPRESSION),t.channelCount&&t.channelCount>1&&i.add(tt.TF_STEREO),!((e=this.options)===null||e===void 0)&&e.dtx||i.add(tt.TF_NO_DTX),this.track.enhancedNoiseCancellation&&i.add(tt.TF_ENHANCED_NOISE_CANCELLATION),Array.from(i.values())}else return[]}}var yt;(function(n){n.Excellent="excellent",n.Good="good",n.Poor="poor",n.Lost="lost",n.Unknown="unknown"})(yt||(yt={}));function sf(n){switch(n){case ri.EXCELLENT:return yt.Excellent;case ri.GOOD:return yt.Good;case ri.POOR:return yt.Poor;case ri.LOST:return yt.Lost;default:return yt.Unknown}}class $o extends nt.EventEmitter{get logContext(){var e,t;return Object.assign({},(t=(e=this.loggerOptions)===null||e===void 0?void 0:e.loggerContextCb)===null||t===void 0?void 0:t.call(e))}get isEncrypted(){return this.trackPublications.size>0&&Array.from(this.trackPublications.values()).every(e=>e.isEncrypted)}get isAgent(){var e;return((e=this.permissions)===null||e===void 0?void 0:e.agent)||this.kind===zi.AGENT}get kind(){return this._kind}get attributes(){return Object.freeze(Object.assign({},this._attributes))}constructor(e,t,i,s,r,a){let o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:zi.STANDARD;var c;super(),this.audioLevel=0,this.isSpeaking=!1,this._connectionQuality=yt.Unknown,this.log=Z,this.log=dt((c=a==null?void 0:a.loggerName)!==null&&c!==void 0?c:Je.Participant),this.loggerOptions=a,this.setMaxListeners(100),this.sid=e,this.identity=t,this.name=i,this.metadata=s,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this._kind=o,this._attributes=r??{}}getTrackPublications(){return Array.from(this.trackPublications.values())}getTrackPublication(e){for(const[,t]of this.trackPublications)if(t.source===e)return t}getTrackPublicationByName(e){for(const[,t]of this.trackPublications)if(t.trackName===e)return t}get connectionQuality(){return this._connectionQuality}get isCameraEnabled(){var e;const t=this.getTrackPublication(E.Source.Camera);return!(!((e=t==null?void 0:t.isMuted)!==null&&e!==void 0)||e)}get isMicrophoneEnabled(){var e;const t=this.getTrackPublication(E.Source.Microphone);return!(!((e=t==null?void 0:t.isMuted)!==null&&e!==void 0)||e)}get isScreenShareEnabled(){return!!this.getTrackPublication(E.Source.ScreenShare)}get isLocal(){return!1}get joinedAt(){return this.participantInfo?new Date(Number.parseInt(this.participantInfo.joinedAt.toString())*1e3):new Date}updateInfo(e){return this.participantInfo&&this.participantInfo.sid===e.sid&&this.participantInfo.version>e.version?!1:(this.identity=e.identity,this.sid=e.sid,this._setName(e.name),this._setMetadata(e.metadata),this._setAttributes(e.attributes),e.permission&&this.setPermissions(e.permission),this.participantInfo=e,this.log.trace("update participant info",Object.assign(Object.assign({},this.logContext),{info:e})),!0)}_setMetadata(e){const t=this.metadata!==e,i=this.metadata;this.metadata=e,t&&this.emit(L.ParticipantMetadataChanged,i)}_setName(e){const t=this.name!==e;this.name=e,t&&this.emit(L.ParticipantNameChanged,e)}_setAttributes(e){const t=dh(this.attributes,e);this._attributes=e,Object.keys(t).length>0&&this.emit(L.AttributesChanged,t)}setPermissions(e){var t,i,s,r,a,o;const c=this.permissions,l=e.canPublish!==((t=this.permissions)===null||t===void 0?void 0:t.canPublish)||e.canSubscribe!==((i=this.permissions)===null||i===void 0?void 0:i.canSubscribe)||e.canPublishData!==((s=this.permissions)===null||s===void 0?void 0:s.canPublishData)||e.hidden!==((r=this.permissions)===null||r===void 0?void 0:r.hidden)||e.recorder!==((a=this.permissions)===null||a===void 0?void 0:a.recorder)||e.canPublishSources.length!==this.permissions.canPublishSources.length||e.canPublishSources.some((d,f)=>{var p;return d!==((p=this.permissions)===null||p===void 0?void 0:p.canPublishSources[f])})||e.canSubscribeMetrics!==((o=this.permissions)===null||o===void 0?void 0:o.canSubscribeMetrics);return this.permissions=e,l&&this.emit(L.ParticipantPermissionsChanged,c),l}setIsSpeaking(e){e!==this.isSpeaking&&(this.isSpeaking=e,e&&(this.lastSpokeAt=new Date),this.emit(L.IsSpeakingChanged,e))}setConnectionQuality(e){const t=this._connectionQuality;this._connectionQuality=sf(e),t!==this._connectionQuality&&this.emit(L.ConnectionQualityChanged,this._connectionQuality)}setAudioContext(e){this.audioContext=e,this.audioTrackPublications.forEach(t=>(t.track instanceof hi||t.track instanceof Se)&&t.track.setAudioContext(e))}addTrackPublication(e){e.on(N.Muted,()=>{this.emit(L.TrackMuted,e)}),e.on(N.Unmuted,()=>{this.emit(L.TrackUnmuted,e)});const t=e;switch(t.track&&(t.track.sid=e.trackSid),this.trackPublications.set(e.trackSid,e),e.kind){case E.Kind.Audio:this.audioTrackPublications.set(e.trackSid,e);break;case E.Kind.Video:this.videoTrackPublications.set(e.trackSid,e);break}}}function rf(n){var e,t,i;if(!n.participantSid&&!n.participantIdentity)throw new Error("Invalid track permission, must provide at least one of participantIdentity and participantSid");return new Ya({participantIdentity:(e=n.participantIdentity)!==null&&e!==void 0?e:"",participantSid:(t=n.participantSid)!==null&&t!==void 0?t:"",allTracks:(i=n.allowAll)!==null&&i!==void 0?i:!1,trackSids:n.allowedTrackSids||[]})}class oa extends $o{constructor(e,t,i,s){super(e,t,void 0,void 0,void 0,{loggerName:s.loggerName,loggerContextCb:()=>this.engine.logContext}),this.pendingPublishing=new Set,this.pendingPublishPromises=new Map,this.participantTrackPermissions=[],this.allParticipantsAllowedToSubscribe=!0,this.encryptionType=Ae.NONE,this.enabledPublishVideoCodecs=[],this.rpcHandlers=new Map,this.pendingAcks=new Map,this.pendingResponses=new Map,this.handleReconnecting=()=>{this.reconnectFuture||(this.reconnectFuture=new Vo)},this.handleReconnected=()=>{var r,a;(a=(r=this.reconnectFuture)===null||r===void 0?void 0:r.resolve)===null||a===void 0||a.call(r),this.reconnectFuture=void 0,this.updateTrackSubscriptionPermissions()},this.handleDisconnected=()=>{var r,a;this.reconnectFuture&&(this.reconnectFuture.promise.catch(o=>this.log.warn(o.message,this.logContext)),(a=(r=this.reconnectFuture)===null||r===void 0?void 0:r.reject)===null||a===void 0||a.call(r,"Got disconnected during reconnection attempt"),this.reconnectFuture=void 0)},this.handleSignalRequestResponse=r=>{const{requestId:a,reason:o,message:c}=r,l=this.pendingSignalRequests.get(a);l&&(o!==io.OK&&l.reject(new Ar(c,o)),this.pendingSignalRequests.delete(a))},this.handleDataPacket=r=>{switch(r.value.case){case"rpcRequest":let a=r.value.value;this.handleIncomingRpcRequest(r.participantIdentity,a.id,a.method,a.payload,a.responseTimeoutMs,a.version);break;case"rpcResponse":let o=r.value.value,c=null,l=null;o.value.case==="payload"?c=o.value.value:o.value.case==="error"&&(l=fe.fromProto(o.value.value)),this.handleIncomingRpcResponse(o.requestId,c,l);break;case"rpcAck":let d=r.value.value;this.handleIncomingRpcAck(d.requestId);break}},this.updateTrackSubscriptionPermissions=()=>{this.log.debug("updating track subscription permissions",Object.assign(Object.assign({},this.logContext),{allParticipantsAllowed:this.allParticipantsAllowedToSubscribe,participantTrackPermissions:this.participantTrackPermissions})),this.engine.client.sendUpdateSubscriptionPermissions(this.allParticipantsAllowedToSubscribe,this.participantTrackPermissions.map(r=>rf(r)))},this.onTrackUnmuted=r=>{this.onTrackMuted(r,r.isUpstreamPaused)},this.onTrackMuted=(r,a)=>{if(a===void 0&&(a=!0),!r.sid){this.log.error("could not update mute status for unpublished track",Object.assign(Object.assign({},this.logContext),se(r)));return}this.engine.updateMuteStatus(r.sid,a)},this.onTrackUpstreamPaused=r=>{this.log.debug("upstream paused",Object.assign(Object.assign({},this.logContext),se(r))),this.onTrackMuted(r,!0)},this.onTrackUpstreamResumed=r=>{this.log.debug("upstream resumed",Object.assign(Object.assign({},this.logContext),se(r))),this.onTrackMuted(r,r.isMuted)},this.onTrackFeatureUpdate=r=>{const a=this.audioTrackPublications.get(r.sid);if(!a){this.log.warn("Could not update local audio track settings, missing publication for track ".concat(r.sid),this.logContext);return}this.engine.client.sendUpdateLocalAudioTrack(a.trackSid,a.getTrackFeatures())},this.handleSubscribedQualityUpdate=r=>g(this,void 0,void 0,function*(){var a,o,c,l,d,f;if(!(!((d=this.roomOptions)===null||d===void 0)&&d.dynacast))return;const p=this.videoTrackPublications.get(r.trackSid);if(!p){this.log.warn("received subscribed quality update for unknown track",Object.assign(Object.assign({},this.logContext),{trackSid:r.trackSid}));return}if(r.subscribedCodecs.length>0){if(!p.videoTrack)return;const _=yield p.videoTrack.setPublishingCodecs(r.subscribedCodecs);try{for(var m=!0,y=Lt(_),C;C=yield y.next(),a=C.done,!a;m=!0){l=C.value,m=!1;const b=l;nh(b)&&(this.log.debug("publish ".concat(b," for ").concat(p.videoTrack.sid),Object.assign(Object.assign({},this.logContext),se(p))),yield this.publishAdditionalCodecForTrack(p.videoTrack,b,p.options))}}catch(b){o={error:b}}finally{try{!m&&!a&&(c=y.return)&&(yield c.call(y))}finally{if(o)throw o.error}}}else r.subscribedQualities.length>0&&(yield(f=p.videoTrack)===null||f===void 0?void 0:f.setPublishingLayers(r.subscribedQualities))}),this.handleLocalTrackUnpublished=r=>{const a=this.trackPublications.get(r.trackSid);if(!a){this.log.warn("received unpublished event for unknown track",Object.assign(Object.assign({},this.logContext),{trackSid:r.trackSid}));return}this.unpublishTrack(a.track)},this.handleTrackEnded=r=>g(this,void 0,void 0,function*(){if(r.source===E.Source.ScreenShare||r.source===E.Source.ScreenShareAudio)this.log.debug("unpublishing local track due to TrackEnded",Object.assign(Object.assign({},this.logContext),se(r))),this.unpublishTrack(r);else if(r.isUserProvided)yield r.mute();else if(r instanceof Se||r instanceof we)try{if(Le())try{const a=yield navigator==null?void 0:navigator.permissions.query({name:r.source===E.Source.Camera?"camera":"microphone"});if(a&&a.state==="denied")throw this.log.warn("user has revoked access to ".concat(r.source),Object.assign(Object.assign({},this.logContext),se(r))),a.onchange=()=>{a.state!=="denied"&&(r.isMuted||r.restartTrack(),a.onchange=null)},new Error("GetUserMedia Permission denied")}catch{}r.isMuted||(this.log.debug("track ended, attempting to use a different device",Object.assign(Object.assign({},this.logContext),se(r))),r instanceof Se?yield r.restartTrack({deviceId:"default"}):yield r.restartTrack())}catch{this.log.warn("could not restart track, muting instead",Object.assign(Object.assign({},this.logContext),se(r))),yield r.mute()}}),this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this.engine=i,this.roomOptions=s,this.setupEngine(i),this.activeDeviceMap=new Map,this.pendingSignalRequests=new Map}get lastCameraError(){return this.cameraError}get lastMicrophoneError(){return this.microphoneError}get isE2EEEnabled(){return this.encryptionType!==Ae.NONE}getTrackPublication(e){const t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){const t=super.getTrackPublicationByName(e);if(t)return t}setupEngine(e){this.engine=e,this.engine.on(j.RemoteMute,(t,i)=>{const s=this.trackPublications.get(t);!s||!s.track||(i?s.mute():s.unmute())}),this.engine.on(j.Connected,this.handleReconnected).on(j.SignalRestarted,this.handleReconnected).on(j.SignalResumed,this.handleReconnected).on(j.Restarting,this.handleReconnecting).on(j.Resuming,this.handleReconnecting).on(j.LocalTrackUnpublished,this.handleLocalTrackUnpublished).on(j.SubscribedQualityUpdate,this.handleSubscribedQualityUpdate).on(j.Disconnected,this.handleDisconnected).on(j.SignalRequestResponse,this.handleSignalRequestResponse).on(j.DataPacketReceived,this.handleDataPacket)}setMetadata(e){return g(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({metadata:e})})}setName(e){return g(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({name:e})})}setAttributes(e){return g(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({attributes:e})})}requestMetadataUpdate(e){return g(this,arguments,void 0,function(t){var i=this;let{metadata:s,name:r,attributes:a}=t;return function*(){return new Promise((o,c)=>g(i,void 0,void 0,function*(){var l,d;try{let f=!1;const p=yield this.engine.client.sendUpdateLocalMetadata((l=s??this.metadata)!==null&&l!==void 0?l:"",(d=r??this.name)!==null&&d!==void 0?d:"",a),m=performance.now();for(this.pendingSignalRequests.set(p,{resolve:o,reject:y=>{c(y),f=!0},values:{name:r,metadata:s,attributes:a}});performance.now()-m<5e3&&!f;){if((!r||this.name===r)&&(!s||this.metadata===s)&&(!a||Object.entries(a).every(y=>{let[C,_]=y;return this.attributes[C]===_||_===""&&!this.attributes[C]}))){this.pendingSignalRequests.delete(p),o();return}yield He(50)}c(new Ar("Request to update local metadata timed out","TimeoutError"))}catch(f){f instanceof Error&&c(f)}}))}()})}setCameraEnabled(e,t,i){return this.setTrackEnabled(E.Source.Camera,e,t,i)}setMicrophoneEnabled(e,t,i){return this.setTrackEnabled(E.Source.Microphone,e,t,i)}setScreenShareEnabled(e,t,i){return this.setTrackEnabled(E.Source.ScreenShare,e,t,i)}setPermissions(e){const t=this.permissions,i=super.setPermissions(e);return i&&t&&this.emit(L.ParticipantPermissionsChanged,t),i}setE2EEEnabled(e){return g(this,void 0,void 0,function*(){this.encryptionType=e?Ae.GCM:Ae.NONE,yield this.republishAllTracks(void 0,!1)})}setTrackEnabled(e,t,i,s){return g(this,void 0,void 0,function*(){var r,a;this.log.debug("setTrackEnabled",Object.assign(Object.assign({},this.logContext),{source:e,enabled:t})),this.republishPromise&&(yield this.republishPromise);let o=this.getTrackPublication(e);if(t)if(o)yield o.unmute();else{let c;if(this.pendingPublishing.has(e)){const l=yield this.waitForPendingPublicationOfSource(e);return l||this.log.info("waiting for pending publication promise timed out",Object.assign(Object.assign({},this.logContext),{source:e})),yield l==null?void 0:l.unmute(),l}this.pendingPublishing.add(e);try{switch(e){case E.Source.Camera:c=yield this.createTracks({video:(r=i)!==null&&r!==void 0?r:!0});break;case E.Source.Microphone:c=yield this.createTracks({audio:(a=i)!==null&&a!==void 0?a:!0});break;case E.Source.ScreenShare:c=yield this.createScreenTracks(Object.assign({},i));break;default:throw new it(e)}const l=[];for(const f of c)this.log.info("publishing track",Object.assign(Object.assign({},this.logContext),se(f))),l.push(this.publishTrack(f,s));[o]=yield Promise.all(l)}catch(l){throw c==null||c.forEach(d=>{d.stop()}),l instanceof Error&&!(l instanceof it)&&this.emit(L.MediaDevicesError,l),l}finally{this.pendingPublishing.delete(e)}}else if(!(o!=null&&o.track)&&this.pendingPublishing.has(e)&&(o=yield this.waitForPendingPublicationOfSource(e),o||this.log.info("waiting for pending publication promise timed out",Object.assign(Object.assign({},this.logContext),{source:e}))),o&&o.track)if(e===E.Source.ScreenShare){o=yield this.unpublishTrack(o.track);const c=this.getTrackPublication(E.Source.ScreenShareAudio);c&&c.track&&this.unpublishTrack(c.track)}else yield o.mute();return o})}enableCameraAndMicrophone(){return g(this,void 0,void 0,function*(){if(!(this.pendingPublishing.has(E.Source.Camera)||this.pendingPublishing.has(E.Source.Microphone))){this.pendingPublishing.add(E.Source.Camera),this.pendingPublishing.add(E.Source.Microphone);try{const e=yield this.createTracks({audio:!0,video:!0});yield Promise.all(e.map(t=>this.publishTrack(t)))}finally{this.pendingPublishing.delete(E.Source.Camera),this.pendingPublishing.delete(E.Source.Microphone)}}})}createTracks(e){return g(this,void 0,void 0,function*(){var t,i;e??(e={});const{audioProcessor:s,videoProcessor:r,optionsWithoutProcessor:a}=Cs(e),o=Lo(a,(t=this.roomOptions)===null||t===void 0?void 0:t.audioCaptureDefaults,(i=this.roomOptions)===null||i===void 0?void 0:i.videoCaptureDefaults),c=nn(o);let l;try{l=yield navigator.mediaDevices.getUserMedia(c)}catch(d){throw d instanceof Error&&(c.audio&&(this.microphoneError=d),c.video&&(this.cameraError=d)),d}return c.audio&&(this.microphoneError=void 0,this.emit(L.AudioStreamAcquired)),c.video&&(this.cameraError=void 0),Promise.all(l.getTracks().map(d=>g(this,void 0,void 0,function*(){const f=d.kind==="audio";f?o.audio:o.video;let p;const m=f?c.audio:c.video;typeof m!="boolean"&&(p=m);const y=Wo(d,p,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});return y.kind===E.Kind.Video?y.source=E.Source.Camera:y.kind===E.Kind.Audio&&(y.source=E.Source.Microphone,y.setAudioContext(this.audioContext)),y.mediaStream=l,y instanceof Se&&s?yield y.setProcessor(s):y instanceof we&&r&&(yield y.setProcessor(r)),y})))})}createScreenTracks(e){return g(this,void 0,void 0,function*(){if(e===void 0&&(e={}),navigator.mediaDevices.getDisplayMedia===void 0)throw new ys("getDisplayMedia not supported");e.resolution===void 0&&!gh()&&(e.resolution=Ts.h1080fps30.resolution);const t=oh(e),i=yield navigator.mediaDevices.getDisplayMedia(t),s=i.getVideoTracks();if(s.length===0)throw new it("no video track found");const r=new we(s[0],void 0,!1,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});r.source=E.Source.ScreenShare,e.contentHint&&(r.mediaStreamTrack.contentHint=e.contentHint);const a=[r];if(i.getAudioTracks().length>0){this.emit(L.AudioStreamAcquired);const o=new Se(i.getAudioTracks()[0],void 0,!1,this.audioContext,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});o.source=E.Source.ScreenShareAudio,a.push(o)}return a})}publishTrack(e,t){return g(this,void 0,void 0,function*(){return this.publishOrRepublishTrack(e,t)})}publishOrRepublishTrack(e,t){return g(this,arguments,void 0,function(i,s){var r=this;let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return function*(){var o,c,l,d;i instanceof Se&&i.setAudioContext(r.audioContext),yield(o=r.reconnectFuture)===null||o===void 0?void 0:o.promise,r.republishPromise&&!a&&(yield r.republishPromise),i instanceof qt&&r.pendingPublishPromises.has(i)&&(yield r.pendingPublishPromises.get(i));let f;if(i instanceof MediaStreamTrack)f=i.getConstraints();else{f=i.constraints;let b;switch(i.source){case E.Source.Microphone:b="audioinput";break;case E.Source.Camera:b="videoinput"}b&&r.activeDeviceMap.has(b)&&(f=Object.assign(Object.assign({},f),{deviceId:r.activeDeviceMap.get(b)}))}if(i instanceof MediaStreamTrack)switch(i.kind){case"audio":i=new Se(i,f,!0,r.audioContext,{loggerName:r.roomOptions.loggerName,loggerContextCb:()=>r.logContext});break;case"video":i=new we(i,f,!0,{loggerName:r.roomOptions.loggerName,loggerContextCb:()=>r.logContext});break;default:throw new it("unsupported MediaStreamTrack kind ".concat(i.kind))}else i.updateLoggerOptions({loggerName:r.roomOptions.loggerName,loggerContextCb:()=>r.logContext});let p;if(r.trackPublications.forEach(b=>{b.track&&b.track===i&&(p=b)}),p)return r.log.warn("track has already been published, skipping",Object.assign(Object.assign({},r.logContext),se(p))),p;const m="channelCount"in i.mediaStreamTrack.getSettings()&&i.mediaStreamTrack.getSettings().channelCount===2||i.mediaStreamTrack.getConstraints().channelCount===2,y=(c=s==null?void 0:s.forceStereo)!==null&&c!==void 0?c:m;y&&(s||(s={}),s.dtx===void 0&&r.log.info("Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work.",Object.assign(Object.assign({},r.logContext),se(i))),s.red===void 0&&r.log.info("Opus RED will be disabled for stereo tracks by default. Enable them explicitly to make it work."),(l=s.dtx)!==null&&l!==void 0||(s.dtx=!1),(d=s.red)!==null&&d!==void 0||(s.red=!1));const C=Object.assign(Object.assign({},r.roomOptions.publishDefaults),s);!vh()&&r.roomOptions.e2ee&&(r.log.info("End-to-end encryption is set up, simulcast publishing will be disabled on Safari versions and iOS browsers running iOS < v17.2",Object.assign({},r.logContext)),C.simulcast=!1),C.source&&(i.source=C.source);const _=r.publish(i,C,y);r.pendingPublishPromises.set(i,_);try{return yield _}catch(b){throw b}finally{r.pendingPublishPromises.delete(i)}}()})}publish(e,t,i){return g(this,void 0,void 0,function*(){var s,r,a,o,c,l,d,f,p,m;Array.from(this.trackPublications.values()).find(k=>e instanceof qt&&k.source===e.source)&&e.source!==E.Source.Unknown&&this.log.info("publishing a second track with the same source: ".concat(e.source),Object.assign(Object.assign({},this.logContext),se(e))),t.stopMicTrackOnMute&&e instanceof Se&&(e.stopOnMute=!0),e.source===E.Source.ScreenShare&&Wt()&&(t.simulcast=!1),t.videoCodec==="av1"&&!fh()&&(t.videoCodec=void 0),t.videoCodec==="vp9"&&!ph()&&(t.videoCodec=void 0),t.videoCodec===void 0&&(t.videoCodec=rs),this.enabledPublishVideoCodecs.length>0&&(this.enabledPublishVideoCodecs.some(k=>t.videoCodec===qi(k.mime))||(t.videoCodec=qi(this.enabledPublishVideoCodecs[0].mime)));const C=t.videoCodec;e.on(N.Muted,this.onTrackMuted),e.on(N.Unmuted,this.onTrackUnmuted),e.on(N.Ended,this.handleTrackEnded),e.on(N.UpstreamPaused,this.onTrackUpstreamPaused),e.on(N.UpstreamResumed,this.onTrackUpstreamResumed),e.on(N.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate);const _=new qn({cid:e.mediaStreamTrack.id,name:t.name,type:E.kindToProto(e.kind),muted:e.isMuted,source:E.sourceToProto(e.source),disableDtx:!(!((s=t.dtx)!==null&&s!==void 0)||s),encryption:this.encryptionType,stereo:i,disableRed:this.isE2EEEnabled||!(!((r=t.red)!==null&&r!==void 0)||r),stream:t==null?void 0:t.stream});let b;if(e.kind===E.Kind.Video){let k={width:0,height:0};try{k=yield e.waitForDimensions()}catch{const S=(o=(a=this.roomOptions.videoCaptureDefaults)===null||a===void 0?void 0:a.resolution)!==null&&o!==void 0?o:gi.h720.resolution;k={width:S.width,height:S.height},this.log.error("could not determine track dimensions, using defaults",Object.assign(Object.assign(Object.assign({},this.logContext),se(e)),{dims:k}))}_.width=k.width,_.height=k.height,e instanceof we&&(di(C)&&(e.source===E.Source.ScreenShare&&(t.scalabilityMode="L1T3","contentHint"in e.mediaStreamTrack&&(e.mediaStreamTrack.contentHint="motion",this.log.info("forcing contentHint to motion for screenshare with SVC codecs",Object.assign(Object.assign({},this.logContext),se(e))))),t.scalabilityMode=(c=t.scalabilityMode)!==null&&c!==void 0?c:"L3T3_KEY"),_.simulcastCodecs=[new Vn({codec:C,cid:e.mediaStreamTrack.id})],t.backupCodec===!0&&(t.backupCodec={codec:rs}),t.backupCodec&&C!==t.backupCodec.codec&&_.encryption===Ae.NONE&&(this.roomOptions.dynacast||(this.roomOptions.dynacast=!0),_.simulcastCodecs.push(new Vn({codec:t.backupCodec.codec,cid:""})))),b=os(e.source===E.Source.ScreenShare,_.width,_.height,t),_.layers=ta(_.width,_.height,b,di(t.videoCodec))}else e.kind===E.Kind.Audio&&(b=[{maxBitrate:(l=t.audioPreset)===null||l===void 0?void 0:l.maxBitrate,priority:(f=(d=t.audioPreset)===null||d===void 0?void 0:d.priority)!==null&&f!==void 0?f:"high",networkPriority:(m=(p=t.audioPreset)===null||p===void 0?void 0:p.priority)!==null&&m!==void 0?m:"high"}]);if(!this.engine||this.engine.isClosed)throw new ye("cannot publish track when not connected");const G=()=>g(this,void 0,void 0,function*(){var k,w,S;if(!this.engine.pcManager)throw new ye("pcManager is not ready");if(e.sender=yield this.engine.createSender(e,t,b),e instanceof we&&((k=t.degradationPreference)!==null&&k!==void 0||(t.degradationPreference=$h(e)),e.setDegradationPreference(t.degradationPreference)),b)if(Wt()&&e.kind===E.Kind.Audio){let I;for(const M of this.engine.pcManager.publisher.getTransceivers())if(M.sender===e.sender){I=M;break}I&&this.engine.pcManager.publisher.setTrackCodecBitrate({transceiver:I,codec:"opus",maxbr:!((w=b[0])===null||w===void 0)&&w.maxBitrate?b[0].maxBitrate/1e3:0})}else e.codec&&di(e.codec)&&(!((S=b[0])===null||S===void 0)&&S.maxBitrate)&&this.engine.pcManager.publisher.setTrackCodecBitrate({cid:_.cid,codec:e.codec,maxbr:b[0].maxBitrate/1e3});yield this.engine.negotiate()});let W;if(this.enabledPublishVideoCodecs.length>0)W=(yield Promise.all([this.engine.addTrack(_),G()]))[0];else{W=yield this.engine.addTrack(_);let k;if(W.codecs.forEach(w=>{k===void 0&&(k=w.mimeType)}),k&&e.kind===E.Kind.Video){const w=qi(k);w!==C&&(this.log.debug("falling back to server selected codec",Object.assign(Object.assign(Object.assign({},this.logContext),se(e)),{codec:w})),t.videoCodec=w,b=os(e.source===E.Source.ScreenShare,_.width,_.height,t))}yield G()}const P=new $i(e.kind,W,e,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});return P.options=t,e.sid=W.sid,this.log.debug("publishing ".concat(e.kind," with encodings"),Object.assign(Object.assign({},this.logContext),{encodings:b,trackInfo:W})),e instanceof we?e.startMonitor(this.engine.client):e instanceof Se&&e.startMonitor(),this.addTrackPublication(P),this.emit(L.LocalTrackPublished,P),P})}get isLocal(){return!0}publishAdditionalCodecForTrack(e,t,i){return g(this,void 0,void 0,function*(){var s;if(this.encryptionType!==Ae.NONE)return;let r;if(this.trackPublications.forEach(m=>{m.track&&m.track===e&&(r=m)}),!r)throw new it("track is not published");if(!(e instanceof we))throw new it("track is not a video track");const a=Object.assign(Object.assign({},(s=this.roomOptions)===null||s===void 0?void 0:s.publishDefaults),i),o=zh(e,t,a);if(!o){this.log.info("backup codec has been disabled, ignoring request to add additional codec for track",Object.assign(Object.assign({},this.logContext),se(e)));return}const c=e.addSimulcastTrack(t,o);if(!c)return;const l=new qn({cid:c.mediaStreamTrack.id,type:E.kindToProto(e.kind),muted:e.isMuted,source:E.sourceToProto(e.source),sid:e.sid,simulcastCodecs:[{codec:a.videoCodec,cid:c.mediaStreamTrack.id}]});if(l.layers=ta(l.width,l.height,o),!this.engine||this.engine.isClosed)throw new ye("cannot publish track when not connected");const d=()=>g(this,void 0,void 0,function*(){yield this.engine.createSimulcastSender(e,c,a,o),yield this.engine.negotiate()}),p=(yield Promise.all([this.engine.addTrack(l),d()]))[0];this.log.debug("published ".concat(t," for track ").concat(e.sid),Object.assign(Object.assign({},this.logContext),{encodings:o,trackInfo:p}))})}unpublishTrack(e,t){return g(this,void 0,void 0,function*(){var i,s;if(e instanceof qt){const l=this.pendingPublishPromises.get(e);l&&(this.log.info("awaiting publish promise before attempting to unpublish",Object.assign(Object.assign({},this.logContext),se(e))),yield l)}const r=this.getPublicationForTrack(e),a=r?se(r):void 0;if(this.log.debug("unpublishing track",Object.assign(Object.assign({},this.logContext),a)),!r||!r.track){this.log.warn("track was not unpublished because no publication was found",Object.assign(Object.assign({},this.logContext),a));return}e=r.track,e.off(N.Muted,this.onTrackMuted),e.off(N.Unmuted,this.onTrackUnmuted),e.off(N.Ended,this.handleTrackEnded),e.off(N.UpstreamPaused,this.onTrackUpstreamPaused),e.off(N.UpstreamResumed,this.onTrackUpstreamResumed),e.off(N.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate),t===void 0&&(t=(s=(i=this.roomOptions)===null||i===void 0?void 0:i.stopLocalTrackOnUnpublish)!==null&&s!==void 0?s:!0),t?e.stop():e.stopMonitor();let o=!1;const c=e.sender;if(e.sender=void 0,this.engine.pcManager&&this.engine.pcManager.currentState<pe.FAILED&&c)try{for(const l of this.engine.pcManager.publisher.getTransceivers())l.sender===c&&(l.direction="inactive",o=!0);if(this.engine.removeTrack(c)&&(o=!0),e instanceof we){for(const[,l]of e.simulcastCodecs)l.sender&&(this.engine.removeTrack(l.sender)&&(o=!0),l.sender=void 0);e.simulcastCodecs.clear()}}catch(l){this.log.warn("failed to unpublish track",Object.assign(Object.assign(Object.assign({},this.logContext),a),{error:l}))}switch(this.trackPublications.delete(r.trackSid),r.kind){case E.Kind.Audio:this.audioTrackPublications.delete(r.trackSid);break;case E.Kind.Video:this.videoTrackPublications.delete(r.trackSid);break}return this.emit(L.LocalTrackUnpublished,r),r.setTrack(void 0),o&&(yield this.engine.negotiate()),r})}unpublishTracks(e){return g(this,void 0,void 0,function*(){return(yield Promise.all(e.map(i=>this.unpublishTrack(i)))).filter(i=>i instanceof $i)})}republishAllTracks(e){return g(this,arguments,void 0,function(t){var i=this;let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){i.republishPromise&&(yield i.republishPromise),i.republishPromise=new Promise((r,a)=>g(i,void 0,void 0,function*(){try{const o=[];this.trackPublications.forEach(c=>{c.track&&(t&&(c.options=Object.assign(Object.assign({},c.options),t)),o.push(c))}),yield Promise.all(o.map(c=>g(this,void 0,void 0,function*(){const l=c.track;yield this.unpublishTrack(l,!1),s&&!l.isMuted&&l.source!==E.Source.ScreenShare&&l.source!==E.Source.ScreenShareAudio&&(l instanceof Se||l instanceof we)&&!l.isUserProvided&&(this.log.debug("restarting existing track",Object.assign(Object.assign({},this.logContext),{track:c.trackSid})),yield l.restartTrack()),yield this.publishOrRepublishTrack(l,c.options,!0)}))),r()}catch(o){a(o)}finally{this.republishPromise=void 0}})),yield i.republishPromise}()})}publishData(e){return g(this,arguments,void 0,function(t){var i=this;let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return function*(){const r=s.reliable?ae.RELIABLE:ae.LOSSY,a=s.destinationIdentities,o=s.topic,c=new vt({kind:r,value:{case:"user",value:new Na({participantIdentity:i.identity,payload:t,destinationIdentities:a,topic:o})}});yield i.engine.sendDataPacket(c,r)}()})}publishDtmf(e,t){return g(this,void 0,void 0,function*(){const i=new vt({kind:ae.RELIABLE,value:{case:"sipDtmf",value:new La({code:e,digit:t})}});yield this.engine.sendDataPacket(i,ae.RELIABLE)})}sendChatMessage(e){return g(this,void 0,void 0,function*(){const t={id:crypto.randomUUID(),message:e,timestamp:Date.now()},i=new vt({value:{case:"chatMessage",value:new jn(Object.assign(Object.assign({},t),{timestamp:de.parse(t.timestamp)}))}});return yield this.engine.sendDataPacket(i,ae.RELIABLE),this.emit(L.ChatMessage,t),t})}editChatMessage(e,t){return g(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},t),{message:e,editTimestamp:Date.now()}),s=new vt({value:{case:"chatMessage",value:new jn(Object.assign(Object.assign({},i),{timestamp:de.parse(i.timestamp),editTimestamp:de.parse(i.editTimestamp)}))}});return yield this.engine.sendDataPacket(s,ae.RELIABLE),this.emit(L.ChatMessage,i),i})}performRpc(e){return g(this,arguments,void 0,function(t){var i=this;let{destinationIdentity:s,method:r,payload:a,responseTimeout:o=1e4}=t;return function*(){return new Promise((l,d)=>g(i,void 0,void 0,function*(){var f,p,m,y;if(cs(a)>ra){d(fe.builtIn("REQUEST_PAYLOAD_TOO_LARGE"));return}if(!((p=(f=this.engine.latestJoinResponse)===null||f===void 0?void 0:f.serverInfo)===null||p===void 0)&&p.version&&zt((y=(m=this.engine.latestJoinResponse)===null||m===void 0?void 0:m.serverInfo)===null||y===void 0?void 0:y.version,"1.8.0")<0){d(fe.builtIn("UNSUPPORTED_SERVER"));return}const C=crypto.randomUUID();yield this.publishRpcRequest(s,C,r,a,o-2e3);const _=setTimeout(()=>{this.pendingAcks.delete(C),d(fe.builtIn("CONNECTION_TIMEOUT")),this.pendingResponses.delete(C),clearTimeout(b)},2e3);this.pendingAcks.set(C,{resolve:()=>{clearTimeout(_)},participantIdentity:s});const b=setTimeout(()=>{this.pendingResponses.delete(C),d(fe.builtIn("RESPONSE_TIMEOUT"))},o);this.pendingResponses.set(C,{resolve:(G,W)=>{clearTimeout(b),this.pendingAcks.has(C)&&(console.warn("RPC response received before ack",C),this.pendingAcks.delete(C),clearTimeout(_)),W?d(W):l(G??"")},participantIdentity:s})}))}()})}registerRpcMethod(e,t){this.rpcHandlers.set(e,t)}unregisterRpcMethod(e){this.rpcHandlers.delete(e)}setTrackSubscriptionPermissions(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];this.participantTrackPermissions=t,this.allParticipantsAllowedToSubscribe=e,this.engine.client.isDisconnected||this.updateTrackSubscriptionPermissions()}handleIncomingRpcAck(e){const t=this.pendingAcks.get(e);t?(t.resolve(),this.pendingAcks.delete(e)):console.error("Ack received for unexpected RPC request",e)}handleIncomingRpcResponse(e,t,i){const s=this.pendingResponses.get(e);s?(s.resolve(t,i),this.pendingResponses.delete(e)):console.error("Response received for unexpected RPC request",e)}handleIncomingRpcRequest(e,t,i,s,r,a){return g(this,void 0,void 0,function*(){if(yield this.publishRpcAck(e,t),a!==1){yield this.publishRpcResponse(e,t,null,fe.builtIn("UNSUPPORTED_VERSION"));return}const o=this.rpcHandlers.get(i);if(!o){yield this.publishRpcResponse(e,t,null,fe.builtIn("UNSUPPORTED_METHOD"));return}let c=null,l=null;try{const d=yield o({requestId:t,callerIdentity:e,payload:s,responseTimeout:r});cs(d)>ra?(c=fe.builtIn("RESPONSE_PAYLOAD_TOO_LARGE"),console.warn("RPC Response payload too large for ".concat(i))):l=d}catch(d){d instanceof fe?c=d:(console.warn("Uncaught error returned by RPC handler for ".concat(i,". Returning APPLICATION_ERROR instead."),d),c=fe.builtIn("APPLICATION_ERROR"))}yield this.publishRpcResponse(e,t,l,c)})}publishRpcRequest(e,t,i,s,r){return g(this,void 0,void 0,function*(){const a=new vt({destinationIdentities:[e],kind:ae.RELIABLE,value:{case:"rpcRequest",value:new Ua({id:t,method:i,payload:s,responseTimeoutMs:r,version:1})}});yield this.engine.sendDataPacket(a,ae.RELIABLE)})}publishRpcResponse(e,t,i,s){return g(this,void 0,void 0,function*(){const r=new vt({destinationIdentities:[e],kind:ae.RELIABLE,value:{case:"rpcResponse",value:new ja({requestId:t,value:s?{case:"error",value:s.toProto()}:{case:"payload",value:i??""}})}});yield this.engine.sendDataPacket(r,ae.RELIABLE)})}publishRpcAck(e,t){return g(this,void 0,void 0,function*(){const i=new vt({destinationIdentities:[e],kind:ae.RELIABLE,value:{case:"rpcAck",value:new Fa({requestId:t})}});yield this.engine.sendDataPacket(i,ae.RELIABLE)})}handleParticipantDisconnected(e){for(const[t,{participantIdentity:i}]of this.pendingAcks)i===e&&this.pendingAcks.delete(t);for(const[t,{participantIdentity:i,resolve:s}]of this.pendingResponses)i===e&&(s(null,fe.builtIn("RECIPIENT_DISCONNECTED")),this.pendingResponses.delete(t))}setEnabledPublishCodecs(e){this.enabledPublishVideoCodecs=e.filter(t=>t.mime.split("/")[0].toLowerCase()==="video")}updateInfo(e){return e.sid!==this.sid||!super.updateInfo(e)?!1:(e.tracks.forEach(t=>{var i,s;const r=this.trackPublications.get(t.sid);if(r){const a=r.isMuted||((s=(i=r.track)===null||i===void 0?void 0:i.isUpstreamPaused)!==null&&s!==void 0?s:!1);a!==t.muted&&(this.log.debug("updating server mute state after reconcile",Object.assign(Object.assign(Object.assign({},this.logContext),se(r)),{mutedOnServer:a})),this.engine.client.sendMuteTrack(t.sid,a))}}),!0)}getPublicationForTrack(e){let t;return this.trackPublications.forEach(i=>{const s=i.track;s&&(e instanceof MediaStreamTrack?(s instanceof Se||s instanceof we)&&s.mediaStreamTrack===e&&(t=i):e===s&&(t=i))}),t}waitForPendingPublicationOfSource(e){return g(this,void 0,void 0,function*(){const i=Date.now();for(;Date.now()<i+1e4;){const s=Array.from(this.pendingPublishPromises.entries()).find(r=>{let[a]=r;return a.source===e});if(s)return s[1];yield He(20)}})}}class Qo extends at{constructor(e,t,i,s){super(e,t.sid,t.name,s),this.track=void 0,this.allowed=!0,this.disabled=!1,this.currentVideoQuality=je.HIGH,this.handleEnded=r=>{this.setTrack(void 0),this.emit(N.Ended,r)},this.handleVisibilityChange=r=>{this.log.debug("adaptivestream video visibility ".concat(this.trackSid,", visible=").concat(r),this.logContext),this.disabled=!r,this.emitTrackUpdate()},this.handleVideoDimensionsChange=r=>{this.log.debug("adaptivestream video dimensions ".concat(r.width,"x").concat(r.height),this.logContext),this.videoDimensions=r,this.emitTrackUpdate()},this.subscribed=i,this.updateInfo(t)}setSubscribed(e){const t=this.subscriptionStatus,i=this.permissionStatus;this.subscribed=e,e&&(this.allowed=!0);const s=new Zi({trackSids:[this.trackSid],subscribe:this.subscribed,participantTracks:[new Va({participantSid:"",trackSids:[this.trackSid]})]});this.emit(N.UpdateSubscription,s),this.emitSubscriptionUpdateIfChanged(t),this.emitPermissionUpdateIfChanged(i)}get subscriptionStatus(){return this.subscribed===!1?at.SubscriptionStatus.Unsubscribed:super.isSubscribed?at.SubscriptionStatus.Subscribed:at.SubscriptionStatus.Desired}get permissionStatus(){return this.allowed?at.PermissionStatus.Allowed:at.PermissionStatus.NotAllowed}get isSubscribed(){return this.subscribed===!1?!1:super.isSubscribed}get isDesired(){return this.subscribed!==!1}get isEnabled(){return!this.disabled}setEnabled(e){!this.isManualOperationAllowed()||this.disabled===!e||(this.disabled=!e,this.emitTrackUpdate())}setVideoQuality(e){!this.isManualOperationAllowed()||this.currentVideoQuality===e||(this.currentVideoQuality=e,this.videoDimensions=void 0,this.emitTrackUpdate())}setVideoDimensions(e){var t,i;this.isManualOperationAllowed()&&(((t=this.videoDimensions)===null||t===void 0?void 0:t.width)===e.width&&((i=this.videoDimensions)===null||i===void 0?void 0:i.height)===e.height||(this.track instanceof fi&&(this.videoDimensions=e),this.currentVideoQuality=void 0,this.emitTrackUpdate()))}setVideoFPS(e){this.isManualOperationAllowed()&&this.track instanceof fi&&this.fps!==e&&(this.fps=e,this.emitTrackUpdate())}get videoQuality(){return this.currentVideoQuality}setTrack(e){const t=this.subscriptionStatus,i=this.permissionStatus,s=this.track;s!==e&&(s&&(s.off(N.VideoDimensionsChanged,this.handleVideoDimensionsChange),s.off(N.VisibilityChanged,this.handleVisibilityChange),s.off(N.Ended,this.handleEnded),s.detach(),s.stopMonitor(),this.emit(N.Unsubscribed,s)),super.setTrack(e),e&&(e.sid=this.trackSid,e.on(N.VideoDimensionsChanged,this.handleVideoDimensionsChange),e.on(N.VisibilityChanged,this.handleVisibilityChange),e.on(N.Ended,this.handleEnded),this.emit(N.Subscribed,e)),this.emitPermissionUpdateIfChanged(i),this.emitSubscriptionUpdateIfChanged(t))}setAllowed(e){const t=this.subscriptionStatus,i=this.permissionStatus;this.allowed=e,this.emitPermissionUpdateIfChanged(i),this.emitSubscriptionUpdateIfChanged(t)}setSubscriptionError(e){this.emit(N.SubscriptionFailed,e)}updateInfo(e){super.updateInfo(e);const t=this.metadataMuted;this.metadataMuted=e.muted,this.track?this.track.setMuted(e.muted):t!==e.muted&&this.emit(e.muted?N.Muted:N.Unmuted)}emitSubscriptionUpdateIfChanged(e){const t=this.subscriptionStatus;e!==t&&this.emit(N.SubscriptionStatusChanged,t,e)}emitPermissionUpdateIfChanged(e){this.permissionStatus!==e&&this.emit(N.SubscriptionPermissionChanged,this.permissionStatus,e)}isManualOperationAllowed(){return this.kind===E.Kind.Video&&this.isAdaptiveStream?(this.log.warn("adaptive stream is enabled, cannot change video track settings",this.logContext),!1):this.isDesired?!0:(this.log.warn("cannot update track settings when not subscribed",this.logContext),!1)}get isAdaptiveStream(){return this.track instanceof fi&&this.track.isAdaptiveStream}emitTrackUpdate(){const e=new za({trackSids:[this.trackSid],disabled:this.disabled,fps:this.fps});this.videoDimensions?(e.width=Math.ceil(this.videoDimensions.width),e.height=Math.ceil(this.videoDimensions.height)):this.currentVideoQuality!==void 0?e.quality=this.currentVideoQuality:e.quality=je.HIGH,this.emit(N.UpdateSettings,e)}}class Qi extends $o{static fromParticipantInfo(e,t,i){return new Qi(e,t.sid,t.identity,t.name,t.metadata,t.attributes,i,t.kind)}get logContext(){return Object.assign(Object.assign({},super.logContext),{rpID:this.sid,remoteParticipant:this.identity})}constructor(e,t,i,s,r,a,o){let c=arguments.length>7&&arguments[7]!==void 0?arguments[7]:zi.STANDARD;super(t,i||"",s,r,a,o,c),this.signalClient=e,this.trackPublications=new Map,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.volumeMap=new Map}addTrackPublication(e){super.addTrackPublication(e),e.on(N.UpdateSettings,t=>{this.log.debug("send update settings",Object.assign(Object.assign({},this.logContext),se(e))),this.signalClient.sendUpdateTrackSettings(t)}),e.on(N.UpdateSubscription,t=>{t.participantTracks.forEach(i=>{i.participantSid=this.sid}),this.signalClient.sendUpdateSubscription(t)}),e.on(N.SubscriptionPermissionChanged,t=>{this.emit(L.TrackSubscriptionPermissionChanged,e,t)}),e.on(N.SubscriptionStatusChanged,t=>{this.emit(L.TrackSubscriptionStatusChanged,e,t)}),e.on(N.Subscribed,t=>{this.emit(L.TrackSubscribed,t,e)}),e.on(N.Unsubscribed,t=>{this.emit(L.TrackUnsubscribed,t,e)}),e.on(N.SubscriptionFailed,t=>{this.emit(L.TrackSubscriptionFailed,e.trackSid,t)})}getTrackPublication(e){const t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){const t=super.getTrackPublicationByName(e);if(t)return t}setVolume(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:E.Source.Microphone;this.volumeMap.set(t,e);const i=this.getTrackPublication(t);i&&i.track&&i.track.setVolume(e)}getVolume(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:E.Source.Microphone;const t=this.getTrackPublication(e);return t&&t.track?t.track.getVolume():this.volumeMap.get(e)}addSubscribedMediaTrack(e,t,i,s,r,a){let o=this.getTrackPublicationBySid(t);if(o||t.startsWith("TR")||this.trackPublications.forEach(d=>{!o&&e.kind===d.kind.toString()&&(o=d)}),!o){if(a===0){this.log.error("could not find published track",Object.assign(Object.assign({},this.logContext),{trackSid:t})),this.emit(L.TrackSubscriptionFailed,t);return}a===void 0&&(a=20),setTimeout(()=>{this.addSubscribedMediaTrack(e,t,i,s,r,a-1)},150);return}if(e.readyState==="ended"){this.log.error("unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()",Object.assign(Object.assign({},this.logContext),se(o))),this.emit(L.TrackSubscriptionFailed,t);return}const c=e.kind==="video";let l;return c?l=new fi(e,t,s,r):l=new hi(e,t,s,this.audioContext,this.audioOutput),l.source=o.source,l.isMuted=o.isMuted,l.setMediaStream(i),l.start(),o.setTrack(l),this.volumeMap.has(o.source)&&l instanceof hi&&l.setVolume(this.volumeMap.get(o.source)),o}get hasMetadata(){return!!this.participantInfo}getTrackPublicationBySid(e){return this.trackPublications.get(e)}updateInfo(e){if(!super.updateInfo(e))return!1;const t=new Map,i=new Map;return e.tracks.forEach(s=>{var r,a;let o=this.getTrackPublicationBySid(s.sid);if(o)o.updateInfo(s);else{const c=E.kindFromProto(s.type);if(!c)return;o=new Qo(c,s,(r=this.signalClient.connectOptions)===null||r===void 0?void 0:r.autoSubscribe,{loggerContextCb:()=>this.logContext,loggerName:(a=this.loggerOptions)===null||a===void 0?void 0:a.loggerName}),o.updateInfo(s),i.set(s.sid,o);const l=Array.from(this.trackPublications.values()).find(d=>d.source===(o==null?void 0:o.source));l&&o.source!==E.Source.Unknown&&this.log.debug("received a second track publication for ".concat(this.identity," with the same source: ").concat(o.source),Object.assign(Object.assign({},this.logContext),{oldTrack:se(l),newTrack:se(o)})),this.addTrackPublication(o)}t.set(s.sid,o)}),this.trackPublications.forEach(s=>{t.has(s.trackSid)||(this.log.trace("detected removed track on remote participant, unpublishing",Object.assign(Object.assign({},this.logContext),se(s))),this.unpublishTrack(s.trackSid,!0))}),i.forEach(s=>{this.emit(L.TrackPublished,s)}),!0}unpublishTrack(e,t){const i=this.trackPublications.get(e);if(!i)return;const{track:s}=i;switch(s&&(s.stop(),i.setTrack(void 0)),this.trackPublications.delete(e),i.kind){case E.Kind.Audio:this.audioTrackPublications.delete(e);break;case E.Kind.Video:this.videoTrackPublications.delete(e);break}t&&this.emit(L.TrackUnpublished,i)}setAudioOutput(e){return g(this,void 0,void 0,function*(){this.audioOutput=e;const t=[];this.audioTrackPublications.forEach(i=>{var s;i.track instanceof hi&&t.push(i.track.setSinkId((s=e.deviceId)!==null&&s!==void 0?s:"default"))}),yield Promise.all(t)})}emit(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];return this.log.trace("participant event",Object.assign(Object.assign({},this.logContext),{event:e,args:i})),super.emit(e,...i)}}var ie;(function(n){n.Disconnected="disconnected",n.Connecting="connecting",n.Connected="connected",n.Reconnecting="reconnecting",n.SignalReconnecting="signalReconnecting"})(ie||(ie={}));const af=4*1e3;class Yo extends nt.EventEmitter{constructor(e){var t,i,s;super(),t=this,this.state=ie.Disconnected,this.activeSpeakers=[],this.isE2EEEnabled=!1,this.audioEnabled=!0,this.isVideoPlaybackBlocked=!1,this.log=Z,this.bufferedEvents=[],this.isResuming=!1,this.connect=(r,a,o)=>g(this,void 0,void 0,function*(){var c;if(!mh())throw ht()?Error("WebRTC isn't detected, have you called registerGlobals?"):Error("LiveKit doesn't seem to be supported on this browser. Try to update your browser and make sure no browser extensions are disabling webRTC.");const l=yield this.disconnectLock.lock();if(this.state===ie.Connected)return this.log.info("already connected to room ".concat(this.name),this.logContext),l(),Promise.resolve();if(this.connectFuture)return l(),this.connectFuture.promise;this.setAndEmitConnectionState(ie.Connecting),((c=this.regionUrlProvider)===null||c===void 0?void 0:c.getServerUrl().toString())!==r&&(this.regionUrl=void 0,this.regionUrlProvider=void 0),ss(new URL(r))&&(this.regionUrlProvider===void 0?this.regionUrlProvider=new sa(r,a):this.regionUrlProvider.updateToken(a),this.regionUrlProvider.fetchRegionSettings().then(p=>{var m;(m=this.regionUrlProvider)===null||m===void 0||m.setServerReportedRegions(p)}).catch(p=>{this.log.warn("could not fetch region settings",Object.assign(Object.assign({},this.logContext),{error:p}))}));const d=(p,m,y)=>g(this,void 0,void 0,function*(){var C,_;this.abortController&&this.abortController.abort();const b=new AbortController;this.abortController=b,l==null||l();try{yield this.attemptConnection(y??r,a,o,b),this.abortController=void 0,p()}catch(G){if(this.regionUrlProvider&&G instanceof re&&G.reason!==te.Cancelled&&G.reason!==te.NotAllowed){let W=null;try{W=yield this.regionUrlProvider.getNextBestRegionUrl((C=this.abortController)===null||C===void 0?void 0:C.signal)}catch(P){if(P instanceof re&&(P.status===401||P.reason===te.Cancelled)){this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),m(P);return}}W&&!(!((_=this.abortController)===null||_===void 0)&&_.signal.aborted)?(this.log.info("Initial connection failed with ConnectionError: ".concat(G.message,". Retrying with another region: ").concat(W),this.logContext),this.recreateEngine(),yield d(p,m,W)):(this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,Kr(G)),m(G))}else{let W=ze.UNKNOWN_REASON;G instanceof re&&(W=Kr(G)),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,W),m(G)}}}),f=this.regionUrl;return this.regionUrl=void 0,this.connectFuture=new Vo((p,m)=>{d(p,m,f)},()=>{this.clearConnectionFutures()}),this.connectFuture.promise}),this.connectSignal=(r,a,o,c,l,d)=>g(this,void 0,void 0,function*(){var f,p,m;const y=yield o.join(r,a,{autoSubscribe:c.autoSubscribe,adaptiveStream:typeof l.adaptiveStream=="object"?!0:l.adaptiveStream,maxRetries:c.maxRetries,e2eeEnabled:!!this.e2eeManager,websocketTimeout:c.websocketTimeout},d.signal);let C=y.serverInfo;if(C||(C={version:y.serverVersion,region:y.serverRegion}),this.serverInfo=C,this.log.debug("connected to Livekit Server ".concat(Object.entries(C).map(_=>{let[b,G]=_;return"".concat(b,": ").concat(G)}).join(", ")),{room:(f=y.room)===null||f===void 0?void 0:f.name,roomSid:(p=y.room)===null||p===void 0?void 0:p.sid,identity:(m=y.participant)===null||m===void 0?void 0:m.identity}),!C.version)throw new $u("unknown server version");return C.version==="0.15.1"&&this.options.dynacast&&(this.log.debug("disabling dynacast due to server version",this.logContext),l.dynacast=!1),y}),this.applyJoinResponse=r=>{const a=r.participant;if(this.localParticipant.sid=a.sid,this.localParticipant.identity=a.identity,this.localParticipant.setEnabledPublishCodecs(r.enabledPublishCodecs),this.options.e2ee&&this.e2eeManager)try{this.e2eeManager.setSifTrailer(r.sifTrailer)}catch(o){this.log.error(o instanceof Error?o.message:"Could not set SifTrailer",Object.assign(Object.assign({},this.logContext),{error:o}))}this.handleParticipantUpdates([a,...r.otherParticipants]),r.room&&this.handleRoomUpdate(r.room)},this.attemptConnection=(r,a,o,c)=>g(this,void 0,void 0,function*(){var l,d,f;this.state===ie.Reconnecting||this.isResuming||!((l=this.engine)===null||l===void 0)&&l.pendingReconnect?(this.log.info("Reconnection attempt replaced by new connection attempt",this.logContext),this.recreateEngine()):this.maybeCreateEngine(),!((d=this.regionUrlProvider)===null||d===void 0)&&d.isCloud()&&this.engine.setRegionUrlProvider(this.regionUrlProvider),this.acquireAudioContext(),this.connOptions=Object.assign(Object.assign({},Ps),o),this.connOptions.rtcConfig&&(this.engine.rtcConfig=this.connOptions.rtcConfig),this.connOptions.peerConnectionTimeout&&(this.engine.peerConnectionTimeout=this.connOptions.peerConnectionTimeout);try{const p=yield this.connectSignal(r,a,this.engine,this.connOptions,this.options,c);this.applyJoinResponse(p),this.setupLocalParticipantEvents(),this.emit(D.SignalConnected)}catch(p){yield this.engine.close(),this.recreateEngine();const m=new re("could not establish signal connection",te.ServerUnreachable);throw p instanceof Error&&(m.message="".concat(m.message,": ").concat(p.message)),p instanceof re&&(m.reason=p.reason,m.status=p.status),this.log.debug("error trying to establish signal connection",Object.assign(Object.assign({},this.logContext),{error:p})),m}if(c.signal.aborted)throw yield this.engine.close(),this.recreateEngine(),new re("Connection attempt aborted",te.Cancelled);try{yield this.engine.waitForPCInitialConnection(this.connOptions.peerConnectionTimeout,c)}catch(p){throw yield this.engine.close(),this.recreateEngine(),p}Le()&&this.options.disconnectOnPageLeave&&(window.addEventListener("pagehide",this.onPageLeave),window.addEventListener("beforeunload",this.onPageLeave)),Le()&&(document.addEventListener("freeze",this.onPageLeave),(f=navigator.mediaDevices)===null||f===void 0||f.addEventListener("devicechange",this.handleDeviceChange)),this.setAndEmitConnectionState(ie.Connected),this.emit(D.Connected),this.registerConnectionReconcile()}),this.disconnect=function(){for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return g(t,[...a],void 0,function(){var c=this;let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){var d,f,p,m;const y=yield c.disconnectLock.lock();try{if(c.state===ie.Disconnected){c.log.debug("already disconnected",c.logContext);return}c.log.info("disconnect from room",Object.assign({},c.logContext)),(c.state===ie.Connecting||c.state===ie.Reconnecting||c.isResuming)&&(c.log.warn("abort connection attempt",c.logContext),(d=c.abortController)===null||d===void 0||d.abort(),(p=(f=c.connectFuture)===null||f===void 0?void 0:f.reject)===null||p===void 0||p.call(f,new re("Client initiated disconnect",te.Cancelled)),c.connectFuture=void 0),!((m=c.engine)===null||m===void 0)&&m.client.isDisconnected||(yield c.engine.client.sendLeave()),c.engine&&(yield c.engine.close()),c.handleDisconnect(l,ze.CLIENT_INITIATED),c.engine=void 0}finally{y()}}()})},this.onPageLeave=()=>g(this,void 0,void 0,function*(){this.log.info("Page leave detected, disconnecting",this.logContext),yield this.disconnect()}),this.startAudio=()=>g(this,void 0,void 0,function*(){const r=[],a=ut();if(a&&a.os==="iOS"){const o="livekit-dummy-audio-el";let c=document.getElementById(o);if(!c){c=document.createElement("audio"),c.id=o,c.autoplay=!0,c.hidden=!0;const l=In();l.enabled=!0;const d=new MediaStream([l]);c.srcObject=d,document.addEventListener("visibilitychange",()=>{c&&(c.srcObject=document.hidden?null:d,document.hidden||(this.log.debug("page visible again, triggering startAudio to resume playback and update playback status",this.logContext),this.startAudio()))}),document.body.append(c),this.once(D.Disconnected,()=>{c==null||c.remove(),c=null})}r.push(c)}this.remoteParticipants.forEach(o=>{o.audioTrackPublications.forEach(c=>{c.track&&c.track.attachedElements.forEach(l=>{r.push(l)})})});try{yield Promise.all([this.acquireAudioContext(),...r.map(o=>(o.muted=!1,o.play()))]),this.handleAudioPlaybackStarted()}catch(o){throw this.handleAudioPlaybackFailed(o),o}}),this.startVideo=()=>g(this,void 0,void 0,function*(){const r=[];for(const a of this.remoteParticipants.values())a.videoTrackPublications.forEach(o=>{var c;(c=o.track)===null||c===void 0||c.attachedElements.forEach(l=>{r.includes(l)||r.push(l)})});yield Promise.all(r.map(a=>a.play())).then(()=>{this.handleVideoPlaybackStarted()}).catch(a=>{a.name==="NotAllowedError"?this.handleVideoPlaybackFailed():this.log.warn("Resuming video playback failed, make sure you call `startVideo` directly in a user gesture handler",this.logContext)})}),this.handleRestarting=()=>{this.clearConnectionReconcile(),this.isResuming=!1;for(const r of this.remoteParticipants.values())this.handleParticipantDisconnected(r.identity,r);this.setAndEmitConnectionState(ie.Reconnecting)&&this.emit(D.Reconnecting)},this.handleSignalRestarted=r=>g(this,void 0,void 0,function*(){this.log.debug("signal reconnected to server, region ".concat(r.serverRegion),Object.assign(Object.assign({},this.logContext),{region:r.serverRegion})),this.bufferedEvents=[],this.applyJoinResponse(r);try{yield this.localParticipant.republishAllTracks(void 0,!0)}catch(a){this.log.error("error trying to re-publish tracks after reconnection",Object.assign(Object.assign({},this.logContext),{error:a}))}try{yield this.engine.waitForRestarted(),this.log.debug("fully reconnected to server",Object.assign(Object.assign({},this.logContext),{region:r.serverRegion}))}catch{return}this.setAndEmitConnectionState(ie.Connected),this.emit(D.Reconnected),this.registerConnectionReconcile(),this.emitBufferedEvents()}),this.handleParticipantUpdates=r=>{r.forEach(a=>{var o;if(a.identity===this.localParticipant.identity){this.localParticipant.updateInfo(a);return}a.identity===""&&(a.identity=(o=this.sidToIdentity.get(a.sid))!==null&&o!==void 0?o:"");let c=this.remoteParticipants.get(a.identity);a.state===Fn.DISCONNECTED?this.handleParticipantDisconnected(a.identity,c):c=this.getOrCreateParticipant(a.identity,a)})},this.handleActiveSpeakersUpdate=r=>{const a=[],o={};r.forEach(c=>{if(o[c.sid]=!0,c.sid===this.localParticipant.sid)this.localParticipant.audioLevel=c.level,this.localParticipant.setIsSpeaking(!0),a.push(this.localParticipant);else{const l=this.getRemoteParticipantBySid(c.sid);l&&(l.audioLevel=c.level,l.setIsSpeaking(!0),a.push(l))}}),o[this.localParticipant.sid]||(this.localParticipant.audioLevel=0,this.localParticipant.setIsSpeaking(!1)),this.remoteParticipants.forEach(c=>{o[c.sid]||(c.audioLevel=0,c.setIsSpeaking(!1))}),this.activeSpeakers=a,this.emitWhenConnected(D.ActiveSpeakersChanged,a)},this.handleSpeakersChanged=r=>{const a=new Map;this.activeSpeakers.forEach(c=>{const l=this.remoteParticipants.get(c.identity);l&&l.sid!==c.sid||a.set(c.sid,c)}),r.forEach(c=>{let l=this.getRemoteParticipantBySid(c.sid);c.sid===this.localParticipant.sid&&(l=this.localParticipant),l&&(l.audioLevel=c.level,l.setIsSpeaking(c.active),c.active?a.set(c.sid,l):a.delete(c.sid))});const o=Array.from(a.values());o.sort((c,l)=>l.audioLevel-c.audioLevel),this.activeSpeakers=o,this.emitWhenConnected(D.ActiveSpeakersChanged,o)},this.handleStreamStateUpdate=r=>{r.streamStates.forEach(a=>{const o=this.getRemoteParticipantBySid(a.participantSid);if(!o)return;const c=o.getTrackPublicationBySid(a.trackSid);if(!c||!c.track)return;const l=E.streamStateFromProto(a.state);l!==c.track.streamState&&(c.track.streamState=l,o.emit(L.TrackStreamStateChanged,c,c.track.streamState),this.emitWhenConnected(D.TrackStreamStateChanged,c,c.track.streamState,o))})},this.handleSubscriptionPermissionUpdate=r=>{const a=this.getRemoteParticipantBySid(r.participantSid);if(!a)return;const o=a.getTrackPublicationBySid(r.trackSid);o&&o.setAllowed(r.allowed)},this.handleSubscriptionError=r=>{const a=Array.from(this.remoteParticipants.values()).find(c=>c.trackPublications.has(r.trackSid));if(!a)return;const o=a.getTrackPublicationBySid(r.trackSid);o&&o.setSubscriptionError(r.err)},this.handleDataPacket=r=>{const a=this.remoteParticipants.get(r.participantIdentity);r.value.case==="user"?this.handleUserPacket(a,r.value.value,r.kind):r.value.case==="transcription"?this.handleTranscription(a,r.value.value):r.value.case==="sipDtmf"?this.handleSipDtmf(a,r.value.value):r.value.case==="chatMessage"?this.handleChatMessage(a,r.value.value):r.value.case==="metrics"&&this.handleMetrics(r.value.value,a)},this.handleUserPacket=(r,a,o)=>{this.emit(D.DataReceived,a.payload,r,o,a.topic),r==null||r.emit(L.DataReceived,a.payload,o)},this.handleSipDtmf=(r,a)=>{this.emit(D.SipDTMFReceived,a,r),r==null||r.emit(L.SipDTMFReceived,a)},this.bufferedSegments=new Map,this.handleTranscription=(r,a)=>{const o=a.transcribedParticipantIdentity===this.localParticipant.identity?this.localParticipant:this.getParticipantByIdentity(a.transcribedParticipantIdentity),c=o==null?void 0:o.trackPublications.get(a.trackId),l=Sh(a,this.transcriptionReceivedTimes);c==null||c.emit(N.TranscriptionReceived,l),o==null||o.emit(L.TranscriptionReceived,l,c),this.emit(D.TranscriptionReceived,l,o,c)},this.handleChatMessage=(r,a)=>{const o=Ph(a);this.emit(D.ChatMessage,o,r)},this.handleMetrics=(r,a)=>{this.emit(D.MetricsReceived,r,a)},this.handleAudioPlaybackStarted=()=>{this.canPlaybackAudio||(this.audioEnabled=!0,this.emit(D.AudioPlaybackStatusChanged,!0))},this.handleAudioPlaybackFailed=r=>{this.log.warn("could not playback audio",Object.assign(Object.assign({},this.logContext),{error:r})),this.canPlaybackAudio&&(this.audioEnabled=!1,this.emit(D.AudioPlaybackStatusChanged,!1))},this.handleVideoPlaybackStarted=()=>{this.isVideoPlaybackBlocked&&(this.isVideoPlaybackBlocked=!1,this.emit(D.VideoPlaybackStatusChanged,!0))},this.handleVideoPlaybackFailed=()=>{this.isVideoPlaybackBlocked||(this.isVideoPlaybackBlocked=!0,this.emit(D.VideoPlaybackStatusChanged,!1))},this.handleDeviceChange=()=>g(this,void 0,void 0,function*(){const r=yield Pe.getInstance().getDevices(void 0,!1),a=["audiooutput"];for(let o of a){const c=r.filter(l=>l.kind===o);c.length>0&&!c.find(l=>l.deviceId===this.getActiveDevice(o))&&(yield this.switchActiveDevice(o,c[0].deviceId))}this.emit(D.MediaDevicesChanged)}),this.handleRoomUpdate=r=>{const a=this.roomInfo;this.roomInfo=r,a&&a.metadata!==r.metadata&&this.emitWhenConnected(D.RoomMetadataChanged,r.metadata),(a==null?void 0:a.activeRecording)!==r.activeRecording&&this.emitWhenConnected(D.RecordingStatusChanged,r.activeRecording)},this.handleConnectionQualityUpdate=r=>{r.updates.forEach(a=>{if(a.participantSid===this.localParticipant.sid){this.localParticipant.setConnectionQuality(a.quality);return}const o=this.getRemoteParticipantBySid(a.participantSid);o&&o.setConnectionQuality(a.quality)})},this.onLocalParticipantMetadataChanged=r=>{this.emit(D.ParticipantMetadataChanged,r,this.localParticipant)},this.onLocalParticipantNameChanged=r=>{this.emit(D.ParticipantNameChanged,r,this.localParticipant)},this.onLocalAttributesChanged=r=>{this.emit(D.ParticipantAttributesChanged,r,this.localParticipant)},this.onLocalTrackMuted=r=>{this.emit(D.TrackMuted,r,this.localParticipant)},this.onLocalTrackUnmuted=r=>{this.emit(D.TrackUnmuted,r,this.localParticipant)},this.onTrackProcessorUpdate=r=>{var a;(a=r==null?void 0:r.onPublish)===null||a===void 0||a.call(r,this)},this.onLocalTrackPublished=r=>g(this,void 0,void 0,function*(){var a,o,c,l,d,f;(a=r.track)===null||a===void 0||a.on(N.TrackProcessorUpdate,this.onTrackProcessorUpdate),(o=r.track)===null||o===void 0||o.on(N.Restarted,this.onLocalTrackRestarted),(d=(l=(c=r.track)===null||c===void 0?void 0:c.getProcessor())===null||l===void 0?void 0:l.onPublish)===null||d===void 0||d.call(l,this),this.emit(D.LocalTrackPublished,r,this.localParticipant),r.track instanceof Se&&(yield r.track.checkForSilence())&&this.emit(D.LocalAudioSilenceDetected,r);const p=yield(f=r.track)===null||f===void 0?void 0:f.getDeviceId(),m=Lr(r.source);m&&p&&p!==this.localParticipant.activeDeviceMap.get(m)&&(this.localParticipant.activeDeviceMap.set(m,p),this.emit(D.ActiveDeviceChanged,m,p))}),this.onLocalTrackUnpublished=r=>{var a,o;(a=r.track)===null||a===void 0||a.off(N.TrackProcessorUpdate,this.onTrackProcessorUpdate),(o=r.track)===null||o===void 0||o.off(N.Restarted,this.onLocalTrackRestarted),this.emit(D.LocalTrackUnpublished,r,this.localParticipant)},this.onLocalTrackRestarted=r=>g(this,void 0,void 0,function*(){const a=yield r.getDeviceId(!1),o=Lr(r.source);o&&a&&a!==this.localParticipant.activeDeviceMap.get(o)&&(this.log.debug("local track restarted, setting ".concat(o," ").concat(a," active"),this.logContext),this.localParticipant.activeDeviceMap.set(o,a),this.emit(D.ActiveDeviceChanged,o,a))}),this.onLocalConnectionQualityChanged=r=>{this.emit(D.ConnectionQualityChanged,r,this.localParticipant)},this.onMediaDevicesError=r=>{this.emit(D.MediaDevicesError,r)},this.onLocalParticipantPermissionsChanged=r=>{this.emit(D.ParticipantPermissionsChanged,r,this.localParticipant)},this.onLocalChatMessageSent=r=>{this.emit(D.ChatMessage,r,this.localParticipant)},this.setMaxListeners(100),this.remoteParticipants=new Map,this.sidToIdentity=new Map,this.options=Object.assign(Object.assign({},Fh),e),this.log=dt((i=this.options.loggerName)!==null&&i!==void 0?i:Je.Room),this.transcriptionReceivedTimes=new Map,this.options.audioCaptureDefaults=Object.assign(Object.assign({},Ko),e==null?void 0:e.audioCaptureDefaults),this.options.videoCaptureDefaults=Object.assign(Object.assign({},Go),e==null?void 0:e.videoCaptureDefaults),this.options.publishDefaults=Object.assign(Object.assign({},Uh),e==null?void 0:e.publishDefaults),this.maybeCreateEngine(),this.disconnectLock=new Ne,this.localParticipant=new oa("","",this.engine,this.options),this.options.videoCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("videoinput",lt(this.options.videoCaptureDefaults.deviceId)),this.options.audioCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("audioinput",lt(this.options.audioCaptureDefaults.deviceId)),!((s=this.options.audioOutput)===null||s===void 0)&&s.deviceId&&this.switchActiveDevice("audiooutput",lt(this.options.audioOutput.deviceId)).catch(r=>this.log.warn("Could not set audio output: ".concat(r.message),this.logContext)),this.options.e2ee&&this.setupE2EE()}setE2EEEnabled(e){return g(this,void 0,void 0,function*(){if(this.e2eeManager)yield Promise.all([this.localParticipant.setE2EEEnabled(e)]),this.localParticipant.identity!==""&&this.e2eeManager.setParticipantCryptorEnabled(e,this.localParticipant.identity);else throw Error("e2ee not configured, please set e2ee settings within the room options")})}setupE2EE(){var e;this.options.e2ee&&("e2eeManager"in this.options.e2ee?this.e2eeManager=this.options.e2ee.e2eeManager:this.e2eeManager=new _h(this.options.e2ee),this.e2eeManager.on(kt.ParticipantEncryptionStatusChanged,(t,i)=>{i instanceof oa&&(this.isE2EEEnabled=t),this.emit(D.ParticipantEncryptionStatusChanged,t,i)}),this.e2eeManager.on(kt.EncryptionError,t=>this.emit(D.EncryptionError,t)),(e=this.e2eeManager)===null||e===void 0||e.setup(this))}get logContext(){var e;return{room:this.name,roomID:(e=this.roomInfo)===null||e===void 0?void 0:e.sid,participant:this.localParticipant.identity,pID:this.localParticipant.sid}}get isRecording(){var e,t;return(t=(e=this.roomInfo)===null||e===void 0?void 0:e.activeRecording)!==null&&t!==void 0?t:!1}getSid(){return g(this,void 0,void 0,function*(){return this.state===ie.Disconnected?"":this.roomInfo&&this.roomInfo.sid!==""?this.roomInfo.sid:new Promise((e,t)=>{const i=s=>{s.sid!==""&&(this.engine.off(j.RoomUpdate,i),e(s.sid))};this.engine.on(j.RoomUpdate,i),this.once(D.Disconnected,()=>{this.engine.off(j.RoomUpdate,i),t("Room disconnected before room server id was available")})})})}get name(){var e,t;return(t=(e=this.roomInfo)===null||e===void 0?void 0:e.name)!==null&&t!==void 0?t:""}get metadata(){var e;return(e=this.roomInfo)===null||e===void 0?void 0:e.metadata}get numParticipants(){var e,t;return(t=(e=this.roomInfo)===null||e===void 0?void 0:e.numParticipants)!==null&&t!==void 0?t:0}get numPublishers(){var e,t;return(t=(e=this.roomInfo)===null||e===void 0?void 0:e.numPublishers)!==null&&t!==void 0?t:0}maybeCreateEngine(){this.engine&&!this.engine.isClosed||(this.engine=new Xh(this.options),this.engine.on(j.ParticipantUpdate,this.handleParticipantUpdates).on(j.RoomUpdate,this.handleRoomUpdate).on(j.SpeakersChanged,this.handleSpeakersChanged).on(j.StreamStateChanged,this.handleStreamStateUpdate).on(j.ConnectionQualityUpdate,this.handleConnectionQualityUpdate).on(j.SubscriptionError,this.handleSubscriptionError).on(j.SubscriptionPermissionUpdate,this.handleSubscriptionPermissionUpdate).on(j.MediaTrackAdded,(e,t,i)=>{this.onTrackAdded(e,t,i)}).on(j.Disconnected,e=>{this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e)}).on(j.ActiveSpeakersUpdate,this.handleActiveSpeakersUpdate).on(j.DataPacketReceived,this.handleDataPacket).on(j.Resuming,()=>{this.clearConnectionReconcile(),this.isResuming=!0,this.log.info("Resuming signal connection",this.logContext),this.setAndEmitConnectionState(ie.SignalReconnecting)&&this.emit(D.SignalReconnecting)}).on(j.Resumed,()=>{this.registerConnectionReconcile(),this.isResuming=!1,this.log.info("Resumed signal connection",this.logContext),this.updateSubscriptions(),this.emitBufferedEvents(),this.setAndEmitConnectionState(ie.Connected)&&this.emit(D.Reconnected)}).on(j.SignalResumed,()=>{this.bufferedEvents=[],(this.state===ie.Reconnecting||this.isResuming)&&this.sendSyncState()}).on(j.Restarting,this.handleRestarting).on(j.SignalRestarted,this.handleSignalRestarted).on(j.Offline,()=>{this.setAndEmitConnectionState(ie.Reconnecting)&&this.emit(D.Reconnecting)}).on(j.DCBufferStatusChanged,(e,t)=>{this.emit(D.DCBufferStatusChanged,e,t)}).on(j.LocalTrackSubscribed,e=>{const t=this.localParticipant.getTrackPublications().find(i=>{let{trackSid:s}=i;return s===e});if(!t){this.log.warn("could not find local track subscription for subscribed event",this.logContext);return}this.localParticipant.emit(L.LocalTrackSubscribed,t),this.emitWhenConnected(D.LocalTrackSubscribed,t,this.localParticipant)}),this.localParticipant&&this.localParticipant.setupEngine(this.engine),this.e2eeManager&&this.e2eeManager.setupEngine(this.engine))}static getLocalDevices(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return Pe.getInstance().getDevices(e,t)}prepareConnection(e,t){return g(this,void 0,void 0,function*(){if(this.state===ie.Disconnected){this.log.debug("prepareConnection to ".concat(e),this.logContext);try{if(ss(new URL(e))&&t){this.regionUrlProvider=new sa(e,t);const i=yield this.regionUrlProvider.getNextBestRegionUrl();i&&this.state===ie.Disconnected&&(this.regionUrl=i,yield fetch(qr(i),{method:"HEAD"}),this.log.debug("prepared connection to ".concat(i),this.logContext))}else yield fetch(qr(e),{method:"HEAD"})}catch(i){this.log.warn("could not prepare connection",Object.assign(Object.assign({},this.logContext),{error:i}))}}})}getParticipantByIdentity(e){return this.localParticipant.identity===e?this.localParticipant:this.remoteParticipants.get(e)}clearConnectionFutures(){this.connectFuture=void 0}simulateScenario(e,t){return g(this,void 0,void 0,function*(){let i=()=>{},s;switch(e){case"signal-reconnect":yield this.engine.client.handleOnClose("simulate disconnect");break;case"speaker":s=new Ze({scenario:{case:"speakerUpdate",value:3}});break;case"node-failure":s=new Ze({scenario:{case:"nodeFailure",value:!0}});break;case"server-leave":s=new Ze({scenario:{case:"serverLeave",value:!0}});break;case"migration":s=new Ze({scenario:{case:"migration",value:!0}});break;case"resume-reconnect":this.engine.failNext(),yield this.engine.client.handleOnClose("simulate resume-disconnect");break;case"disconnect-signal-on-resume":i=()=>g(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")}),s=new Ze({scenario:{case:"disconnectSignalOnResume",value:!0}});break;case"disconnect-signal-on-resume-no-messages":i=()=>g(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")}),s=new Ze({scenario:{case:"disconnectSignalOnResumeNoMessages",value:!0}});break;case"full-reconnect":this.engine.fullReconnectOnNext=!0,yield this.engine.client.handleOnClose("simulate full-reconnect");break;case"force-tcp":case"force-tls":s=new Ze({scenario:{case:"switchCandidateProtocol",value:e==="force-tls"?2:1}}),i=()=>g(this,void 0,void 0,function*(){const r=this.engine.client.onLeave;r&&r(new en({reason:ze.CLIENT_INITIATED,action:jt.RECONNECT}))});break;case"subscriber-bandwidth":if(t===void 0||typeof t!="number")throw new Error("subscriber-bandwidth requires a number as argument");s=new Ze({scenario:{case:"subscriberBandwidth",value:BigInt(t)}});break;case"leave-full-reconnect":s=new Ze({scenario:{case:"leaveRequestFullReconnect",value:!0}})}s&&(yield this.engine.client.sendSimulateScenario(s),yield i())})}get canPlaybackAudio(){return this.audioEnabled}get canPlaybackVideo(){return!this.isVideoPlaybackBlocked}getActiveDevice(e){return this.localParticipant.activeDeviceMap.get(e)}switchActiveDevice(e,t){return g(this,arguments,void 0,function(i,s){var r=this;let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return function*(){var o,c,l,d,f,p,m;let y=!1,C=!0;const _=a?{exact:s}:s;if(i==="audioinput"){const b=(o=r.getActiveDevice(i))!==null&&o!==void 0?o:r.options.audioCaptureDefaults.deviceId;r.options.audioCaptureDefaults.deviceId=_,y=b!==_;const G=Array.from(r.localParticipant.audioTrackPublications.values()).filter(W=>W.source===E.Source.Microphone);try{C=(yield Promise.all(G.map(W=>{var P;return(P=W.audioTrack)===null||P===void 0?void 0:P.setDeviceId(_)}))).every(W=>W===!0)}catch(W){throw r.options.audioCaptureDefaults.deviceId=b,W}}else if(i==="videoinput"){const b=(c=r.getActiveDevice(i))!==null&&c!==void 0?c:r.options.videoCaptureDefaults.deviceId;r.options.videoCaptureDefaults.deviceId=_,y=b!==_;const G=Array.from(r.localParticipant.videoTrackPublications.values()).filter(W=>W.source===E.Source.Camera);try{C=(yield Promise.all(G.map(W=>{var P;return(P=W.videoTrack)===null||P===void 0?void 0:P.setDeviceId(_)}))).every(W=>W===!0)}catch(W){throw r.options.videoCaptureDefaults.deviceId=b,W}}else if(i==="audiooutput"){if(!ns()&&!r.options.webAudioMix||r.options.webAudioMix&&r.audioContext&&!("setSinkId"in r.audioContext))throw new Error("cannot switch audio output, setSinkId not supported");r.options.webAudioMix&&(s=(l=yield Pe.getInstance().normalizeDeviceId("audiooutput",s))!==null&&l!==void 0?l:""),(d=(m=r.options).audioOutput)!==null&&d!==void 0||(m.audioOutput={});const b=(f=r.getActiveDevice(i))!==null&&f!==void 0?f:r.options.audioOutput.deviceId;r.options.audioOutput.deviceId=s,y=b!==_;try{r.options.webAudioMix&&((p=r.audioContext)===null||p===void 0||p.setSinkId(s)),yield Promise.all(Array.from(r.remoteParticipants.values()).map(G=>G.setAudioOutput({deviceId:s})))}catch(G){throw r.options.audioOutput.deviceId=b,G}}return y&&C&&(r.localParticipant.activeDeviceMap.set(i,s),r.emit(D.ActiveDeviceChanged,i,s)),C}()})}setupLocalParticipantEvents(){this.localParticipant.on(L.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).on(L.ParticipantNameChanged,this.onLocalParticipantNameChanged).on(L.AttributesChanged,this.onLocalAttributesChanged).on(L.TrackMuted,this.onLocalTrackMuted).on(L.TrackUnmuted,this.onLocalTrackUnmuted).on(L.LocalTrackPublished,this.onLocalTrackPublished).on(L.LocalTrackUnpublished,this.onLocalTrackUnpublished).on(L.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).on(L.MediaDevicesError,this.onMediaDevicesError).on(L.AudioStreamAcquired,this.startAudio).on(L.ChatMessage,this.onLocalChatMessageSent).on(L.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged)}recreateEngine(){var e;(e=this.engine)===null||e===void 0||e.close(),this.engine=void 0,this.isResuming=!1,this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.bufferedEvents=[],this.maybeCreateEngine()}onTrackAdded(e,t,i){if(this.state===ie.Connecting||this.state===ie.Reconnecting){const d=()=>{this.onTrackAdded(e,t,i),f()},f=()=>{this.off(D.Reconnected,d),this.off(D.Connected,d),this.off(D.Disconnected,f)};this.once(D.Reconnected,d),this.once(D.Connected,d),this.once(D.Disconnected,f);return}if(this.state===ie.Disconnected){this.log.warn("skipping incoming track after Room disconnected",this.logContext);return}const s=hh(t.id),r=s[0];let a=s[1],o=e.id;if(a&&a.startsWith("TR")&&(o=a),r===this.localParticipant.sid){this.log.warn("tried to create RemoteParticipant for local participant",this.logContext);return}const c=Array.from(this.remoteParticipants.values()).find(d=>d.sid===r);if(!c){this.log.error("Tried to add a track for a participant, that's not present. Sid: ".concat(r),this.logContext);return}let l;this.options.adaptiveStream&&(typeof this.options.adaptiveStream=="object"?l=this.options.adaptiveStream:l={}),c.addSubscribedMediaTrack(e,o,t,i,l)}handleDisconnect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1?arguments[1]:void 0;var i;if(this.clearConnectionReconcile(),this.isResuming=!1,this.bufferedEvents=[],this.transcriptionReceivedTimes.clear(),this.state!==ie.Disconnected){this.regionUrl=void 0;try{this.remoteParticipants.forEach(s=>{s.trackPublications.forEach(r=>{s.unpublishTrack(r.trackSid)})}),this.localParticipant.trackPublications.forEach(s=>{var r,a,o;s.track&&this.localParticipant.unpublishTrack(s.track,e),e?((r=s.track)===null||r===void 0||r.detach(),(a=s.track)===null||a===void 0||a.stop()):(o=s.track)===null||o===void 0||o.stopMonitor()}),this.localParticipant.off(L.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).off(L.ParticipantNameChanged,this.onLocalParticipantNameChanged).off(L.AttributesChanged,this.onLocalAttributesChanged).off(L.TrackMuted,this.onLocalTrackMuted).off(L.TrackUnmuted,this.onLocalTrackUnmuted).off(L.LocalTrackPublished,this.onLocalTrackPublished).off(L.LocalTrackUnpublished,this.onLocalTrackUnpublished).off(L.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).off(L.MediaDevicesError,this.onMediaDevicesError).off(L.AudioStreamAcquired,this.startAudio).off(L.ChatMessage,this.onLocalChatMessageSent).off(L.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged),this.localParticipant.trackPublications.clear(),this.localParticipant.videoTrackPublications.clear(),this.localParticipant.audioTrackPublications.clear(),this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.activeSpeakers=[],this.audioContext&&typeof this.options.webAudioMix=="boolean"&&(this.audioContext.close(),this.audioContext=void 0),Le()&&(window.removeEventListener("beforeunload",this.onPageLeave),window.removeEventListener("pagehide",this.onPageLeave),window.removeEventListener("freeze",this.onPageLeave),(i=navigator.mediaDevices)===null||i===void 0||i.removeEventListener("devicechange",this.handleDeviceChange))}finally{this.setAndEmitConnectionState(ie.Disconnected),this.emit(D.Disconnected,t)}}}handleParticipantDisconnected(e,t){var i;this.remoteParticipants.delete(e),t&&(t.trackPublications.forEach(s=>{t.unpublishTrack(s.trackSid,!0)}),this.emit(D.ParticipantDisconnected,t),(i=this.localParticipant)===null||i===void 0||i.handleParticipantDisconnected(t.identity))}acquireAudioContext(){return g(this,void 0,void 0,function*(){var e,t;if(typeof this.options.webAudioMix!="boolean"&&this.options.webAudioMix.audioContext?this.audioContext=this.options.webAudioMix.audioContext:(!this.audioContext||this.audioContext.state==="closed")&&(this.audioContext=(e=Uo())!==null&&e!==void 0?e:void 0),this.audioContext&&this.audioContext.state==="suspended")try{yield this.audioContext.resume()}catch(s){this.log.warn("Could not resume audio context",Object.assign(Object.assign({},this.logContext),{error:s}))}this.options.webAudioMix&&this.remoteParticipants.forEach(s=>s.setAudioContext(this.audioContext)),this.localParticipant.setAudioContext(this.audioContext);const i=((t=this.audioContext)===null||t===void 0?void 0:t.state)==="running";i!==this.canPlaybackAudio&&(this.audioEnabled=i,this.emit(D.AudioPlaybackStatusChanged,i))})}createParticipant(e,t){var i;let s;return t?s=Qi.fromParticipantInfo(this.engine.client,t,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}):s=new Qi(this.engine.client,"",e,void 0,void 0,void 0,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}),this.options.webAudioMix&&s.setAudioContext(this.audioContext),!((i=this.options.audioOutput)===null||i===void 0)&&i.deviceId&&s.setAudioOutput(this.options.audioOutput).catch(r=>this.log.warn("Could not set audio output: ".concat(r.message),this.logContext)),s}getOrCreateParticipant(e,t){if(this.remoteParticipants.has(e)){const s=this.remoteParticipants.get(e);return t&&s.updateInfo(t)&&this.sidToIdentity.set(t.sid,t.identity),s}const i=this.createParticipant(e,t);return this.remoteParticipants.set(e,i),this.sidToIdentity.set(t.sid,t.identity),this.emitWhenConnected(D.ParticipantConnected,i),i.on(L.TrackPublished,s=>{this.emitWhenConnected(D.TrackPublished,s,i)}).on(L.TrackSubscribed,(s,r)=>{s.kind===E.Kind.Audio?(s.on(N.AudioPlaybackStarted,this.handleAudioPlaybackStarted),s.on(N.AudioPlaybackFailed,this.handleAudioPlaybackFailed)):s.kind===E.Kind.Video&&(s.on(N.VideoPlaybackFailed,this.handleVideoPlaybackFailed),s.on(N.VideoPlaybackStarted,this.handleVideoPlaybackStarted)),this.emit(D.TrackSubscribed,s,r,i)}).on(L.TrackUnpublished,s=>{this.emit(D.TrackUnpublished,s,i)}).on(L.TrackUnsubscribed,(s,r)=>{this.emit(D.TrackUnsubscribed,s,r,i)}).on(L.TrackSubscriptionFailed,s=>{this.emit(D.TrackSubscriptionFailed,s,i)}).on(L.TrackMuted,s=>{this.emitWhenConnected(D.TrackMuted,s,i)}).on(L.TrackUnmuted,s=>{this.emitWhenConnected(D.TrackUnmuted,s,i)}).on(L.ParticipantMetadataChanged,s=>{this.emitWhenConnected(D.ParticipantMetadataChanged,s,i)}).on(L.ParticipantNameChanged,s=>{this.emitWhenConnected(D.ParticipantNameChanged,s,i)}).on(L.AttributesChanged,s=>{this.emitWhenConnected(D.ParticipantAttributesChanged,s,i)}).on(L.ConnectionQualityChanged,s=>{this.emitWhenConnected(D.ConnectionQualityChanged,s,i)}).on(L.ParticipantPermissionsChanged,s=>{this.emitWhenConnected(D.ParticipantPermissionsChanged,s,i)}).on(L.TrackSubscriptionStatusChanged,(s,r)=>{this.emitWhenConnected(D.TrackSubscriptionStatusChanged,s,r,i)}).on(L.TrackSubscriptionFailed,(s,r)=>{this.emit(D.TrackSubscriptionFailed,s,i,r)}).on(L.TrackSubscriptionPermissionChanged,(s,r)=>{this.emitWhenConnected(D.TrackSubscriptionPermissionChanged,s,r,i)}),t&&i.updateInfo(t),i}sendSyncState(){const e=Array.from(this.remoteParticipants.values()).reduce((i,s)=>(i.push(...s.getTrackPublications()),i),[]),t=this.localParticipant.getTrackPublications();this.engine.sendSyncState(e,t)}updateSubscriptions(){for(const e of this.remoteParticipants.values())for(const t of e.videoTrackPublications.values())t.isSubscribed&&t instanceof Qo&&t.emitTrackUpdate()}getRemoteParticipantBySid(e){const t=this.sidToIdentity.get(e);if(t)return this.remoteParticipants.get(t)}registerConnectionReconcile(){this.clearConnectionReconcile();let e=0;this.connectionReconcileInterval=Ee.setInterval(()=>{!this.engine||this.engine.isClosed||!this.engine.verifyTransport()?(e++,this.log.warn("detected connection state mismatch",Object.assign(Object.assign({},this.logContext),{numFailures:e,engine:this.engine?{closed:this.engine.isClosed,transportsConnected:this.engine.verifyTransport()}:void 0})),e>=3&&(this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,ze.STATE_MISMATCH))):e=0},af)}clearConnectionReconcile(){this.connectionReconcileInterval&&Ee.clearInterval(this.connectionReconcileInterval)}setAndEmitConnectionState(e){return e===this.state?!1:(this.state=e,this.emit(D.ConnectionStateChanged,this.state),!0)}emitBufferedEvents(){this.bufferedEvents.forEach(e=>{let[t,i]=e;this.emit(t,...i)}),this.bufferedEvents=[]}emitWhenConnected(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];if(this.state===ie.Reconnecting||this.isResuming||!this.engine||this.engine.pendingReconnect)this.bufferedEvents.push([e,i]);else if(this.state===ie.Connected)return this.emit(e,...i);return!1}simulateParticipants(e){return g(this,void 0,void 0,function*(){var t,i;const s=Object.assign({audio:!0,video:!0,useRealTracks:!1},e.publish),r=Object.assign({count:9,audio:!1,video:!0,aspectRatios:[1.66,1.7,1.3]},e.participants);if(this.handleDisconnect(),this.roomInfo=new fs({sid:"RM_SIMULATED",name:"simulated-room",emptyTimeout:0,maxParticipants:0,creationTime:de.parse(new Date().getTime()),metadata:"",numParticipants:1,numPublishers:1,turnPassword:"",enabledCodecs:[],activeRecording:!1}),this.localParticipant.updateInfo(new mi({identity:"simulated-local",name:"local-name"})),this.setupLocalParticipantEvents(),this.emit(D.SignalConnected),this.emit(D.Connected),this.setAndEmitConnectionState(ie.Connected),s.video){const a=new $i(E.Kind.Video,new Ut({source:Re.CAMERA,sid:Math.floor(Math.random()*1e4).toString(),type:Ge.AUDIO,name:"video-dummy"}),new we(s.useRealTracks?(yield window.navigator.mediaDevices.getUserMedia({video:!0})).getVideoTracks()[0]:Vr(160*((t=r.aspectRatios[0])!==null&&t!==void 0?t:1),160,!0,!0),void 0,!1,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(a),this.localParticipant.emit(L.LocalTrackPublished,a)}if(s.audio){const a=new $i(E.Kind.Audio,new Ut({source:Re.MICROPHONE,sid:Math.floor(Math.random()*1e4).toString(),type:Ge.AUDIO}),new Se(s.useRealTracks?(yield navigator.mediaDevices.getUserMedia({audio:!0})).getAudioTracks()[0]:In(),void 0,!1,this.audioContext,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(a),this.localParticipant.emit(L.LocalTrackPublished,a)}for(let a=0;a<r.count-1;a+=1){let o=new mi({sid:Math.floor(Math.random()*1e4).toString(),identity:"simulated-".concat(a),state:Fn.ACTIVE,tracks:[],joinedAt:de.parse(Date.now())});const c=this.getOrCreateParticipant(o.identity,o);if(r.video){const l=Vr(160*((i=r.aspectRatios[a%r.aspectRatios.length])!==null&&i!==void 0?i:1),160,!1,!0),d=new Ut({source:Re.CAMERA,sid:Math.floor(Math.random()*1e4).toString(),type:Ge.AUDIO});c.addSubscribedMediaTrack(l,d.sid,new MediaStream([l]),new RTCRtpReceiver),o.tracks=[...o.tracks,d]}if(r.audio){const l=In(),d=new Ut({source:Re.MICROPHONE,sid:Math.floor(Math.random()*1e4).toString(),type:Ge.AUDIO});c.addSubscribedMediaTrack(l,d.sid,new MediaStream([l]),new RTCRtpReceiver),o.tracks=[...o.tracks,d]}c.updateInfo(o)}})}emit(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];if(e!==D.ActiveSpeakersChanged){const r=Xo(i).filter(a=>a!==void 0);this.log.debug("room event ".concat(e),Object.assign(Object.assign({},this.logContext),{event:e,args:r}))}return super.emit(e,...i)}}function Xo(n){return n.map(e=>{if(e)return Array.isArray(e)?Xo(e):typeof e=="object"?"logContext"in e&&e.logContext:e})}var Ke;(function(n){n[n.IDLE=0]="IDLE",n[n.RUNNING=1]="RUNNING",n[n.SKIPPED=2]="SKIPPED",n[n.SUCCESS=3]="SUCCESS",n[n.FAILED=4]="FAILED"})(Ke||(Ke={}));class Ht extends nt.EventEmitter{constructor(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};super(),this.status=Ke.IDLE,this.logs=[],this.errorsAsWarnings=!1,this.url=e,this.token=t,this.name=this.constructor.name,this.room=new Yo(i.roomOptions),this.connectOptions=i.connectOptions,i.errorsAsWarnings&&(this.errorsAsWarnings=i.errorsAsWarnings)}run(e){return g(this,void 0,void 0,function*(){if(this.status!==Ke.IDLE)throw Error("check is running already");this.setStatus(Ke.RUNNING);try{yield this.perform()}catch(t){t instanceof Error&&(this.errorsAsWarnings?this.appendWarning(t.message):this.appendError(t.message))}return yield this.disconnect(),yield new Promise(t=>setTimeout(t,500)),this.status!==Ke.SKIPPED&&this.setStatus(this.isSuccess()?Ke.SUCCESS:Ke.FAILED),e&&e(),this.getInfo()})}isSuccess(){return!this.logs.some(e=>e.level==="error")}connect(){return g(this,void 0,void 0,function*(){return this.room.state===ie.Connected?this.room:(yield this.room.connect(this.url,this.token,this.connectOptions),this.room)})}disconnect(){return g(this,void 0,void 0,function*(){this.room&&this.room.state!==ie.Disconnected&&(yield this.room.disconnect(),yield new Promise(e=>setTimeout(e,500)))})}skip(){this.setStatus(Ke.SKIPPED)}appendMessage(e){this.logs.push({level:"info",message:e}),this.emit("update",this.getInfo())}appendWarning(e){this.logs.push({level:"warning",message:e}),this.emit("update",this.getInfo())}appendError(e){this.logs.push({level:"error",message:e}),this.emit("update",this.getInfo())}setStatus(e){this.status=e,this.emit("update",this.getInfo())}get engine(){var e;return(e=this.room)===null||e===void 0?void 0:e.engine}getInfo(){return{logs:this.logs,name:this.name,status:this.status,description:this.description}}}function Zo(n){return g(this,void 0,void 0,function*(){var e,t;n??(n={}),(e=n.audio)!==null&&e!==void 0||(n.audio=!0),(t=n.video)!==null&&t!==void 0||(n.video=!0);const{audioProcessor:i,videoProcessor:s}=Cs(n),r=Lo(n,Ko,Go),a=nn(r),o=navigator.mediaDevices.getUserMedia(a);n.audio&&(Pe.userMediaPromiseMap.set("audioinput",o),o.catch(()=>Pe.userMediaPromiseMap.delete("audioinput"))),n.video&&(Pe.userMediaPromiseMap.set("videoinput",o),o.catch(()=>Pe.userMediaPromiseMap.delete("videoinput")));const c=yield o;return Promise.all(c.getTracks().map(l=>g(this,void 0,void 0,function*(){const d=l.kind==="audio";d?r.audio:r.video;let f;const p=d?a.audio:a.video;typeof p!="boolean"&&(f=p),f?f.deviceId=l.getSettings().deviceId:f={deviceId:l.getSettings().deviceId};const m=Wo(l,f);return m.kind===E.Kind.Video?m.source=E.Source.Camera:m.kind===E.Kind.Audio&&(m.source=E.Source.Microphone),m.mediaStream=c,m instanceof Se&&i?yield m.setProcessor(i):m instanceof we&&s&&(yield m.setProcessor(s)),m})))})}function of(n){return g(this,void 0,void 0,function*(){return(yield Zo({audio:!1,video:n}))[0]})}function cf(n){return g(this,void 0,void 0,function*(){return(yield Zo({audio:n,video:!1}))[0]})}class lf extends Ht{get description(){return"Can publish audio"}perform(){return g(this,void 0,void 0,function*(){var e;const t=yield this.connect(),i=yield cf();t.localParticipant.publishTrack(i),yield new Promise(a=>setTimeout(a,3e3));const s=yield(e=i.sender)===null||e===void 0?void 0:e.getStats();if(!s)throw new Error("Could not get RTCStats");let r=0;if(s.forEach(a=>{a.type==="outbound-rtp"&&(a.kind==="audio"||!a.kind&&a.mediaType==="audio")&&(r=a.packetsSent)}),r===0)throw new Error("Could not determine packets are sent");this.appendMessage("published ".concat(r," audio packets"))})}}class df extends Ht{get description(){return"Can publish video"}perform(){return g(this,void 0,void 0,function*(){var e;const t=yield this.connect(),i=yield of();t.localParticipant.publishTrack(i),yield new Promise(a=>setTimeout(a,5e3));const s=yield(e=i.sender)===null||e===void 0?void 0:e.getStats();if(!s)throw new Error("Could not get RTCStats");let r=0;if(s.forEach(a=>{a.type==="outbound-rtp"&&(a.kind==="video"||!a.kind&&a.mediaType==="video")&&(r+=a.packetsSent)}),r===0)throw new Error("Could not determine packets are sent");this.appendMessage("published ".concat(r," video packets"))})}}class uf extends Ht{get description(){return"Resuming connection after interruption"}perform(){return g(this,void 0,void 0,function*(){var e;const t=yield this.connect();let i=!1,s=!1,r;const a=new Promise(l=>{setTimeout(l,5e3),r=l}),o=()=>{i=!0};t.on(D.SignalReconnecting,o).on(D.Reconnecting,o).on(D.Reconnected,()=>{s=!0,r(!0)}),(e=t.engine.client.ws)===null||e===void 0||e.close();const c=t.engine.client.onClose;if(c&&c(""),yield a,i){if(!s||t.state!==ie.Connected)throw this.appendWarning("reconnection is only possible in Redis-based configurations"),new Error("Not able to reconnect")}else throw new Error("Did not attempt to reconnect")})}}class hf extends Ht{get description(){return"Can connect via TURN"}perform(){return g(this,void 0,void 0,function*(){var e,t;const i=new Ss,s=yield i.join(this.url,this.token,{autoSubscribe:!0,maxRetries:0,e2eeEnabled:!1,websocketTimeout:15e3});let r=!1,a=!1,o=!1;for(let c of s.iceServers)for(let l of c.urls)l.startsWith("turn:")?(a=!0,o=!0):l.startsWith("turns:")&&(a=!0,o=!0,r=!0),l.startsWith("stun:")&&(o=!0);o?a&&!r&&this.appendWarning("TURN is configured server side, but TURN/TLS is unavailable."):this.appendWarning("No STUN servers configured on server side."),yield i.close(),!((t=(e=this.connectOptions)===null||e===void 0?void 0:e.rtcConfig)===null||t===void 0)&&t.iceServers||a?yield this.room.connect(this.url,this.token,{rtcConfig:{iceTransportPolicy:"relay"}}):(this.appendWarning("No TURN servers configured."),this.skip(),yield new Promise(c=>setTimeout(c,0)))})}}class ff extends Ht{get description(){return"Establishing WebRTC connection"}perform(){return g(this,void 0,void 0,function*(){let e=!1,t=!1;this.room.on(D.SignalConnected,()=>{const i=this.room.engine.client.onTrickle;this.room.engine.client.onTrickle=(s,r)=>{if(s.candidate){const a=new RTCIceCandidate(s);let o="".concat(a.protocol," ").concat(a.address,":").concat(a.port," ").concat(a.type);a.address&&(pf(a.address)?o+=" (private)":a.protocol==="tcp"&&a.tcpType==="passive"?(e=!0,o+=" (passive)"):a.protocol==="udp"&&(t=!0)),this.appendMessage(o)}i&&i(s,r)},this.room.engine.pcManager&&(this.room.engine.pcManager.subscriber.onIceCandidateError=s=>{s instanceof RTCPeerConnectionIceErrorEvent&&this.appendWarning("error with ICE candidate: ".concat(s.errorCode," ").concat(s.errorText," ").concat(s.url))})});try{yield this.connect(),Z.info("now the room is connected")}catch(i){throw this.appendWarning("ports need to be open on firewall in order to connect."),i}e||this.appendWarning("Server is not configured for ICE/TCP"),t||this.appendWarning("No public IPv4 UDP candidates were found. Your server is likely not configured correctly")})}}function pf(n){const e=n.split(".");if(e.length===4){if(e[0]==="10")return!0;if(e[0]==="192"&&e[1]==="168")return!0;if(e[0]==="172"){const t=parseInt(e[1],10);if(t>=16&&t<=31)return!0}}return!1}class mf extends Ht{get description(){return"Connecting to signal connection via WebSocket"}perform(){return g(this,void 0,void 0,function*(){var e,t,i;(this.url.startsWith("ws:")||this.url.startsWith("http:"))&&this.appendWarning("Server is insecure, clients may block connections to it");let s=new Ss;const r=yield s.join(this.url,this.token,{autoSubscribe:!0,maxRetries:0,e2eeEnabled:!1,websocketTimeout:15e3});this.appendMessage("Connected to server, version ".concat(r.serverVersion,".")),((e=r.serverInfo)===null||e===void 0?void 0:e.edition)===qa.Cloud&&(!((t=r.serverInfo)===null||t===void 0)&&t.region)&&this.appendMessage("LiveKit Cloud: ".concat((i=r.serverInfo)===null||i===void 0?void 0:i.region)),yield s.close()})}}class nm extends nt.EventEmitter{constructor(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};super(),this.options={},this.checkResults=new Map,this.url=e,this.token=t,this.options=i}getNextCheckId(){const e=this.checkResults.size;return this.checkResults.set(e,{logs:[],status:Ke.IDLE,name:"",description:""}),e}updateCheck(e,t){this.checkResults.set(e,t),this.emit("checkUpdate",e,t)}isSuccess(){return Array.from(this.checkResults.values()).every(e=>e.status!==Ke.FAILED)}getResults(){return Array.from(this.checkResults.values())}createAndRunCheck(e){return g(this,void 0,void 0,function*(){const t=this.getNextCheckId(),i=new e(this.url,this.token,this.options),s=a=>{this.updateCheck(t,a)};i.on("update",s);const r=yield i.run();return i.off("update",s),r})}checkWebsocket(){return g(this,void 0,void 0,function*(){return this.createAndRunCheck(mf)})}checkWebRTC(){return g(this,void 0,void 0,function*(){return this.createAndRunCheck(ff)})}checkTURN(){return g(this,void 0,void 0,function*(){return this.createAndRunCheck(hf)})}checkReconnect(){return g(this,void 0,void 0,function*(){return this.createAndRunCheck(uf)})}checkPublishAudio(){return g(this,void 0,void 0,function*(){return this.createAndRunCheck(lf)})}checkPublishVideo(){return g(this,void 0,void 0,function*(){return this.createAndRunCheck(df)})}}function si(n,e){switch(n.name){case"NotAllowedError":U.error(`用户拒绝了权限请求,请允许此网站使用${e}权限`);break;case"NotFoundError":U.error(`未检测到可用的${e}设备,请检查${e}是否已正确连接`);break;case"NotSupportedError":U.error(`当前浏览器不支持${e}功能,请使用现代浏览器如Chrome、Firefox或Edge`);break;case"NotReadableError":U.error(`${e}设备正被其他应用程序占用,请关闭其他使用${e}的应用后重试`);break;case"OverconstrainedError":U.error(`${e}配置不兼容,请尝试调整${e}设置`);break;default:U.error("服务错误,请刷新重试")}}function gf(n,e,t){try{const s=new TextDecoder().decode(n);U.info(`收到消息 from ${e.identity}: ${s}`)}catch(i){console.error("处理接收消息失败:",i)}}function vf(){U.success("已重新连接到房间")}function wi(n,e){const t=n.find(i=>i.deviceId===e);return t&&t.label||"未知设备"}function bf(n,e){}function yf(n){}async function kf(n){const e=await n.arrayBuffer(),t=await crypto.subtle.digest("SHA-1",e);return Array.from(new Uint8Array(t)).map(r=>r.toString(16).padStart(2,"0")).join("")}function ca(n,e){return JSON.stringify(n)===JSON.stringify(e)}function la(){return`laser_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}const Tf={class:"wrapper-content"},Cf={class:"login-form"},Sf={key:0},Pf={key:1},Ef={__name:"index",emits:["loginSuccess"],setup(n,{emit:e}){const t=da();fa();const{proxy:i}=ua();F(void 0);const s=e,r=Dl(),a=F({username:"",password:""}),o={username:[{required:!0,trigger:"blur",message:"请输入用户名"}],password:[{required:!0,trigger:"blur",message:"请输入密码"}]},c=F(!1);function l(){i.$refs.loginRef.validate(p=>{if(p){if(c.value=!0,!(localStorage!=null&&localStorage.getItem("UDID"))){ElMessage({message:"服务错误,请刷新页面",type:"warning"});return}const m=(a.value.username+(localStorage==null?void 0:localStorage.getItem("UDID"))).toLowerCase().replaceAll("-",""),C=`Gx${d(6)}${a.value.password}`,_=Jl.Blowfish.encrypt(C,m).toString();t.login({password:_,username:a.value.username}).then(async b=>{const G=JSON.parse(sessionStorage.getItem("userData"));s("loginSuccess",G)}).catch(b=>{console.log("登录失败",b),c.value=!1})}}),f()}function d(p){const m="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let y="";for(let C=0;C<p;C++)y+=m.charAt(Math.floor(Math.random()*m.length));return y}function f(){"Notification"in window?Notification.requestPermission().then(()=>{}):console.log("浏览器不支持通知")}return ha(()=>{r.initUdid()}),(p,m)=>{const y=oe("el-input"),C=oe("el-form-item"),_=oe("el-button"),b=oe("el-form");return $(),Y("div",Tf,[x("div",Cf,[m[3]||(m[3]=x("div",{class:"selected-rectangle"},null,-1)),z(b,{ref:"loginRef",class:"form-info",model:a.value,rules:o},{default:Q(()=>[m[2]||(m[2]=x("h3",{class:"title"},"欢迎登录",-1)),z(C,{prop:"username"},{default:Q(()=>[z(y,{modelValue:a.value.username,"onUpdate:modelValue":m[0]||(m[0]=G=>a.value.username=G),"auto-complete":"off",placeholder:"请输入您的账号",size:"large",type:"text"},null,8,["modelValue"])]),_:1}),z(C,{prop:"password"},{default:Q(()=>[z(y,{modelValue:a.value.password,"onUpdate:modelValue":m[1]||(m[1]=G=>a.value.password=G),"auto-complete":"off",placeholder:"请输入密码",size:"large",type:"password",onKeyup:Ml(l,["enter"])},null,8,["modelValue"])]),_:1}),z(C,null,{default:Q(()=>[z(_,{loading:c.value,size:"large",class:"button-login",type:"primary",onClick:xl(l,["prevent"])},{default:Q(()=>[c.value?($(),Y("span",Pf,"登录中...")):($(),Y("span",Sf,"登 录"))]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])])])}}},_f=Yi(Ef,[["__scopeId","data-v-aa0dd888"]]),wf={class:"drawer-content"},Rf={class:"search-section"},If={key:0,class:"selected-section"},Of={class:"selected-header"},Df={class:"selected-tags"},Mf={class:"tree-item"},xf={class:"tree-item-content"},Af={key:0,class:"user-icon"},Nf={key:1,class:"dept-icon"},Lf={class:"tree-item-text"},Uf={key:2,class:"user-count"},Ff={class:"footer-actions"},jf={__name:"index",props:{loading:{type:Boolean,default:!0}},emits:["confirmSelection"],setup(n,{expose:e,emit:t}){const i=t,s=F(!1),r=F(),a=F(""),o=F([]),c=F([]),l=F(!1),d=F([]),f=Ri({children:"users",label:"name",value:"uid",disabled:S=>S.uid&&d.value.includes(S.uid),isLeaf:S=>!!S.uid});async function p(S){s.value=!0,o.value=[],c.value=[],a.value="";try{const I=await Al(S);d.value=I.data.filter(M=>M.status==1).map(M=>M.user_uid)}catch(I){console.error("获取房间参与者失败:",I),d.value=[]}Ve(()=>{r.value&&r.value.setCheckedKeys([])})}function m(){o.value.length>0&&(i("confirmSelection",o.value),s.value=!1)}function y(){s.value=!1}const C=async(S,I)=>{(S==null?void 0:S.level)===0?_(I,"",S==null?void 0:S.level):(S==null?void 0:S.level)>0&&(S.data.directory_uid?b(I,S.data.directory_uid,S==null?void 0:S.level):I(I))},_=async(S,I)=>{try{l.value=!0;let M=await sr({level:1});M.meta.code==200&&S(M.data),l.value=!1}catch(M){console.log(M),l.value=!1}},b=async(S,I,M)=>{try{l.value=!0;let A=[],q=[];const B=await sr({level:1,parent_uuid:I});B!=null&&B.data&&(q=B.data),I&&(A=(await Gl(I,{directory_uuid:I})).data),S([...q,...A]),l.value=!1}catch(A){console.log(A),l.value=!1}},G=(S,I)=>{r.value.getCheckedKeys(),r.value.getHalfCheckedKeys();const M=r.value.getCheckedNodes(!1,!0),A=M.filter(q=>q.uid&&!d.value.includes(q.uid));o.value=A,c.value=M},W=S=>{const I=o.value.findIndex(M=>M.uid===S.uid);I!==-1&&o.value.splice(I,1),r.value&&r.value.setChecked(S.uid,!1,!1)},P=()=>{o.value=[],c.value=[],r.value&&r.value.setCheckedKeys([])},k=()=>{r.value&&r.value.filter(a.value)},w=(S,I)=>S?I.name&&I.name.toLowerCase().includes(S.toLowerCase()):!0;return e({show:p,getSelectedUsers:()=>o.value}),(S,I)=>{const M=oe("el-input"),A=oe("el-button"),q=oe("el-tag"),B=oe("el-tree"),K=oe("el-scrollbar"),ve=oe("el-drawer"),De=ma("loading");return $(),Fe(ve,{modelValue:s.value,"onUpdate:modelValue":I[1]||(I[1]=_e=>s.value=_e),direction:"rtl",title:"请选择要加入房间的人员",size:"40%"},{header:Q(()=>[...I[2]||(I[2]=[x("h4",null,"请选择要加入房间的人员",-1)])]),footer:Q(()=>[x("div",Ff,[z(A,{onClick:y},{default:Q(()=>[...I[4]||(I[4]=[he("取 消",-1)])]),_:1}),z(A,{type:"primary",onClick:m,disabled:o.value.length===0},{default:Q(()=>[he(" 确 定 ("+le(o.value.length)+") ",1)]),_:1},8,["disabled"])])]),default:Q(()=>[x("div",wf,[x("div",Rf,[z(M,{modelValue:a.value,"onUpdate:modelValue":I[0]||(I[0]=_e=>a.value=_e),placeholder:"搜索人员或部门",clearable:"","prefix-icon":"Search",onInput:k},null,8,["modelValue"])]),o.value.length>0?($(),Y("div",If,[x("div",Of,[x("span",null,"已选择 ("+le(o.value.length)+")",1),z(A,{type:"text",onClick:P},{default:Q(()=>[...I[3]||(I[3]=[he("清空",-1)])]),_:1})]),x("div",Df,[($(!0),Y(ai,null,oi(o.value,_e=>($(),Fe(q,{key:_e.uid,closable:"",onClose:st=>W(_e),class:"selected-tag"},{default:Q(()=>[he(le(_e.name),1)]),_:2},1032,["onClose"]))),128))])])):ue("",!0),pa(($(),Fe(K,{class:"left-list-scrollbar",height:"calc(100vh - 240px)"},{default:Q(()=>[z(B,{ref_key:"treeRef",ref:r,lazy:"",load:C,props:f,"node-key":"uid","show-checkbox":"","default-expand-all":!1,"expand-on-click-node":!1,"check-strictly":!1,"filter-node-method":w,onCheck:G,style:{width:"100%"}},{default:Q(({node:_e,data:st})=>[x("div",Mf,[x("div",xf,[st.uid?($(),Y("span",Af,"👤")):($(),Y("span",Nf,"📁")),x("span",Lf,le(st.name),1),st.users_count?($(),Y("span",Uf,"("+le(st.users_count)+")",1)):ue("",!0)])])]),_:1},8,["props"])]),_:1})),[[De,l.value]])])]),_:1},8,["modelValue"])}}},Bf=Yi(jf,[["__scopeId","data-v-082d2e76"]]),Vf={style:{"margin-top":"20px"}},qf={style:{color:"#f56c6c"}},Kf={__name:"upLoadFile",props:{fileType:{type:Array,default:()=>["pdf","png","jpg","jpeg","gif","doc","docx","xls","xlsx","ppt","pptx"]},roomId:{type:String,default:""}},emits:["upload-success"],setup(n,{expose:e,emit:t}){const i=n,s=t,{proxy:r}=ua(),a=F(!1),o=F(""),c=F([]);F([]);const l=F(null);F(!0),F(!1);const d=F(""),f=F(""),p=F(null),m=F(!1),y=F(),C=F(""),_=Ie(()=>i.fileType.map(M=>`.${M}`).join(", "));ot.on("subscribeToFileUploadTopic",b);function b(M){try{y.value=M.roomId;const A=`xsynergy/room/${M.roomId}/file/upload`;Ce.subscribe(A,G)}catch(A){console.error("订阅文件上传事件失败:",A)}}function G(M,A){try{const q=M.toString(),B=JSON.parse(q);ot.emit("fileUploadStatus",B),s("upload-success")}catch(q){console.error("文件长传状态消息失败:",q)}}const W=async M=>{if(m.value)return U.warning("文件正在上传中,请稍候..."),!1;const A=M.name.toLowerCase().slice((M.name.lastIndexOf(".")-1>>>0)+2);if(!i.fileType.includes(A))return U.error(`文件格式不支持,请上传 ${_.value} 格式的文件`),!1;if(!(M.size/1024/1024<50))return U.error("上传文件大小不能超过 50 MB!"),!1;m.value=!0;try{p.value=M;const B=await kf(M),K=await Nl({service:i.roomId,hash:B,ext:A});if(K.meta.code!=200)return U.error(K.meta.msg),m.value=!1,!1;K.data.exists?(f.value=K.data.fileUrl,U.info("文件已存在,无需重复上传"),m.value=!1):(d.value=K.data.token,await P(M))}catch(B){return console.error("上传过程出错:",B),U.error("上传过程出错,请重试"),m.value=!1,!1}return!1},P=async M=>{if(!d.value)return U.error("上传凭证不存在"),m.value=!1,!1;let A=new FormData;A.append("file",M);try{const q=await Ll(d.value,A);return q.meta.code!=200?(U.error(q.meta.msg),m.value=!1,!1):(f.value=q.data.fileUrl,k(q.data.fileUrl),U.success("文件上传成功"),m.value=!1,a.value=!1,ot.emit("fileSuccess"),!0)}catch(q){return console.error("上传文件失败:",q),U.error("上传文件失败"),m.value=!1,!1}};async function k(M){try{const A=await Ul({file_url:M},i.roomId);if(A.meta.code!==200)throw new Error(A.meta.msg||"文件转换失败")}catch{U.error("文件转换失败")}}const w=()=>{o.value="上传文件",a.value=!0,C.value=JSON.parse(sessionStorage.getItem("userData"))},S=()=>{c.value=[],p.value=null,d.value="",f.value="",m.value=!1,a.value=!1};return e({showEdit:w,close:S,save:()=>{S()}}),(M,A)=>{const q=oe("el-button"),B=oe("el-upload"),K=oe("el-dialog");return $(),Y("div",null,[z(K,{modelValue:a.value,"onUpdate:modelValue":A[0]||(A[0]=ve=>a.value=ve),title:o.value,width:"403px",onClose:S},{default:Q(()=>[z(B,{ref_key:"uploadRef",ref:l,accept:_.value,"show-file-list":!1,limit:999,style:{width:"100%","text-align":"center"},"before-upload":W},{trigger:Q(()=>[z(q,{type:"primary",class:"el-button-custom-css blue-css",loading:m.value,disabled:m.value},{default:Q(()=>[he(le(m.value?"上传中...":"上传文件"),1)]),_:1},8,["loading","disabled"])]),_:1},8,["accept"]),x("div",Vf,[A[1]||(A[1]=he(" 请上传格式为: ",-1)),x("b",qf,le(_.value),1),A[2]||(A[2]=he(" 的文件 ",-1))])]),_:1},8,["modelValue","title"])])}}},Gf="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAxdJREFUaEPtWUtrE1EYPV9Co5UMiBUfuPItQmo7d0J/gzsR3JTiQnThThHqrqUtIiLizoWi6EYXrvwDkp0i84U0lQo+wQfqSrHR1Ewy105pSyiZuXPjXNpoZnvPPfec78zj3vkIMS7HcY76vn+BiI4A2BhjihLCzNYySAjxDsCjWq02MTMz8005uQlAKrAQ4hqA8wCUWBVX8zgzr/AJIX4DyAB4T0QnXNd9FpcrUpQQYmxB+ERcMh1ciIGAYp6ITrmu+yAOX6iBwcHBw6lUqgwgHYdIFxNhIKCSUsqLxWLxqoo31IAQ4iaAMyqCdscVBpZpJ5l5PGqNKAOvAextV6BqXkwDAc04M0+G8UUZ+AFg5U2hEqQ7bllWb6FQmA/m2bb9kYh2hXBIACPMfL/VeJSBOQBZXWFx8USUc133eYAXQtwAcDZi7hdm3rmuDEgpR5cfUiHEVgCPARwMM+F53pZyufxz9fiaJQDgA4BDzPwrbmrrKoElMQ8tyxouFAr1dk2sZQKLmqWUTwBM+r7/tFQqfdc1suYG4gquVqvW7OxsZT09A3G1L+K6BrTKZQDcTcBAUbUok0zAI6IJKeUdZv6spSIEPDQ0tL1er49IKS8R0YZWsCQNTDFzcNBJ/LJte5SIrhg10Gg0DpRKpVeJqweQz+d3+L7fMtUkE9jHzG9MGOjv79/W09Pz1WgCAMaYecqEAcdxzkkpr5s2UAtOSQDuJfUQB5XPZDLDUsrLYb9tkryFTBRfydk1oCyRYUA3AcMFVtJ3E2gqUce/Rjv+Q9bZW4l/YTPX2dtpAB1/oFG+s00A/svvgNH+gG5K7STwdmHPv1t3IUP4BjMHh/3Gav6of6O3AJw2JEiX9iUzt+wdhBoYGBjYn06nSwA26a5mAB/69Y/sEzuOc1JKeTfpJremwRcAnLBGiLL7btv2CBEFLddezYX/Gk5Erud5x6anpz+FkSkNBBPz+fwe3/eDg/xxk42/JZENKWUxlUrdXvr750VVIpaBJgLK5XKbs9ms7rxYaVQqFdnX1zen03IyIiSW2oRAHW/gD2/2A0+EZnI9AAAAAElFTkSuQmCC",Wf={class:"drawer-content"},zf={class:"upload-section"},Hf={class:"file-list"},Jf={class:"file-info"},$f={class:"file-icon"},Qf=["src"],Yf={class:"file-details"},Xf=["title"],Zf={class:"file-actions"},ep={key:0,class:"empty-state"},tp={__name:"fileList",props:{roomId:{type:String,default:""}},emits:[""],setup(n,{expose:e,emit:t}){const i=n;ot.on("fileUploadStatus",async()=>{s.value&&await y()});const s=F(!1),r=F([]),a=F(!1),o=F(null),c=F(null);function l(_){return Gf}function d(_){try{const b=document.createElement("iframe");b.style.display="none",b.src=_.source_url,document.body.appendChild(b),setTimeout(()=>{document.body.removeChild(b)},5e3),U.success("开始下载文件")}catch(b){console.error("iframe下载失败:",b),U.error("下载失败,请检查浏览器设置")}}function f(_){if(!_.preview_url){U.error("文件链接无效");return}c.value.showEdit(_)}function p(){o.value.showEdit()}async function m(){s.value=!0,await y()}async function y(){a.value=!0;try{const _=await Fl(i.roomId);if(_.meta.code!==200){U.error(_.meta.msg);return}r.value=_.data.files||[]}catch{U.error("获取文件列表失败")}finally{a.value=!1}}async function C(){s.value&&await y()}return e({show:m}),(_,b)=>{const G=oe("el-icon"),W=oe("el-button"),P=oe("el-empty"),k=oe("el-drawer"),w=ma("loading");return $(),Y("div",null,[z(k,{modelValue:s.value,"onUpdate:modelValue":b[0]||(b[0]=S=>s.value=S),direction:"rtl",title:"文件列表",size:"40%"},{header:Q(()=>[...b[1]||(b[1]=[x("h4",null,"文件列表",-1)])]),default:Q(()=>[x("div",Wf,[x("div",zf,[z(W,{type:"primary",size:"small",onClick:p},{default:Q(()=>[z(G,null,{default:Q(()=>[z(gt(jl))]),_:1}),b[2]||(b[2]=he(" 上传文件 ",-1))]),_:1})]),pa(($(),Y("div",Hf,[($(!0),Y(ai,null,oi(r.value,S=>($(),Y("div",{key:S.id||S.fileKey,class:"file-item"},[x("div",Jf,[x("div",$f,[x("img",{src:l(S.file_name),alt:"文件图标",class:"file-icon-img"},null,8,Qf)]),x("div",Yf,[x("div",{class:"file-name",title:S.file_name},le(S.file_name),9,Xf)])]),x("div",Zf,[z(W,{type:"primary",size:"small",disabled:!S.preview_url,onClick:I=>f(S)},{default:Q(()=>[...b[3]||(b[3]=[he("预览",-1)])]),_:2},1032,["disabled","onClick"]),z(W,{type:"success",size:"small",onClick:I=>d(S)},{default:Q(()=>[...b[4]||(b[4]=[he("下载",-1)])]),_:2},1032,["onClick"])])]))),128)),r.value.length===0?($(),Y("div",ep,[z(P,{description:"暂无文件"})])):ue("",!0)])),[[w,a.value]])])]),_:1},8,["modelValue"]),z(Kf,{ref_key:"uploadRef",ref:o,fileType:["pdf","png","jpg","jpeg","gif","doc","docx","xls","xlsx","ppt","pptx","txt","mp4","mp3"],roomId:n.roomId,onUploadSuccess:C},null,8,["roomId"]),z(Wl,{ref_key:"browseFileRef",ref:c,roomId:n.roomId},null,8,["roomId"])])}}},ip=Yi(tp,[["__scopeId","data-v-071490ec"]]),np={key:0},sp={key:1},rp={key:0,class:"loading-container"},ap={class:"loading-content"},op={class:"livekit-container"},cp={key:0,class:"meeting-container"},lp={key:0,class:"screen-share-area"},dp={class:"screen-share-header"},up={key:0,class:"sharing-user"},hp={class:"screen-share-video"},fp={class:"content-layers-container"},pp={key:0,class:"enlarged-video-container"},mp={class:"video-wrapper enlarged-video-wrapper"},gp={key:2,class:"video-placeholder"},vp={class:"video-overlay"},bp={class:"participant-name"},yp={key:0,class:"laser-pointer-indicator"},kp={key:1,class:"video-wrapper screen-share-wrapper"},Tp={class:"video-tracks"},Cp={key:1,class:"video-placeholder"},Sp={class:"video-overlay"},Pp={class:"participant-name"},Ep={key:0,class:"laser-pointer-indicator"},_p={class:"participants-header"},wp={class:"participant-header"},Rp={class:"status-indicator"},Ip={key:0,class:"participant-actions"},Op={class:"video-wrapper"},Dp={class:"video-overlay"},Mp={class:"participant-name"},xp={key:0,class:"video-placeholder"},Ap={class:"participant-header"},Np={class:"status-indicator"},Lp={class:"video-wrapper"},Up={class:"video-tracks"},Fp=["onLoadedmetadata"],jp={key:1,class:"video-placeholder"},Bp={class:"video-overlay"},Vp={class:"participant-name"},qp={class:"fixed-controls"},Kp={class:"controls-container"},Gp={class:"microphone-control-group"},Wp={class:"microphone-control-group"},zp={key:0},Hp={key:1},Jp={key:2},$p="wss://meeting.cnsdt.com:443",Qp={__name:"index",setup(n){da(),zl();const e=ql(),t=fa(),i=F(""),s=F(!0),r=F(""),a=F(""),o=F(null),c=F(null),l=F(!1),d=F(!1),f=F(!1),p=F(!1),m=F([]),y=F([]),C=F(""),_=F(""),b=F(new Map),G=F(new Map),W=F(new Map),P=F(""),k=F(null),w=F(null),S=F(""),I=F(!1),M=F(!1),A=F(null);F(!1),F("");const q=F(),B=F(!1),K=F(null),ve=F(null),De=F(new Map),_e=F(new Map),st=F(null),Me=F(null),_s=F(null),ws=F(),Rs=F(!1),Is=F(!1),Os=F(!1),Ds=F(!1),rn=F(!1),V=F(null),an=F(null),X=F(null),Be=F(null),rt=F(""),on=F(!1),$e=Ri({isDrawing:!1,startX:0,startY:0}),Qe=Ri({isDrawing:!1,startX:0,startY:0}),ke=Ri({color:"#ff0000",thickness:3,duration:2e3,fadeDuration:300}),ft={OPEN:"open_whiteboard",CLOSE:"close_whiteboard",SYNC:"sync_whiteboard",ACTIVATE_LAYER:"activate_layer"},cn={DRAW:"laser_draw",CLEAR:"laser_clear"},Jt={ENLARGE:"enlarge_video",SHRINK:"shrink_video"},Ms=Ie(()=>St.value||M.value),St=Ie(()=>Ue.value||V.value),xs=Ie(()=>St.value&&rt.value==="screenVideo"),As=Ie(()=>M.value&&rt.value==="whiteboard"),ec=Ie(()=>St.value&&xs.value?V.value?V.value.identity===i.value?"我的放大视频":`放大视图 - ${V.value.identity}`:"共享屏幕":M.value&&As.value?"共享白板":St.value?V.value?"放大视频":"共享屏幕":M.value?"共享白板":"共享内容"),vi=Ie(()=>b.value.size+1),tc=Ie(()=>Array.from(b.value.values())),Ue=Ie(()=>P.value!==""||f.value),Ns=Ie(()=>l.value||Ue.value||V.value),ic=Ie(()=>!Ue.value),nc=Ie(()=>!V.value);Ie(()=>!0),Ie(()=>I.value?S.value===i.value?"您正在共享屏幕":`${S.value} 正在共享屏幕`:"暂无屏幕共享");const H=new Yo({adaptiveStream:!0,dynacast:!0,audioCaptureDefaults:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},videoCaptureDefaults:{resolution:{width:1280,height:720}},publishDefaults:{screenShareEncoding:{maxBitrate:3e6,maxFramerate:30},videoEncoding:{maxBitrate:25e5,maxFramerate:30},audioEncoding:{maxBitrate:64e3},red:!0}});ot.on("whiteboardFailed",ac);function xe(u,h=!0){rt.value,rt.value=u,h&&sc(u)}function sc(u){try{const h={type:ft.ACTIVATE_LAYER,roomId:a.value,sender:i.value,senderName:i.value,timestamp:Date.now(),payload:{layerType:u,hasScreenShare:Ue.value,hasEnlargedVideo:!!V.value,hasWhiteboard:M.value}};Ce.publish(`xSynergy/shareWhiteboard/${H.name}`,h)}catch(h){console.error("发布图层激活消息失败:",h)}}function rc(){rn.value=!1}function ac(u){rn.value=u}function oc(u){if(u.identity!==i.value){U.warning("只能放大自己的视频");return}if(vi.value<=1){U.warning("需要至少2名参与者才能使用放大功能");return}if(!l.value){U.warning("请先打开摄像头");return}f.value&&(H.localParticipant.setScreenShareEnabled(!1),f.value=!1,U.info("已自动停止屏幕共享,开启视频放大模式")),V.value&&V.value.identity!==i.value&&Dt(),V.value=u,xe("screenVideo",!0),U.success("已放大您的视频"),hn(Jt.ENLARGE,{participant:{identity:u.identity,hasCameraTrack:u.hasCameraTrack,audioEnabled:u.audioEnabled}}),Ve(()=>{Mt()})}function Dt(){B.value&&(B.value=!1,Qt(),X.value&&(X.value.style.pointerEvents="none",X.value.style.cursor="default"),K.value&&(K.value.style.pointerEvents="none",K.value.style.cursor="default")),V.value&&V.value.identity===i.value&&hn(Jt.SHRINK,{participant:{identity:i.value}}),V.value=null,U.info("已关闭放大视图"),dn()}function cc(u){if(u&&(an.value=u,V.value))if(V.value.identity===i.value)o.value&&o.value.srcObject&&(u.srcObject=o.value.srcObject);else{const h=b.value.get(V.value.identity);h&&h.cameraTrack&&pt(u,h.cameraTrack)}}function lc(){Mt()}function Mt(){if(!X.value||!V.value)return;const u=document.querySelector(".enlarged-video-element");u&&(ln(u),Be.value=X.value.getContext("2d"),X.value.style.position="absolute",X.value.style.top="0",X.value.style.left="0",X.value.style.zIndex="10",X.value.style.cursor=B.value?"crosshair":"default",X.value.style.pointerEvents=B.value?"auto":"none",hc(u))}function ln(u){if(!X.value||!u)return;const h=u.getBoundingClientRect();X.value.width=h.width,X.value.height=h.height,X.value.style.width=`${h.width}px`,X.value.style.height=`${h.height}px`,bi()}function bi(){if(!Be.value||!X.value)return;Be.value.clearRect(0,0,X.value.width,X.value.height),De.value.forEach(h=>{if(h.type==="circle"){const v=$t(h.data.center);dc(v)}else if(h.type==="line"){const v=$t(h.data.start),O=$t(h.data.end);uc(v.x,v.y,O.x,O.y)}})}function dc(u){if(!Be.value)return;const h=Be.value;h.beginPath(),h.arc(u.x,u.y,ke.thickness,0,Math.PI*2),h.fillStyle=ke.color,h.fill(),h.stroke()}function uc(u,h,v,O){if(!Be.value)return;const J=Be.value;J.beginPath(),J.moveTo(u,h),J.lineTo(v,O),J.strokeStyle=ke.color,J.lineWidth=ke.thickness,J.lineCap="round",J.stroke()}function hc(u){Me.value&&Me.value.disconnect(),Me.value=new ResizeObserver(h=>{for(let v of h)v.target===u&&ln(u)}),Me.value.observe(u)}function dn(){Be.value&&X.value&&Be.value.clearRect(0,0,X.value.width,X.value.height),Qe.isDrawing=!1}function fc(u){if(!B.value||!V.value)return;const h=un(u),v={type:"circle",data:{color:ke.color,center:h,thickness:ke.thickness}},O=yi(v);Ti({...v,id:O,target:"enlarged"})}function pc(u){if(!B.value||!V.value)return;const h=bc(u);Qe.isDrawing=!0,Qe.startX=h.x,Qe.startY=h.y}function mc(u){}function gc(u){if(!B.value||!Qe.isDrawing||!V.value)return;const h=un(u),v=un({clientX:Qe.startX+X.value.getBoundingClientRect().left,clientY:Qe.startY+X.value.getBoundingClientRect().top}),O={type:"line",data:{color:ke.color,start:v,end:h,thickness:ke.thickness}};if($t(O.data.start),$t(O.data.end),!ca(O.data.start,O.data.end)){const J=yi(O);Ti({...O,id:J,target:"enlarged"})}Qe.isDrawing=!1}function vc(){Qe.isDrawing=!1}function un(u){if(!X.value)return{x:0,y:0};const h=X.value.getBoundingClientRect();return{x:((u.clientX-h.left)/X.value.width).toFixed(4),y:((u.clientY-h.top)/X.value.height).toFixed(4)}}function bc(u){if(!X.value)return{x:0,y:0};const h=X.value.getBoundingClientRect();return{x:u.clientX-h.left,y:u.clientY-h.top}}function $t(u){return X.value?{x:parseFloat(u.x)*X.value.width,y:parseFloat(u.y)*X.value.height}:{x:0,y:0}}async function yc(){try{if(Ds.value)return;const u=`enlargeVideo_${Date.now()}`;await Ce.connect(u),Ds.value=!0,kc()}catch(u){console.error("MQTT连接失败:",u),U.error("视屏缩放服务连接失败")}}function kc(){try{Ce.subscribe(`xSynergy/enlarge_video/${H.name}`,Tc)}catch(u){console.error("订阅激光笔主题失败:",u)}}function Tc(u,h){try{const v=u.toString(),O=JSON.parse(v);if(O.roomId!==H.name||O.sender===i.value)return;switch(O.type){case Jt.ENLARGE:Cc(O);break;case Jt.SHRINK:Sc(O);break;default:console.warn("未知的视频放大消息类型:",O.type)}}catch(v){console.error("处理视频放大消息失败:",v)}}function Cc(u){const{participant:h}=u.payload;if(!b.value.has(h.identity)){console.warn("收到放大消息,但参与者不存在:",h.identity);return}f.value&&(H.localParticipant.setScreenShareEnabled(!1),f.value=!1,U.info("其他用户开启了视频放大,已自动停止屏幕共享")),M.value&&(Vs(),U.info("其他用户开启了视频放大,已自动退出白板")),V.value&&V.value.identity!==h.identity&&Dt(),V.value={identity:h.identity,hasCameraTrack:h.hasCameraTrack,audioEnabled:h.audioEnabled},U.info(`${h.identity} 放大了自己的视频`),Ve(()=>{const v=b.value.get(h.identity);v&&v.cameraTrack&&an.value&&pt(an.value,v.cameraTrack)}),Ve(()=>{Mt()})}function Sc(u){const{participant:h}=u.payload;V.value&&V.value.identity===h.identity&&(V.value=null,U.info(`${h.identity} 关闭了放大视图`),B.value&&(B.value=!1,Qt()),dn())}function hn(u,h={}){try{const v={type:u,roomId:H.name,sender:i.value,timestamp:Date.now(),payload:h};return Ce.publish(`xSynergy/enlarge_video/${H.name}`,v),!0}catch(v){return console.error("发布视频放大消息失败:",v),!1}}async function Pc(){try{if(Rs.value)return;const u=`fileUpload_${Date.now()}`;await Ce.connect(u),Rs.value=!0,ot.emit("subscribeToFileUploadTopic",{roomId:a.value})}catch(u){console.error("MQTT连接失败:",u),U.error("文件上传服务连接失败")}}async function Ec(){try{if(Is.value)return;const u=`filePreview_${Date.now()}`;await Ce.connect(u),Is.value=!0,ot.emit("subscribeToFilePreviewTopic",{roomId:a.value}),ot.emit("roomces",{roomId:a.value})}catch(u){console.error("MQTT连接失败:",u),U.error("文件上传服务连接失败")}}async function _c(){try{if(Os.value)return;const u=`fileConversionStatus_${Date.now()}`;await Ce.connect(u),Os.value=!0,ot.emit("subscribeToFileConversionStatusTopic",{roomId:a.value})}catch(u){console.error("MQTT连接失败:",u),U.error("文件上传服务连接失败")}}function wc(){if(!Ns.value){U.warning("请在开启摄像头或屏幕共享时使用激光笔");return}if(!Ue.value&&!V.value){U.warning("请在屏幕共享、放大视图模式下使用激光笔");return}B.value=!B.value,B.value?(V.value?Mt():Yt(),U.success("激光笔已开启,双击添加标记,拖拽绘制线条")):(Qt(),U.info("激光笔已关闭"))}function Qt(){_e.value.forEach((u,h)=>{clearTimeout(u)}),_e.value.clear(),De.value.clear(),ve.value&&K.value&&ve.value.clearRect(0,0,K.value.width,K.value.height),Be.value&&X.value&&Be.value.clearRect(0,0,X.value.width,X.value.height),$e.isDrawing=!1,Qe.isDrawing=!1}function yi(u){const h=la();u.id=h,u.timestamp=Date.now(),De.value.set(h,u);const v=setTimeout(()=>{Ls(h)},ke.duration);return _e.value.set(h,v),ki(),bi(),h}function Ls(u){_e.value.has(u)&&(clearTimeout(_e.value.get(u)),_e.value.delete(u)),De.value.delete(u),ki(),bi()}function Rc(){Yt()}function Yt(){if(!K.value)return;let u;Ue.value?(u=document.querySelector(".screen-share-element"),_s.value=u):V.value&&(u=document.querySelector(".enlarged-video-element"),_s.value=u),u&&(fn(u),ve.value=K.value.getContext("2d"),K.value.style.position="absolute",K.value.style.top="0",K.value.style.left="0",K.value.style.zIndex="10",K.value.style.cursor=B.value?"crosshair":"default",K.value.style.pointerEvents=B.value?"auto":"none",Ic(u))}function fn(u){if(!K.value||!u)return;const h=u.getBoundingClientRect();K.value.width=h.width,K.value.height=h.height,K.value.style.width=`${h.width}px`,K.value.style.height=`${h.height}px`,ki()}function Ic(u){Me.value&&Me.value.disconnect(),Me.value=new ResizeObserver(h=>{for(let v of h)v.target===u&&fn(u)}),Me.value.observe(u)}function Oc(){st.value&&(clearTimeout(st.value),st.value=null),ve.value&&K.value&&ve.value.clearRect(0,0,K.value.width,K.value.height),De.value.clear(),$e.isDrawing=!1}function pn(u){if(!K.value)return{x:0,y:0};const h=K.value.getBoundingClientRect();return{x:((u.clientX-h.left)/K.value.width).toFixed(4),y:((u.clientY-h.top)/K.value.height).toFixed(4)}}function Dc(u){if(!K.value)return{x:0,y:0};const h=K.value.getBoundingClientRect();return{x:u.clientX-h.left,y:u.clientY-h.top}}function Mc(u){if(!B.value)return;const h=pn(u),v={type:"circle",data:{color:ke.color,center:h,thickness:ke.thickness}},O=yi(v);Ti({...v,id:O})}function xc(u){if(!B.value)return;const h=Dc(u);$e.isDrawing=!0,$e.startX=h.x,$e.startY=h.y}function Ac(u){}function Nc(u){if(!B.value||!$e.isDrawing)return;const h=pn(u),v=pn({clientX:$e.startX+K.value.getBoundingClientRect().left,clientY:$e.startY+K.value.getBoundingClientRect().top}),O={type:"line",data:{color:ke.color,start:v,end:h,thickness:ke.thickness}};if(Xt(O.data.start),Xt(O.data.end),!ca(O.data.start,O.data.end)){const J=yi(O);Ti({...O,id:J})}$e.isDrawing=!1}function Lc(){$e.isDrawing=!1}function Uc(u){if(!ve.value)return;const h=ve.value;h.beginPath(),h.arc(u.x,u.y,ke.thickness,0,Math.PI*2),h.fillStyle=ke.color,h.fill(),h.stroke()}function Fc(u,h,v,O){if(!ve.value)return;const J=ve.value;J.beginPath(),J.moveTo(u,h),J.lineTo(v,O),J.strokeStyle=ke.color,J.lineWidth=ke.thickness,J.lineCap="round",J.stroke()}function ki(){if(!ve.value||!K.value)return;ve.value.clearRect(0,0,K.value.width,K.value.height),De.value.forEach(h=>{if(h.type==="circle"){const v=Xt(h.data.center);Uc(v)}else if(h.type==="line"){const v=Xt(h.data.start),O=Xt(h.data.end);Fc(v.x,v.y,O.x,O.y)}})}function Xt(u){return K.value?{x:parseFloat(u.x)*K.value.width,y:parseFloat(u.y)*K.value.height}:{x:0,y:0}}function Us(){if(!B.value||!K.value)return;let u;Ue.value?u=document.querySelector(".screen-share-element"):V.value&&(u=document.querySelector(".enlarged-video-element")),u&&fn(u)}function Fs(){if(!B.value||!X.value||!V.value)return;const u=document.querySelector(".enlarged-video-element");u&&ln(u)}window.addEventListener("resize",()=>{Us(),Fs()});function jc(){try{Ce.subscribe(`xSynergy/laserPointer/${H.name}`,Bc)}catch(u){console.error("订阅激光笔主题失败:",u)}}function Ti(u){try{const h={type:cn.DRAW,roomId:a.value,sender:i.value,timestamp:Date.now(),element:u};Ce.publish(`xSynergy/laserPointer/${H.name}`,h)}catch(h){console.error("发布激光笔数据失败:",h)}}function Bc(u,h){try{const v=u.toString(),O=JSON.parse(v);if(O.roomId!==H.name||O.sender===i.value)return;switch(O.type){case cn.DRAW:Vc(O);break;case cn.CLEAR:Qt();break}}catch(v){console.error("处理激光笔消息失败:",v)}}function Vc(u){const{element:h}=u;if(h.id&&De.value.has(h.id))De.value.set(h.id,h);else{const v=la();h.id=v,h.timestamp=Date.now(),De.value.set(v,h);const O=setTimeout(()=>{Ls(v)},ke.duration);_e.value.set(v,O)}ki(),bi()}async function qc(){ws.value.show()}async function mn(u){try{if(u){const h=await navigator.mediaDevices.getUserMedia({video:!0}),v=await navigator.mediaDevices.enumerateDevices();m.value=v.filter(O=>O.kind==="videoinput"),h.getTracks().forEach(O=>{O.stop()})}}catch(h){console.error("摄像头访问失败:",h),si(h,"摄像头"),m.value=[]}}async function Kc(u){if(u==="refresh"){await mn(!0),U.success("设备列表已刷新");return}C.value=u,l.value?await Wc(u):await js(u),U.success(`已切换到摄像头: ${wi(m.value,u)}`)}async function gn(u){try{if(u){const h=await navigator.mediaDevices.getUserMedia({audio:!0}),v=await navigator.mediaDevices.enumerateDevices();y.value=v.filter(O=>O.kind==="audioinput"),h.getTracks().forEach(O=>O.stop())}}catch(h){console.error("麦克风访问失败:",h),si(h,"麦克风"),y.value=[]}}async function Gc(u){if(u==="refresh"){await gn(),U.success("设备列表已刷新");return}_.value=u,d.value?await zc(u):await Bs(u),U.success(`已切换到麦克风: ${wi(y.value,u)}`)}async function js(u){try{return H.options.videoCaptureDefaults.deviceId=u,await H.localParticipant.setCameraEnabled(!0),l.value=!0,setTimeout(()=>{yn()},200),!0}catch(h){U.error("使用指定设备开启摄像头失败");try{l.value&&await H.localParticipant.setCameraEnabled(!0)}catch{l.value=!1,C.value=""}throw h}}async function Bs(u){try{return H.options.audioCaptureDefaults.deviceId=u,await H.localParticipant.setMicrophoneEnabled(!0),d.value=!0,!0}catch(h){throw console.error("使用指定设备开启麦克风失败:",h),d.value=!1,h}}async function Wc(u){try{return await H.localParticipant.setCameraEnabled(!1),H.options.videoCaptureDefaults.deviceId=u,await H.localParticipant.setCameraEnabled(!0),setTimeout(()=>{yn()},200),!0}catch(h){console.error("切换摄像头设备失败:",h);try{await H.localParticipant.setCameraEnabled(!0)}catch{l.value=!1}throw h}}async function zc(u){try{return await H.localParticipant.setMicrophoneEnabled(!1),H.options.audioCaptureDefaults.deviceId=u,await H.localParticipant.setMicrophoneEnabled(!0),!0}catch(h){console.error("切换麦克风设备失败:",h);try{await H.localParticipant.setMicrophoneEnabled(!0)}catch{d.value=!1}throw h}}async function Hc(){try{const u=`whiteboard_${Date.now()}`;await Ce.connect(u),Jc()}catch(u){console.error("MQTT连接失败:",u),U.error("白板同步连接失败")}}function Jc(){try{Ce.subscribe(`xSynergy/shareWhiteboard/${H.name}`,Qc)}catch(u){console.error("订阅白板主题失败:",u)}}async function $c(){try{const u=`toLaserPointer_${Date.now()}`;await Ce.connect(u),jc()}catch(u){console.error("MQTT连接失败:",u),U.error("激光笔同步连接失败")}}function Qc(u,h){try{const v=u.toString(),O=JSON.parse(v);if(O.roomId!==H.name||O.sender===i.value)return;switch(O.type){case ft.OPEN:Xc(O);break;case ft.CLOSE:Zc(O);break;case ft.SYNC:el(O);break;case ft.ACTIVATE_LAYER:Yc(O);break;default:console.warn("未知的白板消息类型:",O.type)}}catch(v){console.error("处理白板消息失败:",v)}}function Yc(u){const{layerType:h,hasScreenShare:v,hasEnlargedVideo:O,hasWhiteboard:J}=u.payload;h==="screenVideo"&&(v||O)?xe("screenVideo",!1):h==="whiteboard"&&J&&xe("whiteboard",!1)}function Xc(u){U.info(`${u.senderName||u.sender} 开启了白板`),M.value=!0,xe("whiteboard",!1)}function Zc(u){U.info(`${u.senderName||u.sender} 关闭了白板`),Ve(()=>{Ue.value&&!M.value&&(xe("screenVideo",!1),k.value&&w.value&&pt(w.value,k.value))})}function el(u){A.value&&u.payload&&A.value.syncData&&A.value.syncData(u.payload)}async function tl(){q.value.show(a.value)}async function il(u){if(u.length<0){U.error("请选择加入房间的人员");return}const h=u.map(v=>({user_uid:v.uid,display_name:v.name}));await Kl(H.name,{participants:h,participant_role:"participant"})}function vn(u,h={}){try{const v={type:u,roomId:a.value,sender:i.value,senderName:i.value,timestamp:Date.now(),payload:h};return Ce.publish(`xSynergy/shareWhiteboard/${H.name}`,v),!0}catch(v){return console.error("发布白板消息失败:",v),U.warning("消息发送失败,但白板功能正常"),!1}}async function nl(){M.value?await Vs():await sl()}async function sl(){try{M.value=!0,xe("whiteboard",!0),vn(ft.OPEN,{action:"open",whiteboardId:a.value,roomName:r.value})?U.success("白板已开启,已通知其他参会者"):U.success("白板已开启")}catch(u){console.error("开启白板失败:",u),U.error("开启白板失败")}}async function Vs(){try{vn(ft.CLOSE,{action:"close",whiteboardId:a.value,roomName:r.value}),M.value=!1,A.value&&A.value.cleanup&&A.value.cleanup(),rt.value==="whiteboard"&&St.value&&xe("screenVideo",!1),U.success("已退出白板")}catch(u){u!=="cancel"&&(console.error("退出白板失败:",u),U.error("退出白板失败"))}}function rl(u,h,v){if(!u)return;G.value.has(h)||G.value.set(h,{});const O=G.value.get(h);O[v]=u,G.value.set(h,O);const J=b.value.get(h);J&&J.cameraTrack&&pt(u,J.cameraTrack)}function al(u,h){if(!u)return;W.value.set(h,u);const v=b.value.get(h);v&&v.audioTrack&&$s(u,v.audioTrack)}function ol(u){u&&(w.value=u,k.value&&pt(u,k.value),Ve(()=>{Yt()}))}function cl(){H.removeAllListeners(),H.on(D.Connected,ll).on(D.Disconnected,dl).on(D.Reconnected,vf).on(D.TrackSubscribed,qs).on(D.TrackUnsubscribed,Ks).on(D.ParticipantConnected,ul).on(D.ParticipantDisconnected,hl).on(D.LocalTrackPublished,fl).on(D.LocalTrackUnpublished,pl).on(D.TrackMuted,Gs).on(D.TrackUnmuted,Ws).on(D.ActiveSpeakersChanged,ml).on(D.DataReceived,gf).on(D.ConnectionStateChanged,yf)}async function ll(){a.value=H.name,await Hc(),await $c(),await Pc(),await _c(),await Ec(),await yc(),s.value=!1,U.success("已成功连接到房间"),H.remoteParticipants.forEach(u=>{Js(u),zs(u),Ye(u)})}function dl(u){s.value=!0,l.value=!1,d.value=!1,f.value=!1,b.value.clear(),G.value.clear(),W.value.clear(),P.value="",k.value=null,V.value=null,U.error("连接已断开")}function qs(u,h,v){u&&(u.kind===E.Kind.Video?(vl(v,h.source,u),h.source===E.Source.ScreenShare&&(Hs(v,u),S.value=v.identity,I.value=!0,v.identity!==i.value&&xe("screenVideo",!1)),Tl(v.identity,h.source,u)):u.kind===E.Kind.Audio&&(yl(v,u),Cl(v.identity,u))),Ye(v)}function Ks(u,h,v){u.kind===E.Kind.Video?(bl(v,h.source),bn(v.identity,h.source),h.source===E.Source.ScreenShare&&(Hs(v,null),S.value===v.identity&&(S.value="",I.value=!1)),Ye(v)):u.kind===E.Kind.Audio&&(kl(v),Qs(v.identity),Ye(v))}function ul(u){Js(u),zs(u),Ye(u),U.info(`新用户加入: ${u.identity}`)}function hl(u){u.identity===P.value&&(P.value="",k.value=null,w.value&&w.value.srcObject&&(w.value.srcObject=null)),u.identity===S.value&&(S.value="",I.value=!1),V.value&&V.value.identity===u.identity&&Dt(),gl(u),U.info(`用户离开: ${u.identity}`)}function fl(u){u.track&&(u.kind===E.Kind.Video?u.source===E.Source.Camera?Ci(u.track):u.source===E.Source.ScreenShare&&(P.value=H.localParticipant.identity,k.value=u.track,S.value=H.localParticipant.identity,I.value=!0,w.value&&pt(w.value,u.track)):u.kind===E.Kind.Audio&&(d.value=!0))}function pl(u){u.kind===E.Kind.Video?u.source===E.Source.Camera?l.value=!1:u.source===E.Source.ScreenShare&&P.value===H.localParticipant.identity&&(f.value=!1,P.value="",k.value=null,S.value===H.localParticipant.identity&&(S.value="",I.value=!1),w.value&&w.value.srcObject&&(w.value.srcObject=null)):u.kind===E.Kind.Audio&&(d.value=!1)}function Gs(u,h){Ye(h)}function Ws(u,h){Ye(h)}function zs(u){u.on(L.TrackSubscribed,(h,v)=>{qs(h,v,u)}).on(L.TrackUnsubscribed,(h,v)=>{Ks(h,v,u)}).on(L.TrackMuted,h=>{Gs(h,u)}).on(L.TrackUnmuted,h=>{Ws(h,u)}).on(L.IsSpeakingChanged,h=>{Sl(u,h)}).on(L.TrackPublished,h=>{Ye(u)}).on(L.TrackUnpublished,h=>{Ye(u)})}function ml(u){const h=u.some(v=>v.identity===H.localParticipant.identity);p.value=h,b.value.forEach((v,O)=>{const J=u.some(be=>be.identity===O);v.isSpeaking!==J&&(v.isSpeaking=J,b.value.set(O,{...v}))})}function Hs(u,h){h?(P.value=u.identity,k.value=h,M.value||xe("screenVideo",!1),w.value&&pt(w.value,h)):u.identity===P.value&&(P.value="",k.value=null,w.value&&w.value.srcObject&&(w.value.srcObject=null))}function Js(u){var v;if(!u||u.identity===((v=H.localParticipant)==null?void 0:v.identity))return;const h={identity:u.identity,cameraTrack:null,screenTrack:null,audioTrack:null,hasCameraTrack:!1,hasScreenTrack:!1,audioEnabled:!1,videoEnabled:u.isCameraEnabled,isSpeaking:!1};b.value.set(u.identity,h)}function gl(u){if(b.value.has(u.identity)){const h=u.identity;bn(h,"camera"),bn(h,"screen"),Qs(h),b.value.delete(h),G.value.delete(h),W.value.delete(h)}}function vl(u,h,v){const O=b.value.get(u.identity);O&&(h===E.Source.Camera?(O.cameraTrack=v,O.hasCameraTrack=!0):h===E.Source.ScreenShare&&(O.screenTrack=v,O.hasScreenTrack=!0),b.value.set(u.identity,{...O}))}function bl(u,h){const v=b.value.get(u.identity);v&&(h===E.Source.Camera?(v.cameraTrack=null,v.hasCameraTrack=!1):h===E.Source.ScreenShare&&(v.screenTrack=null,v.hasScreenTrack=!1),b.value.set(u.identity,{...v}))}function yl(u,h){const v=b.value.get(u.identity);v&&(v.audioTrack=h,v.audioEnabled=!0,b.value.set(u.identity,{...v}))}function kl(u){const h=b.value.get(u.identity);h&&(h.audioTrack=null,h.audioEnabled=!1,b.value.set(u.identity,{...h}))}function pt(u,h){if(!(!u||!h))try{const v=new MediaStream;v.addTrack(h.mediaStreamTrack),u.srcObject=v}catch(v){console.error("附加轨道到视频元素失败:",v)}}function $s(u,h){if(!(!u||!h))try{const v=new MediaStream;v.addTrack(h.mediaStreamTrack),u.srcObject=v,u.play().catch(O=>{console.warn("音频播放失败:",O)})}catch(v){console.error("附加轨道到音频元素失败:",v)}}function Tl(u,h,v){const O=G.value.get(u);if(!O)return;const J=h===E.Source.Camera?"camera":"screen",be=O[J];be&&pt(be,v)}function Cl(u,h){const v=W.value.get(u);v&&$s(v,h)}function bn(u,h){const v=G.value.get(u);if(!v)return;const O=h===E.Source.Camera?"camera":"screen",J=v[O];J&&J.srcObject&&(J.srcObject=null)}function Qs(u){const h=W.value.get(u);h&&h.srcObject&&(h.srcObject=null)}function Ye(u){const h=b.value.get(u.identity);if(!h)return;let v=!1,O=!1,J=!1;u.videoTrackPublications.forEach(be=>{be.isSubscribed&&be.track&&!be.isMuted&&(be.source===E.Source.Camera?(v=!0,h.cameraTrack||(h.cameraTrack=be.track)):be.source===E.Source.ScreenShare&&(O=!0,h.screenTrack||(h.screenTrack=be.track)))}),u.audioTrackPublications.forEach(be=>{be.isSubscribed&&be.track&&!be.isMuted&&(J=!0,h.audioTrack||(h.audioTrack=be.track))}),h.hasCameraTrack=v,h.hasScreenTrack=O,h.audioEnabled=J,h.videoEnabled=u.isCameraEnabled,v||(h.cameraTrack=null),O||(h.screenTrack=null),J||(h.audioTrack=null),b.value.set(u.identity,{...h})}function Sl(u,h){const v=b.value.get(u.identity);v&&v.isSpeaking!==h&&(v.isSpeaking=h,b.value.set(u.identity,{...v}))}function Ci(u){if(o.value&&u)try{const h=new MediaStream;h.addTrack(u.mediaStreamTrack),o.value.srcObject=h,l.value=!0,o.value.play().catch(v=>{console.warn("本地视频播放失败:",v)})}catch(h){console.error("附加本地视频轨道失败:",h)}}async function Pl(){try{if(l.value)await H.localParticipant.setCameraEnabled(!1),l.value=!1,o.value&&o.value.srcObject&&(o.value.srcObject.getTracks().forEach(u=>u.stop()),o.value.srcObject=null),C.value="",U.info("摄像头已关闭"),V.value&&V.value.identity===H.localParticipant.identity&&Dt(),Ye(H.localParticipant);else{if(o.value||(console.warn("本地视频元素未找到,等待DOM更新"),await Ve()),m.value.length===0&&await mn(!0),m.value.length===0){U.error("未找到可用的摄像头设备");return}let u=C.value;!u&&m.value.length>0&&(u=m.value[0].deviceId,C.value=u),u?(await js(u),U.success(`摄像头已开启 - ${wi(m.value,u)}`)):(await H.localParticipant.setCameraEnabled(!0),l.value=!0,setTimeout(()=>{yn()},200),U.success("摄像头已开启")),await El()}}catch(u){si(u,"摄像头")}}async function El(){try{await new Promise(v=>setTimeout(v,500));const h=Array.from(H.localParticipant.videoTrackPublications.values()).find(v=>v.source===E.Source.Camera&&v.track);h?h.track&&o.value&&Ci(h.track):console.warn("未找到摄像头发布轨道")}catch(u){console.error("确保摄像头轨道发布失败:",u)}}async function yn(){try{await new Promise(v=>setTimeout(v,100));const h=Array.from(H.localParticipant.videoTrackPublications.values()).find(v=>v.source===E.Source.Camera&&v.track);h&&h.track?Ci(h.track):setTimeout(()=>{const O=Array.from(H.localParticipant.videoTrackPublications.values()).find(J=>J.source===E.Source.Camera&&J.track);O&&O.track?Ci(O.track):console.warn("最终未找到摄像头轨道")},1e3)}catch(u){console.error("手动附加摄像头轨道失败:",u)}}async function _l(){try{if(d.value){await H.localParticipant.setMicrophoneEnabled(!1),d.value=!1;const u=Array.from(H.localParticipant.audioTrackPublications.values());for(const h of u)h.track&&h.track.stop();_.value="",U.info("麦克风已关闭")}else{if(y.value.length===0&&await gn(!0),y.value.length===0)return;let u=_.value;!u&&y.value.length>0&&(u=y.value[0].deviceId,_.value=u),u?(await Bs(u),U.success(`麦克风已开启 - ${wi(y.value,u)}`)):(await H.localParticipant.setMicrophoneEnabled(!0),d.value=!0,U.success("麦克风已开启")),U.success("麦克风已开启")}}catch(u){si(u,"麦克风"),d.value||(_.value="")}}async function wl(){try{if(V.value){U.error("当前处于视频放大模式,无法进行屏幕共享");return}if(!f.value&&I.value&&S.value!==i.value){U.error(`当前 ${S.value} 正在共享屏幕,请等待其结束后再共享`);return}f.value?(await H.localParticipant.setScreenShareEnabled(!1),f.value=!1,S.value===i.value&&(S.value="",I.value=!1),U.info("屏幕共享已停止")):(await H.localParticipant.setScreenShareEnabled(!0),f.value=!0,S.value=i.value,I.value=!0,xe("screenVideo",!0),U.success("屏幕共享已开始"))}catch(u){si(u,"屏幕共享")}}async function Ys(){try{V.value&&V.value.identity===i.value&&hn(Jt.SHRINK,{participant:{identity:i.value}}),M.value&&(vn(ft.CLOSE,{action:"close",reason:"host_left",roomName:r.value}),M.value=!1,A.value&&A.value.cleanup&&A.value.cleanup()),Ce.disconnect(),f.value&&await H.localParticipant.setScreenShareEnabled(!1),await H.localParticipant.setCameraEnabled(!1),await H.localParticipant.setMicrophoneEnabled(!1),d.value=!1,l.value=!1,_.value="",C.value="",await H.disconnect(),Il(),U.success("已离开会议")}catch(u){console.error("离开会议失败:",u),U.error("离开会议失败")}}async function Rl(){await Ys(),t.push({path:"/coordinate"})}function Il(){S.value="",I.value=!1,M.value=!1,l.value=!1,d.value=!1,f.value=!1,p.value=!1,s.value=!0,i.value="",_.value="",C.value="",y.value=[],m.value=[],V.value=null,Ce.disconnect(),b.value.clear(),G.value.clear(),W.value.clear(),P.value="",k.value=null,o.value&&o.value.srcObject&&(o.value.srcObject.getTracks().forEach(u=>u.stop()),o.value.srcObject=null),c.value&&c.value.srcObject&&(c.value.srcObject.getTracks().forEach(u=>u.stop()),c.value.srcObject=null),w.value&&w.value.srcObject&&(w.value.srcObject.getTracks().forEach(u=>u.stop()),w.value.srcObject=null),G.value.forEach((u,h)=>{u.camera&&u.camera.srcObject&&(u.camera.srcObject.getTracks().forEach(v=>v.stop()),u.camera.srcObject=null),u.screen&&u.screen.srcObject&&(u.screen.srcObject.getTracks().forEach(v=>v.stop()),u.screen.srcObject=null)}),W.value.forEach((u,h)=>{u&&u.srcObject&&(u.srcObject.getTracks().forEach(v=>v.stop()),u.srcObject=null)})}Pt([()=>Ue.value,()=>f.value],([u,h])=>{!u&&!h&&B.value&&Ol()},{immediate:!0}),Pt(l,u=>{u||V.value&&V.value.identity===i.value&&Dt()}),Pt([Ue,V],([u,h])=>{B.value&&Ve(()=>{Yt()})}),Pt(B,u=>{u?Ve(()=>{V.value?Mt():Yt()}):Me.value&&(Me.value.disconnect(),Me.value=null)}),Pt(V,u=>{u&&B.value?Ve(()=>{Mt()}):dn()}),Pt(St,u=>{u&&!rt.value?xe("screenVideo",!1):!u&&rt.value==="screenVideo"&&(M.value?xe("whiteboard",!1):rt.value="")}),Pt(M,u=>{u&&!rt.value&&xe("whiteboard",!1)});function Ol(){B.value=!1,Oc(),K.value&&(K.value.style.pointerEvents="none",K.value.style.cursor="default"),U.info("屏幕共享已结束,激光笔已自动关闭")}return Bl(()=>{window.removeEventListener("resize",Us),window.removeEventListener("resize",Fs),Me.value&&Me.value.disconnect(),Qt(),M.value&&A.value&&A.value.cleanup&&A.value.cleanup(),Ce.disconnect(),H&&H.state==="connected"&&Ys()}),ha(async()=>{try{on.value=!0,s.value=!0;const u=await Vl(e.query.room_uid);if(u.meta.code==200){const h=u.data.access_token;i.value=u.data.user_uid,r.value=u.data.room_name,await Ve(),cl(),await H.connect($p,h,{autoSubscribe:!0})}else{U.error(u.meta.message);return}}catch(u){U.error(`连接失败: ${u.message}`),s.value=!0}finally{on.value=!1}}),(u,h)=>{const v=oe("Loading"),O=oe("el-icon"),J=oe("el-button"),be=oe("Microphone"),Xs=oe("Mute"),Si=oe("el-dropdown-item"),Zs=oe("el-dropdown-menu"),er=oe("el-dropdown");return rn.value?($(),Y("div",np,[z(_f,{onLoginSuccess:rc})])):($(),Y("div",sp,[on.value?($(),Y("div",rp,[x("div",ap,[z(O,{class:"loading-icon"},{default:Q(()=>[z(v)]),_:1}),h[1]||(h[1]=x("p",null,"正在创建房间,请稍候...",-1))])])):ue("",!0),x("audio",{ref_key:"localAudio",ref:c,autoplay:"",muted:"",class:"audio-element"},null,512),h[17]||(h[17]=x("div",{id:"audio"},null,-1)),x("div",op,[s.value?ue("",!0):($(),Y("div",cp,[x("div",{class:Te(["video-layout",{"screen-sharing-active":Ms.value,"enlarged-mode":V.value}])},[Ms.value?($(),Y("div",lp,[x("div",dp,[x("h3",null,le(ec.value),1),P.value?($(),Y("div",up,[x("span",null,"由 "+le(P.value)+" 共享",1)])):ue("",!0),V.value&&V.value.identity===i.value?($(),Fe(J,{key:1,onClick:Dt,type:"info",size:"small",class:"close-enlarge-btn"},{default:Q(()=>[...h[2]||(h[2]=[x("img",{src:$l,style:{width:"16px",height:"15px"},alt:""},null,-1)])]),_:1})):ue("",!0)]),x("div",hp,[x("div",fp,[St.value?($(),Y("div",{key:0,class:Te(["content-layer screen-video-layer",{"active-layer":xs.value}])},[V.value?($(),Y("div",pp,[x("div",mp,[V.value?($(),Y("canvas",{key:0,ref_key:"enlargedLaserPointerCanvas",ref:X,class:"laser-pointer-canvas enlarged-laser-canvas",onDblclick:fc,onMousedown:pc,onMousemove:mc,onMouseup:gc,onMouseleave:vc},null,544)):ue("",!0),V.value.hasCameraTrack?($(),Y("video",{key:1,ref:ee=>cc(ee),autoplay:"",playsinline:"",class:"enlarged-video-element",onLoadedmetadata:lc},null,544)):ue("",!0),V.value.hasCameraTrack?ue("",!0):($(),Y("div",gp,[...h[3]||(h[3]=[x("i",{class:"el-icon-user"},null,-1),x("span",null,"暂无视频流",-1)])])),x("div",vp,[x("span",bp,le(V.value.identity===i.value?"我":V.value.identity),1),x("span",{class:Te(["audio-indicator",{muted:!V.value.audioEnabled}])},[x("i",{class:Te(V.value.audioEnabled?"el-icon-microphone":"el-icon-turn-off-microphone")},null,2)],2),B.value&&V.value?($(),Y("span",yp,[...h[4]||(h[4]=[x("i",{class:"el-icon-aim"},null,-1),he(" 激光笔模式中 ",-1)])])):ue("",!0)])])])):($(),Y("div",kp,[x("canvas",{ref_key:"laserPointerCanvas",ref:K,class:"laser-pointer-canvas",onDblclick:Mc,onMousedown:xc,onMousemove:Ac,onMouseup:Nc,onMouseleave:Lc},null,544),x("div",Tp,[k.value?($(),Y("video",{key:0,ref:ee=>ol(ee),autoplay:"",playsinline:"",class:"screen-share-element",onLoadedmetadata:Rc},null,544)):ue("",!0),k.value?ue("",!0):($(),Y("div",Cp,[...h[5]||(h[5]=[x("i",{class:"el-icon-monitor"},null,-1),x("span",null,"暂无屏幕共享",-1)])]))]),x("div",Sp,[x("span",Pp,le(P.value),1),B.value?($(),Y("span",Ep,[...h[6]||(h[6]=[x("i",{class:"el-icon-aim"},null,-1),he(" 激光笔模式中 ",-1)])])):ue("",!0)])]))],2)):ue("",!0),M.value?($(),Y("div",{key:1,class:Te(["content-layer whiteboard-layer",{"active-layer":As.value}])},[z(Hl,{ref_key:"whiteboardRef",ref:A,roomId:a.value,userId:i.value,class:"whiteboard-component"},null,8,["roomId","userId"])],2)):ue("",!0)])])])):ue("",!0),x("div",{class:Te(["participants-area",{"with-screen-share":Ue.value||M.value||V.value}])},[x("div",_p,[x("h3",null,"会议名称:"+le(r.value),1),x("h3",null,"参会者 ("+le(vi.value)+")",1)]),x("div",{class:Te(["video-grid",{"grid-layout":!Ue.value&&!V.value&&vi.value>1}])},[x("div",{class:Te(["participant-card local-participant",{enlarged:V.value&&V.value.identity===i.value}])},[x("div",wp,[x("h3",null,"我的视频 ("+le(i.value)+")",1),x("div",Rp,[z(O,{class:Te({"audio-on":d.value,"audio-off":!d.value})},{default:Q(()=>[d.value?($(),Fe(be,{key:0})):($(),Fe(Xs,{key:1}))]),_:1},8,["class"])]),vi.value>1&&ic.value&&!V.value?($(),Y("div",Ip,[z(J,{onClick:h[0]||(h[0]=ee=>oc({identity:i.value,hasCameraTrack:l.value,audioEnabled:d.value})),type:"link",size:"small",class:"enlarge-btn",title:"放大视图"},{default:Q(()=>[...h[7]||(h[7]=[x("img",{src:Ql,style:{width:"18px",height:"12px"},alt:""},null,-1)])]),_:1})])):ue("",!0)]),x("div",Op,[x("video",{ref_key:"localVideo",ref:o,autoplay:"",muted:"",playsinline:"",class:"video-element"},null,512),x("div",Dp,[x("span",Mp,le(i.value),1),x("span",{class:Te(["audio-indicator",{muted:!d.value}])},[x("i",{class:Te(d.value?"el-icon-microphone":"el-icon-turn-off-microphone")},null,2)],2)]),l.value?ue("",!0):($(),Y("div",xp,[...h[8]||(h[8]=[x("i",{class:"el-icon-user"},null,-1),x("span",null,"摄像头已关闭",-1)])]))])],2),($(!0),Y(ai,null,oi(tc.value,ee=>($(),Y("div",{class:Te(["participant-card",{enlarged:V.value&&V.value.identity===ee.identity}]),key:ee.identity},[x("div",Ap,[x("h3",null,le(ee.identity),1),x("div",Np,[z(O,{class:Te({"audio-on":ee.audioEnabled,"audio-off":!ee.audioEnabled})},{default:Q(()=>[ee.audioEnabled?($(),Fe(be,{key:0})):($(),Fe(Xs,{key:1}))]),_:2},1032,["class"])])]),x("div",Lp,[x("div",Up,[ee.hasCameraTrack?($(),Y("video",{key:0,ref_for:!0,ref:kn=>rl(kn,ee.identity,"camera"),autoplay:"",playsinline:"",class:"video-element",onLoadedmetadata:()=>gt(bf)(ee.identity,"camera")},null,40,Fp)):ue("",!0),ee.hasCameraTrack?ue("",!0):($(),Y("div",jp,[...h[9]||(h[9]=[x("i",{class:"el-icon-user"},null,-1),x("span",null,"摄像头已关闭",-1)])]))]),x("div",Bp,[x("span",Vp,le(ee.identity),1),x("span",{class:Te(["audio-indicator",{muted:!ee.audioEnabled}])},[x("i",{class:Te(ee.audioEnabled?"el-icon-microphone":"el-icon-turn-off-microphone")},null,2)],2)])]),x("audio",{ref_for:!0,ref:kn=>al(kn,ee.identity),autoplay:"",class:"participant-audio"},null,512)],2))),128))],2)],2)],2),x("div",qp,[x("div",Kp,[x("div",Gp,[z(J,{onClick:Pl,type:l.value?"danger":"info",class:"control-btn microphone-btn",size:"large"},{default:Q(()=>[he(le(l.value?"关闭摄像头":"开启摄像头"),1)]),_:1},8,["type"]),z(er,{trigger:"click",onCommand:Kc,onVisibleChange:mn,class:"control-dropdown microphone-dropdown"},{dropdown:Q(()=>[z(Zs,null,{default:Q(()=>[($(!0),Y(ai,null,oi(m.value,ee=>($(),Fe(Si,{key:ee.deviceId,command:ee.deviceId,class:Te({"selected-device":C.value===ee.deviceId})},{default:Q(()=>[h[10]||(h[10]=x("i",{class:"el-icon-video-camera"},null,-1)),he(" "+le(ee.label||`摄像头 ${m.value.indexOf(ee)+1}`)+" ",1),C.value===ee.deviceId?($(),Fe(O,{key:0,class:"check-icon"},{default:Q(()=>[z(gt(ir))]),_:1})):ue("",!0)]),_:2},1032,["command","class"]))),128)),z(Si,{divided:"",command:"refresh"},{default:Q(()=>[z(O,null,{default:Q(()=>[z(gt(nr))]),_:1}),h[11]||(h[11]=he(" 刷新设备列表 ",-1))]),_:1})]),_:1})]),default:Q(()=>[z(J,{type:l.value?"danger":"info",class:"control-btn dropdown-btn",size:"large"},{default:Q(()=>[z(O,{class:"el-icon--right"},{default:Q(()=>[z(gt(tr))]),_:1})]),_:1},8,["type"])]),_:1})]),x("div",Wp,[z(J,{onClick:_l,type:d.value?"danger":"info",class:"control-btn microphone-btn",size:"large"},{default:Q(()=>[he(le(d.value?"关闭麦克风":"开启麦克风"),1)]),_:1},8,["type"]),z(er,{trigger:"click",onCommand:Gc,onVisibleChange:gn,class:"control-dropdown microphone-dropdown"},{dropdown:Q(()=>[z(Zs,null,{default:Q(()=>[($(!0),Y(ai,null,oi(y.value,ee=>($(),Fe(Si,{key:ee.deviceId,command:ee.deviceId,class:Te({"selected-device":_.value===ee.deviceId})},{default:Q(()=>[h[12]||(h[12]=x("i",{class:"el-icon-microphone"},null,-1)),he(" "+le(ee.label||`麦克风 ${y.value.indexOf(ee)+1}`)+" ",1),_.value===ee.deviceId?($(),Fe(O,{key:0,class:"check-icon"},{default:Q(()=>[z(gt(ir))]),_:1})):ue("",!0)]),_:2},1032,["command","class"]))),128)),z(Si,{divided:"",command:"refresh"},{default:Q(()=>[z(O,null,{default:Q(()=>[z(gt(nr))]),_:1}),h[13]||(h[13]=he(" 刷新设备列表 ",-1))]),_:1})]),_:1})]),default:Q(()=>[z(J,{type:d.value?"danger":"info",class:"control-btn dropdown-btn",size:"large"},{default:Q(()=>[z(O,{class:"el-icon--right"},{default:Q(()=>[z(gt(tr))]),_:1})]),_:1},8,["type"])]),_:1})]),z(J,{onClick:wl,type:f.value?"danger":I.value?"primary":"info",disabled:I.value&&!f.value||!nc.value,class:"control-btn",size:"large"},{default:Q(()=>[f.value?($(),Y("span",zp,"停止共享")):I.value?($(),Y("span",Hp,"他人共享中")):($(),Y("span",Jp,"共享屏幕"))]),_:1},8,["type","disabled"]),z(J,{onClick:nl,type:M.value?"danger":"info",class:"control-btn",size:"large"},{default:Q(()=>[he(le(M.value?"退出白板":"共享白板"),1)]),_:1},8,["type"]),z(J,{onClick:wc,type:B.value?"danger":"info",disabled:!Ns.value,class:"control-btn",size:"large"},{default:Q(()=>[he(le(B.value?"关闭激光笔":"激光笔"),1)]),_:1},8,["type","disabled"]),z(J,{onClick:qc,type:"info",class:"control-btn",size:"large"},{default:Q(()=>[...h[14]||(h[14]=[he(" 文件 ",-1)])]),_:1}),z(J,{onClick:tl,type:"info",class:"control-btn",size:"large"},{default:Q(()=>[...h[15]||(h[15]=[he(" 邀请人员 ",-1)])]),_:1}),z(J,{onClick:Rl,type:"info",class:"control-btn",size:"large"},{default:Q(()=>[...h[16]||(h[16]=[he(" 离开会议 ",-1)])]),_:1})])])])),z(Bf,{ref_key:"inviterJoinRoomRef",ref:q,onConfirmSelection:il},null,512),z(ip,{ref_key:"fileListRef",ref:ws,roomId:a.value},null,8,["roomId"])])]))}}},sm=Yi(Qp,[["__scopeId","data-v-42ecdcb9"]]);export{sm as default};
|